Смекни!
smekni.com

Створення програми-органайзера (стр. 2 из 3)

2.2 Програмна модель.

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

Програма створена в середовищі Borland Delphi 7 і складається з кількох модулів. Крім того, в ній застосовуються XML таблиці.

Основними операціями, виконуваними програмою, є: робота з базами, обчислення(калькулятор), вивод поточної дати і часу.

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

Графічне відображення алгоритму має такий вигляд(схема1):

Схема 1. Загальний алгоритм роботи програми.

Решта функцій, визначених у програмі, має схожий, стандартний алгоритм, тому нема потреби ще раз повторювати схему.


Розділ 3. Розробка інтерфейсу і тестування програми

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);