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

3.1 Інтерфейс

Для створення програми були використані XML-таблиці і елементи ClientDataSet та DataSourse, що застосовуються для розробки баз даних і розташовані на вкладці Data Access. Крім того, необхідними є компоненти DBGrid і DBNavigator, розташовані на вкладці DataControls.

В ході розробки програми було визначено, що програма складатиметься з кількох модулів: головного і підлеглих. Підлеглі модулі викликликаються і використовуються головним модулем. Головний модуль міститиме в собі записник, годинник, календар і інформаційне повідомлення.

Один з підлеглих модулів вміщує телефонну книгу, подібну за структурою до записника. Другий модуль вміщує в собі калькулятор.

Для розробки інтерфейсу було використано 3 форми, відповідно до числа модулів: 1 головна(рис.1) і 2 модальні.

Рис. 1 Головна форма.

Основою форми є вже вищезгадані ClientDataSet та DataSourse, DBGrid і DBNavigator.

DBGrid – це поле, в яке вносяться записи, а DBNavigator – сукупність командних кнопок, що здійснюють переміщення по рядках запису, їх редагування та додавання.

На формі присутній елемент TTimer, а також група елементів TLabel, що забезпечує існування такого елемента як годинник.

Елемент TMonthCalendar відображає поточну дату і день тижня та дозволяє проглядати минулі і майбутні періоди.

Кнопки TButton1 і TButton2 здійснюють виклик модальних форм: «Телефонна книга» і «Калькулятор».

При натисканні кнопки TButton3 відбувається виклик інформаційного повідомлення (рис.2).

Рис. 2 Інформаційне повідомлення.

Модальна форма TForm2 (рис. 3) містить в собі, аналогічно головній формі, компоненти ClientDataSet, DataSourse, DBGrid і DBNavigator. Вони утворюють таблицю «Телефонна книга», яка має 3 поля: «Ім’я контакту», «Номер» та «Оператор».

Рис. 3 Модальна форма TForm2.

Модальна форма TForm3 (рис. 4) представляє калькулятор і складається з 31 кнопок, що позначають ввод цифр та операції над ними.

Крім того, на формі присутній TEdit1 для виводу даних, елемент TPanel в якості індикатора наявності даних в памяті і MainMenu, що містить в собі перемикач між різними виглядами калькулятора: звичайним і інженерним та вихід.

Рис. 4 Модальна форма TForm3.

3.2 Створення інсталяції

Для створення інсталяції я використала Smart Install Maker 5.02 – програму- створювач пакетів установки. Програма скомпілювала інсталяцію, яка являє собою єдиний том, і встановлюється наступними кроками:

Рис. 5 Старт установки

Рис. 6 Процес установки

Рис. 7 Успішне завершення установки.

Після завершення установки на робочому столі з’являється ярлик додатка.

3.3 Тестування програми.

Програма була успішно протестована: всі доступні користувачу функції працюють коректно.

Демонстрація роботи програми наведена на рис.8-10:

Рис. 8 Телефонна книга.

Рис. 9 Калькулятор.

Рис. 10 Головне вікно органайзера.

Висновки

Завданням роботи було створення програми – органайзера для планування робочого часу, ведення записної і телефонної книжки. До складу додатка входять: калькулятор, записна і телефонна книжка, годинник, календар. Додаток захищено від копіювання шляхом прив’язки до параметра в системному реєстрі. Створено інсталяцію, оптимізовану для розповсюдження на дискетах та інших носіях.

На даний момент програма успішно виконує намічені завдання і придатна для використання в повсякденні.

Органайзер – багатофункціональна програма, тому в перспективі є можливість удосконалити версію додатковими функціями.

Список використаної літератури

  1. М. Фленов «Библия Delphi», С-Петербург, - «БХВ-Петербург», 2004.

  2. Попов В.Б. «Паскаль и Дельфи. Самоучитель», - СПб.: Питер, 2004.

  3. Шпак Ю. А. «Delphi 7 на примерах», - «Юниор», 2003.

  4. http://delphiexpert.ru/book.php

  5. http://programmersclub.ru

Додаток

Лістинг програми

unit main;

interface

uses

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

Dialogs, DB, DBClient, StdCtrls, DBCtrls, Mask, Grids, DBGrids, Calendar,

ExtCtrls,DateUtils,ShellAPI, ComCtrls, inifiles;

type

TForm1 = class(TForm)

DataSource1: TDataSource;

ClientDataSet1: TClientDataSet;

ClientDataSet1Key1: TAutoIncField;

ClientDataSet1EventName: TStringField;

ClientDataSet1DateTime: TDateTimeField;

ClientDataSet1EventText: TMemoField;

DBGrid1: TDBGrid;

Timer1: TTimer;

Shape1: TShape;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

MonthCalendar1: TMonthCalendar;

DBNavigator1: TDBNavigator;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure FormCreate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TForm1;

implementation

uses Unit2, calkulator;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var Hour, Min: word;

win: TIniFile;

pres: string;

begin

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

Win.ReadString ('windows', 'run', pres);

IF pres<> application.ExeName then win.WriteString('windows', 'run', application.ExeName);

Win.Free;

ClientDataSet1.LoadFromFile('zapysnyk.xml');

ClientDataSet1.LogChanges:=False;

Hour:= HourOf(Now);

Min:= MinuteOf(Now);

Label4.Caption:= IntToStr(Hour);

if Min < 10

then Label6.Caption:= '0'+IntToStr(Min)

else Label6.Caption:= IntToStr(Min);

end;

procedure TForm1.FormShow(Sender: TObject);

begin

ClientDataSet1.LoadFromFile('zapysnyk.xml');

IF ClientDataSet1.Eof= false then timer1.Enabled:= true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var NowDate, BDate: string;

cHour,cMin,Hour,Min: word;

begin

cHour:= HourOf(Now);

cMin:= MinuteOf(Now);

if Timer1.Tag = 0

then begin

if cHour <> Hour then

begin

Hour:= cHour;

Label4.Caption:= IntToStr(Hour);

end;

if cMin <> Min then

begin

Min:= cMin;

if min <10

then Label6.Caption:= '0' + IntToStr(Min)

else Label6.Caption:= IntToStr(Min);

end;

if Label5.Visible

then Label5.Visible:= False

else label5.Visible:= True;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.ShowModal;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Form3.ShowModal;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

ShowMessage('Дана програма - курсова робота з дисципліни "Прикладне програмне забезпечення" студентки групи КН-71 Халіман Наталії');

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, DB, ExtCtrls, DBCtrls, Grids, DBGrids, DBClient;

type

TForm2 = class(TForm)

DataSource1: TDataSource;

ClientDataSet1: TClientDataSet;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

ClientDataSet1Key1: TAutoIncField;

ClientDataSet1Name: TStringField;

ClientDataSet1Nomer: TIntegerField;

ClientDataSet1Operator: TStringField;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

end.

unit calkulator;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Menus, XPMan;

type

TForm3 = class(TForm)

Edit1: TEdit;

Panel1: TPanel;

Butt_back: TButton;

Butt_C: TButton;

Butt_MC: TButton;

Butt_MR: TButton;

Butt_MS: TButton;

Butt_M_plus: TButton;

Butt_7: TButton;

Butt_4: TButton;

Butt_1: TButton;

Butt_0: TButton;

Butt_8: TButton;

Butt_5: TButton;

Butt_2: TButton;

Butt_plus_minus: TButton;

Butt_9: TButton;

Butt_6: TButton;

Butt_3: TButton;

Butt_coma: TButton;

Butt_div: TButton;

Butt_mnoj: TButton;

Butt_minus: TButton;

Butt_plus: TButton;

Butt_sqrt_corin: TButton;

Butt_step: TButton;

Butt_na_x: TButton;

Butt_doriv: TButton;

Butt_pi: TButton;

Butt_sin: TButton;

Butt_cos: TButton;

Butt_ln: TButton;

Butt_x: TButton;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

XPManifest1: TXPManifest;

procedure Butt_0Click(Sender: TObject);

procedure Butt_1Click(Sender: TObject);

procedure Butt_2Click(Sender: TObject);

procedure Butt_3Click(Sender: TObject);

procedure Butt_4Click(Sender: TObject);

procedure Butt_5Click(Sender: TObject);

procedure Butt_6Click(Sender: TObject);

procedure Butt_7Click(Sender: TObject);

procedure Butt_8Click(Sender: TObject);

procedure Butt_9Click(Sender: TObject);

procedure Butt_MCClick(Sender: TObject);

procedure Butt_MRClick(Sender: TObject);

procedure Butt_MSClick(Sender: TObject);

procedure Butt_M_plusClick(Sender: TObject);

procedure Butt_backClick(Sender: TObject);

procedure Butt_CClick(Sender: TObject);

procedure Butt_plus_minusClick(Sender: TObject);

procedure Butt_comaClick(Sender: TObject);

procedure Butt_divClick(Sender: TObject);

procedure Butt_mnojClick(Sender: TObject);

procedure Butt_minusClick(Sender: TObject);

procedure Butt_plusClick(Sender: TObject);

procedure Butt_sqrt_corinClick(Sender: TObject);

procedure Butt_stepClick(Sender: TObject);

procedure Butt_na_xClick(Sender: TObject);

procedure Butt_dorivClick(Sender: TObject);

procedure Butt_piClick(Sender: TObject);

procedure Butt_sinClick(Sender: TObject);

procedure Butt_lnClick(Sender: TObject);

procedure Butt_cosClick(Sender: TObject);

procedure Butt_xClick(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

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

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses main;

{$R *.dfm}

var x,y,numb,cyf,m:real;

oper,f:integer;

procedure TForm3.Butt_0Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '0';

f:= 1;

end

else

if Edit1.Text <> '0'

then Edit1.Text:= Edit1.Text + '0';

end;

procedure TForm3.Butt_1Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '1';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '1';

end;

procedure TForm3.Butt_2Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '2';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '2';

end;

procedure TForm3.Butt_3Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '3';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '3';

end;

procedure TForm3.Butt_4Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '4';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '4';

end;

procedure TForm3.Butt_5Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '5';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '5';

end;

procedure TForm3.Butt_6Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '6';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '6';

end;

procedure TForm3.Butt_7Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '7';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '7';

end;

procedure TForm3.Butt_8Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '8';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '8';

end;

procedure TForm3.Butt_9Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:= '9';

f:= 1;

end

else Edit1.Text:= Edit1.Text + '9';

end;

procedure DoOper;

begin

numb:= StrToFloat(Form3.Edit1.Text);

case oper of

0: cyf:=numb;

1: cyf:=cyf + numb;

2: cyf:=cyf - numb;

3: cyf:=cyf *numb;

4: cyf:=cyf / numb;

end;

Form3.Edit1.Text:= FloatToStr(cyf);

end;

procedure TForm3.Butt_MCClick(Sender: TObject);

begin

m:=0;

panel1.Caption:='';

end;

procedure TForm3.Butt_MRClick(Sender: TObject);

begin

edit1.Text:=floattostr(M);

end;

procedure TForm3.Butt_MSClick(Sender: TObject);

begin

M:=strtofloat(edit1.Text);

panel1.Caption:='M';

end;

procedure TForm3.Butt_M_plusClick(Sender: TObject);

begin

panel1.Caption:='M';

M:=M+strtofloat(edit1.Text);

end;

procedure TForm3.Butt_backClick(Sender: TObject);

var

back:string;

begin

back:=edit1.Text;

delete(back,length(back),1);

edit1.Text:=back;

if edit1.Text='' then

begin

edit1.Text:='0';

end;

end;

procedure TForm3.Butt_CClick(Sender: TObject);

begin

Edit1.Text:= '0';

cyf:= 0;

oper:= 0;

f:= 0;

end;

procedure TForm3.Butt_plus_minusClick(Sender: TObject);

begin

edit1.Text:=floattostr(-strtofloat(edit1.Text));

end;

procedure TForm3.Butt_comaClick(Sender: TObject);

begin

if Edit1.Text = '0' then

begin

Edit1.Text:= '0,';

f:= 1;

end;

if Pos(',',Edit1.Text) = 0 then

Edit1.Text:= Edit1.Text + ',';

end;

procedure TForm3.Butt_divClick(Sender: TObject);

begin

if f = 0

then oper:= 4

else begin

DoOper;

oper:=4;

f:=0;

end;

end;

procedure TForm3.Butt_mnojClick(Sender: TObject);

begin

if f = 0

then oper:= 3

else begin

DoOper;

oper:=3;

f:=0;

end;

end;

procedure TForm3.Butt_minusClick(Sender: TObject);

begin

if f = 0

then oper:= 2

else begin

DoOper;

oper:=2;

f:=0;

end;

end;

procedure TForm3.Butt_plusClick(Sender: TObject);

begin

if f = 0

then oper:= 1

else begin

DoOper;

oper:=1;

f:=0;

end;

end;

procedure TForm3.Butt_sqrt_corinClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

if (x<0) then

begin

messagedlg('Квадратного кореня з від*ємного числа неіснує!',mtError,[mbOk],0); exit;

end;

y:=sqrt(x);

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.Butt_stepClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

y:=sqr(x);

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.Butt_na_xClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

y:=1/x;

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.Butt_dorivClick(Sender: TObject);

begin

if f = 0

then oper:= 0

else begin

DoOper;

oper:=0;

f:=0;

end;

end;

procedure TForm3.Butt_piClick(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text:=floattostr(pi);

f:= 1;

end

else

if Edit1.Text <> '1'

then Edit1.Text:= Edit1.Text + '';

end;

procedure TForm3.Butt_sinClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

y:=sin(x);

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.Butt_lnClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

if (x<1) then

begin

messagedlg('Логарифм від"ємного числа не існує!',mtError,[mbOk],0); exit;

end;

y:=ln(x);

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.Butt_cosClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

y:=cos(x);

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.Butt_xClick(Sender: TObject);

begin

x:=StrToFloat(form3.Edit1.Text);

y:=exp(x);

Form3.Edit1.Text:=FloatToStr(y);

end;

procedure TForm3.N2Click(Sender: TObject);

begin

Form3.Edit1.Width:=249;

Form3.Width:=266;

end;

procedure TForm3.N3Click(Sender: TObject);

begin

Form3.Edit1.Width:=320;

Form3.Width:=339;

end;

procedure TForm3.FormCreate(Sender: TObject);

begin

oper:= 0;

end;

proсedure TForm3.Edit1Change(Sender: TObject; var Key: Char);

begin

Key:= Chr(0);

end;

procedure TForm3.N4Click(Sender: TObject);

begin

Form3.Close;

end;

end.

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