Программный комплекс для определения константы скорости химической реакции
Создание прикладного программного обеспечения, позволяющего определять константу скорости реакции. Анализ математических моделей кинетики химических реакций. Разработка пользовательского интерфейса. Проверка работоспособности программного обеспечения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.01.2017 |
Размер файла | 269,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовой проект
По Программированию
«Программный комплекс для определения константы скорости химической реакции»
ОГЛАВЛЕНИЕ
Введение
1. Аналитический обзор по выбору инструментальных средств для синтеза программного обеспечения
2. Цель и задачи курсового проекта
3. Функциональная структура программного комплекса
4. Структура данных
5. Алгоритм определения порядка химической реакции и константы скорости химической реакции
6. Описание пользовательского интерфейса
7. Проверка адекватности математической модели кинетики
8. Примеры тестирования работоспособности программного обеспечения
Заключение
Список использованной литературы
Приложение
Введение
Языки программирования высокого уровня разработаны для быстроты и удобства использования программистом. Основная черта таких языков - это абстракция, то есть введение смысловых конструкций, которые кратко описывают такие структуры данных и операции над ними, описания которых очень длинные и сложные для понимания на машинном коде (или другом низкоуровневом языке программирования). Наиболее распространёнными языками программирования подобного типа являются C++, Visual Basic, Java, Python, Ruby, Perl, Pascal, PHP. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них встроена поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.
В последнее десятилетие активное развитие получают языки программирования с объектно-ориентированными возможностями. Объектно-ориентированный подход к проектированию сложных программных систем стал безусловным стандартом, поскольку способствует лучшей управляемости проектом на всех стадиях разработки, тестирования и внедрения.
Объектно-ориентированное программирование (ООП) - парадигма программирования, в которой основными концепциями являются понятия объектов и классов. ООП в настоящее время является абсолютным лидером в области прикладного программирования.
Одним из наиболее распространенных объектно-ориентированных языков высокого уровня является С++, созданный Бьерном Страуструпом в начале 1980-х годов. Язык С++ полностью унаследовал и расширил возможности языка Си, который используется в задачах системного программирования. К достоинствам языка С++ можно отнести кроссплатформенность; возможность работы на низком уровне с памятью, адресами, портами; возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
Тема курсового проекта «Программный комплекс для определения константы скорости химической реакции».
Многое удается узнать о химических реакциях, изучая скорость их протекания и факторы, от которых она зависит. Этим занимается раздел химии, называемый химической кинетикой.
Одной из задач, стоящих перед химической кинетикой, является определение состава реакционной смеси (т.е. концентраций всех реагентов) в любой момент времени, для чего необходимо знать зависимость скорости реакции от концентраций. В общем случае, чем больше концентрации реагирующих веществ, тем больше скорость химической реакции.
1. Аналитический обзор по выбору инструментальных средств для синтеза программного обеспечения
Для реализации алгоритма решения обратной задачи кинетики разработано программное обеспечение, включающее графический пользовательский интерфейс. В качестве интегрированной среды разработки программного обеспечения (Integrated Development Environment, IDE) используется С++ Builder.
C ++ Builder - среда быстрой разработки (RAD), выпускаемый компанией Codegear, дочерней фирмой компании Embarcadero (ранее Borland). Предназначена для написания программ на языке программирования C ++. C ++ Builder объединяет Библиотеку визуальных компонентов и среда программирования (IDE), написанное на Delphi с компилятором C ++.
Цикл разработки аналогичный Delphi, но с существенными улучшениями, добавленными в C ++ Builder. Большинство компонентов, разработанных в Delphi, можно использовать и в C ++ Builder без модификации, но, к сожалению, обратное утверждение не верно.
Компоненты, используемые при разработке в C ++ Builder, встроенные в среду разработки приложений и представляют из себя набор типов объектов, которые используются в качестве фундамента при строительстве приложения.
Этот комплекс компонент называется Visual Component Library (VCL). В VCL есть такие стандартные элементы управления, как строки редактирования, статические элементы управления, строки редактирования со списками, списки объектов.
Еще есть такие компоненты, которые ранее были доступны только в библиотеках третьих фирм: табличные элементы управления, закладки, многостраничные записные книжки. Все объекты разбиты на страницы по своей функциональности и представлены в палитре компонент.
VCL содержит специальный объект предоставляет интерфейс графических устройств Windows, и позволяет разработчикам рисовать, не заботясь об обычных для программирования в среде Windows деталях.
Ключевой особенностью C ++ Builder есть возможность не только использовать визуальные компоненты для строительства приложений, но и создание новых компонент. Такая возможность позволяет разработчикам не переходить в другую среду разработки, а наоборот, встраивать новые инструменты в существующую среду. Кроме того, можно улучшить или полностью заменить существующие по умолчанию в C ++ Builder компоненты.
Классы объектов построены в виде иерархии, состоящей из абстрактных, промежуточных и готовых компонент. Разработчик может пользоваться готовыми компонентами, создавать собственные на основе абстрактных или промежуточных, а также создавать собственные объекты.
C ++ Builder содержит инструменты, которые позволяют осуществлять настоящую визуальную разработку Windows-программ методом drag-and-drop, упрощая программирование благодаря WYSIWYG редакторе интерфейса, встроенного в его среду разработки.
C ++ Builder изначально создавалась только для платформы Microsoft Windows. Поздние версии, содержащие компонентную библиотеку Borland, основанную на Qt, поддерживают и Windows и Linux.
В 2003 Borland выпустила C ++ BUILDERX (CBX), написанный с помощью той же инфраструктуры, и Jbuilder, который при этом был мало похож на C ++ Builder или Delphi. Этот продукт предназначался для разработки больших программ для крупных предприятий, но коммерческого успеха не достиг. В конце 2004 года Borland объявила, что продолжит развитие классического C ++ Builder и объединит его со средой разработки Delphi, прекратив, таким образом, разработку C ++ BUILDERX.
После примерно год после этого объявления, Borland выпустила Borland Developer Studio 2006, который включал Borland C ++ Builder 2006, предлагавший улучшенное управление конфигурацией и отладкой. Borland Developer Studio 2006 - единственный полноценный комплект, Delphi, содержащий C ++ builder и C # builder.
В 2007 Codegear выпустила C ++ Builder 2007, в котором реализовала полную поддержку API Microsoft Windows Vista, увеличила полноту соответствия стандарту ANSI C ++, ускорила разработку до 500%, включила поддержку Msbuild, архитектуры баз данных Dbx4 и «VCL для Web», поддерживающий AJAX. Поддержка API Microsoft Windows Vista включила приложения, сначала оформлены в стиле Vista, и естественную поддержку VCL для Aero и Vista Desktop. Codegear RAD Studio 2007 содержит C ++ Builder 2007 и Delphi. Также в 2007 Codegear «воскресила» марку «Turbo» и выпустила две «Turbo» версии C ++ Builder: Turbo C ++ Professional и Turbo C ++ Explorer (бесплатный), основанных на Borland C ++ Builder 2006.
В конце 2008 года компания CodeGear выпустила новую версию RAD Studio, в которую вошли Delphi 2009 и C ++ Builder 2009. В 2009 году в составе RAD Studio вышел C ++ Builder 2010 года.
Ранее сообщалось, что следующая версия, CodeGear C ++ Builder (кодовое имя «Commodore»), будет иметь поддержку x86-64 и возможностью создавать машинный x86-64 код. Однако в 2010 году в состав RAD Studio XE включена версия C ++ Builder XE без этой функциональности.
В 2012 году Embarcadero выпустила C ++ Builder XE3, совместимый с Windows 8. В 2013 году был выпущен C ++ Builder XE4.
2. Цель и задачи курсового проекта
Целью выполнения курсового проекта является закрепление знаний и навыков в области алгоритмизации, принципов объектно-ориентированного программирования, разработки, отладки и тестирования программных продуктов на языках высокого уровня. Задачами курсового проекта являются проектирование и создание прикладного программного обеспечения, позволяющего определять порядок химической реакции, константу скорости реакции, а также проводить статистический анализ результатов.
Перечень подлежащих разработке вопросов:
1.Ознакомиться с теорией по синтезу и анализу математических моделей (ММ) кинетики химических реакций.
2.Выполнить постановку задачи по исследованию кинетики химической реакции.
3.Составить формализованное описание задачи. Разработать структуру входных (экспериментальных данных по изменению концентрации компонентов во времени) и выходных данных (порядок реакции, константа скорости реакции).
4.Уточнить методы решения математической задачи.
5.Разработать алгоритм (блок-схему) для определения порядка химической реакции и константы скорости химической реакции.
6.Спроектировать структуру программы.
7.Разработать пользовательский интерфейс.
8.Выполнить предварительную оценку кинетических констант с использованием метода регрессионного анализа.
9.Провести статистический анализ результатов.
10.Составить программу, реализующую поставленную задачу.
11.Протестировать работоспособность программного обеспечения.
3. Характеристика программного комплекса
программный обеспечение химический реакция
Формализованное описание задачи определения констант скоростей химической реакции, как объекта программирования, позволяет создать программный комплекс, обладающий следующими характеристиками:
1. Операционная система, ОС (англ. operating system) - базовый комплекс компьютерных программ, обеспечивающий управление аппаратными средствами компьютера, работу с файлами, ввод и вывод данных, а также выполнение прикладных программ и утилит: Microsoft Windows.
2. Язык программирования: С++ - компилируемый строго типизированный язык программирования общего назначения.
3. Количество разработанных классов (class): 2, а именно
TForm1 - класс ввода исходных данных (начальные концентрации конечных компонентов, распределение концентраций исходных компонентов во времени);
TForm2 - класс вывода результатов расчета (порядок реакции, константа скорости реакции, дисперсия, коэффициент корреляции).
4. Количество потоков выполнения команд (нитей, threads) - одна последовательность хода управления внутри программы: 1.
5. Распределенность приложения: локальное.
6. Инструментальная среда разработки: С++ Builder 6.
7. Количество исходных файлов программы: 5 (Project1.cpp, Unit1.h, Unit1.cpp, Unit2.h, Unit2.cpp).
4. Структура данных
Входные экспериментальные данные по изменению концентрации компонентов во времени представлены далее.
Начальная концентрация CВ = 0,1 моль/л; СС = 0,01 моль/л, СD = 0,002 моль/л.
Распределение концентрации CА(t) во времени t приведено в таблице 1.
Таблица 1 - Распределение концентрации компонента А во времени t, CА(t)
Концентрация CА, моль/л |
Время t, c |
|
5 |
0 |
|
4 |
1 |
|
2 |
2 |
|
1 |
3 |
|
0,8 |
4 |
|
0,5 |
5 |
После проведения моделирования получим такие выходные данные как порядок реакции N и константа скорости реакции K.
5. Алгоритм определения порядка химической реакции и константы скорости химической реакции
Уравнение химической реакции дано в общем виде для реакции разложения: 3А2В+С+5D. Алгоритм для определения константы скорости реакции представлен на рисунке 1.
Алгоритм позволяет на основании исходных данных определить k - константы скорости реакции, n - порядок реакции, r - коэффициент корреляции и d - дисперсии. Исходными данными являются:
изменение концентрации исходного компонента СА(t) во времени,
начальные концентрации компонентов СВCCи CD,
количество экспериментальных точек N.
Рисунок 1 - Алгоритм определения константы скорости реакции
6. Описание пользовательского интерфейса
Программа состоит из двух форм (окон), представленных на рисунках 2 и 3 соответственно и позволяющих вводить начальные данные и отображать результаты расчета. Программа включает пять исходных файлов программы: Project1.cpp, Unit1.h, Unit1.cpp, Unit2.h, Unit2.cpp. Ниже приведен состав файлов с подробными комментариями. Графический интерфейс включает следующие классы визуальных компонентов: формы TForm, изображения TImage, панели TPanel, группы элементов TGroupBox, метки TLabel, однострочный редактор текста с меткой TLabeledEdit, график TChart, кнопки TButton, компонент для ввода и изменения числовых значений TUpDown, таблица TStringGrid, и.т.д.
7. Проверка адекватности математической модели кинетики
Полученное значение коэффициента корреляцииr = 0,873 говорит о том, что связь между экспериментальными данными и расчетами, выполненными в математической модели существенная.
Полученное значение дисперсии d = 0,8265 - невелико что также свидетельствует о малом разбросе данных, полученных при использовании математической модели, относительно данных, полученных в результате эксперимента.
Из выше сказанного можно сделать вывод что математическая модель может быть использована для определения константы скорости химической реакции.
8. Примеры тестирования работоспособности программного обеспечения
Тестирование разработанного в среде C++ Builder программного обеспечения проводилось при входных данных, которые были определены ранее.
Рисунок 2 - Форма ввода исходных данных, отображения экспериментальных значений и расчетных кривых концентраций
Рисунок 3 - Форма отображения результатов расчета
Результаты расчета:
Порядок реакции n = 1
Константа скорости реакции k = 0,32 1/c
Дисперсия d = 0,8265 (моль / л)2
Коэффициент корреляции r = 0,873
Заключение
В ходе выполнения курсового проекта было создано прикладное программное обеспечение позволяющего определять порядок химической реакции, константу скорости реакции, а также проводить статистический анализ результатов.
Был разработан алгоритм, который позволяет на основании исходных данных определить k - константы скорости реакции, n - порядок реакции, r - коэффициент корреляции и d - дисперсии. Исходными данными являются:
изменение концентрации исходного компонента СА(t) во времени,
начальные концентрации компонентов СВCCи CD,
количество экспериментальных точек N.
Для реализации алгоритма решения обратной задачи кинетики было разработано программное обеспечение, включающее графический пользовательский интерфейс. В качестве интегрированной среды разработки программного обеспечения (Integrated Development Environment, IDE) используется С++ Builder.
Программа состоит из двух форм, позволяющих вводить начальные данные и отображать результаты расчета. Программа включает пять исходных файлов программы: Project1.cpp, Unit1.h, Unit1.cpp, Unit2.h, Unit2.cpp.
Было проведено тестирование работоспособности программного продукта и проведена оценка адекватности математической модели по полученным значениям дисперсии и корреляции. Было определено что математическая модель может быть использована для определения константы скорости химической реакции.
Список использованной литературы
1. Архангельский, А. Я. Программирование в C++Builder 6 и 2006: разработка программ для Windows: методические и справочные материалы по C++Builder. -- Москва: БИНОМ, 2007. -- 1181 с.
2.Страуструп, Бьерн. Язык программирования C++ / Бьерн Страуструп; Пер. с англ. С. Анисимова, М. Кононова; Под ред. Ф. Андреева, А. Ушакова. -- Спец. изд. -- М.: Бином; СПб.: Нев. диалект, 2001. -- 1098 с.
3.Эккель, Брюс. Философия C++: Практ. программирование / БрюсЭккель, Чак Эллисон; [Пер. с англ. Е. Матвеев]. -- М.: Питер, 2004. -- 608 с.
4.Липпман, Стенли Б. Язык программирования С++: вводный курс /Стенли Б. Липпман, Жози Лажойе, Барбара Му; 4-е изд. -- М.: Вильямс, 2007. -- 889 с.
5. Астахова, И. Ф. Язык C++ / И. Ф. Астахова, С. В. Власов, В. В. Фертиков, А. В. Ларин. -- Минск: Новое знание, 2003. -- 200 с.
6. Иванова, Г. С. Основы программирования / Г. С. Иванова. -- Изд. 4-е, стер. -- М.: Изд-во МГТУ, 2007. -- 415 с.
7. Иванова, Г. С. Объектно-ориентированное программирование / Г. С. Иванова, Т. Н. Ничушкина, Е. К. Пугачев; под ред. Г. С. Ивановой. -Изд. 3-е, стер. -- М.: Изд-во МГТУ, 2007. -- 366 с.
8. Чистякова, Т. Б. Программирование на языках высокого уровня. Базовый курс: учебное пособие для студентов заочной формы обучения/ Т. Б. Чистякова, Р. В. Антипин, И. В. Новожилова. -- СПб.: СПбГТИ (ТУ), 2008. -- 227 с.
9. Чистякова, Т. Б. Синтез и анализ математических моделей кинетики-химических реакций: учебное пособие / Т. Б. Чистякова, Л. В. Гольцева, А. М. Островская, Ю. В. Островский. -- СПб.: СПбГТИ (ТУ), 2002. -- 70 с.
10. Гартман, Т. Н. Основы компьютерного моделирования химико-технологических процессов: учебное пособие / Т. Н. Гартман, Д. В. Клушин. -- Москва: Академкнига, 2008. -- 415 с.
Приложение
Unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "math.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Задание загаловка таблицы
StringGrid1->Cells[0][0] = "C";
StringGrid1->Cells[1][0] = "t";
float qqq[6]={0,1,2,3,4,5};
float rrr[6]={5,4,3,2,1,0.5};
for(int i=1;i<6+1;i++)
{
StringGrid1->Cells[1][i]=qqq[i-1];
StringGrid1->Cells[0][i]=rrr[i-1];
}
}
void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)
{ //опред. обработчика для изменения кол-ва строк таблицы
StringGrid1->RowCount = UpDown1->Position + 1;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{ //Инициализация переменных для решения задачи кинетики
d = 0.0;
int i, reg_up(0), reg_down(0);
double *y, *x, s1(UpDown1->Position - 1),
s2(0.0), s3(0.0), s4(0.0), s5(0.0), s6(0.0), ca, cb, cc,cd, t;
//Очистка графиков после предыдущего расчета
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
Series5->Clear();
try
{
//создание в динамической памяти массива для хранения экспериментальных данных
y = new double[UpDown1->Position - 1];
x = new double[UpDown1->Position - 1];
if(!y || !x) throw "НЕТ свободной памяти";
//Задание начальных значений концентраций
ca = StringGrid1->Cells[0][1].ToDouble();
cb = LabeledEdit1->Text.ToDouble();
cc = LabeledEdit2->Text.ToDouble();
cd= LabeledEdit4->Text.ToDouble();
//Проверка входных данных на допустимость значений
if(!ca || cb < 0.0 || cc < 0.0 || cd < 0.0)
throw "Начальные концентрации компонентов должны быть больше 0";
for(i = 0; i < UpDown1->Position - 1; i++)
{
if(StringGrid1->Cells[0][i + 1].ToDouble() > StringGrid1->Cells[0][i + 2].ToDouble())
reg_down++;
else reg_up++;
if(StringGrid1->Cells[0][i + 1].ToDouble() == StringGrid1->Cells[0][i + 2].ToDouble())
throw "Концентрация в соседних точках должна быть различна";
if(StringGrid1->Cells[1][i + 1].ToDouble() >= StringGrid1->Cells[1][i + 2].ToDouble())
throw "Нарушение последовательности ввода времени";
if(StringGrid1->Cells[1][i+1].ToDouble()< 0||StringGrid1->Cells[0][i + 1].ToDouble()<0)
throw "Время и концентрация не могут быть отрицательными";
}
//Расчет значений локальных переменных, необходимых для решения задачи
double t1,t2,t3,t4,t5,t6,b1,b0;
for(i = 0; i < UpDown1->Position - 1; i++)
{
t1= StringGrid1->Cells[0][i + 2].ToDouble();
t2= StringGrid1->Cells[0][i + 1].ToDouble();
t3= StringGrid1->Cells[1][i + 2].ToDouble();
t4=StringGrid1->Cells[1][i + 1].ToDouble();
t5=t1-t2;
t6=t3-t4;
y[i] = log(fabs(t5) /t6);
x[i] = log(StringGrid1->Cells[0][i + 1].ToDouble());
s2 += x[i];
s3 += y[i];
s4 += x[i] * x[i];
s5 += x[i] * y[i];
s6 += y[i] * y[i];
}
//Расчет константы скорости реакции, порядка реакции, коэффициента корреляции
k = exp((s3 * s4 - s2 * s5) / (s1 * s4 - s2 * s2));
n = (s1 * s5 - s2 * s3) / (s1 * s4 - s2 * s2);
r = (s1 * s5 - s2 * s3) / sqrt((s1 * s4 - s2 * s2) * (s1 * s6 - s3 * s3));
//Построение графиков и расчет концентраций компонентов реакции
for(int i = 1; i <= UpDown1->Position; i++)
{
Series1->AddXY(StringGrid1->Cells[1][i].ToDouble(),StringGrid1->Cells[0][i].ToDouble());
if(ca< 0) throw "Модель невозможно описать линейной регрессией";
if(i == 1)
{
Series2->AddXY(StringGrid1->Cells[1][i].ToDouble(), ca );
Series3->AddXY(StringGrid1->Cells[1][i].ToDouble(), cb );
Series4->AddXY(StringGrid1->Cells[1][i].ToDouble(), cc );
Series5->AddXY(StringGrid1->Cells[1][i].ToDouble(), cd );
else
{
t = StringGrid1->Cells[1][i].ToDouble() - StringGrid1->Cells[1][i - 1].ToDouble();
Series3->AddXY(StringGrid1->Cells[1][i].ToDouble(), cb = cb + k *pow(ca, n) * t*2/3);
Series4->AddXY(StringGrid1->Cells[1][i].ToDouble(), cc = cc + k * pow(ca, n)*t/3);
Series5->AddXY(StringGrid1->Cells[1][i].ToDouble(), cd = cd + k * pow(ca, n)*t*5/3);
if(reg_down > reg_up)
Series2->AddXY(StringGrid1->Cells[1][i].ToDouble(), ca =ca-k*pow(ca, n) * t);
else
Series2->AddXY(StringGrid1->Cells[1][i].ToDouble(), ca =ca+k*pow(ca, n) * t);
}
//расчет дисперсии
d += pow(StringGrid1->Cells[0][i].ToDouble() - ca, 2);
}
//Создание формы отображения результатов
Application->CreateForm(__classid(TForm2), &Form2);
//Отображение формы
Form2->ShowModal();
delete[]y;
delete[]x;
}
catch(char*str)
{
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
Series5->Clear();
// Вывод сообщения об ошибке
Application->MessageBox(str, "Ошибка", MB_ICONERROR | MB_OK);
}
catch(EConvertError&)
{
// ?Вывод сообщения об ошибке
Application->MessageBox("Не правильный тип данных", "Ошибка",
MB_ICONERROR | MB_OK);
delete[]y;
delete[]x;
}
catch(...)
{
//Выводсообщенияобошибке
Application->MessageBox("НЕ известная ошибка", "Ошибка",
MB_ICONERROR | MB_OK);
}
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
Unit1.h
#ifndef Unit1H
#define Unit1H
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Chart.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>
#include <Series.hpp>
class TForm1 : public TForm
{
__published:// IDE-managed Components
TPanel *Panel1;
TGroupBox *GroupBox1;
TLabeledEdit *LabeledEdit1;
TLabeledEdit *LabeledEdit2;
TChart *Chart1;
TUpDown *UpDown1;
TLabeledEdit *LabeledEdit3;
TStringGrid *StringGrid1;
TButton *Button1;
TButton *Button2;
TPointSeries *Series1;
TLabeledEdit *LabeledEdit4;
TLineSeries *Series5;
TLineSeries *Series4;
TLineSeries *Series3;
TLineSeries *Series2;
TPointSeries *Series6;
void __fastcall FormCreate(TObject *Sender);
void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private:// User declarations
public:// User declarations
double k, n, d, r;
__fastcall TForm1(TComponent* Owner);
};
extern PACKAGE TForm1 *Form1;
#endif
Unit2.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm2::FormShow(TObject *Sender)
{
LabeledEdit2->Text = FloatToStrF(Form1->n, ffGeneral, 4, 4);
LabeledEdit3->Text = FloatToStrF(Form1->k, ffGeneral, 4, 4);
LabeledEdit1->Text = FloatToStrF(Form1->d, ffGeneral, 4, 4);
LabeledEdit4->Text = FloatToStrF(Form1->r, ffGeneral, 4, 4);
}
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form2->Close();
}
Unit2.h
#ifndef Unit2H
#define Unit2H
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
class TForm2 : public TForm
{
__published:// IDE-managed Components
TGroupBox *GroupBox1;
TLabeledEdit *LabeledEdit1;
TLabeledEdit *LabeledEdit2;
TLabeledEdit *LabeledEdit3;
TLabeledEdit *LabeledEdit4;
TButton *Button1;
void __fastcall FormShow(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm2(TComponent* Owner);
};
extern PACKAGE TForm2 *Form2;
#endif
Project1.cpp
#include <vcl.h>
#pragma hdrstop
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
Размещено на Allbest.ru
Подобные документы
Создание прикладного программного обеспечения для реализации интерфейса терминала по приему платежей за услуги связи. Анализ требований к программному обеспечению. Выбор языка программирования. Разработка интерфейса пользователя и проектной документации.
дипломная работа [1,3 M], добавлен 18.06.2015Сравнительный анализ автоматизированных систем для предприятий. Проектирование концептуальной базы данных для учёта автозапчастей и предоставляемых услуг автосервиса. Разработка прикладного программного обеспечения, пользовательского интерфейса.
дипломная работа [1,5 M], добавлен 19.07.2014Этапы разработки технического задания. Спецификация программного обеспечения при структурном подходе. Дерево диаграмм, базовые понятия сетевой модели данных. Разработка пользовательского интерфейса. Разработка сценария диалога на основе экранных форм.
курсовая работа [2,0 M], добавлен 24.06.2012Проект системы автоматизированного аудита программного обеспечения вычислительного центра ЛГТУ; функциональное назначение, методы и средства разработки концептуальных статических и динамических моделей пользовательского интерфейса; технические средства.
курсовая работа [4,2 M], добавлен 04.01.2012Оснащенность предприятия системным программным обеспечением, используемым для организации производственного процесса. Проектирование, внедрение и эксплуатация системного и прикладного программного обеспечения. Тестирование и отладка программного продукта.
отчет по практике [272,2 K], добавлен 29.12.2014Разработка программного комплекса и описание алгоритма. Разработка пользовательского интерфейса. Анализ тестовых испытаний программного блока. Защита пользователей от воздействия на них опасных и вредных факторов. Режимы работы программного комплекса.
дипломная работа [1,7 M], добавлен 14.03.2013Общие сведения об исследуемой организации, направления ее хозяйственной деятельности, характеристика используемой вычислительной техники и программного обеспечения. Разработка пользовательского интерфейса, шаблонов, отладка и тестирование программы.
отчет по практике [159,3 K], добавлен 11.04.2016Разработка интерфейса и программного обеспечения виртуальной библиотеки. Проектирование структуры экранов и навигационной системы. Построение прототипа пользовательского интерфейса. Тестирование и модификация прототипа. Экспертная оценка разработки.
курсовая работа [41,2 K], добавлен 19.12.2010Понятие локализации программного обеспечения как процесса его адаптации к культуре какой-либо страны. Перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения. Инструментарий для локализации. Языковые теги и коды.
презентация [243,7 K], добавлен 07.10.2013Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.
дипломная работа [2,3 M], добавлен 13.07.2011