Наименования материалов
|
Цена за единицу (руб.)
|
Количество
|
Стоимость (руб.)
|
Бумага
|
0,4
|
35
|
14
|
Ручка
|
10
|
1
|
10
|
Диск
|
15
|
1
|
15
|
Картридж
|
1
|
35
|
35
|
|
|
Итого
|
74
|
;
;
10.4 Расчет стоимости решения
задачи вручную
Стоимость решения задачи вручную рассчитывается по формуле:
, где
-
затраты времени на решение задачи вручную;
-
часовая ставка решающего задачи (руб.);
;
;
Так
как работу выполняет студент, с суммы стипендии налог, зачисляемый в
государственные внебюджетные фонды, не начисляется.
10.5 Расчет показателей
экономической эффективности
10.5.1 Расчет экономии труда за счет
применения ПЭВМ
, где
-
предлагаемое число обращений к программе;
-
затраты времени на составление и отладку программы на ПЭВМ;
- время
решения задачи на ПЭВМ;
10.5.2 Расчет затрат времени на
составление и отладку программы
, где
-
средняя занятость в течение дня;
-
количество дней на составление и отладку программы на ПЭВМ;
;
;
10.5.3 Расчет времени решения задачи на
ПЭВМ
, где
- время
ввода исходной информации;
-
машинное время;
- время
вывода информации на печать;
;
;
;
;
10.5.4 Расчет предполагаемого числа
обращений к программе
10.6 Расчет денежной экономической
эффективности применения ПЭВМ
, где
-
стоимость решения задачи вручную;
-
стоимость решения задачи на ПЭВМ;
-
затраты на работу программы;
10.6.1 Расчет затрат на работу
программы
, где
-
стоимость одного часа работы ПЭВМ;
- время
решения задачи на ПЭВМ;
;
;
10.6.2 Расчет роста производительности
труда от применения ПЭВМ
, где
-
показатель экономии труда за счет применения ПЭВМ;
- затраты
времени на решение задачи вручную;
-
предлагаемое число обращений к программе;
;
ЗАКЛЮЧЕНИЕ
В данной дипломной работе я реализовал решение задачи линейного
программирования Симплекс - методом в программе. Программа была написана на
языке C++ в среде Borland C++ Builder
6.0. Программа предусматривает решение задач Симплекс - методом, условие
которых приведено к стандартному виду.
Программа состоит из двух независимых модулей: модуля решения задачи «Symplex» и модуля системы тестового контроля
знаний студентов «eTest».
Модуль «Symplex» представляет собой окно с
элементами интерфейса, в которые вводятся исходные данные, с которыми
производится решение задачи в данном модуле.
Модуль «eTest» представляет собой систему таблиц,
организованных в базу данных. Это необходимо для организации хранения
информации о пользователях, о тестировании и для разграничения прав доступа к
данному модулю.
Ввод вопрос в базу данных вопросов тестирования обеспечивается внутренним
юнитом модуля «Конструктор вопросов».
Достоинства программы:
· Не требует установки, что обеспечивает меньше затрат времени
на подготовку к использованию;
· Простой интуитивно понятный
интерфейс;
· Возможность изменять количество коэффициентов функции и
количества ограничений системы ограничений при вводе исходных данных;
· Проверка правильности ввода всех данных сразу и вывод полной
информации об ошибках, если такие обнаружены;
· Возможность вывода полноценного, отформатированного и
понятного пользователю, отчета, содержащего все промежуточные расчеты;
· Возможность распечатки отчета;
· Возможность проводить тестовый контроль знаний;
· Возможность формировать банк тестовых заданий из двух типов
вопросов;
· Возможность задавать «неограниченное» число вопросов с
«неограниченным» количеством вариантов ответа;
· Возможность загрузки графических элементов, сопровождающих
вопрос;
· Расширенная система управления модулем тестирования и
формирования отчетности о проведении тестирования;
· Защищенность базы данных;
Недостатки программы:
· Возможность решения задач только одного типа;
· Работа только в одной операционной системе;
· Нет многопользовательского режима работы с базой;
СПИСОК
ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Волков
И.К., Загоруйко Е.А., Исследование операций, Москва, издательство МГТУ им. Н.Э. Баумана, 2000
2. Кофман
А., Анри-Лабордер А., Методы и модели исследования операций. Том3. Целочисленное
программирование, изд. «МИР», Москва, 1977
3. Культин
Н. Б. Самоучитель C++ Builder. - Санкт-Петербург.: БХВ -Петербург
, 2004
. Архангельский
А.Я., С++ Builder 6, «БИНОМ», 2002
. Пахомов
Б.И., Borland C++ Builder
для начинающих, Санкт-Петербург.: БХВ -Петербург , 2007
. Материалы
с сайта http://simplex-metod.narod.ru/
ПРИЛОЖЕНИЕ 1.
ЛИСТИНГ ПРОГРАММЫ
Модуль Symplex
Unit1
//---------------------------------------------------------------------------
#include <vcl.h>
#include <vcl\math.hpp>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"*Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
}
//---------------------------------------------------------------------------__fastcall
TForm1::FormCreate(TObject *Sender)
{i;->ColCount=CSpinEdit1->Value;(i=1;i<=StringGrid1->ColCount;i++)
{
StringGrid1->Cells[i-1][0]="X"+AnsiString(i);
}
(i=1;i<=StringGrid2->ColCount-3;i++)
{
StringGrid2->Cells[i][0]="X"+AnsiString(i);
}
->Cells[StringGrid2->ColCount-2][0]="Знак";->Cells[StringGrid2->ColCount-1][0]="Своб.член";
(i=1;i<=StringGrid2->RowCount;i++)
{
StringGrid2->Cells[0][i]=AnsiString(i);
}(i=1;i<=StringGrid2->RowCount-1;i++)
{
StringGrid2->Cells[StringGrid2->ColCount-2][i]="<=";
}->ItemIndex=0;
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button1Click(TObject *Sender)
{i;
->ColCount=CSpinEdit1->Value;
(i=1;i<=StringGrid1->ColCount;i++)
{
StringGrid1->Cells[i-1][0]="X"+AnsiString(i);
}
->ColCount=CSpinEdit1->Value+3;
(i=1;i<=StringGrid2->ColCount-3;i++)
{
StringGrid2->Cells[i][0]="X"+AnsiString(i);
}
->Cells[StringGrid2->ColCount-2][0]="Знак";->Cells[StringGrid2->ColCount-1][0]="Своб.член";(i=1;i<=StringGrid2->RowCount-1;i++)
{
StringGrid2->Cells[StringGrid2->ColCount-2][i]="<=";
}
}
//---------------------------------------------------------------------------__fastcall
TForm1::CSpinEdit1KeyPress(TObject *Sender, char &Key)
{(((Key >= '0')&&(Key <= '9'))||(Key ==
VK_CLEAR)||(Key == VK_BACK))return;= 0;
}
//---------------------------------------------------------------------------__fastcall
TForm1::CSpinEdit2KeyPress(TObject *Sender, char &Key)
{(((Key >= '0')&&(Key <= '9'))||(Key ==
VK_CLEAR)||(Key == VK_BACK))return;= 0;
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button2Click(TObject *Sender)
{i;
->RowCount=CSpinEdit2->Value+1;
(i=1;i<=StringGrid2->RowCount;i++)
{
StringGrid2->Cells[0][i]=AnsiString(i);
}(i=1;i<=StringGrid2->RowCount-1;i++)
{
StringGrid2->Cells[StringGrid2->ColCount-2][i]="<=";
}
}
//---------------------------------------------------------------------------__fastcall
TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)
{(((Key >= '0')&&(Key <= '9'))||(Key ==
',')||(Key == '-')||(Key == VK_CLEAR)||(Key == VK_BACK))return;= 0;
}
//---------------------------------------------------------------------------__fastcall
TForm1::StringGrid2KeyPress(TObject *Sender, char &Key)
{(((Key >= '0')&&(Key <= '9'))||(Key ==
',')||(Key == '-')||(Key == VK_CLEAR)||(Key == VK_BACK))return;= 0;
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button5Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button4Click(TObject *Sender)
{i,j;(i=0;i<StringGrid1->ColCount;i++)
{
StringGrid1->Cells[i][1]="";
}
(j=1;j<=StringGrid2->RowCount-1;j++)
{
for(i=1;i<=StringGrid2->ColCount-3;i++)
{
StringGrid2->Cells[i][j]="";
}
}(i=1;i<=StringGrid2->RowCount-1;i++)
{
StringGrid2->Cells[StringGrid2->ColCount-1][i]="";
}->Enabled=false;
}
//---------------------------------------------------------------------------__fastcall
TForm1::StringGrid2SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{(ACol==StringGrid2->ColCount-2)
{
CanSelect=false;
}
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button3Click(TObject *Sender)
{
//Проверка правильности ввода исходных данных
int i,j;
AnsiString Err, err1,err2;e1,e2;1=0;
e2=0;
Err="Не
введены исходные данные:\n\n";
for(i=0;i<=StringGrid1->ColCount-1;i++)
{
if(StringGrid1->Cells[i][1]=="")
{
e1=1;
}
}
if(e1==1)
{
err1="в
таблице коэффициентов,соответствующие полям:\n";
for(i=0;i<=StringGrid1->ColCount-1;i++)
if(StringGrid1->Cells[i][1]=="")
{
err1=err1+StringGrid1->Cells[i][0]+";\n";
}
Err=Err+err1;
}
for(i=0;i<=StringGrid2->ColCount-1;i++)
{
for(j=1;j<=StringGrid2->RowCount-1;j++)
if(StringGrid2->Cells[i][j]=="")
{
e2=1;
}
}
if(e2==1)
{
err2="\nв таблице системы ограничений,
соответствующие полям:\n";
for(i=0;i<=StringGrid2->ColCount-1;i++)
{
for(j=1;j<=StringGrid2->RowCount-1;j++)
{
if(StringGrid2->Cells[i][j]=="")
{
err2=err2+StringGrid2->Cells[i][0]+" на строке №
"+IntToStr(j)+";\n";
}
}
}
Err=Err+err2;
}
if(e1==1 || e2==1)
{
ShowMessage(Err);return;
}
if(ComboBox1->ItemIndex==-1)
{
ShowMessage("Не выбрано, к чему стремится функция");
return;
}->Clear();->Lines->SaveToFile("Report.html");->Lines->Add("<html>");->Lines->Add("<head>");->Lines->Add("<title>Отчет</title>");->Lines->Add("<meta
http-equiv='Content-Type' content='text/html;
charset=windows-1251'>");->Lines->Add("</head>");->Lines->Add("<body>");->Lines->Add("<center><h2><u>Отчет
по
решению</u></h2></center></br>");->Lines->Add("<center><b><u>Условия
задачи:</u></b></center></br>");->Lines->Add("<left><b>Целевая
функция:</b></left></br>");->Lines->Add("<I>f</I>=");(i=0;i<StringGrid1->ColCount;i++)
{
if(StrToFloat(StringGrid1->Cells[i][1])>0)
{
if(i==0)
{
Memo1->Lines->Add(StringGrid1->Cells[i][1]+"x<sub>"+(i+1)+"</sub>");
}
else
{
Memo1->Lines->Add("+"+StringGrid1->Cells[i][1]+"x<sub>"+(i+1)+"</sub>");
}
}
else
{
Memo1->Lines->Add(StringGrid1->Cells[i][1]+"x<sub>"+(i+1)+"</sub>");
}
}->Lines->Add("<th>→</th>");->Lines->Add(ComboBox1->Text);->Lines->Add("</left></br></br>");->Lines->Add("<left><b>Система
ограничений:</b></left></br>");(j=1;j<=StringGrid2->RowCount-1;j++)
{
for(i=1;i<=StringGrid2->ColCount-3;i++)
{
if(StrToFloat(StringGrid2->Cells[i-1][j])>0)
{
if(i==1)
{
Memo1->Lines->Add(StringGrid2->Cells[i][j]+"x<sub>"+i+"</sub>");
}
else
{
Memo1->Lines->Add("+"+StringGrid2->Cells[i][j]+"x<sub>"+i+"</sub>");
}
}
else
{
Memo1->Lines->Add(StringGrid2->Cells[i-1][j]+"x<sub>"+i+"</sub>");
}
}
Memo1->Lines->Add(StringGrid2->Cells[StringGrid2->ColCount-2][j]);
Memo1->Lines->Add(StringGrid2->Cells[StringGrid2->ColCount-1][j]);
Memo1->Lines->Add("</br>");
}->Lines->Add("<center><b><u>Решение:</u></b></center></br></br>");1->Lines->Add("Задача
представленна в общем виде. Необходимо преобразовать ее в вид ОЗЛП</br>");
double convert;//Переменная
для конвертирования//
//если функция стремится к минимуму
Memo1->Lines->Add("В этом случае функция примет вид:</br>");
if(ComboBox1->Text=="Min")
{
for(i=0;i<StringGrid1->ColCount;i++)
{
convert=StrToFloat(StringGrid1->Cells[i][1]);
convert=convert*(-1);
StringGrid1->Cells[i][1]=convert;
}
ComboBox1->Text="Max";
}->Lines->Add("<I>f</I>=");(i=0;i<StringGrid1->ColCount;i++)
{
if(StrToFloat(StringGrid1->Cells[i][1])>0)
{
if(i==0)
{
Memo1->Lines->Add(StringGrid1->Cells[i][1]+"x<sub>"+(i+1)+"</sub>");
}
else
{
Memo1->Lines->Add("+"+StringGrid1->Cells[i][1]+"x<sub>"+(i+1)+"</sub>");
}
}
else
{
Memo1->Lines->Add(StringGrid1->Cells[i][1]+"x<sub>"+(i+1)+"</sub>");
}
}->Lines->Add("<th>→</th>");->Lines->Add(ComboBox1->Text+"</br>");1->Lines->Add("А
система ограничений примет вид:</br>");
//Формирование матрицы
3->ColCount=CSpinEdit1->Value+2+CSpinEdit2->Value;->RowCount=StringGrid2->RowCount+1;
//Заполнение статических
ячеек->Cells[0][0]="Базис";->Cells[1][0]="План";
(i=2;i<=StringGrid3->ColCount;i++)
{
StringGrid3->Cells[i][0]="X"+AnsiString(i-1);
}
(i=1;i<=StringGrid3->RowCount-2;i++)
{
StringGrid3->Cells[0][i]="X"+AnsiString(i+StringGrid1->ColCount);
}
->Cells[0][StringGrid3->RowCount-1]="F'";
//Перенос из матрицы 2 в матрицу 3
for(j=1;j<=StringGrid2->RowCount-1;j++)
{
for(i=1;i<=StringGrid2->ColCount-3;i++)
{
StringGrid3->Cells[i+1][j]=StringGrid2->Cells[i][j];
}
}
//Добавление единичной
матрицы(j=1;j<=StringGrid3->RowCount-2;j++)
{
for(i=1;i<=StringGrid3->ColCount-1;i++)
{
if(i==j)
{
StringGrid3->Cells[i+1+StringGrid1->ColCount][j]=1;
}
else
{
StringGrid3->Cells[i+1+StringGrid1->ColCount][j]=0;
}
}
}
//Добавление столбца свободных
членов(i=1;i<=StringGrid2->RowCount-1;i++)
{
StringGrid3->Cells[1][i]=StringGrid2->Cells[StringGrid2->ColCount-1][i];
}(j=1;j<=StringGrid3->RowCount-2;j++)
{
for(i=2;i<=StringGrid3->ColCount-1;i++)
{
if(StrToFloat(StringGrid3->Cells[i][j])>0)
{
if(i==2)
{
Memo1->Lines->Add(StringGrid3->Cells[i][j]+"x<sub>"+(i-1)+"</sub>");
}
else
{
Memo1->Lines->Add("+"+StringGrid3->Cells[i][j]+"x<sub>"+(i-1)+"</sub>");
}
}
else
{
Memo1->Lines->Add(StringGrid3->Cells[i][j]+"x<sub>"+(i-1)+"</sub>");
}
}
Memo1->Lines->Add("=");
Memo1->Lines->Add(StringGrid3->Cells[1][j]);
Memo1->Lines->Add("</br>");
}
//заполнение нулями нижней строки
for(i=1;i<=StringGrid3->ColCount-1;i++)
{
StringGrid3->Cells[i][StringGrid3->RowCount-1]=0;
}
//Заполнение нижней
строки(i=1;i<=StringGrid1->ColCount;i++)
{
convert=StrToFloat(StringGrid1->Cells[i-1][1]);
convert=convert*(-1);
StringGrid3->Cells[i+1][StringGrid3->RowCount-1]=convert;
}
int NCC=0;
Memo1->Lines->Add("После всех преобразований можно стоставить
Симплекс таблицу.</br>Исходная
Симплекс - таблица:");
cc:;//Поиск
отрицательных элементов в нижней строке
int OtrStr=0;(i=2;i<=StringGrid3->ColCount-1;i++)
{
if(StrToFloat(StringGrid3->Cells[i][StringGrid3->RowCount-1])<0)
{
OtrStr++;
}
}
if(OtrStr!=0)
{NCC++;
//Поиск минимального элемента в нижней строке
double MinStlb;
int NomStlb;
MinStlb=StrToFloat(StringGrid3->Cells[2][StringGrid3->RowCount-1]);
NomStlb=2;
for(i=2;i<=StringGrid3->ColCount-1;i++)
{
if(MinStlb>StrToFloat(StringGrid3->Cells[i][StringGrid3->RowCount-1]))
{
MinStlb=StrToFloat(StringGrid3->Cells[i][StringGrid3->RowCount-1]);
NomStlb=i;
}
}
//Поиск положительных элементов в минимальном столбце
int PolStlb=0;
for(i=1;i<=StringGrid3->RowCount-2;i++)
{
if(StrToFloat(StringGrid3->Cells[NomStlb][i])>0)
{
PolStlb++;
}
}
if(PolStlb!=0)
{
//Поиск минимального отношения в столбце
struct MinOt { double Val; int Numb;}; MinOt *Mss = new MinOt
[10];
int k=1;
int NomStr;
double MinStr;
for(i=1;i<=StringGrid3->RowCount-2;i++)
{
if(StrToFloat(StringGrid3->Cells[NomStlb][i])>0)
{
Mss[k].Val=StrToFloat(StringGrid3->Cells[1][i])/StrToFloat(StringGrid3->Cells[NomStlb][i]);
Mss[k].Numb=i;
k++;
}
}
MinStlb=Mss[1].Val;
NomStr=Mss[1].Numb;
for(i=1;i<=PolStlb;i++)
{
if(MinStlb>Mss[i].Val)
{
MinStlb=Mss[i].Val;
NomStr=Mss[i].Numb;
}
}->Lines->Add("</br>Цикл
"+AnsiString(NCC));->Lines->Add("<table
border='1'>");(j=0;j<=StringGrid3->RowCount-1;j++)
{
Memo1->Lines->Add("<tr
align='center'>");
for(i=0;i<=StringGrid3->ColCount-1;i++)
{
if(i==0 || j==0)
{
Memo1->Lines->Add("<td
bgcolor='#d3d3d3'>"+StringGrid3->Cells[i][j]+"</td>");
}
{
if(i==NomStlb && j==NomStr)
{
Memo1->Lines->Add("<td
bgcolor='#ff0000'><b>"+StringGrid3->Cells[i][j]+"</b></td>");
}
else
{
if(j==NomStr)
{
Memo1->Lines->Add("<td
bgcolor='#ddadaf'>"+StringGrid3->Cells[i][j]+"</td>");
}
else
{
if(i==NomStlb)
{
Memo1->Lines->Add("<td
bgcolor='#ccff00'>"+StringGrid3->Cells[i][j]+"</td>");
}
else
{
Memo1->Lines->Add("<td
bgcolor='#ffffff'>"+StringGrid3->Cells[i][j]+"</td>");
}
}
}
}
}
Memo1->Lines->Add("</tr>");
}->Lines->Add("</table>");->Lines->Add("</br>");->Lines->Add("Из
базиса выводится переменная "+StringGrid3->Cells[0][NomStr]+", а
вводится -
"+StringGrid3->Cells[NomStlb][0]+"</br>");->Lines->Add("Новое
значение: F="+StringGrid3->Cells[1][StringGrid3->RowCount-1]+";</br>");1->Lines->Add("Новый
опорный план: ");
for(i=1;i<=StringGrid3->RowCount-2;i++)
{
Memo1->Lines->Add(StringGrid3->Cells[0][i]+"="+StringGrid3->Cells[1][i]+";
");
}
//Замена строки /-/ столбца
StringGrid3->Cells[0][NomStr]=StringGrid3->Cells[NomStlb][0];
//Деление всех элементов разрешающей строки на разрешающий элемент
double Rest;
double RazEl;
RazEl=StrToFloat(StringGrid3->Cells[NomStlb][NomStr]);
for(i=1;i<=StringGrid3->ColCount-1;i++)
{
convert=StrToFloat(StringGrid3->Cells[i][NomStr]);
Rest=convert/RazEl;
StringGrid3->Cells[i][NomStr]=RoundTo(Rest,-2);
}
//Преобразование столбца свободных счленов
double TekZn, RazZn, KonZn;
for(i=1;i<=StringGrid3->RowCount-1;i++)
{
if(i!=NomStr)
{
TekZn=StrToFloat(StringGrid3->Cells[1][i]);
RazZn=StrToFloat(StringGrid3->Cells[NomStlb][i]);
KonZn=StrToFloat(StringGrid3->Cells[1][NomStr]);
Rest=TekZn-RazZn*KonZn;
StringGrid3->Cells[1][i]=RoundTo(Rest,-2);
}
}
//Преобразование основного массива
for(j=1;j<=StringGrid3->RowCount-1;j++)
{
for(i=2;i<=StringGrid3->ColCount-1;i++)
{
if(j!=NomStr && i!=NomStlb)
{
TekZn=StrToFloat(StringGrid3->Cells[i][j]);
RazZn=StrToFloat(StringGrid3->Cells[NomStlb][j]);
KonZn=StrToFloat(StringGrid3->Cells[i][NomStr]);
Rest=TekZn-RazZn*KonZn;
StringGrid3->Cells[i][j]=RoundTo(Rest,-2);
}
}
}
//Преобразование разрешающего столбца
for(i=1;i<=StringGrid3->RowCount-1;i++)
{
if(i!=NomStr)
{
TekZn=StrToFloat(StringGrid3->Cells[NomStlb][i]);
RazZn=StrToFloat(StringGrid3->Cells[NomStlb][i]);
KonZn=StrToFloat(StringGrid3->Cells[NomStlb][NomStr]);
Rest=TekZn-RazZn*KonZn;
StringGrid3->Cells[NomStlb][i]=RoundTo(Rest,-2);
}
}
goto cc;
}
else
{
Memo1->Lines->Add("</br>Цикл
"+AnsiString(NCC));
Memo1->Lines->Add("<table
border='1'>");
for(j=0;j<=StringGrid3->RowCount-1;j++)
{
Memo1->Lines->Add("<tr
align='center'>");
for(i=0;i<=StringGrid3->ColCount-1;i++)
{
if(i==0 || j==0)
{
Memo1->Lines->Add("<td
bgcolor='#d3d3d3'>"+StringGrid3->Cells[i][j]+"</td>");
}
else
{
Memo1->Lines->Add("<td
bgcolor='#ffffff'>"+StringGrid3->Cells[i][j]+"</td>");
}
}
Memo1->Lines->Add("</tr>");
}
Memo1->Lines->Add("</table>");
Memo1->Lines->Add("</br>");
Memo1->Lines->Add("</br>Нет
решения</br>");
ShowMessage("Нет решения");
Memo1->Lines->SaveToFile("Report.html");
Button6->Enabled=true;
}
}
{
Memo1->Lines->Add("</br>Цикл
"+AnsiString(NCC));
Memo1->Lines->Add("<table
border='1'>");
for(j=0;j<=StringGrid3->RowCount-1;j++)
{
Memo1->Lines->Add("<tr
align='center'>");
for(i=0;i<=StringGrid3->ColCount-1;i++)
{
if(i==0 || j==0)
{
Memo1->Lines->Add("<td
bgcolor='#d3d3d3'>"+StringGrid3->Cells[i][j]+"</td>");
}
else
{
Memo1->Lines->Add("<td
bgcolor='#ffffff'>"+StringGrid3->Cells[i][j]+"</td>");
}
}
Memo1->Lines->Add("</tr>");
}
Memo1->Lines->Add("</table>");
Memo1->Lines->Add("</br>");
Memo1->Lines->Add("Найден оптимальный
план</br>");
Memo1->Lines->Add("Итоговое значение:
F="+StringGrid3->Cells[1][StringGrid3->RowCount-1]+";</br>");
Memo1->Lines->Add("Итоговый опорный план: ");
for(i=1;i<=StringGrid3->RowCount-2;i++)
{
Memo1->Lines->Add(StringGrid3->Cells[0][i]+"="+StringGrid3->Cells[1][i]+";
");
}
ShowMessage("Найден оптимальный план");
Memo1->Lines->SaveToFile("Report.html");
Button6->Enabled=true;
}
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button6Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::N2Click(TObject *Sender)
{(Handle,0,"eTest.exe",0,0,0);
}
//---------------------------------------------------------------------------
__fastcall TForm1::N3Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"*Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TForm2::Button2Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------__fastcall
TForm2::Button1Click(TObject *Sender)
{->ExecWB(::OLECMDID_PRINT,
::OLECMDEXECOPT_DONTPROMPTUSER);
}
//---------------------------------------------------------------------------
__fastcall TForm2::FormCreate(TObject *Sender)
{buffer[MAX_PATH];(sizeof(buffer),buffer);dir=AnsiString(buffer);->Navigate(WideString(dir+"/Report.html"));
}
//---------------------------------------------------------------------------
__fastcall TForm2::FormActivate(TObject *Sender)
{buffer[MAX_PATH];(sizeof(buffer),buffer);dir=AnsiString(buffer);->Navigate(WideString(dir+"/Report.html"));
}
Модуль
eTest
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
#include "Unit7.h"
#include "Unit8.h"
#include "Unit9.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form1;
ID;Login;sName;SurName;Group;Status;DateOfRegist;TimeOfRegist;Lock;AVTORIZ="NO";
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button1Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------__fastcall
TForm1::Button2Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::N8Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------
__fastcall TForm1::N4Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::N5Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::N6Click(TObject *Sender)
{(MessageDlg("Завершить сеанс ?", mtWarning,
TMsgDlgButtons() <<mbYes << mbNo, 0)==mrYes)
{=0;="";="";="";="";="";="";="";=0;="NO";
->N4->Enabled=true;->N5->Enabled=true;->N6->Enabled=false;
Form1->N7->Enabled=false;->N9->Enabled=false;->N10->Enabled=false;
}
else
{return;}
}
//---------------------------------------------------------------------------
__fastcall TForm1::N7Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::N10Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::Button4Click(TObject *Sender)
{->Show();->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm1::Button3Click(TObject *Sender)
{Type;(AVTORIZ=="NO")
{
ShowMessage("Пройдите процедуру авторизации");
Form5->Show();
}
{
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select Type From
Questions Where ID=1";
DM3->ADOQuery1->Active=true;
if(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
ShowMessage("Нет вопросов в базе");
}
else
{
Type=Form4->DBGrid1->Columns->Items[0]->Field->Value;
}
Form9->Show();
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::N9Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#include <md5.h>
#include <md5.cpp>
#include <DateUtils.hpp>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TForm2::Button2Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------
__fastcall TForm2::Button3Click(TObject *Sender)
{->Text="";->Text="";->Text="";->Text="";->Text="";->Text="";
}
//---------------------------------------------------------------------------
__fastcall TForm2::Button1Click(TObject *Sender)
{
//Проверка правильности заполнения полей
AnsiString Error="Регистрация
не может бытьпроизведена:";
int err=0;
(Edit1->Text=="")
{
err++;
Error=Error+"\nНе заполнено поле 'Логин'";
}
(Edit2->Text=="")
{
err++;
Error=Error+"\nНе заполнено поле 'Пароль'";
}
if(Edit3->Text=="")
{
err++;
Error=Error+"\nНе заполнено поле 'Подтверждение пароля'";
}
(Edit4->Text=="")
{
err++;
Error=Error+"\nНе заполнено поле 'Имя'";
}
(Edit5->Text=="")
{
err++;
Error=Error+"\nНе заполнено поле 'Фамилия'";
}
(Edit6->Text=="")
{
err++;
Error=Error+"\nНе заполнено поле 'Группа'";
}
(Edit2->Text!=Edit3->Text)
{
err++;
Error=Error+"\nВведенные пароли не совпадают";
}
(err!=0)
{
ShowMessage(Error);
return;
}
//Проверка повтора логина->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="SELECT
* FROM Users Where Login='"+Edit1->Text+"'";3->ADOQuery1->Active=true;
//Определение текущих даты / времени
DATE=Now();MaxIDU;(Form4->DBGrid1->Columns->Items[1]->Field->Value.IsNull())
{
//Получаем максимальный ID
пользователя
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select Max(ID) From
Users";
DM3->ADOQuery1->Active=true;
if(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
MaxIDU=1;
}
else
{
MaxIDU=Form4->DBGrid1->Columns->Items[0]->Field->Value;
MaxIDU++;
}
DM3->ADOCommand1->CommandText="INSERT INTO Users
VALUES("+IntToStr(MaxIDU)+",'"+Edit1->Text+"','"+MD5(Edit2->Text)+"','"+Edit4->Text+"','"+Edit5->Text+"','"+Edit6->Text+"','Student','"+DateToStr(DATE)+"','"+TimeToStr(DATE)+"','0')";
DM3->ADOCommand1->Execute();
}
{
ShowMessage("Логин "+Edit1->Text+" уже
используется.\nПожалуйста, введите другой Логин.");
Edit1->Text="";
return;
}
("Регистрация успешно произведена.\nЛогин:
"+Edit1->Text+"\nИмя: "+Edit4->Text+"\nФамилия:
"+Edit5->Text+"\nГруппа: "+Edit6->Text);
->Text="";->Text="";->Text="";->Text="";->Text="";->Text="";
->Close();->Show();
}
//---------------------------------------------------------------------------__fastcall
TForm2::FormCreate(TObject *Sender)
{
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
#include "Unit7.h"
#include "Unit8.h"
#include "Unit9.h"
#include "Unit10.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TForm4::RadioButton4Click(TObject *Sender)
{->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
* From Users";->ADOQuery1->Active=true;
->Columns->Items[0]->Width=90;->Columns->Items[1]->Width=90;->Columns->Items[2]->Width=90;->Columns->Items[3]->Width=90;->Columns->Items[4]->Width=90;->Columns->Items[5]->Width=90;->Columns->Items[6]->Width=90;->Columns->Items[7]->Width=90;->Columns->Items[8]->Width=90;->Columns->Items[9]->Width=90;
}
//---------------------------------------------------------------------------__fastcall
TForm4::RadioButton3Click(TObject *Sender)
{->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
* From Questions";->ADOQuery1->Active=true;
->Columns->Items[0]->Width=90;->Columns->Items[1]->Width=90;->Columns->Items[2]->Width=90;->Columns->Items[3]->Width=90;
}
//---------------------------------------------------------------------------
__fastcall TForm4::RadioButton2Click(TObject *Sender)
{->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="SELECT
Questions.ID, Questions.Question, Ansvers.ID, Ansvers.IDQ, Ansvers.Ansver,
Ansvers.[True] FROM Questions INNER JOIN Ansvers ON Questions.ID =
Ansvers.IDQ;";->ADOQuery1->Active=true;
->Columns->Items[0]->Width=90;->Columns->Items[1]->Width=90;->Columns->Items[2]->Width=90;->Columns->Items[3]->Width=90;->Columns->Items[4]->Width=90;->Columns->Items[5]->Width=90;
}
//---------------------------------------------------------------------------__fastcall
TForm4::RadioButton1Click(TObject *Sender)
{->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="SELECT
* FROM TestResult";->ADOQuery1->Active=true;
->Columns->Items[0]->Width=90;->Columns->Items[1]->Width=90;->Columns->Items[2]->Width=90;->Columns->Items[3]->Width=90;->Columns->Items[4]->Width=90;
}
//---------------------------------------------------------------------------__fastcall
TForm4::Button2Click(TObject *Sender)
{i;D;(MaskEdit1->Text==" . . ")
{
ShowMessage("Введите дату");
return;
}
=MaskEdit1->Text;[3]='/';[6]='/';
->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="SELECT
Users.ID, Users.Login, Users.sName, Users.Surname, Users.Group, Users.Status,
TestResult.DateOfTest, TestResult.OTC, TestResult.FileName FROM Users INNER
JOIN TestResult ON Users.ID = TestResult.IDS Where DateOfTest = #"+D+"#";->ADOQuery1->Active=true;
->Columns->Items[0]->Width=90;->Columns->Items[1]->Width=90;->Columns->Items[2]->Width=90;->Columns->Items[3]->Width=90;->Columns->Items[4]->Width=90;->Columns->Items[5]->Width=90;->Columns->Items[6]->Width=90;->Columns->Items[7]->Width=90;->Columns->Items[8]->Width=90;
->Clear();->Lines->SaveToFile("AdminReport.html");
->Lines->Add("<html>");->Lines->Add("<head>");->Lines->Add("<title>Быстрый
отчет</title>");->Lines->Add("<meta
http-equiv='Content-Type' content='text/html; charset=windows-1251'>");->Lines->Add("</head>");->Lines->Add("<body>");->Lines->Add("<center><h2>Отчет
за "+MaskEdit1->Text+"</h2></center>");
->Lines->Add("<table
border='1'>");->Lines->Add("<tr bgcolor='#d3d3d3'
align='center'><td>ID Пользователя</td><td>Логин</td><td>Имя</td><td>Фамилия</td><td>Группа</td><td>Статус</td><td>Дата
тестирования</td><td>Оценка</td><td>Файл
отчета</td></tr>");
->DataSource->DataSet->First();(!DBGrid1->DataSource->DataSet->Eof)
{
Memo1->Lines->Add("<tr
align='center'><td>"+DBGrid1->Columns->Items[0]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[1]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[2]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[3]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[4]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[5]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[6]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[7]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[8]->Field->Value+"</td></tr>");
DBGrid1->DataSource->DataSet->Next();
}->Lines->Add("</table>");->Lines->SaveToFile("AdminReport.html");
->Show();
}
//---------------------------------------------------------------------------__fastcall
TForm4::Button3Click(TObject *Sender)
{i;D1, D2;
(MaskEdit2->Text==" . . ")
{
ShowMessage("Введите дату 'C'");
return;
}(MaskEdit3->Text==" . . ")
{
ShowMessage("Введите дату 'По'");
return;
}
=MaskEdit2->Text;[3]='/';[6]='/';
=MaskEdit3->Text;[3]='/';[6]='/';
->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="SELECT
Users.ID, Users.Login, Users.sName, Users.Surname, Users.Group, Users.Status,
TestResult.DateOfTest, TestResult.OTC, TestResult.FileName FROM Users INNER
JOIN TestResult ON Users.ID = TestResult.IDS Where DateOfTest Between #"+D1+"#
and #"+D2+"#";->ADOQuery1->Active=true;
->Columns->Items[0]->Width=90;->Columns->Items[1]->Width=90;->Columns->Items[2]->Width=90;->Columns->Items[3]->Width=90;->Columns->Items[4]->Width=90;->Columns->Items[5]->Width=90;->Columns->Items[6]->Width=90;->Columns->Items[7]->Width=90;->Columns->Items[8]->Width=90;->Clear();->Lines->SaveToFile("AdminReport.html");
->Lines->Add("<html>");->Lines->Add("<head>");->Lines->Add("<title>Быстрый
отчет</title>");->Lines->Add("<meta
http-equiv='Content-Type' content='text/html;
charset=windows-1251'>");->Lines->Add("</head>");->Lines->Add("<body>");->Lines->Add("<center><h2>Отчет
за период с "+MaskEdit2->Text+" по "+MaskEdit3->Text+"</h2></center>");
->Lines->Add("<table
border='1'>");->Lines->Add("<tr bgcolor='#d3d3d3'
align='center'><td>ID
Пользователя</td><td>Логин</td><td>Имя</td><td>Фамилия</td><td>Группа</td><td>Статус</td><td>Дата
тестирования</td><td>Оценка</td><td>Файл
отчета</td></tr>");
->DataSource->DataSet->First();(!DBGrid1->DataSource->DataSet->Eof)
{
Memo1->Lines->Add("<tr
align='center'><td>"+DBGrid1->Columns->Items[0]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[1]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[2]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[3]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[4]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[5]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[6]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[7]->Field->Value+"</td><td>"+DBGrid1->Columns->Items[8]->Field->Value+"</td></tr>");
DBGrid1->DataSource->DataSet->Next();
}->Lines->Add("</table>");->Lines->SaveToFile("AdminReport.html");->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm4::Button1Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm4::Button4Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm4::Button5Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------__fastcall
TForm4::Button6Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
__fastcall TForm4::Button7Click(TObject *Sender)
{->Show();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#include <md5.h>
#include <md5.cpp>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
#include "Unit6.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form5;int ID;AnsiString
Login;AnsiString sName;AnsiString SurName;AnsiString Group;AnsiString
Status;AnsiString DateOfRegist;AnsiString TimeOfRegist;AnsiString
Lock;AnsiString AVTORIZ;
//---------------------------------------------------------------------------
__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------__fastcall
TForm5::Button2Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------__fastcall
TForm5::Button1Click(TObject *Sender)
{Error;err=0;
(Edit1->Text=="")
{
err++;
Error=Error+"Вы не ввели Логин";
}
(Edit2->Text=="")
{
err++;
Error=Error+"\nВы не ввели Пароль";
}
(err!=0)
{
ShowMessage(Error);
return;
}
//Проверка наличия Логина в
базе->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
* From Users Where
Login='"+Edit1->Text+"'";->ADOQuery1->Active=true;
(Form4->DBGrid1->Columns->Items[1]->Field->Value.IsNull())
{
ShowMessage("Пользователь с таким логином в базе не зарегистрирован");
Form2->Show();
}
{
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From Users
Where Login='"+Edit1->Text+"'";
DM3->ADOQuery1->Active=true;
if(MD5(Edit2->Text)==Form4->DBGrid1->Columns->Items[2]->Field->Value)
{
ID=Form4->DBGrid1->Columns->Items[0]->Field->Value;
Login=Form4->DBGrid1->Columns->Items[1]->Field->Value;
sName=Form4->DBGrid1->Columns->Items[3]->Field->Value;
SurName=Form4->DBGrid1->Columns->Items[4]->Field->Value;
Group=Form4->DBGrid1->Columns->Items[5]->Field->Value;
Status=Form4->DBGrid1->Columns->Items[6]->Field->Value;
DateOfRegist=Form4->DBGrid1->Columns->Items[7]->Field->Value;
TimeOfRegist=Form4->DBGrid1->Columns->Items[8]->Field->Value;
Lock=Form4->DBGrid1->Columns->Items[9]->Field->Value;
AVTORIZ="YES";
ShowMessage("Вход успешно выполнен \nID:
"+AnsiString(ID)+"\nЛогин: "+Login+"\nИмя:
"+sName+"\nФамилия: "+SurName+"\nГруппа:
"+Group+"\nСтатус: "+Status+"\nАктивен: "+AVTORIZ);
Form1->N4->Enabled=false;
Form1->N5->Enabled=false;
Form1->N6->Enabled=true;
Form1->N7->Enabled=true;
Form1->N9->Enabled=true;
if(Status=="Admin")
{
Form1->N10->Enabled=true;
}
else
{
Form1->N10->Enabled=false;
}
Form6->Label10->Caption=AnsiString(ID);
Form6->Label11->Caption=sName;
Form6->Label12->Caption=SurName;
Form6->Label13->Caption=Group;
Form6->Label14->Caption=Status;
Form6->Label15->Caption=DateOfRegist;
Form6->Label16->Caption=TimeOfRegist;
if(Lock!=0){Form6->Label17->Caption="Незаблокирован";Form6->Label17->Color=clLime;}else{Form6->Label17->Caption="Заблокирован";
Form6->Label17->Color=clRed;};
if(AVTORIZ=="YES"){Form6->Label18->Caption="Активен";Form6->Label18->Color=clLime;}else{Form6->Label18->Caption="Неактивен";Form6->Label18->Color=clRed;}
}
else
{
ShowMessage("Введенные Логин и Пароль не соппадают");
return;
}
}
//ShowMessage(ID);ShowMessage(Login);ShowMessage(sName);ShowMessage(SurName);ShowMessage(Group);ShowMessage(DateOfRegist);ShowMessage(TimeOfRegist);ShowMessage(Lock);ShowMessage(AVTORIZ);
->Text="";->Text="";
->Close();
}
//---------------------------------------------------------------------------__fastcall
TForm5::FormCreate(TObject *Sender)
{
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#include <md5.h>
#include <md5.cpp>
#pragma hdrstop
#include "Unit3.h"
#include "Unit4.h"
#include "Unit7.h"
#include "Unit8.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"*Form7;
*Label[65536];*Edit[65536];*RadioButton[65536];
//---------------------------------------------------------------------------
__fastcall TForm7::TForm7(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------__fastcall
TForm7::Button1Click(TObject *Sender)
{(int i=1;i<=CSpinEdit1->Value;i++)
{
if(i==1)
{
Label[i] = new TLabel(this);
Label[i]->Parent = this;
Label[i]->Name = "Label"+AnsiString(i);
Label[i]->Left = 8;
Label[i]->Top = 312;
Label[i]->Caption="Ответ "+AnsiString(i);
Label[i]->Font->Name="Arial";
Label[i]->Font->Size=10;
Edit[i] = new TEdit(this);
Edit[i]->Parent = this;
Edit[i]->Name = "Edit"+AnsiString(i);
Edit[i]->Width=596;
Edit[i]->Height=21;
Edit[i]->Left = 8;
Edit[i]->Top = 330;
Edit[i]->Text="";
Edit[i]->Font->Name="Arial";
Edit[i]->Font->Size=10;
RadioButton[i] = new TRadioButton(this);
RadioButton[i]->Parent = this;
RadioButton[i]->Name =
"RadioButton"+AnsiString(i);
RadioButton[i]->Width=101;
RadioButton[i]->Height=17;
RadioButton[i]->Left = 610;
RadioButton[i]->Top = 332;
RadioButton[i]->Caption="Верный ответ";
RadioButton[i]->Font->Name="Arial";
RadioButton[i]->Font->Size=10;
}
else
{
Label[i] = new TLabel(this);
Label[i]->Parent = this;
Label[i]->Name = "Label"+AnsiString(i);
Label[i]->Left = 8;
Label[i]->Top = Edit[i-1]->Top+Edit[i-1]->Height+8;
Label[i]->Caption="Ответ "+AnsiString(i);
Label[i]->Font->Name="Arial";
Label[i]->Font->Size=10;
Edit[i] = new TEdit(this);
Edit[i]->Parent = this;
Edit[i]->Name = "Edit"+AnsiString(i);
Edit[i]->Width=596;
Edit[i]->Height=21;
Edit[i]->Left = 8;
Edit[i]->Top = Label[i]->Top+Label[i]->Height+3;
Edit[i]->Text="";
Edit[i]->Font->Name="Arial";
Edit[i]->Font->Size=10;
RadioButton[i] = new TRadioButton(this);
RadioButton[i]->Parent = this;
RadioButton[i]->Name =
"RadioButton"+AnsiString(i);
RadioButton[i]->Width=101;
RadioButton[i]->Height=17;
RadioButton[i]->Left = 610;
RadioButton[i]->Top = Edit[i]->Top;
RadioButton[i]->Caption="Верный ответ";
RadioButton[i]->Font->Name="Arial";
RadioButton[i]->Font->Size=10;
}
}->Enabled=false;->Enabled=true;->Enabled=true;
}
//---------------------------------------------------------------------------__fastcall
TForm7::Button3Click(TObject *Sender)
{
AnsiString Error;
int err;
Error
= "Невозможно произвести сохранение вопроса в базе данных, т.к. не
заполнены следующие поля:";
err=0;RBS;=0;
bul;
MaxIDQ;
int MaxIDA;
//Проверка правильности заполнения
if(Memo1->Text==""){Error=Error+"\nТекст
вопроса;"; err++;}
(int i=1;i<=CSpinEdit1->Value;i++)
{
if(Edit[i]->Text=="")
{
Error=Error+"\nТекст ответа
"+AnsiString(i)+";"; err++;
}
}
(int i=1;i<=CSpinEdit1->Value;i++)
{
if(RadioButton[i]->Checked==true)
{
RBS=1;
}
}
(RBS==0){Error=Error+"\nНевыбран правильный
ответ;"; err++;}
(err!=0){ShowMessage(Error);RBS=0; err=0; return;}
//Конец проверки правильности заполнения
//Запись вопроса в базу
DM3->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Max(ID) from Questions";->ADOQuery1->Active=true;
(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
MaxIDQ=1;
{
MaxIDQ=Form4->DBGrid1->Columns->Items[0]->Field->Value;
MaxIDQ++;
}->ADOCommand1->CommandText="INSERT INTO Questions
VALUES("+IntToStr(MaxIDQ)+",'"+Memo1->Text+"','1',NULL)";3->ADOCommand1->Execute();
//Конец записи вопроса в базу
//Запись ответов в базу
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select Max(ID) from
Ansvers";->ADOQuery1->Active=true;
(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
MaxIDA=1;
}
{
MaxIDA=Form4->DBGrid1->Columns->Items[0]->Field->Value;
MaxIDA++;
}
(int i=1;i<=CSpinEdit1->Value;i++)
{
if(RadioButton[i]->Checked==true){bul=Edit[i]->Text+"True";}else{bul=Edit[i]->Text+"False";}
DM3->ADOCommand1->CommandText="INSERT INTO Ansvers
VALUES("+IntToStr(MaxIDA)+",'"+IntToStr(MaxIDQ)+"','"+Edit[i]->Text+"','"+MD5(bul+"
Fastex")+"')";
DM3->ADOCommand1->Execute();
MaxIDA++;
}
ShowMessage("Запись в базу произведена успешно");
//Конец записи ответов в базу
for (int i=1;i<=CSpinEdit1->Value;i++)
{Label[i]->Free();
Edit[i]->Free();
RadioButton[i]->Free();}
CSpinEdit1->Value=1;->Enabled=true;->Enabled=false;
}
//---------------------------------------------------------------------------__fastcall
TForm7::Button2Click(TObject *Sender)
{
if(MessageDlg("При правке ответов, текущая
структура будет удалена. Придется создавать ее снова. Продолжить ?", mtWarning, TMsgDlgButtons() <<mbYes << mbNo, 0)==mrYes)
{
for (int i=1;i<=CSpinEdit1->Value;i++)
{
Label[i]->Free();
Edit[i]->Free();
RadioButton[i]->Free();
}
CSpinEdit1->Value=1;
Button1->Enabled=true;
Button2->Enabled=false;
Button3->Enabled=false;
}
else
{
return;
}
}
//---------------------------------------------------------------------------
__fastcall TForm7::R2adioButton2Click(TObject *Sender)
{->Top=Form7->Top;->Left=Form7->Left;->Show();->Close();->R2adioButton2->Checked=true;
}
//---------------------------------------------------------------------------
__fastcall TForm7::FormCreate(TObject *Sender)
{
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#include <md5.h>
#include <md5.cpp>
#include <jpeg.hpp>
#pragma hdrstop
#include "Unit3.h"
#include "Unit4.h"
#include "Unit6.h"
#include "Unit7.h"
#include "Unit8.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form8;DBFName;
//---------------------------------------------------------------------------
__fastcall TForm8::TForm8(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TForm8::R1adioButton1Click(TObject *Sender)
{->Top=Form8->Top;->Left=Form8->Left;->Show();->Close();->R1adioButton1->Checked=true;
}
//---------------------------------------------------------------------------__fastcall
TForm8::Button1Click(TObject *Sender)
{FName, Dir,
NewName;->Execute();->Text=OpenPictureDialog1->FileName;->Text=OpenPictureDialog1->FileName;=ExtractFileDir(Application->ExeName); // Извлечение адреса текущей директории запуска
программы
FName=ExtractFileName(Edit1->Text);//Извлечение
имени графического файла
NewName=Dir+"\\images\\"+FName; // Описание адреса копирования файла
DBFName=FName;
CopyFile(FName.c_str(),NewName.c_str(), false); // Копирование графического файла
в собственную директорию
Image1->Picture->LoadFromFile(NewName);->Visible=true;->Visible=true;->Height=250;->Top=Image1->Top+Image1->Height+5;->Top=Label2->Top+Label2->Height+3;->Top=Memo1->Top+Memo1->Height+15;->Top=Label3->Top+Label3->Height+5;->Top=Edit2->Top+Edit2->Height+25;
}
//---------------------------------------------------------------------------
__fastcall TForm8::Button3Click(TObject *Sender)
{
AnsiString Error="Сохранение
произвести невозможно";
int err=0;MaxIDQ;MaxIDA;
(Memo1->Text=="")
{
err++;
Error=Error+"\nНе введет текст вопроса";
}
(Edit2->Text=="")
{
err++;
Error=Error+"\nНе введет текст ответа";
}
(err!=0)
{
ShowMessage(Error); return;
}
->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Max(ID) from Questions";->ADOQuery1->Active=true;
(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
MaxIDQ=1;
}
{
MaxIDQ=Form4->DBGrid1->Columns->Items[0]->Field->Value;
MaxIDQ++;
}(OpenPictureDialog1->FileName=="")
{
DM3->ADOCommand1->CommandText="INSERT INTO
Questions
VALUES("+IntToStr(MaxIDQ)+",'"+Memo1->Text+"','2',NULL)";
DM3->ADOCommand1->Execute();
}
{
DM3->ADOCommand1->CommandText="INSERT INTO
Questions
VALUES("+IntToStr(MaxIDQ)+",'"+Memo1->Text+"','2','"+DBFName+"')";
DM3->ADOCommand1->Execute();
}
->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Max(ID) from
Ansvers";->ADOQuery1->Active=true;(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
MaxIDA=1;
}
{
MaxIDA=Form4->DBGrid1->Columns->Items[0]->Field->Value;
MaxIDA++;
}
DM3->ADOCommand1->CommandText="INSERT INTO Ansvers
VALUES("+IntToStr(MaxIDA)+",'"+IntToStr(MaxIDQ)+"','"+Memo1->Text+"','"+MD5(Edit2->Text+"
Fastex")+"')";
DM3->ADOCommand1->Execute();
ShowMessage("Запись успешно завершена");
}
//---------------------------------------------------------------------------
__fastcall TForm8::FormCreate(TObject *Sender)
{
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#include <md5.h>
#include <md5.cpp>
#pragma hdrstop
#include "Unit3.h"
#include "Unit4.h"
#include "Unit9.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form9;
*RadioButton[65536];
int ID;AnsiString Login;AnsiString sName;AnsiString
SurName;AnsiString Group;AnsiString Status;AnsiString DateOfRegist;AnsiString
TimeOfRegist;AnsiString Lock;AnsiString AVTORIZ;
NowIDQ=1;NowIDA=1;
MaxIDQ;MaxIDA;
Ans=0;TrAns=0;
CControl=0;
//---------------------------------------------------------------------------
__fastcall TForm9::TForm9(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TForm9::Button1Click(TObject *Sender)
{i;=1;=1;=0;=0;
AnsiString Type;
//Заполнение полей идентификации
Label10->Caption=ID;->Caption=Login;->Caption=sName;->Caption=SurName;->Caption=Group;->Caption=Status;(AVTORIZ=="YES"){Label16->Caption="Да";Label16->Color=clLime;}else{Label16->Caption="Нет";Label16->Color=clRed;}
//Проверка наличия вопросов в базе
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions";->ADOQuery1->Active=true;
(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
ShowMessage("В базе отсутствуют вопросы");
return;
}
//Получение количество вопросов в базе
DM3->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Max(ID) From Questions";->ADOQuery1->Active=true;
=Form4->DBGrid1->Columns->Items[0]->Field->Value;
//Дополнение
идентификации->Caption=AnsiString(NowIDQ);->Caption=AnsiString(MaxIDQ);
//Очистка предыдущих вариантов
if(CControl==1)
{
for(i=1;i<=MaxIDA;i++)
{
RadioButton[i]->Free();
}
}
//Определение типа вопроса
DM3->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Type From Questions Where
ID="+AnsiString(NowIDQ);->ADOQuery1->Active=true;
=Form4->DBGrid1->Columns->Items[0]->Field->Value;
(Type=="1")
{
//Расстановка элементов
Label1->Visible=true;
Memo1->Visible=true;
Label2->Visible=true;
Label1->Top=8;
Memo1->Top=32;
Label17->Visible=false;
Image1->Visible=false;
Label23->Visible=false;
Edit1->Visible=false;
//Загрузка вопроса на форму
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
Memo1->Text=Form4->DBGrid1->Columns->Items[1]->Field->Value;
//Получение количества ответов
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="SELECT
Count(Ansvers.ID) FROM Questions INNER JOIN Ansvers ON Questions.ID =
Ansvers.IDQ Where IDQ="+AnsiString(NowIDQ);;
DM3->ADOQuery1->Active=true;
MaxIDA=Form4->DBGrid1->Columns->Items[0]->Field->Value;
//Формирование вариантов ответов
int i;
for(i=1;i<=MaxIDA;i++)
{
if(i==1)
{
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="SELECT * From
Ansvers where ID="+AnsiString(NowIDA);
DM3->ADOQuery1->Active=true;
RadioButton[i] = new TRadioButton(this);
RadioButton[i]->Parent = this;
RadioButton[i]->Name =
"RadioButton"+AnsiString(i);
RadioButton[i]->Left = 8;
RadioButton[i]->Top = 165;
RadioButton[i]->Caption=Form4->DBGrid1->Columns->Items[2]->Field->Value;
RadioButton[i]->Font->Name="Arial";
RadioButton[i]->Font->Size=10;
CControl=1;
NowIDA++;
}
else
{
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="SELECT * From
Ansvers where ID="+AnsiString(NowIDA);
DM3->ADOQuery1->Active=true;
RadioButton[i] = new TRadioButton(this);
RadioButton[i]->Parent = this;
RadioButton[i]->Name =
"RadioButton"+AnsiString(i);
RadioButton[i]->Left = 8;
RadioButton[i]->Top =
RadioButton[i]->Height+RadioButton[i-1]->Top+2;
RadioButton[i]->Caption=Form4->DBGrid1->Columns->Items[2]->Field->Value;
RadioButton[i]->Font->Name="Arial";
RadioButton[i]->Font->Size=10;
CControl=1;
NowIDA++;
}
}->Enabled=false;->Enabled=true;3->Enabled=true;
}
else
{
//Определение наличия картинки
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
if(Form4->DBGrid1->Columns->Items[3]->Field->Value.IsNull())
{
Label1->Visible=false;
Label2->Visible=false;
Memo1->Visible=true;
Label17->Visible=true;
Image1->Visible=true;
Label23->Visible=true;
Edit1->Visible=true;
//Загрузка вопроса на форму
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
Memo1->Text=Form4->DBGrid1->Columns->Items[1]->Field->Value;
CControl=0;
NowIDA++;
Button1->Enabled=false;
Button2->Enabled=true;
Button3->Enabled=true;
}
else
{
//перемещение объектов;
Memo1->Visible=true;
Label17->Visible=true;
Image1->Visible=true;
Label23->Visible=true;
Edit1->Visible=true;
Label1->Visible=false;
Label2->Visible=false;
Label1->Top=288;
Memo1->Top=312;
Label23->Top=416;
Edit1->Top=440;
//Загрузка вопроса на форму
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
Memo1->Text=Form4->DBGrid1->Columns->Items[1]->Field->Value;
//Загрузка изображения на форму
AnsiString FName, Dir;
Dir=ExtractFileDir(Application->ExeName);
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
FName=Form4->DBGrid1->Columns->Items[3]->Field->Value;
Image1->Picture->LoadFromFile(Dir+"\\images\\"+FName);
CControl=0;
NowIDA++;
Button1->Enabled=false;
Button2->Enabled=true;
Button3->Enabled=true;
}
}
}
//---------------------------------------------------------------------------__fastcall
TForm9::Button2Click(TObject *Sender)
{Type;i, NCheckAns;Error;err;=0;
//определяем тип
вопроса->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Type From Questions Where
ID="+AnsiString(NowIDQ);->ADOQuery1->Active=true;
=Form4->DBGrid1->Columns->Items[0]->Field->Value;
(Type=='1')
{
//Проверка ответа
for(i=1;i<=MaxIDA;i++)
{
if(RadioButton[i]->Checked==true)
{
err=1;
}
else
{
Error="Вы
не выбрали вариант ответа !";
}
}
if(err==0)
{
ShowMessage(Error); return;
}
Ans++;
for(i=1;i<=MaxIDA;i++)
{
if(RadioButton[i]->Checked==true){NCheckAns=i;}
}
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Ansvers Where Ansvers.IDQ="+AnsiString(NowIDQ)+" and
Ansvers.Ansver='"+AnsiString(RadioButton[NCheckAns]->Caption)+"'";
DM3->ADOQuery1->Active=true;
AnsiString T,F;
T=MD5(RadioButton[NCheckAns]->Caption+"True
Fastex");
F=MD5("False Fastex");
}
else
{
err=0;
//Проверка наличия ответа
if(Edit1->Text=="")
{
err++;
Error="Вы
не ввели текст ответа";
}
if(err!=0)
{ShowMessage(Error); return;}
Ans++;
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Ansvers Where Ansvers.IDQ="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
if(Form4->DBGrid1->Columns->Items[3]->Field->Value==MD5(Edit1->Text+"
Fastex")){TrAns++;} else {TrAns=TrAns;}
}
//Переход к следующему вопросу
NowIDQ++;
//Обновление поля->Caption=NowIDQ;(NowIDQ>MaxIDQ)
{
Button2->Enabled=false; return;
}
//определяем тип
вопроса->ADOQuery1->Active=false;->ADOQuery1->SQL->Text="Select
Type From Questions Where
ID="+AnsiString(NowIDQ);->ADOQuery1->Active=true;
=Form4->DBGrid1->Columns->Items[0]->Field->Value;
(Type=='1')
{
//Расстановка элементов
Label1->Visible=true;
Memo1->Visible=true;
Label2->Visible=true;
Label1->Top=8;
Memo1->Top=32;
Label17->Visible=false;
Image1->Visible=false;
Label23->Visible=false;
Edit1->Visible=false;
//Загрузка вопроса на форму
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
Memo1->Text=Form4->DBGrid1->Columns->Items[1]->Field->Value;
//Очистка предыдущих вариантов
if(CControl==1)
{
for(i=1;i<=MaxIDA;i++)
{
RadioButton[i]->Free();
}
}
Edit1->Text="";
//Получение количества ответов
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="SELECT
Count(Ansvers.ID) FROM Questions INNER JOIN Ansvers ON Questions.ID =
Ansvers.IDQ Where IDQ="+AnsiString(NowIDQ);;
DM3->ADOQuery1->Active=true;
MaxIDA=Form4->DBGrid1->Columns->Items[0]->Field->Value;
//Формирование вариантов ответов
int i;
for(i=1;i<=MaxIDA;i++)
{
if(i==1)
{
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="SELECT * From
Ansvers where ID="+AnsiString(NowIDA);
DM3->ADOQuery1->Active=true;
RadioButton[i] = new TRadioButton(this);
RadioButton[i]->Parent = this;
RadioButton[i]->Name =
"RadioButton"+AnsiString(i);
RadioButton[i]->Left = 8;
RadioButton[i]->Top = 165;
RadioButton[i]->Caption=Form4->DBGrid1->Columns->Items[2]->Field->Value;
RadioButton[i]->Font->Name="Arial";
RadioButton[i]->Font->Size=10;
CControl=1;
NowIDA++;
}
else
{
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="SELECT * From
Ansvers where ID="+AnsiString(NowIDA);
DM3->ADOQuery1->Active=true;
RadioButton[i] = new TRadioButton(this);
RadioButton[i]->Parent = this;
RadioButton[i]->Name =
"RadioButton"+AnsiString(i);
RadioButton[i]->Left = 8;
RadioButton[i]->Top =
RadioButton[i]->Height+RadioButton[i-1]->Top+2;
RadioButton[i]->Caption=Form4->DBGrid1->Columns->Items[2]->Field->Value;
RadioButton[i]->Font->Name="Arial";
RadioButton[i]->Font->Size=10;
CControl=1;
NowIDA++;
}
}
}
{
//Определение наличия картинки
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
if(Form4->DBGrid1->Columns->Items[3]->Field->Value.IsNull())
{
Label1->Visible=false;
Label2->Visible=false;
Memo1->Visible=true;
Label17->Visible=true;
Image1->Visible=true;
Label23->Visible=true;
Edit1->Visible=true;
//Загрузка вопроса на форму
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
Memo1->Text=Form4->DBGrid1->Columns->Items[1]->Field->Value;
//Очистка предыдущих вариантов
if(CControl==1)
{
for(i=1;i<=MaxIDA;i++)
{
RadioButton[i]->Free();
}
}
CControl=0;
NowIDA++;
Edit1->Text="";
}
else
{
//перемещение объектов;
Memo1->Visible=true;
Label17->Visible=true;
Image1->Visible=true;
Label23->Visible=true;
Edit1->Visible=true;
Label1->Visible=false;
Label2->Visible=false;
Label1->Top=288;
Memo1->Top=312;
Label23->Top=416;
Edit1->Top=440;
//Загрузка вопроса на форму
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
Memo1->Text=Form4->DBGrid1->Columns->Items[1]->Field->Value;
//Загрузка изображения на форму
AnsiString FName, Dir;
Dir=ExtractFileDir(Application->ExeName);
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select * From
Questions Where ID="+AnsiString(NowIDQ);
DM3->ADOQuery1->Active=true;
линейный программирование симплексный метод
FName=Form4->DBGrid1->Columns->Items[3]->Field->Value;
Image1->Picture->LoadFromFile(Dir+"\\images\\"+FName);
//Очистка предыдущих вариантов
if(CControl==1)
{
for(i=1;i<=MaxIDA;i++)
{
RadioButton[i]->Free();
}
}
CControl=0;
NowIDA++;
Edit1->Text="";
}
}
}
//---------------------------------------------------------------------------
__fastcall TForm9::Button3Click(TObject *Sender)
{
Dir;
Dir=ExtractFileDir(Application->ExeName);
(Ans<MaxIDQ)
{
if(MessageDlg("Вы ответили на не все вопросы.\nУверены,
что хотите завершить тестирвоание?", mtConfirmation, TMsgDlgButtons()
<<mbYes << mbNo, 0)==mbNo)
{
return;
}
else
{
ShowMessage("Всего вопросов:
"+AnsiString(MaxIDQ)+"\nОтвечено:
"+AnsiString(Ans)+"\nВерных:
"+AnsiString(TrAns)+"\n\nОценка:
"+AnsiString((TrAns*5.0/MaxIDQ)));
}
}
{
ShowMessage("Всего вопросов:
"+AnsiString(MaxIDQ)+"\nОтвечено:
"+AnsiString(Ans)+"\nВерных: "+AnsiString(TrAns)+"\n\nОценка:
"+AnsiString((TrAns*5.0/MaxIDQ)));
}
ND;=Now();
->Lines->Add("<html>");->Lines->Add("<head>");->Lines->Add("<title>Результат
тестирвоания</title>");->Lines->Add("<meta
http-equiv='Content-Type' content='text/html; charset=windows-1251'>");->Lines->Add("</head>");->Lines->Add("<body>");->Lines->Add("<center><h2><u>Результат
тестирования пользователя №
"+AnsiString(ID)+"</u></h2></center></br>");->Lines->Add("<left><b>Логин:
</b>"+Login+";</left></br>");->Lines->Add("<left><b>Имя:
</b>"+sName+";</left></br>");->Lines->Add("<left><b>Фамилия:
</b>"+SurName+";</left></br>");->Lines->Add("<left><b>Группа:
</b>"+Group+";</left></br>");->Lines->Add("<left><b>Статус:
</b>"+Status+";</left></br>");->Lines->Add("<left><b>Всего
вопросов: </b>"+AnsiString(MaxIDQ)+";</left></br>");->Lines->Add("<left><b>Дано
ответов:
</b>"+AnsiString(Ans)+";</left></br>");->Lines->Add("<left><b><u>Оценка:
</u></b>"+AnsiString((TrAns*5.0/MaxIDQ))+";</left></br>");->Lines->Add("<left><b>Дата
тестирвоания: </b>"+DateToStr(ND)+";</left></br>");
->Lines->SaveToFile(Dir+"\\reports\\"+Login+"_"+AnsiString(DateToStr(ND))+".html");
//Запись в базу
int MaxIDT;
DM3->ADOQuery1->Active=false;
DM3->ADOQuery1->SQL->Text="Select MAX(ID) From
TestResult";
DM3->ADOQuery1->Active=true;
(Form4->DBGrid1->Columns->Items[0]->Field->Value.IsNull())
{
MaxIDT=1;
}
{
MaxIDT=Form4->DBGrid1->Columns->Items[0]->Field->Value;
MaxIDT++;
}
->ADOCommand1->CommandText="INSERT INTO TestResult
VALUES("+AnsiString(MaxIDT)+","+AnsiString(ID)+",'"+DateToStr(ND)+"','"+AnsiString((TrAns*5.0/MaxIDQ))+"','"+Login+"_"+AnsiString(DateToStr(ND))+".htm"+"')";->ADOCommand1->Execute();->Enabled=true;->Enabled=false;->Enabled=false;
}
//---------------------------------------------------------------------------
__fastcall TForm9::FormCreate(TObject *Sender)
{
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit10.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"*Form10;
//---------------------------------------------------------------------------
__fastcall TForm10::TForm10(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
__fastcall TForm10::Button2Click(TObject *Sender)
{->Close();
}
//---------------------------------------------------------------------------
__fastcall TForm10::FormCreate(TObject *Sender)
{buffer[MAX_PATH];(sizeof(buffer),buffer);dir=AnsiString(buffer);->Navigate(WideString(dir+"/AdminReport.html"));
}
//---------------------------------------------------------------------------
__fastcall TForm10::FormActivate(TObject *Sender)
{buffer[MAX_PATH];(sizeof(buffer),buffer);dir=AnsiString(buffer);->Navigate(WideString(dir+"/AdminReport.html"));
}
//---------------------------------------------------------------------------__fastcall
TForm10::Button1Click(TObject *Sender)
{->ExecWB(::OLECMDID_PRINT,
::OLECMDEXECOPT_DONTPROMPTUSER);
}
//---------------------------------------------------------------------------
ПРИЛОЖЕНИЕ 2.
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ
Отчет по
решению
Условия задачи:
Целевая функция:
f= 2x1 +3x2 → Max
Система ограничений:
x1 +2x2 <= 12
x1 +3x2 <= 24
x1 +1x2 <= 30
Решение:
Задача представленна в общем виде. Необходимо преобразовать ее в вид ОЗЛП
В этом случае функция примет вид:
f= 2x1 +3x2 → Max
А система ограничений примет вид:
x1 +2x2 +1x3 0x4 0x5 = 12
x1 +3x2 0x3 +1x4 0x5 = 24
x1 +1x2 0x3 0x4 +1x5 = 30
После всех преобразований можно стоставить Симплекс таблицу.
Исходная Симплекс - таблица:
Цикл 1
Базис
|
План
|
X1
|
X2
|
X3
|
X4
|
X5
|
X3
|
12
|
1
|
2
|
1
|
0
|
0
|
X4
|
24
|
1
|
3
|
0
|
1
|
0
|
X5
|
30
|
1
|
1
|
0
|
0
|
1
|
F'
|
0
|
-2
|
-3
|
0
|
0
|
0
|
Из базиса выводится переменная X3, а вводится - X2
Новое значение: F=0;
Новый опорный план: X3=12;
X4=24; X5=30;
Цикл 2
Базис
|
План
|
X1
|
X2
|
X3
|
X4
|
X5
|
X2
|
6
|
0,5
|
1
|
0,5
|
0
|
0
|
X4
|
6
|
-0,5
|
0
|
-1,5
|
1
|
0
|
X5
|
24
|
0,5
|
0
|
-0,5
|
0
|
1
|
F'
|
18
|
-0,5
|
0
|
1,5
|
0
|
0
|
Из базиса выводится переменная X2, а вводится - X1
Новое значение: F=18;
Новый опорный план: X2=6; X4=6; X5=24;
Цикл 2
Базис
|
План
|
X1
|
X2
|
X3
|
X4
|
X5
|
X1
|
12
|
1
|
2
|
1
|
0
|
0
|
X4
|
0
|
1
|
-1
|
1
|
0
|
X5
|
18
|
0
|
-1
|
-1
|
0
|
1
|
F'
|
24
|
0
|
1
|
2
|
0
|
0
|
Найден оптимальный план
Итоговое значение: F=24;
Итоговый опорный план: X1=12;
X4=12; X5=18;