Смекни!
smekni.com

Автоматизация заказа блюд в ресторане (стр. 3 из 4)

Кнопки масштабирования:

- Страница полностью показывается в окне;

- Страница в масштабе 1:1;

- Ширина страницы соответствует ширине окна.

Кнопки перемещения по страницам отчета:

- Показывает первую страницу отчета;

- Показывает последнюю страницу отчета;

- Показывает предыдущую страницу отчета;

- Показывает следующую страницу отчета.

Кнопки работы с принтером:

- Вызывает стандартное окно настройки принтера;

- Печатает отчет.

Дополнительные кнопки:

- Сохраняет отчет в файле;

- Загружает отчет из файла.

2.3.2 Проектирование форм для работы с базой данных

Проектировани форм программы происходило в среде визуального программирования Delphi. Некоторые результирующие формы показаны на рисунках.

Рисунок 2.9 – Главная форма

Рисунок 2.10 – Форма ввода и корректировки справочников

ЗАКЛЮЧЕНИЕ

В разработке программного продукта «Заказы» полностью выполнена поставленная задача. Программа имеет удобный для пользователя интерфейс, который позволяет легко работать с программой даже без специального обучения.

На будущее планируется дополнение и расширение данного программного продукта, перевод его на другие платформы. Программа легко модифицируется для решения более широких задач.

Программа «Заказы» является отдельно разработанной частью системы автоматизации ресторана быстрого питания. Программа будет дополнена в отделе вычислительных технологий, в результате чего программный продукт облегчит работу всего ресторана, а не только отдела заказов.

СПИСОК ИСПОЛЬЗУЕМОЙЛИТЕРАТУРЫ

1. Вендров А.М. Case - технологии. Современные методы и средства проектирования информационных систем. - Internet, http/www.citforum.ru/case....-158 с., ил.

2. Марка Д., МакГоуэн К. Методология структурного анализа и проектирования: Пер. с англ. - М.: 1999.- 240 с., ил.

3. Шумаков П.В. Delphi 5 и разработка приложений баз данных. - М.: “Нолидж”, 2001. - 704 с., ил.

4. Грабер М. Введение в SQL: Пер. с англ. - М.: “ЛОРИ”, 1996.- 341с., ил.

5. Дейт К. Дж. Введение в системы баз данных: Пер. с англ. - 6-е изд. - К.: Диалектика, 1998. - 784с., ил.

6. Калянов Г.Н. Case-средства. Структурный и системный анализ (автоматизация и применение). - М.: “ЛОРИ”, 1999. - 249 с., ил.

7. Хендерсон Кен Delphi 5 и системы клиент/сервер. Руководство разработчика. : Пер. с англ. - К.: Диалектика, 2000. - 736 с., ил.

Приложение А

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

unitAbout;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox = class(TForm)

Panel1: TPanel;

ProductName: TLabel;

Version: TLabel;

Comments: TLabel;

OKButton: TButton;

Label1: TLabel;

procedure OKButtonClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox: TAboutBox;

implementation

uses Main, InformUnit;

{$R *.dfm}

procedure TAboutBox.OKButtonClick(Sender: TObject);

begin

close;

MainForm.Show;

InformForm.Show;

end;

end.

unit InformUnit;

interface

uses

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

Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Buttons;

type

TInformForm = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

GroupBox1: TGroupBox;

DBGrid2: TDBGrid;

GroupBox2: TGroupBox;

DBNavigator2: TDBNavigator;

DBGrid3: TDBGrid;

DBNavigator3: TDBNavigator;

GroupBox3: TGroupBox;

DBGrid4: TDBGrid;

DBNavigator4: TDBNavigator;

GroupBox4: TGroupBox;

GroupBox5: TGroupBox;

DBGrid5: TDBGrid;

DBNavigator5: TDBNavigator;

BitBtn1: TBitBtn;

Panel1: TPanel;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

InformForm: TInformForm;

implementation

uses Main;

{$R *.dfm}

procedure TInformForm.BitBtn1Click(Sender: TObject);

begin

informform.Hide;

end;

end.

unit Main;

interface

uses

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

Dialogs, ComCtrls, StdCtrls, ExtCtrls, ToolWin, ActnMan,

ActnCtrls, Menus, Grids, DBGrids, DBCtrls, QuickRpt, QRCtrls, DBTables,

DB, AppEvnts, Buttons, jpeg;

type

TMainForm = class(TForm)

TreeView1: TTreeView;

WorkArea: TPanel;

Panel2: TPanel;

GroupBox1: TGroupBox;

Memo1: TMemo;

DS_spisokB: TDataSource;

T_typeB: TTable;

T_products: TTable;

T_EI: TTable;

T_ProdinRec: TTable;

T_spisokB: TTable;

DS_EI: TDataSource;

Session1: TSession;

DS_ProdinRec: TDataSource;

DS_products: TDataSource;

DS_TypeB: TDataSource;

T_productsIdP: TIntegerField;

T_productsNameProduct: TStringField;

T_productsKol_vo: TFloatField;

T_productsCenaP: TFloatField;

T_productsIdEI: TIntegerField;

T_productsRelatEI: TStringField;

T_spisokBIDB: TIntegerField;

T_spisokBNameB: TStringField;

T_spisokBCenaB: TFloatField;

T_spisokBIdTB: TIntegerField;

T_spisokBFlagCur: TBooleanField;

T_spisokBRelatTypeB: TStringField;

T_ProdinRecIDB: TIntegerField;

T_ProdinRecIDP: TIntegerField;

T_ProdinRecKol_voPvB: TFloatField;

T_ProdinRecRelatEIonP: TStringField;

T_ProdinRecRelatP: TStringField;

T_spisokBStoim: TFloatField;

T_ProdinRecRelatPCena: TFloatField;

DS_Zakaz: TDataSource;

T_zakaz: TTable;

T_zakazIDB: TIntegerField;

T_zakazKol_voZ: TIntegerField;

T_zakazRelatNB: TStringField;

T_EIIdEI: TIntegerField;

T_EINameEI: TStringField;

T_typeBIdTB: TIntegerField;

T_typeBNameTB: TStringField;

BitBtn1: TBitBtn;

Image1: TImage;

BitBtn2: TBitBtn;

FontDialog1: TFontDialog;

T_zakazLU_CEnaB: TVariantField;

T_zakazCalc_stoim: TVariantField;

procedure T_spisokBFlagCurGetText(Sender: TField; var Text: String;

DisplayText: Boolean);

procedure T_spisokBFlagCurSetText(Sender: TField; const Text: String);

procedure T_spisokBCalcFields(DataSet: TDataSet);

procedure T_zakazRelatNBSetText(Sender: TField; const Text: String);

procedure T_zakazKol_voZSetText(Sender: TField; const Text: String);

procedure T_zakazAfterInsert(DataSet: TDataSet);

procedure T_zakazAfterPost(DataSet: TDataSet);

procedure T_spisokBAfterInsert(DataSet: TDataSet);

procedure T_spisokBBeforeInsert(DataSet: TDataSet);

procedure T_spisokBAfterPost(DataSet: TDataSet);

procedure T_productsBeforeInsert(DataSet: TDataSet);

procedure T_productsAfterInsert(DataSet: TDataSet);

procedure T_productsAfterPost(DataSet: TDataSet);

procedure T_EIBeforeInsert(DataSet: TDataSet);

procedure T_EIAfterInsert(DataSet: TDataSet);

procedure T_EIAfterPost(DataSet: TDataSet);

procedure T_typeBBeforeInsert(DataSet: TDataSet);

procedure T_typeBAfterInsert(DataSet: TDataSet);

procedure BitBtn2Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure TreeView1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure T_zakazCalcFields(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

flager:byte;

mkeyvalue:integer;

implementation

uses InformUnit, RepMenu, ZakazUnit, RepZakaz, About;

{$R *.dfm}

procedure TMainForm.T_spisokBFlagCurGetText(Sender: TField; var Text: String;

DisplayText: Boolean);

begin

If T_spisokBFlagCur.Value then text:='+'

else text:='-';

end;

procedure TMainForm.T_spisokBFlagCurSetText(Sender: TField;

const Text: String);

begin

T_spisokBFlagCur.Value:=false;

if text='+' then T_spisokBFlagCur.Value:=True;

if text='-' then T_spisokBFlagCur.Value:=False;

end;

{Подсчетстоимостиблюда}

procedure TMainForm.T_spisokBCalcFields(DataSet: TDataSet);

var s1:real;

begin

s1:=0;

While not (T_ProdinRec.Eof) do begin

S1:=S1+T_ProdinRecRelatPCena.value*T_ProdinRecKol_voPvB.Value;

T_ProdinRec.Next;

end;

T_spisokBStoim.value:=T_spisokBCenaB.value+S1;

end;

procedure TMainForm.T_zakazRelatNBSetText(Sender: TField; const Text: String);

begin

With T_spisokB do

if Locate('NameB',Text,[]) then begin

T_zakazIDB.value:=T_spisokBIDB.Value;

T_zakazIDB.RefreshLookupList;

end;

end;

{**********************************************************8}

procedure TMainForm.T_zakazKol_voZSetText(Sender: TField; const Text: String);

var number:integer;prodZak:real;flag:boolean;

begin

flag:=true;

number:=strtoint(Text);

ZakazForm.memo1.Clear;

If not(strtoInt(Text) in [1..50]) then ZakazForm.memo1.Lines.Text:='Количествоблюдпревзошлоразумныепределы!'

else begin

T_spisokB.locate('IDB',T_zakazIDB.value,[]); {Нашлиблюдо}

T_ProdinRec.First;

{Оценивающийцикл}

{} While not(T_ProdinRec.Eof) and flag do begin {Ищемзаписьпродукта}

if T_products.Locate('IDP',T_ProdinRecIDP.Value,[]) then

{Сравниваемзаказанноеиналичествующее}

{} begin

ProdZak:=T_ProdinRecKol_voPvB.Value*number;

if ProdZak<T_productsKol_vo.Value then flag:=true

else flag:=false;

end;

T_ProdinRec.Next;

end;

{Проверка}

T_ProdinRec.First;

if flag then

{} begin

{Редактирующийцикл}

{} While not(T_ProdinRec.Eof) do begin {Ищемзаписьпродукта}

if T_products.Locate('IDP',T_ProdinRecIDP.Value,[]) then

{} begin

ProdZak:=T_ProdinRecKol_voPvB.Value*(number-T_zakazKol_voZ.Value);

T_products.Edit;

T_productsKol_vo.Value:=T_productsKol_vo.Value-ProdZak;

T_products.Post;

end;

T_ProdinRec.Next;

end;

T_zakazKol_voZ.Value:=number

end

else begin

ZakazForm.memo1.Lines.Text:='Заказпревысилколичествопродуктов! Пожалуйста, повторитеввод';

T_zakazKol_voZ.Value:=1;

ZakazForm.DBGrid1.Refresh;

end;

end;

end;

procedure TMainForm.T_zakazAfterInsert(DataSet: TDataSet);

begin

T_zakazKol_voZ.Value:=1;

end;

procedure TMainForm.T_zakazAfterPost(DataSet: TDataSet);

var money,sum:real;MMark:TBookMark;

begin

try

money:=strtofloat(ZakazForm.MaskEdit1.Text);

except

ZakazForm.maskEdit1.Text:='';

ZakazForm.maskEdit1.ReadOnly:=True;

ZakazForm.maskEdit1.Color:=clBtnFace;

end;

sum:=0;

if money<>0 then begin

MMark:=T_zakaz.GetBookmark;

T_zakaz.First;

while not(T_zakaz.Eof) do begin

T_spisokB.locate('IDB',T_zakazIDB.value,[]); {Нашлиблюдо}

sum:=T_spisokBStoim.Value*T_zakazKol_voZ.value+sum;

T_zakaz.Next;

end;

if T_zakaz.BookmarkValid(mmark) then T_zakaz.GotoBookmark(mmark);

if T_zakaz.BookmarkValid(mmark) then T_zakaz.FreeBookmark(mmark);

if sum>money then ZakazForm.memo1.Lines.Text:='Заказпревысилденежныйпредел!'

else ZakazForm.memo1.Clear;

end;

end;

{****************************SpisokB**********************888}

procedure TMainForm.T_spisokBAfterInsert(DataSet: TDataSet);

begin

T_spisokB.edit;

T_spisokBIDB.Value:=MKeyvalue;

T_spisokBFlagCur.Value:=false;

T_spisokBIdTB.Value:=1;

T_spisokB.Post;

InformForm.DBGrid1.Refresh;

end;

procedure TMainForm.T_spisokBBeforeInsert(DataSet: TDataSet);

begin

MKeyvalue:=0;

repeat

MKeyvalue:=MKeyvalue+1;

until varType(T_spisokB.lookup('IDB',MKeyvalue,'IDB'))=varnull;

end;

procedure TMainForm.T_spisokBAfterPost(DataSet: TDataSet);

begin

T_spisokB.Refresh;

end;

{****************************Products********************888}

procedure TMainForm.T_productsBeforeInsert(DataSet: TDataSet);

begin

MKeyvalue:=0;

repeat

MKeyvalue:=MKeyvalue+1;

until varType(T_products.lookup('IDP',MKeyvalue,'IDP'))=varnull;

end;

procedure TMainForm.T_productsAfterInsert(DataSet: TDataSet);

begin

T_products.edit;

T_productsIDP.Value:=MKeyvalue;

T_productsIdEI.Value:=1;

T_products.Post;

InformForm.DBGrid3.Refresh;

end;

procedure TMainForm.T_productsAfterPost(DataSet: TDataSet);

begin

T_products.Refresh;

end;

{*********************TypeB****************************}

procedure TMainForm.T_EIBeforeInsert(DataSet: TDataSet);

begin

MKeyvalue:=0;

repeat

MKeyvalue:=MKeyvalue+1;

until varType(T_EI.lookup('IdEI',MKeyvalue,'IdEI'))=varnull;

end;

procedure TMainForm.T_EIAfterInsert(DataSet: TDataSet);

begin

T_EI.edit;

T_EIIdEI.Value:=MKeyvalue;

T_EINameEI.Value:=' ';

T_EI.Post;

InformForm.DBGrid5.Refresh;

end;

procedure TMainForm.T_EIAfterPost(DataSet: TDataSet);

begin

T_EI.Refresh;

end;

{*********************TypeB****************************}

procedure TMainForm.T_typeBBeforeInsert(DataSet: TDataSet);