
- •Курсова робота з дисципліни ”Обчислювальна техніка, алгоритмічні мови та програмне забезпечення” Варіант №
- •Содержание
- •Алгоритми
- •1Опис алгоритму.
- •2Алгоритм у вигляді блок-схем.
- •Програма, реалізована на мові Object Pascal в середовищі Delphi 7
- •3Інтерфейс програми – фото форм у конструкторі.
- •4Опис компонентів, що використовуються в програмі.
- •5Текст програми та модулів форм.
- •6Опис тексту програми та коментарії до її окремих частин.
- •Результати тестування програми
- •Інструкція користувача
- •Висновки
- •Перелік посилань
2Алгоритм у вигляді блок-схем.
В цьому підпункті представлені алгоритми написання програми в вигляді блок-схем для можливості реалізації її на іншій мові програмування.
Блок-схема процедури створення файлів показана на рисунку , , .
Рисунок
– Блок-схема процедури створення
файлу
Рисунок
– Блок-схема створення файлів
Рисунок
– Блок-схема процедури створення
фалів
Блок-схема процедури побудови дійсного значення напруги показана на рисунках -.
Рисунок
– Блок-схема процедури побудови
дійсного значення напруги
Рисунок
– Блок-схема процедури побудови
дійсного значення напруги
Рисунок
– Блок-схема процедури побудови
дійсного значення напруги
Блок-схема процедури побудови максимального значення напруги представлена на рисунках , , .
Рисунок – Блок-схема процедури побудови максимального значення напруги
Рисунок
– Блок-схема процедури побудови
максимального значення
Рисунок – Блок-схема процедури побудови максимального значення
Програма, реалізована на мові Object Pascal в середовищі Delphi 7
3Інтерфейс програми – фото форм у конструкторі.
Написана програма має 4 форми. Форми пердставлені на наступних рисунках.
Форма головного меню представлена на рисунку .
Рисунок
– Форма головного меню
Форма меню генерації файлів представлена рисунку .
Рисунок
– Форма генерації файлів
Форма побудови графіків представлена на рисунку
Рисунок
– Форма побудови графіків
Форма «О программе» представлена на рисунку .
Рисунок
– Форма «О программе»
Форма «Помощь» представлена на рисунку
Рисунок
– Форма «помощь»
4Опис компонентів, що використовуються в програмі.
Компоненти та їх опис представлені в таблиці .
Таблиця – Компоненти , що використовуються в проекті.
Компонент |
Призначення |
MainMenu |
Створення формули головного меню, завдяки якому можна перейти до інших форм. |
Button |
В програмі було використано декілька цих компонентів, адже ми в програмі маємо багато подій что пов’язані з цим компонентом. |
Edit |
В даній програмі цей компонент використовується тільки для вводу даних. |
Label |
В даній програмі цей компонент використовується тільки для надпису. |
Char |
Використовується для побудови графіків. |
PageControl |
Використвоються для зміни меню на одній формі. |
OleConteiner |
Використовується, для того щоб можна було звернутись до Word. В даній програмі використовується для відображення інформації. |
Memo |
Цей компонент використовується для роботи з багаторядковим текстом. В даній програмі в полі цього компоненту будуть реєструватись координати точок. |
DateTimePicker |
За допомогою цього компоненту можна обрати дату. |
5Текст програми та модулів форм.
Модуль що відповідає за генерацію файлів.
type
TForm6 = class(TForm)
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label5: TLabel;
Label6: TLabel;
Button2: TButton;
DateTimePicker1: TDateTimePicker;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
var t1:string;
urez :Integer;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
var
papka :string;
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Выбор папки';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then
begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
end;
papka :=TempPath +'Аналізатор характеристик напруг' ;
if not DirectoryExists(papka) then
ForceDirectories(papka) ;
edit1.text:=papka;
end;
procedure TForm6.Button2Click(Sender: TObject);
var t,t2:string;
chasOT,chasDO,minot,mindo,chasrazn,minrazn ,a1: integer;
kolfail,a,j ,q:integer;
namefile, name1,name2 ,name3,polnput:string;
f:file of integer;
U, dwt,amplitude,amplituderandom,wt,iamp,Uamplitude,iamplitude:real;
begin
//Создание папки с датой
t1:=edit1.text+'\';
t2:=FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date);
t:=t1+t2;
if not DirectoryExists(t) then
ForceDirectories(t);
// Вычесление количество файлов
chasot:=strtoint(edit2.Text);
chasdo:=strtoint(edit4.Text);
minot:=strtoint(edit3.Text);
mindo:=strtoint(edit5.Text);
chasrazn:=chasdo-chasot;
minrazn:=mindo-minot;
kolfail:=Ceil((chasrazn*60 + minrazn)/10);
a1:=Ceil(strtoint(edit4.Text)*6+ (strtoint (edit5.Text)) div 10);
//создание и заполнение файлов
name1:='file00';
name3:='.dat';
dwt:=(2*pi)/20;
Uamplitude :=(230*2048)/(2*410);
for a:=a1 to a1+kolfail do
begin
name2:=inttostr(a1);
namefile:=name1+name2+name3;
polnput:=t+ '\' +namefile;
AssignFile(f,polnput);
Rewrite(f) ;
for j :=1 to 10*50*60 do
begin
amplituderandom:=Uamplitude-0.05*Uamplitude+random(26);
for q:=0 to 20 do
begin
wt:=dwt*q;
U:=round(amplituderandom*sin(wt));
Urez:=Round(U-Urez);
write (f,Urez);
end;
end;
CloseFile(f);
end;
end;
end.
Модуль програми, що відповідає за побудову графіків.
type
TForm2 = class(TForm)
pgc1: TPageControl;
ts1: TTabSheet;
lbl1: TLabel;
grp2: TGroupBox;
Label1: TLabel;
Chart1: TChart;
Series1: TLineSeries;
Edit1: TEdit;
Edit2: TEdit;
DateTimePicker1: TDateTimePicker;
btn1: TBitBtn;
Memo1: TMemo;
Memo2: TMemo;
ts2: TTabSheet;
lbl2: TLabel;
grp4: TGroupBox;
DBChart1: TDBChart;
Series2: TLineSeries;
Edit3: TEdit;
Edit4: TEdit;
DateTimePicker2: TDateTimePicker;
btn2: TBitBtn;
Memo3: TMemo;
Memo4: TMemo;
Edit5: TEdit;
Label2: TLabel;
Edit6: TEdit;
Label4: TLabel;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
var Urez:array [1..600000] of Integer;
implementation
{$R *.dfm}
procedure TForm2.btn1Click(Sender: TObject);
var f :file of Integer;
t2,t:string;
name2 ,a,ii,ii1,idd,idd1,sud,gr,kor:Integer;
name1,namefile,name3,polnput:string;
ud:array [1..30000] of Real;
begin
if t1='' then t1:='D:\Аналізатор характеристик напруг\' ;
t2:=FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date);
name2:=Ceil((strtoint(edit1.Text)*6+ (strtoint (edit2.Text))div 10));
t:=t1+t2;
name1:='file00';
name3:='.dat';
namefile:=name1+inttostr(name2)+name3;
polnput:=t+ '\' +namefile;
ShowMessage(polnput);
try
AssignFile(f,polnput);
Reset(f);
for a:=1 to 10*60*50*20 do
read(f,Urez[a]);
except ShowMessage('Файла не существует');
end;
ii:=1;
ii1:=20;
for idd:=1 to 10*60*50 do
begin
for idd1:=ii to ii1 do
sud:=sud+sqr(urez[idd1]);
ii:=ii1+1;
ii1:=ii1+20;;
ud[idd]:=sqrt(sud)/20;
sud:=0;
end;
for gr:=1 to 10*60*50 do
begin
Chart1.Series[0].AddXY(gr,ud[gr]);
end;
kor:=strtoint(Edit5.text);
for gr:=1 to kor do
begin
Memo1.Lines.add(floattostr(RoundTo((ud[gr]),-3)));
Memo2.Lines.add(inttostr(gr));
end;
end;
procedure TForm2.btn2Click(Sender: TObject);
var f :file of Integer;
t2,t:string;
name2 ,a,ii,ii1,idd,idd1,sud,gr,kor:Integer;
name1,namefile,name3,polnput:string;
umax:array [1..30000] of Real;
umin:array [1..30000] of Real;
tempmax,tempmin:real;
begin
if t1='' then t1:='D:\Аналізатор характеристик напруг\';
t2:=FormatDateTime('dd.mm.yyyy',DateTimePicker2.Date);
name2:=Ceil(strtoint(edit3.Text)*6+ (strtoint (edit4.Text))div 10);
t:=t1+t2;
name1:='file00';
name3:='.dat';
namefile:=name1+inttostr(name2)+name3;
polnput:=t+ '\' +namefile;
ShowMessage(polnput);
try
AssignFile(f,polnput);
Reset(f);
for a:=1 to 10*60*50*20 do
read(f,Urez[a]);
except ShowMessage('Файла не существует');
end;
ii:=1;
ii1:=20;
for idd:=1 to 10*60*50 do
begin
for idd1:=ii to ii1 do
begin
tempmax:=urez[ii];
tempmin:= urez[ii];
if tempmax < Urez[idd1] then
tempmax:=urez[idd1];
if tempmin > Urez[idd1] then
tempmin:=urez[idd1];
end;
ii:=ii1+1;
ii1:=ii1+20;;
umax[idd]:=tempmax;
umin[idd]:=tempmin;
end;
for gr:=1 to 10*60 do
begin
DBChart1.Series[0].AddY(umin[gr]);
DBChart1.Series[0].AddY(umax[gr]);
end;
kor:=strtoint(Edit5.text);
for gr:=1 to kor do
begin
Memo3.Lines.add(floattostr(RoundTo((umax[gr]),-3)));
Memo4.Lines.add(inttostr(gr));
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1.Lines[0]:='U';
Memo2.Lines[0]:='time(msec)';
Memo3.Lines[0]:='Umax';
Memo4.Lines[0]:='time(msec)';
end;
end.