Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Для розробки бази даних вибрано MS Access через простоту використання. ⇐ ПредыдущаяСтр 4 из 4
Створення прикладних програм та додатків Delphi виконується і інтегрованому середовищі розробки IDE (Integrated Development Environment). IDE служить для організації взаємодії з програмістом і включає в себе пару вікон, що містять різні керуючі елементи. За допомогою засобів інтегрованого середовища розробник може зручно проектувати інтерфейсну частину програми а також писати програмний код і пов’язувати його з керуючими елементами. При цьому вся робота по створенню додатка включаючи налагодження відбувається в інтегрованому середовищі розробки. Інтегроване середовище Delphi являє собою багато віконну систему. Вид інтегрованого середовища розробки може відрізнятись в залежності від налаштувань. 2 Спеціальний розділ 2.1 Функціональна модель Діаграми SADT (Structured Analysis and Design Technique – технологія структурного аналізу і проектування) були розроблені в 1973 році Дугласом Россом. Основне призначення цього методу це декомпозиція або розбиття основних функцій на під функції. Програмною реалізацією даного метода є програма BP Win. Опишемо основи функціонування даного об’єкту тобто «Довідник Фармацевта» за допомогою програми BP Win. На нульовому рівні вхідними даними служать: інформація про ліки замовлення. Побічно на дане підприємство впливають закони статут підприємства. Співробітники та обладнання має також велике значення. Вихідними даними є: дохід звіти і відповіді на замовлення. мал.2.1 Функціональна діаграма – 0 рівень В результаті, можно розробити логічний ланцюжок БД, використовуючи програму ERWin. 2.2 Розробка логічної структури бази даних
мал. 2.2 Логічна структура БД 2.3 Формування фізичної структури бази даних Таблиці Access Ліки Ключ лічильник Назва текстовий Тип ліків текстовий Дата випуска дата Ціна грошовий
Склад Ключ лічильник Код числовий Дата поставки дата Термін зберігання текстовий Кількість на складі числовий Код постачальника числовий Постачальник Код постачальника числовий Назва постачальника текстовий Місто текстовий Вулиця текстовий Умови поставки текстовыйий
Тип ліків Код типа лічильник Тип ліків текстовий
Міста Код Міста лічильник Місто текстовий 2.4 Проектування графічного користувацького интерфейса Головна форма мал.2.3 Головна форма Опис роботи: Відображення основної інформації з таблиць БД ліки та склад. Рядок Найти: здійснює пошук ліків за початковими літерами в його назві. мал.2.4 Відбір даних за умовою Рядок Постачальника: здійснює пошук постачальника за його кодом в таблиці Постачальники з відображенням назви ліків його кількості на скаладі і дати поставки і висновок результату в окремій формі «Результат пошуку». мал.2.5 Результат пошуку Розділ Замовлення: Назва – вибір ліків Дата – вказати дату Ціна – вказати ціни ліків Кількість – вказати кількість товара Сума – підрахунок загальної суми замовлень При натисканні на кпопки Ок проводиться продаж ліків з занесенням інформації в таблицю Замовлення з відображенням його у формі Звіт з продажу. Меню Редагувати: мал.2.6. Меню Редагувати Додати запис – здійснює виклик форми Додати / редагувати ліки зі занесенням доданих даних.
мал.2.7 Форма Додати / редагувати ліки Редагувати запис – здійснює виклик форми Додати / редагувати ліки з оновленнм виправелих даних в таблицях Ліки та Склад рис.2.8 Форма Додати / редагувати ліки
Меню Звіти мал.2.9 Меню Звіти Здійснює виклик форми Звіти по продажам. мал.2.10 Форма Звіт по продажам
Меню Постачальник мал.2.11 Меню Постачальник Виконується запит форми Постачальники. мал.2.12 Форма Постачалькин Кнопка Додати – осуществляет вызов формы Добавить / редактировать поставщика с занесением добавленных данных в таблицу Поставщики. мал.2.13 Форма Додати / редактировать поставщика
Кнопка Редагувати – здійснює виклик форми Додати / редагувати постачальника з оновленням виправлених даних в таблицю Постачальник. мал.2.14 Форма Додати / редагувати постачальника Кнопка Видалити – здійснює видалення поточного запису з таблиці Постачальники. Кнопка Вихід – закриває форму. Меню Довідник мал.2.15 Меню довідник
Здійснює виклик форм Міста і Типи ліків. мал.2.16 Форма Міста мал.2.17 Форма Тип ліків Меню Сортування мал.2.18 Меню сортування Здійснює сортування ліків по назві або по ціні в таблиці Ліки.
Меню Вихід мал.21. Меню Вихід
ВИСНОВОК В процесі створення програми «Довідник фармацевта» були вивчені матеріали з предметної області, також були розглянуті принципи роботи інтерфейсу ADO для роботи в СУБД. В результаті було створено додаток що включає в себе програму, файл бази даних. Даний проект являє собою демонстрацію лише дуже спрощену модель Бази Даних. Але в цій роботі виконані всі основні вимоги та функції такі як: 1. Пошук та фільтрація даних 2. Навігація по таблиці з даними 3. Оформлення вихідної документації у вигляді звіту Ці можливості допомагають ввести звітну документацію, формувати підсумки роботи зберігати дані про ліки та їх ціни, постачальників, і т.п. З додатко не складно працювати навіть недосвідченому користувачеві. Вона барвисто оформлена щоб користувачеві було приємно працювати в даній програмі. Даний проект може бути більш детально і ретельно доопрацьований в майбутньому що може принести його розробка чи мало прибутку.
СПИСОК ЛИТЕРАТУРЫ 1. Орлов С. А. Технологии разработки программного обеспечения/ С. Орлов – СПб.: Питер, 2002. – 464 с. 2. Технология разработки программного обеспечения. Л. Г. Гагарина, 3. Access. Часть 1 (для пользователей). Учебное пособие. – СПб., 2005. 4. Вероника Михеева, Ирина Харитонова «MS Access 2000», БВХ-Петербург, 2000г. 5. ГОСТ 2.105-95. Единая система конструкторской документации. Общие требования к текстовым документам. Межгосударственный совет по стандартизации, метрологии и сертификации. – М.: Издво стандартов, 1996. – 36 с. 6. Дарахвелизе П.Г., Марков Е.П.“Delphi 4”, СПб.:, БВХ-Санкт-Петербург 1999.-816 с., ил. 7. Фленов Михаил “Библия Delphi” 2001г. https://www.cydsoft.com/vr-online. 8. “Королевство Delphi” https://www.delphikingdom.com/ 9. “Советы по Delphi” https://www.webmachine.ru/ 10. Кандзюба С. П., Громов В. Н, «Delphi 6/7. Базы данных и приложения», DiaSoft, 2002 г. 11. Алексей Федоров, Наталия Елманова, «ADO в Delphi», bhv-Санкт-Петербург, 2002 г. 12. А. Жуков, «Изучаем Delphi», Питер, 2000 13. В. Фаронов, «Программирование баз данных в Delphi», Питер, 2004 14. Ф. Гофман, А. Хоменко «Работа с базами данных в Delphi», bhv-Санкт-Петербург 15. В. Фаронов, «Delphi 5. Руководство программиста», Нолидж, 2001 16. Вероника Михеева, Ирина Харитонова «MS Access 2000» Додаткок unit Unit1; //Головне вікно програми
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, Menus, ImgList, StdCtrls, DBCtrls, Mask, Buttons;
type TForm1 = class(TForm) DBGrid1: TDBGrid; MainMenu1: TMainMenu; ImageList1: TImageList; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N4: TMenuItem; DBGrid2: TDBGrid; Edit1: TEdit; Label1: TLabel; N15: TMenuItem; N16: TMenuItem; N17: TMenuItem; GroupBox1: TGroupBox; N18: TMenuItem; Label2: TLabel; Label3: TLabel; DBEdit2: TDBEdit; Label4: TLabel; DBEdit3: TDBEdit; Label5: TLabel; DBEdit4: TDBEdit; Label6: TLabel; DBEdit5: TDBEdit; DBLookupComboBox1: TDBLookupComboBox; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Label7: TLabel; Edit2: TEdit; BitBtn3: TBitBtn; Label8: TLabel; DBEdit1: TDBEdit; Label9: TLabel; DBEdit6: TDBEdit; Label10: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure N4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure N7Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N18Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure DBLookupComboBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10;
{$R *.dfm} //Процедура збереження даних при закриті форми procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if DataModule2.ADOTable1.Modified then DataModule2.ADOTable1.Post; if DataModule2.ADOTable2.Modified then DataModule2.ADOTable2.Post; end; //Процедура добавлення нового запису в таблицю з ліками procedure TForm1.N4Click(Sender: TObject); begin DataModule2.ADOTable1.Insert; DataModule2.ADOTable2.Insert; Form3.ShowModal; end; //Процедура редагування виділеного запису в таблиці з ліками procedure TForm1.N5Click(Sender: TObject); begin Form3.ShowModal; end; //Процедура сортиртування таблиці по назві препаратів procedure TForm1.N8Click(Sender: TObject); begin DataModule2.ADOTable1.IndexFieldNames: ='Назва'; end; //Процедура сортиртування таблиці по ціні препарата procedure TForm1.N9Click(Sender: TObject); begin DataModule2.ADOTable1.IndexFieldNames: ='Цена'; end; //Процедура пошуку по введеним першим буквам назви procedure TForm1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text)> 0 then DataModule2.ADOTable1.Filtered: =true else DataModule2.ADOTable1.Filtered: =false; DataModule2.ADOTable1.Filter: ='Название> '''+Edit1.Text+''''; end; //Процедура вивода таблиці Постачальник procedure TForm1.N7Click(Sender: TObject); begin Form4.Show; end; //Процедура вивода довідника Міста procedure TForm1.N13Click(Sender: TObject); begin Form6.Show; end; //Процедура вивода довідника Тип Ліків procedure TForm1.N14Click(Sender: TObject); begin Form7.Show; end; //Процедура закритя програми procedure TForm1.N11Click(Sender: TObject); begin Form1.Close; end; //Процедура вивода звіта по продажам procedure TForm1.N18Click(Sender: TObject); begin//Процедура Form9.Show; end; //Процедура добавлення замовлення в таблицю ліків procedure TForm1.BitBtn1Click(Sender: TObject); begin DataModule2.ADOTable6.Post; DataModule2.ADOQuery2.Active: =false; DataModule2.ADOQuery2.SQL.Clear; DataModule2.ADOQuery2.SQL.Add('UPDATE Склад'); DataModule2.ADOQuery2.SQL.Add('SET Склад.[кількість на складі]=Склад.[Кількість на складі]-'''+DBEdit4.Text+''''); DataModule2.ADOQuery2.SQL.Add('WHERE Склад.[Код] LIKE '''+DBEdit1.Text+''''); DataModule2.ADOQuery2.ExecSQL; DataModule2.ADOTable2.Refresh; DataModule2.ADOTable6.Refresh; end; //Процедура створення нового замовлення procedure TForm1.BitBtn2Click(Sender: TObject); begin DataModule2.ADOTable6.Insert; end; //Процедура пошуку по введеному номеру замовлення procedure TForm1.BitBtn3Click(Sender: TObject); begin DataModule2.ADOQuery1.Active: =false; DataModule2.ADOQuery1.SQL.Clear; DataModule2.ADOQuery1.SQL.Add('Select Постачальник.[Код постачальника], Ліки.[Назва], Склад.[Кількість на складі], Склад.[Дата поставки]'); DataModule2.ADOQuery1.SQL.Add('FROM Постачальники INNER JOIN (Склад INNER JOIN Ліків ON Склад.[Ключ]=Ліки.[Ключ]) ON Постачальники.[Код постачальника]=Склад.[Код постачальника]'); DataModule2.ADOQuery1.SQL.Add('WHERE Постачальник.[Код постачальника] LIKE '''+Edit2.Text+''''); DataModule2.ADOQuery1.Active: =true; Form10.ShowModal; end; //Процедура перегляду списка назв ліків procedure TForm1.DBLookupComboBox1Click(Sender: TObject); begin DataModule2.ADOQuery3.Active: =false; DataModule2.ADOQuery3.SQL.Clear; DataModule2.ADOQuery3.SQL.Add('Select Ліки.[Ключ], Ліки.[Ціна]'); DataModule2.ADOQuery3.SQL.Add('FROM Ліки'); DataModule2.ADOQuery3.SQL.Add('WHERE Ліки.[Ключ] LIKE '''+DBEdit6.Text+''''); DataModule2.ADOQuery3.Open; DBEdit3.Text: =DataModule2.ADOQuery3.FieldValues['Ціна']; DataModule2.ADOQuery3.Active: =True; DataModule2.ADOTable6.Refresh;
end;
end.
unit Unit2; // Модуль ідключення бази даних до програми
interface
uses SysUtils, Classes, DB, ADODB;
type TDataModule2 = class(TDataModule) ADOConnection1: TADOConnection; ADOTable1: TADOTable; DataSource1: TDataSource; ADOTable2: TADOTable; DataSource2: TDataSource; ADOTable1DSDesigner: TAutoIncField; ADOTable1DSDesigner3: TWideStringField; ADOTable1DSDesigner5: TDateTimeField; ADOTable1DSDesigner6: TBCDField; ADOTable2DSDesigner: TAutoIncField; ADOTable2DSDesigner2: TDateTimeField; ADOTable2DSDesigner3: TWideStringField; ADOTable2DSDesigner4: TWideStringField; ADOTable3: TADOTable; ADOTable4: TADOTable; ADOTable5: TADOTable; DataSource3: TDataSource; DataSource4: TDataSource; DataSource5: TDataSource; ADOTable1DSDesigner2: TWideStringField; ADOTable2DSDesigner6: TIntegerField; ADOTable3DSDesigner: TWideStringField; ADOTable3DSDesigner2: TWideStringField; ADOTable3DSDesigner3: TWideStringField; ADOTable3DSDesigner4: TWideStringField; ADOTable3DSDesigner5: TWideStringField; ADOTable4DSDesigner: TAutoIncField; ADOTable4DSDesigner2: TWideStringField; ADOTable5DSDesigner: TAutoIncField; ADOTable5DSDesigner2: TWideStringField; ADOTable6: TADOTable; DataSource6: TDataSource; ADOTable6DSDesigner: TAutoIncField; ADOTable6DSDesigner2: TDateTimeField; ADOTable6DSDesigner3: TIntegerField; ADOTable6DSDesigner5: TWideStringField; ADOTable6DSDesigner6: TBCDField; ADOTable6Field: TIntegerField; ADOQuery1: TADOQuery; DataSource7: TDataSource; ADOTable2_: TWideStringField; ADOQuery2: TADOQuery; DataSource8: TDataSource; ADOQuery3: TADOQuery; DataSource9: TDataSource; ADOQuery4: TADOQuery; procedure ADOTable6CalcFields(DataSet: TDataSet); private { Private declarations } public { Public declarations } end;
var DataModule2: TDataModule2;
implementation
uses Unit9;
{$R *.dfm}
procedure TDataModule2.ADOTable6CalcFields(DataSet: TDataSet); begin DataModule2.ADOTable6Field.Value: =DataModule2.ADOTable6DSDesigner6.AsInteger*DataModule2.ADOTable6DSDesigner3.AsInteger; end;
end.
unit Unit3; //Форма добавлення редагування ліків
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, ComCtrls, Buttons, ExtCtrls;
type TForm3 = class(TForm) DBEdit1: TDBEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; DBLookupComboBox1: TDBLookupComboBox; DBEdit2: TDBEdit; BitBtn1: TBitBtn; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBEdit7: TDBEdit; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; DBLookupComboBox2: TDBLookupComboBox; Image1: TImage; Label10: TLabel; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form3: TForm3;
implementation
uses Unit2, Unit1;
{$R *.dfm} //Процедура збереженого введеного або зміненого препарата procedure TForm3.BitBtn1Click(Sender: TObject); begin if DataModule2.ADOTable1.Modified then DataModule2.ADOTable1.Post; if DataModule2.ADOTable2.Modified then DataModule2.ADOTable2.Post; Close; end;
end.
unit Unit4; //Форма Постачальник
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, Menus, StdCtrls;
type TForm4 = class(TForm) DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form4: TForm4;
implementation
uses Unit2, Unit5, Unit1, Unit3;
{$R *.dfm}
procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction); begin if DataModule2.ADOTable3.Modified then DataModule2.ADOTable3.Post; end; //Процедура добавлення нового препарата procedure TForm4.Button1Click(Sender: TObject); begin DataModule2.ADOTable3.Edit; DataModule2.ADOTable3.Insert; Form5.Show; end; //Процедура змінення існуючого препарата procedure TForm4.Button2Click(Sender: TObject); begin Form5.Show; end; //Процедура видалення препарата procedure TForm4.Button3Click(Sender: TObject); begin if Application.MessageBox(PChar('Ти дійсно хочеш видалити ' +DataModule2.ADOTable3DSDesigner.AsString), 'Увага!!! ', MB_OKCANCEL)=id_OK then DataModule2.ADOTable3.Delete; end; //Закритя форми procedure TForm4.Button4Click(Sender: TObject); begin Form4.Close; end;
end.
unit Unit5; //Модуль добавлення редагування постачальника interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, StdCtrls, Mask;
type TForm5 = class(TForm) Label1: TLabel; DBEdit1: TDBEdit; Label2: TLabel; DBEdit2: TDBEdit; Label3: TLabel; Label4: TLabel; DBEdit4: TDBEdit; Label5: TLabel; DBLookupComboBox1: TDBLookupComboBox; Button1: TButton; DBComboBox1: TDBComboBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form5: TForm5;
implementation
uses Unit2, Unit1, Unit4, Unit3;
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject); begin DataModule2.ADOTable3.Post; Form5.Close; end;
end.
unit Unit6; //Модуль довідника Місто interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Buttons;
type TForm6 = class(TForm) DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form6: TForm6;
implementation
uses Unit1, Unit2;
{$R *.dfm}
procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction); begin if DataModule2.ADOTable4.Modified then DataModule2.ADOTable4.Post; end;
procedure TForm6.Button1Click(Sender: TObject); begin Form6.Close; end;
procedure TForm6.Button2Click(Sender: TObject); begin DataModule2.ADOTable4.Edit; DataModule2.ADOTable4.Insert; end;
end.
unit Unit7; //Модуль довідника Тип ліків
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids;
type TForm7 = class(TForm) DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form7: TForm7;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm7.Button2Click(Sender: TObject); begin Form7.Close; end;
procedure TForm7.Button1Click(Sender: TObject); begin DataModule2.ADOTable5.Edit; DataModule2.ADOTable5.Insert; end;
end.
unit Unit9; // Модуль формування звіту по продажам
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Buttons, RpRave, RpDefine, RpCon, RpConDS, DB, ADODB, ComCtrls;
type TForm9 = class(TForm) DBGrid1: TDBGrid; BitBtn1: TBitBtn; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form9: TForm9;
implementation
uses Unit2, Unit1;
{$R *.dfm}
procedure TForm9.FormCreate(Sender: TObject); begin if DataModule2.ADOTable6.Modified then DataModule2.ADOTable6.Post; end;
end.
unit Unit10; //Модуль вивода результата пошуку в талблиці interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids;
type TForm10 = class(TForm) DBGrid1: TDBGrid; private { Private declarations } public { Public declarations } end;
var Form10: TForm10;
implementation
uses Unit2;
{$R *.dfm}
end.
|