Информационная система кафе

Разработка базы данных для предприятия быстрого обслуживания. Возможности языка высокого уровня Delphi по созданию и взаимодействию приложения с базой данных. Программное и аппаратное обеспечение программы. Таблицы для хранения информации о блюдах, меню.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 25.06.2017
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Курсовой проект

Тема: «Информационная система кафе»

Введение

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

Автоматизация части производственного процесса позволит разгрузить менеджеров, исключить ошибки. Позволит получить объективную информацию в плане наличия, цены, состава ингредиентов блюда. Позволит учесть объём и время принятия заказа. Вычислить итоговую сумму.

Для хранения данных о блюдах, заказах, меню и менеджерах целесообразно использовать базу данных. Система управления базами данных MySQL является идеальным решением для малых и средних приложений.

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

Сервер баз данных MySQL - очень быстрый, надежный и простой в эксплуатации сервер.

Для реализации приложения, с выше описанными возможностями, идеально подходит язык высокого уровня Delphi. Данная среда, располагает широким набором средств визуальной разработки приложений и средствами для работы с базами данных.

1. Описание алгоритма программы

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

1. компоненты TDataSetProvider, TClientDataSet,TDataSource для связи с набором данных;

2. пять компонентовTSQLQueryс заготовленными запросами к таблицам базы данных;

3. компонент TDBGrid для отображения данных;

4. компонент TDBNavigator для управления данными;

5. компонент TMainMenu для организации главного меню программы, при помощи которого пользователь получает доступ к таблицам и запросам.

1.1 Элементы формы

При запуске приложения форма имеет следующий вид:

Рисунок 1 - Главное окно программы

Из визуальных компонентов на ней представлены компонент TDBGrid для отображения данных хранящихся в таблицах или формируемых запросами, компонент TDBNavigator для навигации и управления записями,визуализированными компонентом TDBGrid и компонент TMainMenu содержащий пункты меню для выбора наборов данных и формирования запросов.

Выбор таблицы осуществляется при помощи пункта, главного меню программы «Данные»:

Рисунок 2 - Пункт "Данные", главного меню программы

При выборе пункта меню «Блюда», форма принимает следующий вид:

Рисунок 3 - Главное окно программы, после выбора набора данных "Блюда"

В данном случае, на форме отображаются данные, содержащиеся в таблице «Блюда», а именно название блюда, его вес и состав.

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

При выборе пункта меню «Меню», форма принимает следующий вид:

Рисунок 4 - Главное окно программы, после выбора набора данных "Меню"

В этом случаем на форме отобразить информация о меню, а именно название блюда и цена в рублях.

При добавлении новой записи меню или редактировании существующей записи, открывается окно для ввода данных записи:

Рисунок 5 - Окно ввода данных записи меню

При выборе пункта меню «Заказы», форма принимает следующий вид:

таблица база данные delphi

Рисунок 6 - Главное окно программы, после выбора набора данных "Заказы"

В этом случаем на форме отобразится информация о заказах, а именно название блюда, количество, время заказа и фамилия менеджера, оформившего заказ.

Для добавления или редактирования записи таблицы «Заказы» открывается специальное окно:

Рисунок 7 - Окно для добавления/редактирования записи таблицы "Заказы"

При выборе пункта меню «Менеджеры», форма принимает следующий вид:

Рисунок 8 - Главное окно программы, после выбора набора данных "Менеджеры"

В этом случаем на форме отобразить информация о менеджерах, а именно фамилия, имя, отчество и телефон.

Пункт меню «Действия» содержит подпункт «К оплате…», позволяющий сформировать вычисляемый запрос к базе данных. При выборе данного пункта, форма принимает вид:

Рисунок 9 - Главное окно программы, после выбора пункта меню "К оплате..."

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

procedure TForm1.N9Click(Sender: TObject);

begin

_state := ST_NONE;

Caption := 'Итого';

try

ClientDataSet1.Close;

q.Close;

q.SQL.Text :=

'select orders.id_orders as "Номер заказа", dish.title as "Блюдо", ' +

'orders.cnt as "Количество", menu.price as "Цена", ' +

'(orders.cnt * menu.price) as "Итого" ' +

'from orders ' +

'left join dish on (orders.id_dish = dish.id_dish) ' +

'left join menu on (dish.id_dish = menu.id_dish)' +

'order by orders.id_orders';

q.Open;

q.FieldByName('Цена').AsCurrency;

q.FieldByName('Итого').AsCurrency;

DataSetProvider1.DataSet := q;

ClientDataSet1.Open;

DBGrid1.Columns[1].Width := 200;

except on e:Exception do

MessageBox(0, 'Ошибка запроса "Итого"!', 'Внимание', MB_OK + MB_ICONWARNING);

end;

DBGrid1.Options := DBGrid1.Options - [dgEditing];

end;

При помощи SQLзапроса, данные выбираются из таблиц, связываются, формируется вычисляемое поле.

Расчёт производится по формуле: Количество * Цена за единицу

1.2 Входные и выходные данные

В данной программе мы можем производить манипуляциис данными, хранящихся в таблицах базы данных.О блюдах, меню, заказах, и менеджерах, рассчитать итоговые суммы по заказам.

Выходные данные извлекаются из таблиц базы данных и визуализируются при помощи компонента DBGrid на форме.

Выходные данные вводятся с клавиатуры,или выбираются из списков возможных значений, в ячейки, компонента DBGrid на форме.

1.3 Программное и аппаратное обеспечение программы

Минимальное

Требования для разработчика:

- процессор с тактовой частотой600 Мгц;

- наличие монитора VGA с разрешением экрана 800x600;

- объём оперативной памяти 128 Мб

- операционная система WindowsXP;

- 5 МБ свободного места на жестком диске.

2. Руководство пользователя

Для работы в данной программе, необходимо:

1. Запустить исполняемый файл Cafe.exe на компьютере двойным щелчком левой кнопки мыши. После чего на экране появится окно главной формы.

2. При помощи пункта, главного меню, «Данные» выбрать необходимую таблицу, данные содержащиеся в таблице отобразятся на форме.

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

4. При помощи пункта, главного меню, «Действия…» сформировать запрос с вычислением.

Закрыть программу при помощи пункта, главного меню, «Файл».

Заключение

В данной работе рассмотрен пример создания базы данных, для предприятия быстрого обслуживания, кафе или им подобных.

Изучены возможности языка высокого уровня по созданию и взаимодействию приложения с базой данных.

В разработанной базе данных предусмотрены таблицы для хранения информации о блюдах, меню, заказах и менеджерах.

В качестве системы управления базой данных использована СУБД MySQL, в качестве языка программирования Delphi2010.Механизмом взаимодействия приложения с базой выбрана технология dbExpress.

Список используемой литературы

1. Давыдов В.Г. Программирование и основы алгоритмизации: учеб. пособие. М.: Высш. шк., 2003. - 447 с.

2. Сухарев М. Delphi. Полное руководство. Включая версию 2010. - СПб.: Наука и техника, 2010. - 1035 с.

3. Фаронов В.В. Delphi. Программирование на языке высокого уровня: учеб. для вузов. - СПб.: Питер, 2009. - 640 с.

4. Истомин Е.П. Программирование на языках высокого уровня: учеб/ Е.П. Истомин, С.Ю. Неклюдов. - СПб: Изд-во Михайлова В.А., 2003. - 719 с.

5. Бобровский С.И. Delphi 7: Учебный курс. - СПб.: Питер, 2008. - 736 с.

6. Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ-Петербург, 2007. - 288 с.

7. Архангельский А.Я. Программирование в Delphi: учебник по классическим версиям Delphi. - М.: Бином, 2008. - 804 с.

8. Фленов М.Е. Библия Delphi. - СПб.: БХВ-Петербург, 2009. - 799с.

9. Голованов М.Е. Создание компонентов в среде Delphi/ М.Е. Голованов, Е.О. Веселов. - БХВ-Петербург, 2004. - 320 с.

10. Фаронов В.В. Паскаль и Windows. - М.:МВТУ-ФЕСТО Дидактик, 1995. - 639 с.

Приложение 1

unitUnit1;

interface

uses

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

Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, Menus, ExtCtrls, DBCtrls,

FMTBcd, DBClient, Provider, SqlExpr,

Mbd_MySql, uMenuRec, uOrderRec;

type

TForm1 = class(TForm)

Button1: TButton;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

Panel1: TPanel;

Panel2: TPanel;

dbNav: TDBNavigator;

N8: TMenuItem;

N9: TMenuItem;

qDish: TSQLQuery;

DataSetProvider1: TDataSetProvider;

ClientDataSet1: TClientDataSet;

qMenu: TSQLQuery;

qDishtitle: TStringField;

qDishweight: TFloatField;

qDishcompos: TStringField;

qDishid_dish: TIntegerField;

qMenuprice: TFloatField;

qMenutitle: TStringField;

qMng: TSQLQuery;

qMngid_manager: TIntegerField;

qMngf: TStringField;

qMngi: TStringField;

qMngo: TStringField;

qMngtel: TStringField;

qMenuid_menu: TIntegerField;

qMenuid_dish: TIntegerField;

qOrders: TSQLQuery;

qOrdersid_orders: TIntegerField;

qOrdersid_dish: TIntegerField;

qOrdersid_manager: TIntegerField;

qOrderscnt: TIntegerField;

qOrderscreated_at: TSQLTimeStampField;

qOrderstitle: TStringField;

qOrdersf: TStringField;

q: TSQLQuery;

procedure N2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure ClientDataSet1AfterPost(DataSet: TDataSet);

procedure dbNavBeforeAction(Sender: TObject; Button: TNavigateBtn);

private

_state: integer;

_db: TMbd_MySql;

Public

end;

const

ST_NONE = 0;

ST_DISH = 1;

ST_MENU = 2;

ST_MNG = 3;

ST_ORDER = 4;

var

Form1: TForm1;

Implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

_state := ST_NONE;

_db := TMbd_MySql.Create;

_db.PutDoDirDll := ExtractFileDir(Application.ExeName);

_db.ConnectionFile := 'connekt';

end;

procedure TForm1.FormActivate(Sender: TObject);

var

res: Boolean;

begin

res := false;

// подключаемсякБД

try

if _db.ConnectDb('045595112_admin', 'admin') then

begin

//SQLQuery1.SQLConnection := _db.MySqlConnection;

//SQLQuery2.SQLConnection := _db.MySqlConnection;

//qDish.Open;

//qMenu.Open;

q.SQLConnection := _db.MySqlConnection;

qDish.SQLConnection := _db.MySqlConnection;

qMenu.SQLConnection := _db.MySqlConnection;

qOrders.SQLConnection := _db.MySqlConnection;

qMng.SQLConnection := _db.MySqlConnection;

res := true;

end

else

begin

MessageBox(0, 'Не удалось подключиться к базе данных.' + #13#10 + 'Программа будет закрыта.',

'Внимание', MB_ICONEXCLAMATION + MB_OK);

Application.Terminate;

end;

except on e:Exception do

MessageBox(0, 'Ошибка подключения к базе данных.' + #13#10 + 'Программа будет закрыта.',

'Внимание', MB_ICONERROR + MB_OK);

end;

if (not res) then

Close;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet);

begin

if (ClientDataSet1.Active) then

ClientDataSet1.ApplyUpdates(0);

end;

procedure TForm1.dbNavBeforeAction(Sender: TObject; Button: TNavigateBtn);

var

sql: string;

begin

case _state of

ST_NONE: Abort;

ST_MENU:

begin

if (Button = nbInsert) then

begin

FormMenuRec.showNew(_db);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbEdit) then

begin

with DBGrid1.DataSource.DataSet do

FormMenuRec.showEdit(_db, FieldByName('id_menu').AsInteger,

FieldByName('id_dish').AsInteger, FieldByName('price').AsCurrency);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbDelete) then

begin

with DBGrid1.DataSource.DataSet do

sql := 'delete from menu where id_menu = ' +

FieldByName('id_menu').AsString;

if (_db.DdlExecute(sql) = 1) then

MessageBox(0, 'Записьуспешноудалена.', 'Удаление', MB_ICONINFORMATION + MB_OK)

else

MessageBox(0, 'Неудалосьудалитьзапись.', 'Ошибка', MB_ICONWARNING + MB_OK);

DataSource1.DataSet.Refresh;

Abort;

end;

end;

ST_ORDER:

begin

if (Button = nbInsert) then

begin

FormOrders.showNew(_db);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbEdit) then

begin

with DBGrid1.DataSource.DataSet do

FormOrders.showEdit(_db, FieldByName('id_orders').AsInteger, FieldByName('id_dish').AsInteger,

FieldByName('id_manager').AsInteger, FieldByName('cnt').AsInteger);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbDelete) then

begin

with DBGrid1.DataSource.DataSet do

sql := 'delete from orders where id_orders = ' + FieldByName('id_orders').AsString;

if (_db.DdlExecute(sql) = 1) then

MessageBox(0, 'Записьуспешноудалена.', 'Удаление', MB_ICONINFORMATION + MB_OK)

else

MessageBox(0, 'Неудалосьудалитьзапись.', 'Ошибка', MB_ICONWARNING + MB_OK);

DataSource1.DataSet.Refresh;

Abort;

end;

end;

end;

end;

{ ВывеститаблицуБлюд }

procedure TForm1.N4Click(Sender: TObject);

begin

Caption := 'Блюда';

_state := ST_DISH;

ClientDataSet1.Close;

DataSetProvider1.DataSet := qDish;

ClientDataSet1.Active := true;

DBGrid1.Columns[0].Visible := false;

DBGrid1.Columns[1].Title.Caption := 'Наименованиеблюда';

DBGrid1.Columns[1].Width := 200;

DBGrid1.Columns[2].Title.Caption := 'Вес (г)';

DBGrid1.Columns[2].Width := 60;

DBGrid1.Columns[3].Title.Caption := 'Состав';

DBGrid1.Columns[3].Width := 400;

DBGrid1.Options := DBGrid1.Options + [dgEditing];

end;

{ вывестименю }

procedure TForm1.N5Click(Sender: TObject);

var

f: TField;

begin

Caption := 'Меню';

_state := ST_MENU;

ClientDataSet1.Close;

DataSetProvider1.DataSet := qMenu;

ClientDataSet1.Open;

DBGrid1.Columns[0].Visible := false;

DBGrid1.Columns[1].Visible := false;

DBGrid1.Columns[2].Title.Caption := 'Названиеблюда';

DBGrid1.Columns[2].Width := 200;

DBGrid1.Columns[3].Title.Caption := 'Цена (р)';

DBGrid1.Columns[3].Width := 60;

DBGrid1.Columns[3].Field.SetFieldType(ftCurrency);

DBGrid1.Options := DBGrid1.Options - [dgEditing];

end;// заказы

procedure TForm1.N6Click(Sender: TObject);

begin

Caption := 'Заказы';

_state := ST_ORDER;

ClientDataSet1.Close;

DataSetProvider1.DataSet := qOrders;

ClientDataSet1.Open;

DBGrid1.Columns[0].Visible := false;

DBGrid1.Columns[1].Visible := false;

DBGrid1.Columns[2].Visible := false;

DBGrid1.Columns[3].Title.Caption := 'Названиеблюда';

DBGrid1.Columns[3].Width := 200;

DBGrid1.Columns[4].Title.Caption := 'Кол-во';

DBGrid1.Columns[4].Width := 50;

DBGrid1.Columns[5].Title.Caption := 'Датасоздания';

DBGrid1.Columns[5].Width := 120;

DBGrid1.Columns[5].Field.SetFieldType(ftDateTime);

DBGrid1.Columns[6].Title.Caption := 'Менеджер';

DBGrid1.Columns[6].Width := 100;

DBGrid1.Options := DBGrid1.Options - [dgEditing];

end;// менеджеры

procedure TForm1.N7Click(Sender: TObject);

begin

Caption := 'Менеджеры';

_state := ST_MNG;

ClientDataSet1.Close;

DataSetProvider1.DataSet := qMng;

ClientDataSet1.Open;

DBGrid1.Refresh;

DBGrid1.Columns[0].Visible := false;

DBGrid1.Columns[1].Title.Caption := 'Фамилия';

DBGrid1.Columns[1].Width := 200;

DBGrid1.Columns[2].Title.Caption := 'Имя';

DBGrid1.Columns[2].Width := 200;

DBGrid1.Columns[3].Title.Caption := 'Отчество';

DBGrid1.Columns[3].Width := 200;

DBGrid1.Columns[4].Title.Caption := 'Телефон';

DBGrid1.Columns[4].Width := 200;

DBGrid1.Options := DBGrid1.Options + [dgEditing];

end;

procedure TForm1.N9Click(Sender: TObject);

begin

_state := ST_NONE;

Caption := 'Итого';

try

ClientDataSet1.Close;

q.Close;

q.SQL.Text :=

'select orders.id_orders as "Номерзаказа", dish.title as "Блюдо", ' +

'orders.cnt as "Количество", menu.price as "Цена", ' +

'(orders.cnt * menu.price) as "Итого" ' +

'from orders ' +

'left join dish on (orders.id_dish = dish.id_dish) ' +

'left join menu on (dish.id_dish = menu.id_dish)' +

'order by orders.id_orders';

q.Open;

q.FieldByName('Цена').AsCurrency;

q.FieldByName('Итого').AsCurrency;

DataSetProvider1.DataSet := q;

ClientDataSet1.Open;

DBGrid1.Columns[1].Width := 200;

except on e:Exception do

MessageBox(0, 'Ошибказапроса "Итого"!', 'Внимание', MB_OK + MB_ICONWARNING);

end;

DBGrid1.Options := DBGrid1.Options - [dgEditing];

end;

end.

Модуль uMenuRec:

unit uMenuRec;

interface

uses

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

StdCtrls, ExtCtrls,

Mbd_MySql;

Type

TDishRec = class

id_dish: integer;

title: string;

end;

TFormMenuRec = class(TForm)

cbDish: TComboBox;

Panel1: TPanel;

edPrice: TEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

_mode: integer; // 1 - new, 2 - edit

_db: TMbd_MySql;

_id_menu: integer;

public

procedure showNew(aDB: TMbd_MySql);

procedure showEdit(aDB: TMbd_MySql; id_menu: integer; id_dish: integer; price: Currency);

end;

var

FormMenuRec: TFormMenuRec;

Implementation

{$R *.dfm}

const

sql_req: string = 'select * from dish';// отмена

procedure TFormMenuRec.Button1Click(Sender: TObject);

begin

Close;

end;

// ok

procedure TFormMenuRec.Button2Click(Sender: TObject);

var

req: string;

rec: TDishRec;

begin

// проверка корректности введёных значений

if (cbDish.ItemIndex < 0) then

begin

MessageBox(0, 'Необходимо выбрать название блюда из списка.',

'Внимание', MB_ICONWARNING + MB_OK);

cbDish.SetFocus;

Exit;

end;

if (Length(edPrice.Text) <= 0) then

begin

MessageBox(0, 'Цена не может быть пустой.', 'Внимание', MB_ICONWARNING + MB_OK);

edPrice.SetFocus;

Exit;

end;

case _mode of

1: // new

begin

rec := cbDish.Items.Objects[cbDish.ItemIndex] as TDishRec;

req := 'insert into menu (id_dish, price) values(' + IntToStr(rec.id_dish) + ', ' + edPrice.Text + ')';

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, 'Запись успешно добавлена.', 'Добавление', MB_ICONINFORMATION + MB_OK);

Close;

end

else

begin

MessageBox(0, 'Не удалось добавить запись.', 'Внимание', MB_ICONWARNING + MB_OK);

end;

end;

2: // edit

begin

rec := cbDish.Items.Objects[cbDish.ItemIndex] as TDishRec;

req := 'update menu set id_dish = ' + IntToStr(rec.id_dish) + ', price = ' + edPrice.Text + ' where id_menu = ' + IntToStr(_id_menu);

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, 'Запись успешно изменена.', 'Изменение', MB_ICONINFORMATION + MB_OK);

Close;

end

else

begin

MessageBox(0, 'Не удалось изменить запись.', 'Внимание', MB_ICONWARNING + MB_OK);

end;

end;

end;

end;

procedure TFormMenuRec.showNew(aDB: TMbd_MySql);

var

rec: TDishRec;

begin

Caption := 'Добавить запись меню';

_mode := 1;

_db := aDB;

cbDish.Items.Clear;

cbDish.ItemIndex := -1;

edPrice.Text := '';

// SELECT запрос серверу с получением результата

aDB.M_Open(sql_req); // Делаем запрос и получаем набор данных

whileaDB.M_NoEnddo // делаем пока не конец набора полей результата

begin

rec := TDishRec.Create;

rec.id_dish := aDB.M_Value('id_dish');

rec.title := aDB.M_Value('title');

cbDish.Items.AddObject(rec.title, rec);

aDB.M_Next; // переходим на следующие поле

end;

aDB.M_Close; // после получения данных уничтожаем полученный набор данных

ShowModal;

end;

procedure TFormMenuRec.showEdit(aDB: TMbd_MySql; id_menu: integer; id_dish: integer; price: Currency);

var

rec: TDishRec;

begin

Caption := 'Изменить запись меню';

_mode := 2;

_db := aDB;

_id_menu := id_menu;

cbDish.Items.Clear;

// SELECT зарос серверу с получением результата

aDB.M_Open(sql_req); // Делаем запрос и получаем набор данных

whileaDB.M_NoEnddo // делаем пока не конец набора полей результата

begin

rec := TDishRec.Create;

rec.id_dish := aDB.M_Value('id_dish');

rec.title := aDB.M_Value('title');

cbDish.Items.AddObject(rec.title, rec);

if (rec.id_dish = id_dish) then

cbDish.ItemIndex := cbDish.Items.Count - 1;

aDB.M_Next; // переходим на следующие поле

end;

aDB.M_Close; // после получения данных уничтожаем полученный набор данных

edPrice.Text := CurrToStr(price);

ShowModal;

end;

end.

Модуль uOrderRec:

unit uOrderRec;

interface

uses

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

StdCtrls, ExtCtrls,

Mbd_MySql;

type

TDishRec = class

id_dish: integer;

title: string;

end;

TMngRec = class

id_mng: integer;

fam: string;

end;

TFormOrders = class(TForm)

Label1: TLabel;

cbDish: TComboBox;

Label2: TLabel;

edCnt: TEdit;

Panel1: TPanel;

Button1: TButton;

Button2: TButton;

cbMng: TComboBox;

Label3: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

_mode: integer; // 1 - new, 2 - edit

_db: TMbd_MySql;

_id_orders: integer;

procedure fillMngs();

procedure fillDishes();

public

procedure showNew(aDB: TMbd_MySql);

procedure showEdit(aDB: TMbd_MySql; id_orders, id_dish, id_mng: integer; cnt: integer);

end;

var

FormOrders: TFormOrders;

Implementation

{$R *.dfm}

procedure TFormOrders.fillMngs();

var

rec: TMngRec;

begin

cbMng.Items.Clear;

cbMng.ItemIndex := -1;

// заполняем менеджеров

_db.M_Open('select * from manager order by f'); // Делаем запрос и получаем набор данных

while _db.M_NoEnddo // делаем пока не конец набора полей результата

begin

rec := TMngRec.Create;

rec.id_mng := _db.M_Value('id_manager');

rec.fam := _db.M_Value('f');

cbMng.Items.AddObject(rec.fam, rec);

_db.M_Next; // переходим на следующие поле

end;

_db.M_Close; // после получения данных уничтожаем полученный набор данных

end;

procedure TFormOrders.Button1Click(Sender: TObject);

begin

Close;

end;

procedure TFormOrders.Button2Click(Sender: TObject);

var

req: string;

drec: TDishRec;

mrec: TMngRec;

begin

// проверка корректности введёных значений

if (cbDish.ItemIndex< 0) then

begin

MessageBox(0, 'Необходимо выбрать название блюда из списка.', 'Внимание', MB_ICONWARNING + MB_OK);

cbDish.SetFocus;

Exit;

end;

if (cbMng.ItemIndex < 0) then

begin

MessageBox(0, 'Необходимо выбрать менеджера из списка.', 'Внимание', MB_ICONWARNING + MB_OK);

cbMng.SetFocus;

Exit;

end;

if (Length(edCnt.Text) <= 0) then

begin

MessageBox(0, 'Кол-во не может быть пустым.', 'Внимание', MB_ICONWARNING + MB_OK);

edCnt.SetFocus;

Exit;

end;

drec := cbDish.Items.Objects[cbDish.ItemIndex] as TDishRec;

mrec := cbMng.Items.Objects[cbMng.ItemIndex] as TMngRec;

case _mode of

1: // new

begin

req := 'insert into orders (id_dish, id_manager, cnt) values(' + IntToStr(drec.id_dish) + ', ' + IntToStr(mrec.id_mng) + ', ' + edCnt.Text + ')';

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, 'Запись успешно добавлена.', 'Добавление', MB_ICONINFORMATION + MB_OK);

Close;

end

else

begin

MessageBox(0, 'Не удалось добавить запись.', 'Внимание', MB_ICONWARNING + MB_OK);

end;

end;

2: // edit

begin

req := 'update orders set id_dish = ' + IntToStr(drec.id_dish) + ', id_manager = ' + IntToStr(mrec.id_mng) + ', cnt = ' + edCnt.Text + ' where id_orders = ' + IntToStr(_id_orders);

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, 'Запись успешно изменена.', 'Изменение', MB_ICONINFORMATION + MB_OK);

Close;

end

else

MessageBox(0, 'Не удалось изменить запись.', 'Внимание', MB_ICONWARNING + MB_OK);

end;

end;

end;

procedure TFormOrders.fillDishes();

var

rec: TDishRec;

begin

cbDish.Items.Clear;

cbDish.ItemIndex := -1;

// заполняем менеджеров

_db.M_Open('select * from menu left join dish on menu.id_dish = dish.id_dish order by title'); // Делаем запрос и получаем набор данных

while _db.M_NoEnddo // делаем пока не конец набора полей результата

begin

rec := TDishRec.Create;

rec.id_dish := _db.M_Value('id_dish');

rec.title := _db.M_Value('title');

cbDish.Items.AddObject(rec.title, rec);

_db.M_Next; // переходим на следующие поле

end;

_db.M_Close; // после получения данных уничтожаем полученный набор данных

end;

procedure TFormOrders.showNew(aDB: TMbd_MySql);

begin

Caption := 'Создаие заказа';

_mode := 1;

_db := aDB;

edCnt.Text := '1';

fillMngs;

fillDishes;

ShowModal;

end;

procedure TFormOrders.showEdit(aDB: TMbd_MySql; id_orders, id_dish, id_mng: integer; cnt: integer);

var

rec: TDishRec;

i: Integer;

begin

Caption := 'Изменение заказа';

_mode := 2;

_db := aDB;

_id_orders := id_orders;

fillMngs;

fillDishes;

for i := 0 to cbDish.Items.Count - 1 do

if (TDishRec(cbDish.Items.Objects[i]).id_dish = id_dish) then

cbDish.ItemIndex := i;

for i := 0 to cbMng.Items.Count - 1 do

if (TMngRec(cbMng.Items.Objects[i]).id_mng = id_mng) then

cbMng.ItemIndex := i;

edCnt.Text := intToStr(cnt);

ShowModal;

end;

end.

Размещено на Allbest.ur

...

Подобные документы

  • Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.

    курсовая работа [1010,9 K], добавлен 08.10.2015

  • Проведение системного анализа предметной области и разработка проекта по созданию базы данных для хранения информации о перевозках пассажиров и грузов. Обоснование выбора системы управления базой данных и разработка прикладного программного обеспечения.

    курсовая работа [1,1 M], добавлен 18.07.2014

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

    курсовая работа [2,3 M], добавлен 31.01.2016

  • Анализ предметной области. Проектирование и разработка базы данных и интерфейса в виде набора Web-страниц для отображения, создания, удаления и редактирования записей базы данных. Аппаратное и программное обеспечение системы. Алгоритм работы программы.

    курсовая работа [3,0 M], добавлен 12.01.2016

  • Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.

    курсовая работа [4,3 M], добавлен 30.06.2015

  • Разработка базы данных и прикладного программного приложения с целью обеспечения хранения, накопления и предоставления информации об учащихся МБОУ "Средняя общеобразовательная школа №18" г. Грозный. Методы обеспечения информационной безопасности.

    дипломная работа [2,9 M], добавлен 25.06.2015

  • Программа для работы с однотабличной ненормализованной базой данных. Цель программы: обеспечение инструментарием для работы с базой данных различных школьных соревнований. Работа с базой данных на физическом и логическом уровнях. Элементы языка.

    курсовая работа [114,3 K], добавлен 02.03.2009

  • Разработка программных продуктов на языке программирования Borland Delphi. Применяемые таблицы и связи между ними. Пользовательский интерфейс работы с базой данных. Алгоритм работы программы "Футбольные команды и игроки". Защита от ввода неверных данных.

    курсовая работа [788,1 K], добавлен 22.06.2011

  • Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.

    отчет по практике [1,2 M], добавлен 08.10.2014

  • Проектирование системы управления базой данных "Почтовые отделения" для создания единой информационной системы: создание таблиц для хранения данных, ввод данных, разработка элементов базы, предназначенных для просмотра, редактирования и вывода информации.

    курсовая работа [1,4 M], добавлен 31.03.2010

  • Основные подходы к организации баз данных, компоненты языка Delphi, используемые для их построения. Разработка программного обеспечения - базы данных "Школа", предназначенной для хранения информации об учащихся, их успеваемости по различным дисциплинам.

    курсовая работа [739,8 K], добавлен 14.07.2012

  • Автоматизированные базы данных в учебном процессе. Создание базы данных для МОУ СОШ № 12 с целью помощи в обеспечении централизованного управления, хранения информации об учениках. Требования к программе, условия эксплуатации. Программный код базы данных.

    дипломная работа [2,0 M], добавлен 25.03.2014

  • Обоснование необходимости систем управления базами данных на предприятиях. Особенности разработки программного обеспечения по управлению базой данных, обеспечивающего просмотр, редактирование, вставку записей базы данных, формирование запросов и отчетов.

    курсовая работа [1,5 M], добавлен 23.01.2010

  • Понятие баз данных и принципы проектирования информационных систем. Разработка программы для отслеживания финансовой стороны работы компании в среде Delphi 7. Создание таблиц и схемы данных. Разработка клиентского приложения и процедуры добавления данных.

    курсовая работа [1,4 M], добавлен 25.04.2012

  • Характеристика и технические возможности СУБД MySQL. Трехуровневая структура MySQL. Требования к аппаратному обеспечению. Создание таблицы, триггеров, генераторов, хранимых процедур в MySQL. Разработка приложения для базы данных с помощью Borland Delphi.

    курсовая работа [940,7 K], добавлен 20.12.2011

  • Общие сведения о проектировании базы данных и разборка приложений для взаимодействия с БД. Разработка проекта клиентского приложения "Электронный классный журнал" с помощью языка программирования Delphi 7. Просмотр и изменение информации базы данных.

    курсовая работа [403,6 K], добавлен 24.06.2011

  • Логическая и физическая структура базы данных. Аппаратное и программное обеспечение системы. Создание представлений, хранимых процедур, пользовательских функций, триггеров. Описание основной структуры ASP.NET документов. Пользовательский интерфейс.

    курсовая работа [4,2 M], добавлен 21.05.2013

  • Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.

    курсовая работа [399,1 K], добавлен 26.08.2019

  • Разработка web-приложения для оперирования данными с помощью базы данных и web-браузера в качестве клиента пользователя. Основные преимущества языка программирования Java. Осуществление редактирования, добавления информации и поиска по архивам данных.

    дипломная работа [2,1 M], добавлен 30.09.2016

  • Сведения о языке Delphi. Основы разработки баз данных. Разработка конвертера таблицы Excel, интерфейса главной формы, модуля отображения, системы поиска информации, средств редактирования. Системные требования программы. Инструкция по эксплуатации.

    курсовая работа [2,6 M], добавлен 29.12.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.