Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursach.doc
Скачиваний:
0
Добавлен:
24.04.2019
Размер:
2.99 Mб
Скачать

2.2Текст програми та модулів

2.2.1Текст файлу проекту

Нижче наведений код проекту:

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3},

Unit4 in 'Unit4.pas' {Form4},

Unit5 in 'Unit5.pas' {Help};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm4, Form4);

Application.CreateForm(THelp, Help);

Application.Run;

2.2.2Текст першого модуля

Нижче наведений код першого модуля:

unit Unit1;

interface

uses

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

Dialogs, Menus, StdCtrls, OleCtnrs, ExtCtrls, jpeg, TeEngine, Series,

TeeProcs, Chart, XPMan;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

GroupBox1: TGroupBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Edit4: TEdit;

Label8: TLabel;

Edit5: TEdit;

Label9: TLabel;

Label10: TLabel;

Button1: TButton;

memo1: TMemo;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Button2: TButton;

N10: TMenuItem;

N12: TMenuItem;

GroupBox2: TGroupBox;

chart1: TChart;

Button9: TButton;

N11: TMenuItem;

Label16: TLabel;

Series1: TLineSeries;

Series2: TLineSeries;

GroupBox3: TGroupBox;

CheckBox1: TCheckBox;

Edit6: TEdit;

XPManifest1: TXPManifest;

SaveDialog2: TSaveDialog;

Image1: TImage;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Series3: TLineSeries;

Series4: TLineSeries;

Series5: TLineSeries;

Series6: TLineSeries;

Series8: TLineSeries;

Edit9: TEdit;

Edit10: TEdit;

Label21: TLabel;

Label22: TLabel;

Label17: TLabel;

Label18: TLabel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

RadioButton5: TRadioButton;

RadioButton6: TRadioButton;

RadioButton7: TRadioButton;

Button3: TButton;

Label19: TLabel;

Label20: TLabel;

procedure N9Click(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure Edit6Change(Sender: TObject);

procedure Edit4Change(Sender: TObject);

procedure Edit5Change(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton4Click(Sender: TObject);

procedure RadioButton6Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton5Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

procedure RadioButton7Click(Sender: TObject);

procedure Edit9Change(Sender: TObject);

procedure Edit10Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}

procedure vis; //робить кнопки для збереження даних активними

begin //також кнопки виведення графіків гобить активними

form1.N3.Enabled:=true;

form1.N4.Enabled:=true;

form1.N5.Enabled:=true;

form1.RadioButton1.Enabled:=true;

form1.RadioButton2.Enabled:=true;

form1.RadioButton3.Enabled:=true;

form1.RadioButton4.Enabled:=true;

form1.RadioButton5.Enabled:=true;

form1.RadioButton6.Enabled:=true;

form1.RadioButton7.Enabled:=true;

end;

procedure invis;//процедура яка робить кнопки збереження даних

begin //неактивними та видаляє побудовані графіки

form1.N3.Enabled:=false;

form1.N4.Enabled:=false;

form1.N5.Enabled:=false;

form1.Series1.Clear;

form1.Series2.Clear;

form1.Series3.Clear; //видаляє побудовані графіки

form1.Series4.Clear;

form1.Series5.Clear;

form1.Series6.Clear;

form1.Series8.Clear;

form1.RadioButton1.Enabled:=false; //кнопки виведення графіків гобить активними

form1.RadioButton2.Enabled:=false;

form1.RadioButton3.Enabled:=false;

form1.RadioButton4.Enabled:=false;

form1.RadioButton5.Enabled:=false;

form1.RadioButton6.Enabled:=false;

form1.RadioButton7.Enabled:=false;

end;

procedure TForm1.N9Click(Sender: TObject);//виведення даних про програму

begin

form2.show;//відкриває другу форму

end;

procedure TForm1.Edit1Change(Sender: TObject);

begin

invis;

label11.Caption:='R1='+''+edit1.Text+ ' Oм';//для виведення значення першого опору на схемі

end;

procedure TForm1.Edit2Change(Sender: TObject);

begin invis;

label12.Caption:='R2='+''+edit2.Text+ ' Oм';//для виведення значення другого опору на схемі

end;

procedure TForm1.Edit6Change(Sender: TObject);

begin invis;

label13.Caption:='C='+''+edit6.Text+ ' ф';//для виведення ємності конденсатора на схемі

end;

procedure TForm1.Edit4Change(Sender: TObject);

begin invis;

label14.Caption:='L='+''+edit4.Text+ ' Гн';//для виведення індуктивності котушки на схемі

end;

procedure TForm1.Edit5Change(Sender: TObject);

begin invis;

label15.Caption:='E='+''+edit5.Text+ ' B';//для виведення величини ЕРС на схемі

end;

procedure TForm1.N4Click(Sender: TObject);//процедура для збереження даних з іншою назвою

begin

savedialog1.InitialDir:='d:\курсовий проект\файл'; //початкова папка для збереження

form1.saveDialog1.FileName:='file.txt'; //стандартна назва файлу

with saveDialog1 do // Відкривається вікно для збереження даних

if Execute then

begin

memo1.clear; //збереження з допомогою memo

memo1.Lines.append(Edit1.Text);

memo1.Lines.append(Edit2.Text);

memo1.Lines.append(Edit6.Text);

memo1.Lines.append(Edit4.Text);

memo1.Lines.append(Edit5.Text);

memo1.Lines.SaveToFile(filename);

caption := 'Перехідні процеси -' + ExtractFilename(filename);//присвоєння назви форми назві файлу

OpenDialog1.FileName := fileName;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);//процедура виконання розрахунку

var r1,r2,l,c,e,p1,p2,d,a1,a2,i0,i3,uc,i2,ur2,i1,ur1,ul,Q:real; //опис змінних

x1,x2,a:real;

t,t1,t2:integer;

begin

vis;//виконання процедури vis

try //перевірка введених даних на помилку

strtofloat(form1.Edit1.Text);

strtofloat(form1.Edit2.Text);

strtofloat(form1.Edit6.Text);

strtofloat(form1.Edit4.Text);

strtofloat(form1.Edit5.Text);

StrToint(form1.Edit9.text);

StrToint(form1.Edit10.text);

begin

if( strtofloat(form1.Edit1.Text)<=0) or

( strtofloat(form1.Edit2.Text)<=0) or

( strtofloat(form1.Edit6.Text)<=0)or

( strtofloat(form1.Edit4.Text)<=0) or

( strtofloat(form1.Edit5.Text)<=0) or

( StrToint(form1.Edit9.text)<0) or

( StrToint(form1.Edit10.text)<0)then

showMessage('Помилка при вводі даних')//виведення повідомлення про помилку

else begin

r1:=strtofloat(form1.Edit1.Text);//опір першого резистора

r2:=strtofloat(form1.Edit2.Text);//опір другого резистора

c:=strtofloat(form1.Edit6.Text);//ємність конденсатора

l:=strtofloat(form1.Edit4.Text);//індуктивність котушки

e:=strtofloat(form1.Edit5.Text);//величина ЕРС

t1:=strtoint(form1.Edit9.text);//перша точка графіка перехідного процесу

t2:=strtoint(form1.Edit10.text);//остання точка графіка перехідного процесу

end;

end;

d:=sqr(l+c*r1*r2)-4*c*l*r2*(r1+r2);//обчислюємо дискримінант

if d=0 then //перевірка дискримінанту і початок розрахунку

begin

p1:=(-(l+c*r1*r2))/2*c*l*r2;//корні характеристичного рівняння при d=0

p2:=p1;//корні однакові

i0:=e/(r1+r2)-(-e/r2);//вільна складова струму при початкових умовах

a1:=-e-e/(r1+r2)*r2;//постійна інтегрування необхідні для розрахунку струмів і напруг

a2:=i0/c-p1*a1;//постійна інтегрування необхідні для розрахунку струмів і напруг

for t:=t1 to t2 do begin //початок розрахунку точок для графіка та побудова графіків

uc:=e*R2/(r1+r2)+a1*exp(p1*t)+a2*exp(p2*t);//напруга на конденсаторі

i3:=c*p1*a1*exp(p1*t)+c*p1*a2*t*exp(p1*t)+c*a2*exp(p1*t);//струм третьої гілки

i2:=e/(r1+r2)+a1/r2*exp(p1*t)+a2/r2*exp(p2*t);//струм другої гілки

ur2:=e*2*R2/(r1+r2)+a1*r2*exp(p1*t)+a2*r2*exp(p2*t);//напруга на другому опорі

i1:=i2+i3;//струм першої гілки

ur1:=i1*r1;//напруга на першому опорі

ul:=l*i1;//напруга на котушці

form1.Series1.AddXY(t,i3,'',clred);//побудова графіка струму третьої гілки

form1.Series2.AddXY(t,uc,'',clgreen);//побудова графіка напруги на конденсаторі

form1.Series3.AddXY(t,i2,'',clred);//побудова графіка струму другої гілки

form1.Series4.AddXY(t,ur2,'',clgreen);//побудова графіка напруги на конденсаторі

form1.Series5.AddXY(t,i1,'',clred);//побудова графіка струму першої гілки

form1.Series6.AddXY(t,ur1,'',clgreen);//побудова графіка напруги на першому опорі

form1.Series8.AddXY(t,ul,'',clgreen);// обудова графіка напруги на котушці

end;

form1.Series1.Active:=false;

form1.Series2.Active:=false; //графіки побудовані але вони неактивні

form1.Series3.Active:=false;

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end else if d>0 then //перевірка дискримінанту і початок розрахунку

begin

p1:=(-(l+c*r1*r2)-sqrt(d))/2*c*l*r2;//перший корінь характеристичного рівняння

p2:=(-(l+c*r1*r2)+sqrt(d))/2*c*l*r2;//другий корінь характеристичного рівняння

i0:=e/(r1+r2)-(-e/r2);//вільна чкладова струму при початкових умовах

a2:=((i0/c)-p1*(-e)+p1*(e/(r1+r2)*r2))/(p2-p1);//перша постійна інтегрування

a1:=i0/c-a2-(e*(r1+r2)*r2);//друга постійна інтегрування

for t:=t1 to t2 do begin //початок розрахунку точок і побудови графіків

uc:=e*R2/(r1+r2)+a1*exp(p1*t)+a2*exp(p2*t);//напруга на конденсаторі

i3:=c*p1*a1*exp(p1*t)+c*p2*a2*exp(p1*t);//струм третьої гілки

i2:=e/(r1+r2)+a1/r2*exp(p1*t)+a2/r2*exp(p2*t);//струм другої гілки

ur2:=e*2*R2/(r1+r2)+a1*r2*exp(p1*t)+a2*r2*exp(p2*t);//напруга на першому опорі

i1:=i2+i3;//струм першої гілки

ur1:=i1*r1;//напруга на другому опорі

ul:=l*i1;//напруга на котушці

form1.Series1.AddXY(t,i3,'',clred);//побудова графіка струму третьої гілки

form1.Series2.AddXY(t,uc,'',clgreen);//побудова графіка напруги на конденсаторі

form1.Series3.AddXY(t,i2,'',clred);//побудова графіка струму другої гілки

form1.Series4.AddXY(t,ur2,'',clgreen);//побудова графіка напруги на конденсаторі

form1.Series5.AddXY(t,i1,'',clred);//побудова графіка струму першої гілки

form1.Series6.AddXY(t,ur1,'',clgreen);//побудова графіка напруги на першому опорі

form1.Series8.AddXY(t,ul,'',clgreen);// обудова графіка напруги на котушці

end;

form1.Series1.Active:=false;

form1.Series2.Active:=false; //графіки побудовані але вони неактивні

form1.Series3.Active:=false;

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

if d<0 then //перевірка дискримінанту і початок розрахунку

begin

x1:=-(l+c*r1*r2)/2*c*l*r2;//дійсна частина комплексного числа

x2:=sqrt(abs(d))/2*c*l*r2;//уявна частина комплексного числа

q:=1/(cos(x1/x2)/sin(x1/x2));//перша постійна інтегрування

a:=(-e)/(x1*cos(q)+x2*sin(q));//друга постійна інтегрування

for t:=t1 to t2 do begin //початок розрахунку точок і побудови графіків

uc:=e*r2/(r1+r2)+a*exp(x1*t)*sin(x2*t+q);//напруга на конденсаторі

i3:=c*a*exp(x1*t)*x2*cos(x2*t+q)+c*x1*a*exp(x1*t)*sin(x2*t+q);//струм третьої гілки

i2:=e/(r1+r2)+a/r2*exp(x1*t)*sin(x2*t+q);//струм другої гілки

ur2:=i2*r2;//напруга на другому опорі

i1:=i2+i3;//струм першої гілки

ur1:=i1*r1;//напруга на першому опорі

ul:=l*i1;//напруга на котушці

form1.Series1.AddXY(t,i3,'',clred);//побудова графіка струму третьої гілки

form1.Series2.AddXY(t,uc,'',clgreen);//побудова графіка напруги на конденсаторі

form1.Series3.AddXY(t,i2,'',clred);//побудова графіка струму другої гілки

form1.Series4.AddXY(t,ur2,'',clgreen);//побудова графіка напруги на конденсаторі

form1.Series5.AddXY(t,i1,'',clred);//побудова графіка струму першої гілки

form1.Series6.AddXY(t,ur1,'',clgreen);//побудова графіка напруги на першому опорі

form1.Series8.AddXY(t,ul,'',clgreen);// побудова графіка напруги на котушці

end;

form1.Series1.Active:=false;

form1.Series2.Active:=false; //графіки побудовані але не активні

form1.Series3.Active:=false;

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

except

showMessage('Помилка при вводі даних');//виведення повідомлення про помилку

invis; //виконання процедури invis

end;

end;

procedure TForm1.N8Click(Sender: TObject);//процедура закриття програми

begin

form1.Enabled:=false;//робить першу форму неактивною

form3.show;//відкриває 3 форму

end;

procedure TForm1.N6Click(Sender: TObject);//процедура відкриття даних

begin

opendialog1.InitialDir:='d:\курсовий проект\файл';

With OpenDialog1 do

if Execute then

begin

memo1.lines.LoadFromFile(filename);

Caption:='Перехідні процеси -' + extractFilename(filename);//присваєння назві форми назву файлу

Edit1.text:=memo1.Lines.Strings[0]; //кожному значенню присвоюються свої значення

Edit2.text:=memo1.Lines.strings[1];

Edit6.text:=memo1.Lines.strings[2];

Edit4.text:=memo1.Lines.strings[3];

Edit5.text:=memo1.Lines.strings[4];

end;

invis; //виконання процедури invis

end;

procedure TForm1.Button2Click(Sender: TObject);//процедура видалення даних

begin

Edit1.Text:=''; //присвоюємо величинам елементів початкове значення

Edit2.Text:='';

Edit6.Text:='';

Edit4.Text:='';

Edit5.Text:='';

form1.Series1.Clear;

form1.Series2.Clear; //видаляємо графіки

form1.Series3.Clear;

form1.Series4.Clear;

form1.Series5.Clear;

form1.Series6.Clear;

form1.Series8.Clear;

form1.N5.Enabled:=false;//кнопка збереження графіків стає неактивною

end;

procedure TForm1.N3Click(Sender: TObject);//процедура збереження даних

begin

if opendialog1.FileName <> '' then// якщо файл уже був збережений то перезберегти його

begin

memo1.clear;

memo1.Lines.append(Edit1.Text);

memo1.Lines.append(Edit2.Text); //збереження даних з допомогою memo1

memo1.Lines.append(Edit6.Text);

memo1.Lines.append(Edit4.Text);

memo1.Lines.append(Edit5.Text);

memo1.Lines.SaveToFile(OpenDialog1.filename);//власне збереження

end

else

N4Click(sender); //якщо не був збережений то виконати функцію для збереження даних N4Click

end;

procedure TForm1.N2Click(Sender: TObject);//процедура створення нового файлу

begin

form1.Series1.Clear;

form1.Series2.Clear; //видаляємо побудовані графіки

form1.Series3.Clear;

form1.Series4.Clear;

form1.Series5.Clear;

form1.Series6.Clear;

form1.Series8.Clear;

form1.Enabled:=false;//перша форма неактивна

form4.show;//відкриває 4 форму

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

form1.Enabled:=false;//перша форма неактивна

Form3.Show;//відкриває 3 форму

end;

procedure TForm1.CheckBox1Click(Sender: TObject);//3D графіки

begin

if form1.CheckBox1.Checked then

chart1.View3D:=true

else

chart1.View3D:=false;

end;

procedure TForm1.N5Click(Sender: TObject);//збереження графіків

begin

savedialog2.InitialDir:='d:\курсовий проект\файл';//папка для збереження графіків

form1.saveDialog2.FileName:='Graph.bmp';//перша назва файлу

if saveDialog2.Execute then

Chart1.SaveToBitmapFile(saveDialog2.FileName);//власне збереження графіків

end;

procedure TForm1.N11Click(Sender: TObject);//процедура виведення справки

begin

Help.show;//виведення графіків

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

form2.show;//виведення вікна про програму

end;

procedure TForm1.RadioButton1Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton1.Checked then

form1.Series5.Active:=true;

form1.Label19.Visible:=true; //виведення графіків на екран

form1.Label19.Caption:='I,A';

form1.Series2.Active:=false;

form1.Series3.Active:=false;

form1.Series4.Active:=false;

form1.Series1.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

procedure TForm1.RadioButton4Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton4.Checked then

Series6.Active:=true;

form1.Series1.Active:=false;

form1.Label19.Visible:=true;

form1.Label19.Caption:='U,B'; //виведення графіків на екран

form1.Series3.Active:=false;

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series2.Active:=false;

form1.Series8.Active:=false;

end;

procedure TForm1.RadioButton6Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton6.Checked then

form1.Series8.Active:=true;

form1.Series1.Active:=false;

form1.Label19.Visible:=true;

form1.Label19.Caption:='U,B';

form1.Series2.Active:=false; //виведення графіків на екран

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series3.Active:=false;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton2.Checked then

form1.Series3.Active:=true;

form1.Series1.Active:=false;

form1.Label19.Visible:=true;

form1.Label19.Caption:='I,A'; //виведення графіків на екран

form1.Series2.Active:=false;

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

procedure TForm1.RadioButton5Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton5.Checked then

form1.Series4.Active:=true;

form1.Series1.Active:=false;

form1.Label19.Visible:=true;

form1.Label19.Caption:='U,B';

form1.Series2.Active:=false;

form1.Series3.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton3.Checked then

form1.Series1.Active:=true;

form1.Label19.Visible:=true;

form1.Label19.Caption:='I,A';

form1.Series2.Active:=false;

form1.Series3.Active:=false;

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

procedure TForm1.RadioButton7Click(Sender: TObject);//процедура виведення графіку в Chart1

begin

if form1.RadioButton7.Checked then

form1.Series2.Active:=true;

form1.Label19.Visible:=true;

form1.Label19.Caption:='U,B';

form1.Series1.Active:=false;

form1.Series3.Active:=false; //виведення графіків на екран

form1.Series4.Active:=false;

form1.Series5.Active:=false;

form1.Series6.Active:=false;

form1.Series8.Active:=false;

end;

procedure TForm1.Edit9Change(Sender: TObject);

begin

invis;

end;

procedure TForm1.Edit10Change(Sender: TObject);

begin

invis;

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]