Объектно-ориентированное программирование - Дипломная работа

бесплатно 0
4.5 80
Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование.


Аннотация к работе
Программная реализация 4. Наиболее перспективным считается объектно-ориентированный подход (ООП) проектирования. Данная дипломная работа нацелена на создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Построение графиков является одним из самых важных процессов в математике, физике, теории вероятностей, математической статистике и во многих других дисциплинах. Приложение будет реализовано в среде Microsoft Visual Studio 2010 [2] с использованием технологии Windows Forms [3]. myPane->XAxis->MajorTic->IsOpposite = false; myPane->XAxis->MinorTic->IsOpposite = false; myPane->YAxis->MajorTic->IsOpposite = false; myPane->YAxis->MinorTic->IsOpposite = false; //Рисуем сетку по X myPane->XAxis->MajorGrid->IsVisible=false; myPane->XAxis->MajorGrid->DashOn=5; myPane->XAxis->MajorGrid->DashOff=5; myPane->XAxis->MajorGrid->Color=System::Drawing::Color::Gray; myPane->XAxis->Color=System::Drawing::Color::Gray; //Рисуем сетку по Y myPane->YAxis->MajorGrid->IsVisible=false; myPane->YAxis->MajorGrid->DashOn=5; myPane->YAxis->MajorGrid->DashOff=5; myPane->YAxis->MajorGrid->Color=System::Drawing::Color::Gray; myPane->YAxis->Color=System::Drawing::Color::Gray; //****************************************************************************** // Добавляем информацию по регистрам вывода точек //****************************************************************************** RollingPointPairList ^list1= gcnew RollingPointPairList (10000); RollingPointPairList ^list2= gcnew RollingPointPairList (10000); RollingPointPairList ^list3= gcnew RollingPointPairList (10000); // Выводим пустые линии графиков на экран LineItem ^F1Curve = myPane->AddCurve( Функция f(x), list1, Color::Blue, SymbolType::None); LineItem ^F2Curve = myPane->AddCurve( Функция g(x), list2, Color::Red, SymbolType::None); LineItem ^F3Curve = myPane->AddCurve( Функция h(x), list3, Color::Green, SymbolType::None); // Ширина линии F1Curve->Line->Width=2; F2Curve->Line->Width=2; F3Curve->Line->Width=2; // Задаем что линии гладкии F1Curve->Line->IsSmooth=true; F2Curve->Line->IsSmooth=true; F3Curve->Line->IsSmooth=true; // Обновлем данные об осях zedGraphControl1->AxisChange (); // Обновляем график zedGraphControl1->Invalidate(); } Далее производится ввод математического выражения с помощью клавиатуры, либо с помощью мастера функций. На первом этапе используем функцию SystemStringToChar, которая преобразовывает введенную строку типа String к строке типа Char. / Функция преобразования строки типа String в тип char, так как класс разбора работает только с Сhar public: char* SystemStringToChar(System::String^ string) { //возвращает значение ввиде Сhar return (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(string); } На втором этапе используем класс разбора Expression, который разбирает строку типа Char и осуществляет расчёт значения. class Expression { private: struct sintElem { char lexeme; double number; }; double * numArray; sintElem* walkthroughArray;/*Массив в котором хранятся результаты предразбора строки. // Функция построения графиков public: void Graw_Draw (void) { // Объявляем переменные, которые указывают диапазон значений X double min_x = System::Convert::ToDouble(textBox_x1->Text); double max_x = System::Convert::ToDouble(textBox_x2->Text); // Построение первого графика if(textBox11->Text != ) { // Преобразование строки типа String к типу Сhar char *stroka1 = SystemStringToChar(textBox11->Text); // Получаем линии от графиков LineItem ^F1Curve=(LineItem ^)zedGraphControl1->GraphPane->CurveList[0]; IPointListEdit ^list1= (IPointListEdit ^) F1Curve->Points; if(Expression::isExp(stroka1) == true) { // Вызов функции, которая разбирает строку типа Сhar, преобразуя ее в математическое выражение Expression exp(stroka1); for (double x =min_x; x Add(((double)(x)), exp.calculate(x)); } else MessageBox::Show(Не верный ввод даных,Ошибка, MessageBoxButtons::OK);} Для сохранения графиков используем метод компонента ZedGraph. В результате было создано тестирующее приложение (рисунок 2), которое позволяет вводить выражение функции и строить график, а также сохранять график в файле. // Открытие Form2 System::Windows::Forms::DialogResult dr; Form2 ^newDlg = gcnew Form2(); m1: dr = newDlg->ShowDialog(); // Условия выбора пользователем, в какой textBox будет введено выражение if (newDlg->radioButton1->Checked) { if (newDlg->textBox1->Text != ) textBox11->Text = newDlg->textBox1->Text; } if (newDlg->radioButton2->Checked) { if (newDlg->textBox1->Text != ) textBox22->Text = newDlg->textBox1->Text; } if (newDlg->radioButton3->Checked) { if (newDlg->textBox1->Text != ) textBox33->Text = newDlg->textBox1->Text; } 5.2 Руководство администратора прилож
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?