Разработка приложения колебаний массы с гидравлическим демпфером
Курсовая работа
по дисциплине
Конструирование программ и языки
программирования
на тему
Разработка приложения колебаний массы
с гидравлическим демпфером
Введение
Целью курсовой работы по дисциплине: ”Конструирование программ и языки
программирования” на тему «Разработка приложения колебаний массы с
гидравлическим демпфером» является разработка программного обеспечения для
компьютера, с помощью которого будет производится расчет временного поведения
системы.
Решаемая задача относится к разделу физики (механика). В процессе ее
решения получается решение поведение системы относительно времени и колебании
некоторого груза под действием силы нагрузки треугольного вида.- это
современный программный продукт, позволяющий создавать широкий спектр приложений
для среды Microsoft Windows. Он объединяет в себе высокопроизводительный
компилятор с языка ObjectPascal, являющийся объектно-ориентированным
расширением структурного языка третьего поколения Pascal, средств наглядного
(визуального) создания программ и масштабируемую технологию управления БД.
Основное назначение Delphi - служить средством для быстрого создания широкого
класса Windows-приложений, включая приложения, отвечающие технологии
распределенной обработки данных, называемой технологией клиент-сервер.
Для разработки Windows-приложений Delphi имеет следующие средства:
высокопроизводительный компилятор
объектно-ориентированная модель компонентов
быстрая среда разработки (RAD)
расширяемость
средства для построения БД- это продукт, позволяющий создавать широкий
спектр приложений для Windows. Среда Delphi включает в себя полный набор
визуальных средств для быстрой разработки приложений, поддерживающих как
создание пользовательских интерфейсов, так и таблиц базы данных. Библиотека
классов, входящих в Delphi, инкапсулирующих различные группы функций Windows
API. Delphi является системой с открытой архитектурой, что позволяет дополнять
ее новыми средствами, и переносить на различные платформы.
1. Математическая формулировка задачи
Принципиальная схема гидравлического демпфера или катаракта приведена на
рисунке 1.
Рисунок 1 - Расчетная схема гидравлического демпфера
Демпфер состоит из наполненного вязкой жидкостью цилиндра D, в котором
движется поршень Р с отверствиями А. Поршень штоком В соединен с массой m, вес которой G=mg. Масса m
подвешена на пружине С.
Уравнение колебаний массы имеет вид
Сопротивление, встречаемое поршнем при движении его в цилиндре (так
называемое вязкое трение), пропорционально первой степени скорости, причем q есть расстояние центра тяжести системы Р, В, m от положения равновесия. Наиболее
сложной частью расчета является определение величины коэффициента c, зависящего от многих факторов.
Здесь следует
воспользоваться следующим выражением этого коэффициента:
где
коэффициент вязкости (),
длина отверствий А (м),
диаметр отверствий (м),
площадь поршня (),
число отверствий.
Если вес всей колеблющейся системы (груз, поршень и поршневой шток), диаметр поршня (м), то
Введя обозначения масса равная сумме массы m, массы штока и массы поршня, жесткость пружины) , запишем
уравнение (1) в виде
(2)
Решение уравнения (2) будет иметь различную форму в зависимости от
соотношений
Первый случай: (случай «малого» сопротивления).
Решение уравнения (2) представляется в виде
А - амплитуда, начальная фаза, - круговая частота свободных
колебаний.
Второй случай: (случай «большого» сопротивления).
Решение уравнения (2) имеет вид:
(4)
где
Третий случай:
Решением уравнения (1) будет
(5)
Где .
. Описание программы
Структурная схема программы (связи модулей).
Программа состоит из следующих модулей:
Project1.dpr - модуль проекта. - модуль
содержащий описание класса главной формы программы, и описание методов работы
формы. - модуль заставки, появляющейся при запуске программного обеспечения.
_class - модуль созданного класса с закрытыми полями, и методами для работы с
данным классом. .dll - динамически подключаемая библиотека, содержащая форму
окна «О программе», вызываемой из главного окна программы.
В программе реализованы следующие классы:
Класс TForm1 - от родительского класса TForm, содержит необходимые поля и
методы для работы главной формы программы.
Основные поля класса:- главное меню.- таблица для вывода результатов
вычислений.... 113 - поля для ввода исходной информации в программу.- строка
состояние, отображающая справочную контекстную информацию. - панель кнопок.-
область построения диаграмм на форме программы.- график диаграммы.
Основные методы класса:
procedure N5Click(Sender: TObject) - обработка нажатий
на пункты
меню. ToolButton1Click(Sender:
TObject) - обработка нажатий
на кнопки
на панели. FormShow(Sender: TObject) - отображение заставки на экране. ShowHint(Sender: TObject)
- обработка показываний контекстной помощи (подсказки).
function Proverka(Sender: TObject):boolean
- функция проверки на заполнение полей исходными данными.
Класс TLogo - от родительского класса TForm, содержит является окном
заставки показываемой перед запуском основной формы программы.
Основные поля класса:- рисунок заставки.- текстовые поля со статической
информацией.- таймер с отсчетом времени для показа заставки.
Методы класса:
procedure Timer1Timer(Sender: TObject)
- метод отсчет таймера, по завершению которого форма (заставка) закрывается
procedure FormCreate(Sender: TObject) - при создании формы, автоматически срабатывает
таймер, и форма закрывается по истечению времени.
procedure FormKeyPress(Sender: TObject; var Key: Char) - обработка нажатия клавиш на
клавиатуре, при нажатии клавиши заставка закрывается.
Класс TKurs - разработанный класс для вычисления в заданный промежуток
времени поведения системы с одной степенью свободы под действием нагрузки
треугольного вида.
Поля класса (все поля типа double): - начальное значение времени,i - промежуточные значения времени,k - конечное значение периода
времени,- упругость пружины,
m -
масса груза,- коэффициент вязкости жидкости,
l -
длина отверстий в поршне,
q -
площадь поршня,
H -
диаметр порщня,
m1 -
масса штока,
q0 -
расстояние центра тяжести системы,
z - число отверстий,- диаметр отверстий,
hag - приращение (шаг) времени.
Методы класса:
function g_f(t: double):double
- функция вычисления значения системы при заданном значении времени.
procedure Create - запись информации в поля
класса;
procedure
ReadIniFile - чтение ini файла;WriteIniFile - запись в ini
файл;
procedure Raszet -
произведение вычислений изменения системы и занесение информации в таблицу
результатов главной формы;Draw - рисование на главной форме графика поведения
системы относительно времени.
В программе реализована одна
динамическая библиотека ProjectDLL.dll, в ней содержится окно «О программе».
Библиотека имеет одну процедуру, которая доступна для использования из
библиотеки и одну функцию которая посчитывает значение переменной n
используемой при расчетах в программе.
procedure
ShowAbout(Handle: THandle)stdcall; - процедура отображения окна «О программе».
function N_dann(u,l,Q_,z,H,d:double):double; - функция подсчета значения переменной n.
Работа программы выполняется
следующим образом: при создании главное формы на экран выводится заставка,
форма модуля Unit2.pas, которая по истечению 5 секунд, либо по нажатию клавиши,
исчезает. Запускается главная форма, модуль Unit1.pas. Далее ожидаются действия
пользователя. Пользователь должен ввести исходные данные, либо выбрать метод
чтения данных из ini файла. Данные заносятся в создаваемый класс TKurs,
модуля Kursuv_class.pas. Далее при выборе пользователя метода вычислить
производится запуск метода Raszet, который выводит полученную информацию в
таблицу. Затем метод Draw класса TKurs рисует график изменения поведения
системы. При вызове окна «О программе», подключается динамическая библиотека
ProjectDLL.dll из которой процедурой ShowAbout(Handle:
THandle) отображается окно «О программе».
3. Руководство пользователя
Работа программы начинается с запуска приложения Project1.exe.
Пользователю сперва показывается заставка программы, которая сама пропадет
через 5 секунд после появления, либо можно закрыть ее нажатием клавиши на
клавиатуре. После чего появляется главная форма программы. Дальнейшие действия
пользователя - заполнить данными поля «Исходные данные», исходные данные
возможно взять из ini файла, для
этого пользователю необходимо выбрать пункт меню Файл / Данные из *.ini. Данные берутся из файла ini.ini находящегося в папке Windows, если данный файл не найден, либо испорчен, данные
автоматически записываются все единицами. Далее пользователь выбирает пункт
меню Данные / Вычислить, происходит вычисления значений изменений системы
относительно времени и занесение данных в таблицу. Данные / График происходит
построение графического изображения изменения системы относительно времени.
Пункты меню программы:
Файл / Данные из *.ini. -
читать данный из файла ini.ini в папке Windows.
Файл / Сохранить в *.ini -
записывает исходные данные в файл ini.ini в папку Windows.
Файл / Выход - выход из программы.
Данные / Вычислить - происходит вычисления значений изменений системы
относительно времени и занесение данных в таблицу.
Данные / График - происходит построение графического изображения
изменения системы относительно времени.
Данные / Очистить / Все - все поля, таблицу значений и график
Данные / Очистить / Исходные данные - очищает поля с исходными данными
Данные / Очистить / Таблицу значений - очищает значения функции
занесенные в таблицу.
Данные / Очистить / График - стирает изображение графика.
Документы / Пояснительная записка - отрывается пояснительная записка
данного курсового проекта.
Документы / Презентация - в PowerPoint открывается презентация на данное
программное средство.
Документы / Данные в Excel - заносятся данные полученный при выполнении
вычислений в книгу Microsoft Excel.
Справка / Содержание - справочная информация по использованию данного
программного средства.
Справка / Заставка - запускается заставка.
Справка / О программе - открывается диалоговое окно «О программе».
На рисунке 3 изображена кнопочная панель для удобства использования
программного средства.
Рис. 3 Кнопочная панель
Значение кнопок с лева на право следующее:
- Читать данный из файла ini.ini в папке Windows.
- Записывает исходные данные в файл ini.ini в
папку Windows.
- Вычислить - происходит вычисления значений изменений системы
относительно времени и занесение данных в таблицу.
- График - происходит построение графического изображения изменения
системы относительно времени.
- Очистить - все поля, таблицу значений и график.
- Пояснительная записка - отрывается пояснительная записка данного
курсового проекта.
- Презентация - в PowerPoint открывается презентация на данное
программное средство.
- Данные в Excel - заносятся данные полученный при выполнении вычислений
в книгу Microsoft Excel.
- справочная информация по использованию данного программного средства.
- Заставка - запускается заставка.
- О программе - открывается диалоговое окно «О программе».
- Выход из программы.
4. Тестирование программного средства
Цикл разработки программного обеспечения включает в себя стадию
тестирования. На данном этапе проводится проверка работоспособности программы,
причем не только в нормальных условиях, но и в критических - нехватка системных
ресурсов, намеренные ошибки во входных данных и пр. Также проверятся корректное
и своевременное освобождение всех ресурсов, занятых приложением. При нахождении
недочетов в программе они исправляются - пересматривается исходный код
соответствующих модулей, находятся и исправляются недоработки.
При своей работе программа потребляет определенное количество ресурсов
системы, таким образом, для ее запуска необходимо, чтобы данные ресурсы были
свободны и предоставлены ей для работы. Из них программе необходимы свободное
место на жестком диске компьютера для размещения файлов непосредственно самой
программы, файла базы данных и вспомогательных файлов, а также используемых библиотек;
определенное количество оперативной памяти для запуска процесса программы;
процессор компьютера, который используется для нужд вычислений; из программного
обеспечения необходима любая 32-разрядная версия Windows, под управлением
которой работает приложение.
Программа разработана на компьютере, который и является оптимальным для
ее запуска. Он имеет следующие характеристики:
процессор AMD Duron 800MGh;
128 Mb оперативной памяти SDRAM;
видеокарта GeForce 4MX 64 Mb памяти;
20 Gb винчестер Samsung SP0212N, из них на системном диске
свободны 200 Mb для размещения файла виртуальной памяти;
CD-RW Teac CRX, который используется для инсталляции программы;
3,5" флоппи-дисковод, который также может быть использован
для установки приложения;
17" монитор с разрешением 1024x768 и глубиной цвета 32 бита
на пиксель;
операционная система Windows XP.
Если компьютер следует вышеперечисленным характеристикам, либо имеет
близкие к ним, программа корректно запустится и будет функционировать.
В данном решении тестирование проводилось несколькими способами.
Во-первых, в диалоговых окнах добавления и редактирования записей вводились
неправильные значения и проверялась реакция программы, в частности, в числовые
поля вводились символы и т.д. Также производились попытки изменить либо удалить
записи в момент, когда никакой текущей записи не выбрано.
В момент прохождения стадии тестирования в программе были найдены и
устранены мелкие недостатки.
После тестирования были построены финальная версия программы и
программа-установщик. Данное приложение готово к использованию.
В ходе испытаний была доказана полная совместимость и правильность работы
программного средства с Windows ХР.
Заключение
Разработанный пакет программного обеспечения позволит ускорить,
автоматизировать работу по нахождению значений временного поведения системы:
колебаний массы с гидравлическим демпфером.
Программный продукт реализован на языке высокого уровня Borland Delphi 7.0.
В разработанном программном средстве реализовано использование
динамической библиотеки DLL, организован экспорт данных в электронный таблицы
Microsoft Excel. К программному средству прилагается справочная информация по
использованию.
программа гидравлический демпфер delphi
Список использованной литературы
1. А.М. Епанешников, В.А. Епанешников Программирование в
среде Delphi.-М.:»Диалог МИФИ», 1998.
2. Бобровский С. Delphi 5: учебный курс- СПб: Издательство «Питер», 2000.-
640с.
. Гринчишин Я.Т. и др. Алгоритмы и программы на
Бейсике: Учеб. Пособие для студентов пед. Ин-тов по физ.-мат.
Спец./Я.Т.Гринчишин, В.И. Ефимов, А.Н. Ломакович.-М.: Просвещение, 1988.- 160
с.
. Дарахвелидзе П.Г., Марков Е.П. Delphi 4.-СПб.: БХВ-Санкт-Петербург, 1999.-
816 с.
. Елмакова Н., Трепалин С., Тенцер А. Delphi 6 и технология COM.-СПб.: Питер, 2002. - 640 с.
7. Фаронов В.В. Delphi 6. Учебный курс.-М.: Издатель Молгачева С.В.,
2001.-672с.
8. Федоров А.. Delphi 5.0 для всех. -М.: Тоо фирма
“КомпьютерПресс”, 1998. - 464 с.
Приложения
Листинг программных модулей
// Project1.dpr - файл проекта.
program Project1;,in 'Unit1.pas' {Form1},in 'Unit2.pas'
{Logo},_class in 'Kursuv_class.pas';
{$R *.res}.Initialize;.CreateForm(TForm1,
Form1);.CreateForm(TLogo, Logo);.Run;.
// Unit1.pas - главная
форма программы.
// главная форма программы.
unit Unit1;
interface, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, StdCtrls, Buttons, Menus, ToolWin, ActnMan, ActnCtrls, Grids,
IniFiles,_class, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,,
PowerPointXP, ExcelXP, OleServer, WordXP, ComObj, ActiveX,ShellAPI;
// процедура вызова окна о программе из DLL
procedure ShowAbout(Handle: THandle)stdcall;
function N_dann(u,l,Q_,z,H,d:double):double ;
type= class(TForm): TBitBtn;: TMainMenu;: TPopupMenu;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TStringGrid;: TGroupBox;:
TEdit;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;:
TEdit;: TStatusBar;: TToolBar;: TMenuItem;: TChart;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TToolButton;: TToolButton;: TToolButton;:
TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;:
TToolButton;: TToolButton;: TImageList;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TImageList;: TImageList;: TToolButton;: TToolButton;: TToolButton;:
TToolButton;: TWordApplication;: TExcelApplication;: TPowerPointApplication;:
TWordDocument;: TToolButton;: TToolButton;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;: TLabel;:
TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TEdit;:
TLabel;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TEdit;:
TLabel;: TLabel;: TEdit;: TLabel;: TLabel;: TEdit;: TLabel;: TLineSeries;FormShow(Sender:
TObject);Button2Click(Sender: TObject);Button4Click(Sender:
TObject);ToolButton1Click(Sender: TObject);ToolButton2Click(Sender:
TObject);ToolButton4Click(Sender: TObject);ToolButton6Click(Sender:
TObject);ToolButton5Click(Sender: TObject);ToolButton11Click(Sender:
TObject);ToolButton13Click(Sender: TObject);ToolButton12Click(Sender:
TObject);ToolButton10Click(Sender: TObject);N5Click(Sender:
TObject);N4Click(Sender: TObject);N15Click(Sender: TObject);N16Click(Sender:
TObject);N17Click(Sender: TObject);N12Click(Sender: TObject);
{ Private declarations }ShowHint(Sender:
TObject);Proverka(Sender: TObject):boolean;
{ Public declarations };
//---------------------------------------------: TForm1;: TKurs; // объявление созданного класса
// процедура вызова окна о программе из DLL
procedure ShowAbout; external 'ProjectDLL.DLL' index
10;N_dann(u,l,Q_,z,H,d:double):double ; external 'ProjectDLL.DLL' index
11;Unit2, about3;
{$R *.dfm}
// перед показом клавной формы, показывается заставка
// и проводится настройка окна программы.
procedure TForm1.FormShow(Sender:
TObject);.showmodal;.OnHint:=ShowHint;1.ColWidths[2]:=180;
end;
// функция проверки заполнеия исходными данными полей на форме
function TForm1.Proverka(Sender:
TObject):boolean;(Form1.Edit100.Text='') or
(Form1.Edit107.Text='')or(Form1.Edit108.Text='')or
(Form1.Edit101.Text='') or (Form1.Edit102.Text='')
or(Form1.Edit109.Text='')or
(Form1.Edit103.Text='') or (Form1.Edit104.Text='') or
(Form1.Edit105.Text='') or (Form1.Edit106.Text='') then:=false:=true;;
// при нажатии Справка о программе либо на панели инструментов
соответствующей кнопки
procedure TForm1.N4Click(Sender: TObject);
ShowAbout(Handle);
end;
// при нажати записи в ini
файл происходить вызов метода созданного класса.
procedure TForm1.Button2Click(Sender: TObject);
Kurs.WriteIniFile;
end;
// при нажатии кнопки закрытие программы
procedure TForm1.N5Click(Sender: TObject);;;
// очистка графикаTForm1.Button4Click(Sender: TObject);
Series1.Clear;
end;
// включение контекстной помощи (передача в строку состояния, справочной
информации)
procedure TForm1.ShowHint(Sender:
TObject);.SimpleText:=Application.Hint;;
// запуск презентации программы.TForm1.N12Click(Sender:
TObject);: OLEVariant;: String;:=ExtractFilePath(Application.ExeName)+'Prezent.ppt';:=
CreateOleObject('PowerPoint.Application');('Error...');;;.Visible :=
True;.Presentations.Open(FilePr, False, False, True);;
// чтение ini файла.TForm1.ToolButton1Click(Sender:
TObject);.ReadIniFile;;
//TForm1.ToolButton2Click(Sender: TObject);.WriteIniFile;;
//процедура расчета значений
системыTForm1.ToolButton4Click(Sender: TObject);Proverka(Sender) then.Raszet;;
// Процедура очистка всех полей, графика, и таблицы результатов
procedure TForm1.ToolButton6Click(Sender: TObject);.Clear;.RowCount
:=
1;.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';110.Text:='';
end;
// очистка полей с исходной информацией
procedure TForm1.N15Click(Sender:
TObject);.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';110.Text:='';
end;
// очистка таблицы с результатами
procedure TForm1.N16Click(Sender: TObject);.RowCount := 1;;
// очистка графикаTForm1.N17Click(Sender: TObject);.Clear;;
// рисование графика.TForm1.ToolButton5Click(Sender:
TObject);Proverka(Sender) then.Raszet;.Draw;;;
// запуск Ворда и пояснительной записки
procedure TForm1.ToolButton11Click(Sender:
TObject);,ConfirmConversions,ReadOnly,AddToRecentFiles,,PasswordTemplate,Revert,WritePasswordDocument,,Format,EmptyParam:
OleVariant;.Connect;.Visible:=true;
// открываем шаблон
документа:=ExtractFilePath(Application.ExeName)+'ПЗ.doc';:=False;:=False;:=False;
PasswordDocument:='';:='';:=False;
WritePasswordDocument:='';:='';:=0;.Documents.Open(FileName,ConfirmConversions,ReadOnly,,PasswordDocument,PasswordTemplate,Revert,WritePasswordDocument,,Format,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
// связываем компонент с существующим
интерфейсом.ConnectKind:=ckAttachToInterface;.ConnectTo(WordApplication1.ActiveDocument);;
// запуск презентацииTForm1.ToolButton13Click(Sender:
TObject);: OLEVariant;:
String;:=ExtractFilePath(Application.ExeName)+'Prezent.ppt';:=
CreateOleObject('PowerPoint.Application');('Error...');;;.Visible := True;.Presentations.Open(FilePr,
False, False, True);;
// сооздание документа Excel
и перенос в него таблицы результатов
procedure TForm1.ToolButton12Click(Sender: TObject);, Sheet,
Colum, Chart:Variant;, i,n: integer;xl3DColumn=4;=2;
begin
// создание документа. Лист с именем Отчет
XLApp:= CreateOleObject('Excel.Application');.Visible :=
True;.Workbooks.Add(-4167);.Workbooks[1].WorkSheets[1].Name:='Отчет';:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns;.Columns[3].ColumnWidth:=30;:=XLApp.Workbooks[1].WorkSheets['Отчет'];:=StringGrid1.RowCount;
// добавление графика в таблицу Ексель
XLApp.Charts.Add;.Charts[1].Activate;:=XLApp.Charts.Item[1];.ChartType:=xl3DColumn;.SetSourceData(Source:=XLApp.ActiveWorkbook.Sheets.Item['Отчет'].Range['B1:C1000'],:=xlColumns);
end;
// вызов справочной информации
procedure TForm1.ToolButton10Click(Sender: TObject);(Handle,
'open', '1.chm',nil, nil, SW_SHOWNORMAL);;.
// Unit2.pas модуль заставкиUnit2;, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,, ExtCtrls, jpeg, StdCtrls,Registry;=
class(TForm): TTimer;: TImage;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;Timer1Timer(Sender:
TObject);FormCreate(Sender: TObject);FormKeyPress(Sender: TObject; var Key:
Char);
{ Private declarations }
{ Public declarations };: TLogo;
{$R *.dfm}
// по истечению таймера заставка закрывается. таймер на 5 сек.
procedure TLogo.Timer1Timer(Sender: TObject);
begin;;
// форма заставки когда заставка созданна она должна закрыться
procedure TLogo.FormCreate(Sender: TObject);
begin;;
// форма заставки если нажата клафиша закрыть заставку
procedure TLogo.FormKeyPress(Sender: TObject; var Key:
Char);;;
.
// Kursuv_class.pas созданный класс
// созданный класс
unit Kursuv_class;
interface= object,tk,hag:double;
// p,k,m,Q,h:double;,m1,m2,q0,q,l,u,H,k,Mas,z,d:double;
c_,n_,Q_,w_,A_,T_,V_,wt :double;, C1, C2 :double;g_f(t:
double):double;
{ Private declarations
}Create;ReadIniFile;WriteIniFile;Raszet;Draw;
{ Public declarations };RoundEx(chislo: double; Precision:
Integer): string;, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls, Buttons, Menus, ToolWin, ActnMan, ActnCtrls, Grids, IniFiles,1, Math;
// запись информации в закрытые поля класса
procedure
TKurs.Create;:=StrToFloat(Form1.Edit100.Text);:=StrToFloat(Form1.Edit101.Text);:=StrToFloat(Form1.Edit102.Text);:=StrToFloat(Form1.Edit103.Text);:=StrToFloat(Form1.Edit104.Text);:=StrToFloat(Form1.Edit105.Text);:=StrToFloat(Form1.Edit106.Text);:=StrToFloat(Form1.Edit107.Text);:=StrToFloat(Form1.Edit108.Text);:=StrToFloat(Form1.Edit109.Text);:=StrToFloat(Form1.Edit110.Text);:=StrToFloat(Form1.Edit111.Text);:=StrToFloat(Form1.Edit112.Text);:=StrToFloat(Form1.Edit113.Text);;
// процес записи информации в
ini файл
procedure
TKurs.WriteIniFile;ini : TIniFile;(Form1.Edit100.Text='') or
(Form1.Edit107.Text='')or(Form1.Edit108.Text='')or
(Form1.Edit101.Text='')
or (Form1.Edit102.Text='') or (Form1.Edit109.Text='')or
(Form1.Edit103.Text='')
or (Form1.Edit104.Text='') or (Form1.Edit110.Text='')or
(Form1.Edit105.Text='')
or (Form1.Edit106.Text='') then.MessageBox('Заполните все поля!!!','Замечание!')
else:=TIniFile.Create('ini.ini');.WriteFloat('Data','m',StrToFloat(Form1.Edit100.Text));.WriteFloat('Data','u',StrToFloat(Form1.Edit101.Text));.WriteFloat('Data','l',StrToFloat(Form1.Edit102.Text));.WriteFloat('Data','q',StrToFloat(Form1.Edit103.Text));.WriteFloat('Data','H',StrToFloat(Form1.Edit104.Text));.WriteFloat('Data','k',StrToFloat(Form1.Edit105.Text));.WriteFloat('Data','m1',StrToFloat(Form1.Edit106.Text));.WriteFloat('Data','m2',StrToFloat(Form1.Edit107.Text));.WriteFloat('Data','q0',StrToFloat(Form1.Edit108.Text));.WriteFloat('Data','z',StrToFloat(Form1.Edit109.Text));.WriteFloat('Data','d',StrToFloat(Form1.Edit110.Text));.WriteFloat('Data','t0',StrToFloat(Form1.Edit111.Text));.WriteFloat('Data','tk',StrToFloat(Form1.Edit112.Text));.WriteFloat('Data','hag',StrToFloat(Form1.Edit113.Text));.Free;;;
// чтение ini
файлаTKurs.ReadIniFile;ini :
TIniFile;:=TIniFile.Create('ini.ini');:=ini.ReadFloat('Data','m',0);.Edit100.Text:=FloatToStr(m);:=ini.ReadFloat('Data','u',1);.Edit101.Text:=FloatToStr(u);:=ini.ReadFloat('Data','l',1);.Edit102.Text:=FloatToStr(l);:=ini.ReadFloat('Data','q',1);.Edit103.Text:=FloatToStr(q);:=ini.ReadFloat('Data','H',1);.Edit104.Text:=FloatToStr(H);:=ini.ReadFloat('Data','k',1);.Edit105.Text:=FloatToStr(k);:=ini.ReadFloat('Data','m1',1);.Edit106.Text:=FloatToStr(m1);:=ini.ReadFloat('Data','m2',1);.Edit107.Text:=FloatToStr(m2);:=ini.ReadFloat('Data','q0',1);.Edit108.Text:=FloatToStr(q0);:=ini.ReadFloat('Data','z',1);.Edit109.Text:=FloatToStr(z);:=ini.ReadFloat('Data','d',1);.Edit110.Text:=FloatToStr(d);
t0:=ini.ReadFloat('Data','t0',1);
Form1.Edit111.Text:=FloatToStr(t0);:=ini.ReadFloat('Data','tk',1);.Edit112.Text:=FloatToStr(tk);:=ini.ReadFloat('Data','hag',1);.Edit113.Text:=FloatToStr(hag);.Free;
end;
// функция системы зависящая
от времени
function TKurs.g_f(t:
double):double;
begin(n_<w_)then_:=sqrt(q0*q0+q0*q0/(w_*w_));:=
ArcTan(w_*q0/q0);:=sqrt(w_*w_-n_*n_);_f:=A_*exp(n_*t)*sin(wt*t+b);;(n_>w_)then:=sqrt(n_*n_-w_*w_);_f:=exp(-n_*t)*(((q0*(wt+n_)+q0)/(2*wt))*exp(2*t)+((q0*(wt-n_)-q0)/(2*wt))*exp(2*wt*t));;(n_=w_)then:=(q0*(wt+n_)+q0)/(2*wt);:=(q0*(wt-n_)-q0)/(2*wt);_f:=exp(-n_*t)*(C1*t+C2);;
end;
// процедура расчета системы
и записи полученной информации в таблицу
procedure
TKurs.Raszet;i:integer;,temp: double;;:=t0;
i:=0;
Mas:=m+m1+m2; // сичаем массу
Q_:=Mas*9.81; // вес всей колеблющейся системы (груз, поршень
и поршневой шток)
n_:=N_dann(u,l,Q_,z,H,d);
c_:=128*u*l*q*q/(3.14*power(d,4));
w_:=sqrt(k/Mas);:=(tk-t0)/hag;
Form1.StringGrid1.RowCount
:= 1;.StringGrid1.RowCount:=round(temp)+2;.StringGrid1.Cells[0,0]:=' №
';.StringGrid1.Cells[1,0]:=' t= ';.StringGrid1.Cells[2,0]:=' x(t)=
';(ti<=(tk+hag/2))
do.StringGrid1.Cells[0,i+1]:=IntToStr(i+1);.StringGrid1.Cells[1,i+1]:=FloatToStr((Round(ti*10))/10);.StringGrid1.Cells[2,i+1]:=FloatToStr(g_f((Round(ti*10))/10));(i);:=ti+hag;;;
// рисование
графикаTKurs.Draw;: double;:=t0;(ti<=tk) do.Series1.AddXY(ti,
strtofloat(RoundEx(g_f(ti),8)),'',clGreen);:=ti+hag;;;
// процедура округления
значений до заданного количества цифр после запятой.
function
RoundEx(chislo: double; Precision: Integer): string;: string;: currency;
ChisloInCurr :=
chislo;(ChisloInCurr: 20: Precision, ChisloInStr);[Pos('.', ChisloInStr)] :=
',';
RoundEx :=
Trim(ChisloInStr);;.
// файл about.pas
для создания DLL файла с формой диалогового окна «О программе»
unit about;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,
Buttons, Math;= class(TForm)
Label1: TLabel;:
TBitBtn;: TLabel;
Label4: TLabel;:
TLabel;: TLabel;: TLabel;
{ Private
declarations }
{ Public
declarations };: TForm1;ShowAbout(Handle: THandle); export;
stdcall;N_dann(u,l,Q_,z,H,d:double):double; export; stdcall;
{$R
*.dfm}ShowAbout(Handle: THandle);
// установить указатель на
приложение
Application.Handle:=Handle;
// создать
форму:=TForm1.Create(Application);
//
отобразить.ShowModal;
//очистить.Free;;N_dann(u,l,Q_,z,H,d:double):double;_dann:=(4
* 3.14 * 9.81 * u * l / (Q_*z))*power(H/d,4);.