Разработка сценариев и реакций на события согласно сценариям.
Нажатие на кнопку “Решить”.
При нажатии на кнопку “Решить” происходит:
а) проверка правильности исходных данных, и если данные не соответствуют типу (или не введен какой либо из коэффициентов), то выводится сообщение «Все коэффициенты системы должны быть числами», как показано на рисунке В.1;
Рисунок В.1
б) решение системы уравнений (после решения отбрасываются все ответы, где );
в) вывод ответа в зависимости от количества найденных в пункте б решений. Если найдено 2 решения, то выводятся , если найдено одно решение - , если решений нет, то выводится сообщение «Система уравнений не имеет решения !»
Текст сценария:
void __fastcall TMainForm::BtRasschetClick(TObject *Sender)
{
MResult->Clear();
double in_a = 0, in_b = 0, in_c = 0, in_d = 0;
try
{
in_a = StrToFloat(Eda->Text);
in_b = StrToFloat(Edb->Text);
in_c = StrToFloat(Edc->Text);
in_d = StrToFloat(Edd->Text);
}
catch (...)
{
ShowMessage ("Все коэффициенты системы уравнений должны быть числами !");
MResult->Lines->Add("Все коэффициенты системы уравнений должны быть числами !");
return;
}
long double resX1,resX2,resY1,resY2;
int reslt = solution_equation(in_a, in_b, in_c, in_d, resX1, resX2, resY1, resY2);
if (reslt == SQ_SUCCES_TWO_ROOT)
{
MResult->Lines->Add("Cистема имеет 2 решения:");
MResult->Lines->Add("x1 = " + FloatToStr(resX1) + "; y1 = "+ FloatToStr(resY1));
MResult->Lines->Add("x2 = " + FloatToStr(resX2) + "; y2 = "+ FloatToStr(resY2));
}
if (reslt == SQ_SUCCES_ALONE_ROOT)
{
MResult->Lines->Add("Cистема имеет 1 решение:");
MResult->Lines->Add("x = " + FloatToStr(resX1) + "; y = "+ FloatToStr(resY1));
}
if (reslt == SQ_ERROR_DIV_BY_ZERO) MResult->Lines->Add("Система уравнений не имеет решения из-за деления на 0!");
if (reslt == SQ_ERROR_NO_ROOT) MResult->Lines->Add("Система уравнений не имеет решения !"); }
Массовая обработка данных.
При нажатии первой кнопки “Выбрать” открывается форма для выбора файла с входными данными, как показано на рисунке В.2.
Рисунок В.2
Текст сценария:
void __fastcall TFormMas::SBInpClick(TObject *Sender)
{
if (OpenDialog1->Execute())
{
if(FileExists(OpenDialog1->FileName))
{
NameFileOpen = OpenDialog1->FileName;
}
else
ShowMessage("Такого файла не существует !");
}
}
При нажатии второй кнопки “выбрать” открывается форма для выбора файла с выходными данными, как показано на рисунке В.3.
Рисунок В.3
Текст сценария:
void __fastcall TFormMas::SBOutClick(TObject *Sender)
{
if (SaveDialog1->Execute())
{
NameFileSave = SaveDialog1->FileName;
}
}
При выборе кнопки решить происходит проверка входных данных, и если они не соответствуют заданному типу, то выводится сообщение « Указаны неправильные файлы данных !», как показано на рисунке В.4.
Рисунок В.4
Если не выбраны файл с исходными данными или файл для сохранения результатов, то выводится сообщение «Указаны не все файлы данных !», как показано на рисунке В.5.
Рисунок В.5
Текст сценария.
void __fastcall TFormMas::SBRasschetClick(TObject *Sender)
{
try
{
if ((NameFileSave != "")&&(NameFileOpen != "")) solution_with_files();
else ShowMessage("Выбраны не все файлы данных !");
}
catch(...)
{
ShowMessage("Указаны неправильные файлы данных !");
return;
}
}
Приложение Г