Разработка приложения колебаний массы с гидравлическим демпфером

Математическая формулировка задачи, принципиальная схема гидравлического демпфера. Структурная схема программы связи модулей, реализованной на языке высокого уровня Borland Delphi 7.0. Ее описание, руководство пользователя, особенности тестирования.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 29.05.2013
Размер файла 140,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

38

Размещено на http://www.allbest.ru/

Курсовая работа

по дисциплине

Конструирование программ и языки программирования

на тему

Разработка приложения колебаний массы с гидравлическим демпфером

Введение

Целью курсовой работы по дисциплине: ”Конструирование программ и языки программирования” на тему «Разработка приложения колебаний массы с гидравлическим демпфером» является разработка программного обеспечения для компьютера, с помощью которого будет производится расчет временного поведения системы.

Решаемая задача относится к разделу физики (механика). В процессе ее решения получается решение поведение системы относительно времени и колебании некоторого груза под действием силы нагрузки треугольного вида.

Delphi - это современный программный продукт, позволяющий создавать широкий спектр приложений для среды Microsoft Windows. Он объединяет в себе высокопроизводительный компилятор с языка ObjectPascal, являющийся объектно-ориентированным расширением структурного языка третьего поколения Pascal, средств наглядного (визуального) создания программ и масштабируемую технологию управления БД. Основное назначение Delphi - служить средством для быстрого создания широкого класса Windows-приложений, включая приложения, отвечающие технологии распределенной обработки данных, называемой технологией клиент-сервер.

Для разработки Windows-приложений Delphi имеет следующие средства:

-высокопроизводительный компилятор

-объектно-ориентированная модель компонентов

-быстрая среда разработки (RAD)

-расширяемость

-средства для построения БД

Delphi - это продукт, позволяющий создавать широкий спектр приложений для 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)

Где .

2. Описание программы

Структурная схема программы (связи модулей).

Программа состоит из следующих модулей:

Project1.dpr - модуль проекта.

Unit1 - модуль содержащий описание класса главной формы программы, и описание методов работы формы.

Unit2 - модуль заставки, появляющейся при запуске программного обеспечения.

Kursuv_class - модуль созданного класса с закрытыми полями, и методами для работы с данным классом.

ProjectDLL.dll - динамически подключаемая библиотека, содержащая форму окна «О программе», вызываемой из главного окна программы.

В программе реализованы следующие классы:

Класс TForm1 - от родительского класса TForm, содержит необходимые поля и методы для работы главной формы программы.

Основные поля класса:

MainMenu1 - главное меню.

StringGrid1 - таблица для вывода результатов вычислений.

Edit100 ... 113 - поля для ввода исходной информации в программу.

StatusBar1 - строка состояние, отображающая справочную контекстную информацию.

ToolBar1 - панель кнопок.

Chart1 - область построения диаграмм на форме программы.

Series1 - график диаграммы.

Основные методы класса:

procedure N5Click(Sender: TObject) - обработка нажатий на пункты меню.

procedure ToolButton1Click(Sender: TObject) - обработка нажатий на кнопки на панели.

procedure FormShow(Sender: TObject) - отображение заставки на экране.

procedure ShowHint(Sender: TObject) - обработка показываний контекстной помощи (подсказки).

function Proverka(Sender: TObject):boolean - функция проверки на заполнение полей исходными данными.

Класс TLogo - от родительского класса TForm, содержит является окном заставки показываемой перед запуском основной формы программы.

Основные поля класса:

Image1 - рисунок заставки.

Label1 - текстовые поля со статической информацией.

Timer1 - таймер с отсчетом времени для показа заставки.

Методы класса:

procedure Timer1Timer(Sender: TObject) - метод отсчет таймера, по завершению которого форма (заставка) закрывается

procedure FormCreate(Sender: TObject) - при создании формы, автоматически срабатывает таймер, и форма закрывается по истечению времени.

procedure FormKeyPress(Sender: TObject; var Key: Char) - обработка нажатия клавиш на клавиатуре, при нажатии клавиши заставка закрывается.

Класс TKurs - разработанный класс для вычисления в заданный промежуток времени поведения системы с одной степенью свободы под действием нагрузки треугольного вида.

Поля класса (все поля типа double):

t0 - начальное значение времени,

ti - промежуточные значения времени,

tk - конечное значение периода времени,

k - упругость пружины,

m - масса груза,

u - коэффициент вязкости жидкости,

l - длина отверстий в поршне,

q - площадь поршня,

H - диаметр порщня,

m1 - масса штока,

m2 - масса поршня,

q0 - расстояние центра тяжести системы,

z - число отверстий,

d - диаметр отверстий,

hag - приращение (шаг) времени.

Методы класса:

function g_f(t: double):double - функция вычисления значения системы при заданном значении времени.

procedure Create - запись информации в поля класса;

procedure ReadIniFile - чтение ini файла;

procedure WriteIniFile - запись в ini файл;

procedure Raszet - произведение вычислений изменения системы и занесение информации в таблицу результатов главной формы;

procedure 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 Кнопочная панель

Значение кнопок с лева на право следующее:

1 - Читать данный из файла ini.ini в папке Windows.

2 - Записывает исходные данные в файл ini.ini в папку Windows.

3 - Вычислить - происходит вычисления значений изменений системы относительно времени и занесение данных в таблицу.

4 - График - происходит построение графического изображения изменения системы относительно времени.

5 - Очистить - все поля, таблицу значений и график.

6 - Пояснительная записка - отрывается пояснительная записка данного курсового проекта.

7 - Презентация - в PowerPoint открывается презентация на данное программное средство.

8 - Данные в Excel - заносятся данные полученный при выполнении вычислений в книгу Microsoft Excel.

9 - справочная информация по использованию данного программного средства.

10 - Заставка - запускается заставка.

11 - О программе - открывается диалоговое окно «О программе».

12 - Выход из программы.

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с.

3. Гринчишин Я.Т. и др. Алгоритмы и программы на Бейсике: Учеб. Пособие для студентов пед. Ин-тов по физ.-мат. Спец./Я.Т.Гринчишин, В.И. Ефимов, А.Н. Ломакович.-М.: Просвещение, 1988.- 160 с.

4. Дарахвелидзе П.Г., Марков Е.П. Delphi 4.-СПб.: БХВ-Санкт-Петербург, 1999.- 816 с.

5. Елмакова Н., Трепалин С., Тенцер А. Delphi 6 и технология COM.-СПб.: Питер, 2002. - 640 с.

6. Марко Кэнту. Delphi 5 для профессионалов.-СПб.: Питер. 2001. - 944 с.

7. Фаронов В.В. Delphi 6. Учебный курс.-М.: Издатель Молгачева С.В., 2001.-672с.

8. Федоров А.. Delphi 5.0 для всех. -М.: Тоо фирма “КомпьютерПресс”, 1998. - 464 с.

Приложения

Листинг программных модулей

// Project1.dpr - файл проекта.

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Logo},

Kursuv_class in 'Kursuv_class.pas';

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TLogo, Logo);

Application.Run;

end.

// Unit1.pas - главная форма программы.

// главная форма программы.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Menus, ToolWin, ActnMan, ActnCtrls, Grids, IniFiles,

Kursuv_class, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,

ImgList, 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

TForm1 = class(TForm)

BitBtn1: TBitBtn;

MainMenu1: TMainMenu;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

StringGrid1: TStringGrid;

GroupBox1: TGroupBox;

Edit100: TEdit;

Label9: TLabel;

Label10: TLabel;

Edit101: TEdit;

Label11: TLabel;

Edit102: TEdit;

Label12: TLabel;

Edit103: TEdit;

Label13: TLabel;

Edit104: TEdit;

StatusBar1: TStatusBar;

ToolBar1: TToolBar;

N5: TMenuItem;

Chart1: TChart;

ini1: TMenuItem;

ini2: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

ToolButton7: TToolButton;

ToolButton8: TToolButton;

ToolButton9: TToolButton;

ToolButton10: TToolButton;

ImageListHot: TImageList;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

Excel1: TMenuItem;

ImageListDisable: TImageList;

ImageListNormal: TImageList;

ToolButton11: TToolButton;

ToolButton12: TToolButton;

ToolButton13: TToolButton;

ToolButton14: TToolButton;

WordApplication1: TWordApplication;

ExcelApplication1: TExcelApplication;

PowerPointApplication1: TPowerPointApplication;

WordDocument1: TWordDocument;

ToolButton15: TToolButton;

ToolButton16: TToolButton;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label6: TLabel;

Edit107: TEdit;

Label5: TLabel;

Edit106: TEdit;

Label7: TLabel;

Label8: TLabel;

Label16: TLabel;

Label17: TLabel;

Edit105: TEdit;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Edit108: TEdit;

Label21: TLabel;

Edit111: TEdit;

Label14: TLabel;

Edit112: TEdit;

Edit113: TEdit;

Label15: TLabel;

Label22: TLabel;

Edit109: TEdit;

Label23: TLabel;

Label24: TLabel;

Edit110: TEdit;

Label25: TLabel;

Series1: TLineSeries;

procedure FormShow(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton11Click(Sender: TObject);

procedure ToolButton13Click(Sender: TObject);

procedure ToolButton12Click(Sender: TObject);

procedure ToolButton10Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N17Click(Sender: TObject);

procedure N12Click(Sender: TObject);

private

{ Private declarations }

procedure ShowHint(Sender: TObject);

function Proverka(Sender: TObject):boolean;

public

{ Public declarations }

end;

//---------------------------------------------

var

Form1: TForm1;

Kurs: TKurs; // объявление созданного класса

// процедура вызова окна о программе из DLL

procedure ShowAbout; external 'ProjectDLL.DLL' index 10;

function N_dann(u,l,Q_,z,H,d:double):double ; external 'ProjectDLL.DLL' index 11;

implementation

uses Unit2, about3;

{$R *.dfm}

// перед показом клавной формы, показывается заставка

// и проводится настройка окна программы.

procedure TForm1.FormShow(Sender: TObject);

begin

Logo.showmodal;

Application.OnHint:=ShowHint;

StringGrid1.ColWidths[2]:=180;

end;

// функция проверки заполнеия исходными данными полей на форме

function TForm1.Proverka(Sender: TObject):boolean;

begin

if (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

Proverka:=false

else

Proverka:=true;

end;

// при нажатии Справка о программе либо на панели инструментов соответствующей кнопки

procedure TForm1.N4Click(Sender: TObject);

begin

ShowAbout(Handle);

end;

// при нажати записи в ini файл происходить вызов метода созданного класса.

procedure TForm1.Button2Click(Sender: TObject);

begin

Kurs.WriteIniFile;

end;

// при нажатии кнопки закрытие программы

procedure TForm1.N5Click(Sender: TObject);

begin

close;

end;

// очистка графика

procedure TForm1.Button4Click(Sender: TObject);

begin

Series1.Clear;

end;

// включение контекстной помощи (передача в строку состояния, справочной информации)

procedure TForm1.ShowHint(Sender: TObject);

begin

StatusBar1.SimpleText:=Application.Hint;

end;

// запуск презентации программы.

procedure TForm1.N12Click(Sender: TObject);

var

PowerPointApp: OLEVariant;

FilePr: String;

begin

FilePr:=ExtractFilePath(Application.ExeName)+'Prezent.ppt';

try

PowerPointApp := CreateOleObject('PowerPoint.Application');

except

ShowMessage('Error...');

Exit;

end;

PowerPointApp.Visible := True;

PowerPointApp.Presentations.Open(FilePr, False, False, True);

end;

// чтение ini файла.

procedure TForm1.ToolButton1Click(Sender: TObject);

begin

Kurs.ReadIniFile;

end;

//

procedure TForm1.ToolButton2Click(Sender: TObject);

begin

Kurs.WriteIniFile;

end;

//процедура расчета значений системы

procedure TForm1.ToolButton4Click(Sender: TObject);

begin

if Proverka(Sender) then

Kurs.Raszet;

end;

// Процедура очистка всех полей, графика, и таблицы результатов

procedure TForm1.ToolButton6Click(Sender: TObject);

begin

Series1.Clear;

StringGrid1.RowCount := 1;

Edit100.Text:='';

Edit101.Text:='';

Edit102.Text:='';

Edit103.Text:='';

Edit104.Text:='';

Edit105.Text:='';

Edit106.Text:='';

Edit107.Text:='';

Edit108.Text:='';

Edit109.Text:='';

Edit110.Text:='';

end;

// очистка полей с исходной информацией

procedure TForm1.N15Click(Sender: TObject);

begin

Edit100.Text:='';

Edit101.Text:='';

Edit102.Text:='';

Edit103.Text:='';

Edit104.Text:='';

Edit105.Text:='';

Edit106.Text:='';

Edit107.Text:='';

Edit108.Text:='';

Edit109.Text:='';

Edit110.Text:='';

end;

// очистка таблицы с результатами

procedure TForm1.N16Click(Sender: TObject);

begin

StringGrid1.RowCount := 1;

end;

// очистка графика

procedure TForm1.N17Click(Sender: TObject);

begin

Series1.Clear;

end;

// рисование графика.

procedure TForm1.ToolButton5Click(Sender: TObject);

begin

if Proverka(Sender) then

begin

Kurs.Raszet;

Kurs.Draw;

end;

end;

// запуск Ворда и пояснительной записки

procedure TForm1.ToolButton11Click(Sender: TObject);

var

FileName,ConfirmConversions,ReadOnly,AddToRecentFiles,

PasswordDocument,PasswordTemplate,Revert,WritePasswordDocument,

WritePasswordTemplate,Format,EmptyParam: OleVariant;

begin

WordApplication1.Connect;

WordApplication1.Visible:=true;

// открываем шаблон документа

FileName:=ExtractFilePath(Application.ExeName)+'ПЗ.doc';

ConfirmConversions:=False;

ReadOnly:=False;

AddToRecentFiles:=False;

PasswordDocument:='';

PasswordTemplate:='';

Revert:=False;

WritePasswordDocument:='';

WritePasswordTemplate:='';

Format:=0;

WordApplication1.Documents.Open(FileName,ConfirmConversions,ReadOnly,

AddToRecentFiles,PasswordDocument,PasswordTemplate,Revert,WritePasswordDocument,

WritePasswordTemplate,Format,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

// связываем компонент с существующим интерфейсом

WordDocument1.ConnectKind:=ckAttachToInterface;

WordDocument1.ConnectTo(WordApplication1.ActiveDocument);

end;

// запуск презентации

procedure TForm1.ToolButton13Click(Sender: TObject);

var

PowerPointApp: OLEVariant;

FilePr: String;

begin

FilePr:=ExtractFilePath(Application.ExeName)+'Prezent.ppt';

try

PowerPointApp := CreateOleObject('PowerPoint.Application');

except

ShowMessage('Error...');

Exit;

end;

PowerPointApp.Visible := True;

PowerPointApp.Presentations.Open(FilePr, False, False, True);

end;

// сооздание документа Excel и перенос в него таблицы результатов

procedure TForm1.ToolButton12Click(Sender: TObject);

var

XLApp, Sheet, Colum, Chart:Variant;

index, i,n: integer;

const xl3DColumn=4;

xlColumns=2;

begin

// создание документа. Лист с именем Отчет

XLApp:= CreateOleObject('Excel.Application');

XLApp.Visible := True;

XLApp.Workbooks.Add(-4167);

XLApp.Workbooks[1].WorkSheets[1].Name:='Отчет';

Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns;

Colum.Columns[3].ColumnWidth:=30;

Sheet:=XLApp.Workbooks[1].WorkSheets['Отчет'];

n:=StringGrid1.RowCount;

// перенос результатов

for i:=1 to n-1 do

begin

Sheet.Cells[i+1,1]:=StringGrid1.Cells[0,i];

Sheet.Cells[i+1,2]:=StringGrid1.Cells[1,i];

Sheet.Cells[i+1,3]:=StrtoFloat(StringGrid1.Cells[2,i]);

end;

// добавление графика в таблицу Ексель

XLApp.Charts.Add;

XLApp.Charts[1].Activate;

Chart:=XLApp.Charts.Item[1];

Chart.ChartType:=xl3DColumn;

Chart.SetSourceData(Source:=XLApp.ActiveWorkbook.Sheets.Item['Отчет'].Range['B1:C1000'],

PlotBy:=xlColumns);

end;

// вызов справочной информации

procedure TForm1.ToolButton10Click(Sender: TObject);

begin

ShellExecute(Handle, 'open', '1.chm',nil, nil, SW_SHOWNORMAL);

end;

end.

// Unit2.pas модуль заставки

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, jpeg, StdCtrls,Registry;

type

TLogo = class(TForm)

Timer1: TTimer;

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

procedure Timer1Timer(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Logo: TLogo;

implementation

{$R *.dfm}

// по истечению таймера заставка закрывается. таймер на 5 сек.

procedure TLogo.Timer1Timer(Sender: TObject);

begin

Close;

end;

// форма заставки когда заставка созданна она должна закрыться

procedure TLogo.FormCreate(Sender: TObject);

begin

Close;

end;

// форма заставки если нажата клафиша закрыть заставку

procedure TLogo.FormKeyPress(Sender: TObject; var Key: Char);

begin

Close;

end;

end.

// Kursuv_class.pas созданный класс

// созданный класс

unit Kursuv_class;

interface

type

TKurs = object

private

t0,tk,hag:double;

// p,k,m,Q,h:double;

m,m1,m2,q0,q,l,u,H,k,Mas,z,d:double;

c_,n_,Q_,w_,A_,T_,V_,wt :double;

b, C1, C2 :double;

function g_f(t: double):double;

{ Private declarations }

public

procedure Create;

procedure ReadIniFile;

procedure WriteIniFile;

procedure Raszet;

procedure Draw;

{ Public declarations }

end;

function RoundEx(chislo: double; Precision: Integer): string;

implementation

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Menus, ToolWin, ActnMan, ActnCtrls, Grids, IniFiles,

Unit1, Math;

// запись информации в закрытые поля класса

procedure TKurs.Create;

begin

m:=StrToFloat(Form1.Edit100.Text);

u:=StrToFloat(Form1.Edit101.Text);

l:=StrToFloat(Form1.Edit102.Text);

q:=StrToFloat(Form1.Edit103.Text);

H:=StrToFloat(Form1.Edit104.Text);

k:=StrToFloat(Form1.Edit105.Text);

m1:=StrToFloat(Form1.Edit106.Text);

m2:=StrToFloat(Form1.Edit107.Text);

q0:=StrToFloat(Form1.Edit108.Text);

z:=StrToFloat(Form1.Edit109.Text);

d:=StrToFloat(Form1.Edit110.Text);

t0:=StrToFloat(Form1.Edit111.Text);

tk:=StrToFloat(Form1.Edit112.Text);

hag:=StrToFloat(Form1.Edit113.Text);

end;

// процес записи информации в ini файл

procedure TKurs.WriteIniFile;

var ini : TIniFile;

begin

if (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

Application.MessageBox('Заполните все поля!!!','Замечание!')

else

begin

ini:=TIniFile.Create('ini.ini');

ini.WriteFloat('Data','m',StrToFloat(Form1.Edit100.Text));

ini.WriteFloat('Data','u',StrToFloat(Form1.Edit101.Text));

ini.WriteFloat('Data','l',StrToFloat(Form1.Edit102.Text));

ini.WriteFloat('Data','q',StrToFloat(Form1.Edit103.Text));

ini.WriteFloat('Data','H',StrToFloat(Form1.Edit104.Text));

ini.WriteFloat('Data','k',StrToFloat(Form1.Edit105.Text));

ini.WriteFloat('Data','m1',StrToFloat(Form1.Edit106.Text));

ini.WriteFloat('Data','m2',StrToFloat(Form1.Edit107.Text));

ini.WriteFloat('Data','q0',StrToFloat(Form1.Edit108.Text));

ini.WriteFloat('Data','z',StrToFloat(Form1.Edit109.Text));

ini.WriteFloat('Data','d',StrToFloat(Form1.Edit110.Text));

ini.WriteFloat('Data','t0',StrToFloat(Form1.Edit111.Text));

ini.WriteFloat('Data','tk',StrToFloat(Form1.Edit112.Text));

ini.WriteFloat('Data','hag',StrToFloat(Form1.Edit113.Text));

ini.Free;

end;

end;

// чтение ini файла

procedure TKurs.ReadIniFile;

var ini : TIniFile;

begin

ini:=TIniFile.Create('ini.ini');

m:=ini.ReadFloat('Data','m',0);

Form1.Edit100.Text:=FloatToStr(m);

u:=ini.ReadFloat('Data','u',1);

Form1.Edit101.Text:=FloatToStr(u);

l:=ini.ReadFloat('Data','l',1);

Form1.Edit102.Text:=FloatToStr(l);

q:=ini.ReadFloat('Data','q',1);

Form1.Edit103.Text:=FloatToStr(q);

H:=ini.ReadFloat('Data','H',1);

Form1.Edit104.Text:=FloatToStr(H);

k:=ini.ReadFloat('Data','k',1);

Form1.Edit105.Text:=FloatToStr(k);

m1:=ini.ReadFloat('Data','m1',1);

Form1.Edit106.Text:=FloatToStr(m1);

m2:=ini.ReadFloat('Data','m2',1);

Form1.Edit107.Text:=FloatToStr(m2);

q0:=ini.ReadFloat('Data','q0',1);

Form1.Edit108.Text:=FloatToStr(q0);

z:=ini.ReadFloat('Data','z',1);

Form1.Edit109.Text:=FloatToStr(z);

d:=ini.ReadFloat('Data','d',1);

Form1.Edit110.Text:=FloatToStr(d);

t0:=ini.ReadFloat('Data','t0',1);

Form1.Edit111.Text:=FloatToStr(t0);

tk:=ini.ReadFloat('Data','tk',1);

Form1.Edit112.Text:=FloatToStr(tk);

hag:=ini.ReadFloat('Data','hag',1);

Form1.Edit113.Text:=FloatToStr(hag);

ini.Free;

end;

// функция системы зависящая от времени

function TKurs.g_f(t: double):double;

begin

if(n_<w_)then

begin

A_:=sqrt(q0*q0+q0*q0/(w_*w_));

b:= ArcTan(w_*q0/q0);

wt:=sqrt(w_*w_-n_*n_);

g_f:=A_*exp(n_*t)*sin(wt*t+b);

end;

if(n_>w_)then

begin

wt:=sqrt(n_*n_-w_*w_);

g_f:=exp(-n_*t)*(((q0*(wt+n_)+q0)/(2*wt))*exp(2*t)+((q0*(wt-n_)-q0)/(2*wt))*exp(2*wt*t));

end;

if(n_=w_)then

begin

C1:=(q0*(wt+n_)+q0)/(2*wt);

C2:=(q0*(wt-n_)-q0)/(2*wt);

g_f:=exp(-n_*t)*(C1*t+C2);

end;

end;

// процедура расчета системы и записи полученной информации в таблицу

procedure TKurs.Raszet;

var i:integer;

ti,temp: double;

begin

Create;

ti:=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);

temp:=(tk-t0)/hag;

Form1.StringGrid1.RowCount := 1;

Form1.StringGrid1.RowCount:=round(temp)+2;

Form1.StringGrid1.Cells[0,0]:=' № ';

Form1.StringGrid1.Cells[1,0]:=' t= ';

Form1.StringGrid1.Cells[2,0]:=' x(t)= ';

while (ti<=(tk+hag/2)) do

begin

Form1.StringGrid1.Cells[0,i+1]:=IntToStr(i+1);

Form1.StringGrid1.Cells[1,i+1]:=FloatToStr((Round(ti*10))/10);

Form1.StringGrid1.Cells[2,i+1]:=FloatToStr(g_f((Round(ti*10))/10));

inc(i);

ti:=ti+hag;

end;

end;

// рисование графика

procedure TKurs.Draw;

var

ti: double;

begin

ti:=t0;

while (ti<=tk) do

begin

Form1.Series1.AddXY(ti, strtofloat(RoundEx(g_f(ti),8)),'',clGreen);

ti:=ti+hag;

end;

end;

// процедура округления значений до заданного количества цифр после запятой.

function RoundEx(chislo: double; Precision: Integer): string;

var

ChisloInStr: string;

ChisloInCurr: currency;

begin

ChisloInCurr := chislo;

Str(ChisloInCurr: 20: Precision, ChisloInStr);

ChisloInStr[Pos('.', ChisloInStr)] := ',';

RoundEx := Trim(ChisloInStr);

end;

end.

// файл about.pas для создания DLL файла с формой диалогового окна «О программе»

unit about;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Math;

type

TForm1 = class(TForm)

Label1: TLabel;

BitBtn1: TBitBtn;

Label2: TLabel;

Label4: TLabel;

Label5: TLabel;

Label7: TLabel;

Label8: TLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

procedure ShowAbout(Handle: THandle); export; stdcall;

function N_dann(u,l,Q_,z,H,d:double):double; export; stdcall;

implementation

{$R *.dfm}

procedure ShowAbout(Handle: THandle);

begin

// установить указатель на приложение

Application.Handle:=Handle;

// создать форму

Form1:=TForm1.Create(Application);

// отобразить

Form1.ShowModal;

//очистить

Form1.Free;

end;

function N_dann(u,l,Q_,z,H,d:double):double;

begin

N_dann:=(4 * 3.14 * 9.81 * u * l / (Q_*z))*power(H/d,4);

end.

Размещено на Allbest.ru


Подобные документы

  • Анализ временных рядов. Разработка программы для среды визуального проектирования Borland Delphi 7.0. Математическая формулировка задачи. Структурная схема программы. Описание реализации технологии COM, динамических библиотек, возможностей программы.

    курсовая работа [4,3 M], добавлен 14.11.2010

  • Средства Delphi для разработки Windows приложений. Математическая формулировка задачи, описание программы вычисления определенного интеграла по формуле левых прямоугольников. Руководство пользователя, методика испытаний продукта. Листинг программы.

    курсовая работа [178,1 K], добавлен 14.11.2010

  • Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.

    отчет по практике [700,5 K], добавлен 24.11.2014

  • Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.

    курсовая работа [106,6 K], добавлен 16.06.2014

  • Формулировка, спецификация и математическая постановка задачи. Описание схемы алгоритма. Рассмотрение результата машинного тестирования программы. Получение на занятиях навыков алгоритмизации и программирования задач на языке высокого уровня C#.

    курсовая работа [268,2 K], добавлен 22.03.2015

  • Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.

    курсовая работа [365,0 K], добавлен 18.05.2013

  • Структурная схема получения гороскопа по дате рождения. Листинг исходных кодов программы и руководство пользователя. Ввод данных с помощью объекта класса QDateEdit. Разработка пользовательского интерфейса. Выбор стратегии тестирования и отладка программы.

    курсовая работа [1,0 M], добавлен 31.05.2015

  • Разработка программы тестирования для выявления акцентуаций типа человека в среде Delphi и Microsoft Access. Проектирование алгоритма реализации модели. Описание программы и модулей, руководство пользователя. Меры обеспечения информационной безопасности.

    дипломная работа [2,7 M], добавлен 15.06.2012

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

    курсовая работа [1,5 M], добавлен 21.09.2010

  • Разработка программных продуктов на языке программирования Borland Delphi. Применяемые таблицы и связи между ними. Пользовательский интерфейс работы с базой данных. Алгоритм работы программы "Футбольные команды и игроки". Защита от ввода неверных данных.

    курсовая работа [788,1 K], добавлен 22.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.