Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Автоматизация заказа блюд в ресторане

Тип Реферат
Предмет Информатика и программирование
Просмотров
1222
Размер файла
695 б
Поделиться

Ознакомительный фрагмент работы:

Автоматизация заказа блюд в ресторане

Волжский университет имени В.Н. Татищева

Факультет “Информатика и телекоммуникации”

Кафедра “Информатика и системы управления”

КУРСОВАЯ РАБОТА

по дисциплине: “Базы данных и знаний”

Тема: “Автоматизация заказа блюд в ресторане ”

Выполнил: студент гр. ИТЗ-312

Бондарев А.А.

Преподаватель: Горбачевская Е.В

Тольятти

2004

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1 ОБЩИЙ РАЗДЕЛ

1.1 Описание предметной области рассматриваемого объекта

1.2 Постановка задачи

1.2.1 Организационно-экономическая сущность задачи

1.2.2 Описание выходной информации

1.2.3 Описание входной информации

1.3 Разработка информационного обеспечения задачи

1.3.1 Структурный анализ с помощью диаграмм SADT

1.3.2 Определение информационных объектов и связей между ними

1.3.3 Структурный анализ с помощью диаграмм “сущность - связь”

2 СПЕЦИАЛЬНЫЙ РАЗДЕЛ.

2.1 Конфигурация системы с помощью утилиты BDEADMINISTRATOR или средств связи приложения и БД DELPHI

2.2 Создание таблиц базы данных с помощью утилиты DATABASE DESKTOP или ACCESS

2.3 Организация пользовательского интерфейса

2.3.1 Создание меню, реализующего основные функции информационной системы

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

ЗАКЛЮЧЕНИЕ

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

ПриложениеАЛистингпрограммы


ВВЕДЕНИЕ

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

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

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

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

1 ОБЩИЙ РАЗДЕЛ

1.1 Описание предметной области рассматриваемого объекта

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

К функциям, реализуемым в данной задаче, относятся:

- учет и регистрация количества продуктов на складе;

- выборка блюд по наименованию и цене.

- регистрация новых рецептов для использования в кулинарии и внесения их в меню;

- выдача отчетов по заданным параметрам;

- сортировка блюд по типу (закуска, горячее, салаты….).

Отчетность, реализуемая при автоматизации процесса:

- формирование меню ресторана;

- составление бланка заказанных блюд, передаваемого на кухню.

Из всего вышесказанного вытекает несколько ограничений предметной области:

- каждая запись должна быть уникальной и не иметь своих дубликатов;

- ограниченность продуктов на складе;

- цена продукции измеряется в рублях.

1.2 Постановка задачи

1.2.1 Организационно-экономическая сущность задачи

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

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

Автоматизация позволит снизить трудозатраты и число ошибок работников предприятия при обработке данных. Также она приведет к экономии времени сотрудников и повысит оперативность принимаемых решений. Централизованное хранение данных повышает точность и достоверность предоставляемых сведений.

Вся информация необходимая для решения задачи «Автоматизация заказа блюд в ресторане» хранится в файлах баз данных на магнитном носителе.

Автоматизация позволит получать отчёты по заданным условиям, с подсчётом итоговых значений, и организовать хранение данных для последующего анализа.

Условием прекращения использования задачи «Автоматизация заказа блюд в ресторане» является прекращение деятельности предприятия.

1.2.2 Описание выходной информации

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

«Меню ресторана», которое отражает информацию о блюдах, которые может заказать клиент;

«Заказ», содержащий информацию о заказанных блюдах, передаваемый на кухню;

Перечень и описание выходных документов показаны в таблице 1.1. Описание их реквизитов приведено в таблице 1.2. Формы документов представлены на рисунках 1.1-1.2

Таблица – 1.1

Перечень и описание выходных документов

Название документаИдентификатор документа

Форма

представления

Период

выдачи

Срок

выдачи

Получатель

информации

123456
Меню ресторанаD01Документежедневнонемедленнопредприятие
ЗаказD02Документпо требованиюнемедленнопредприятие
D01
(Ресторан)______(Дата)_________

МЕНЮ

_____( Наименование типа блюда)____
НаименованиеЦена приготовления
ПродуктКол-воСтоимость
(ед. изм)
Сумма:________

Рисунок 1.1 – Форма выходного документа «Меню ресторана»


D02
(Ресторан)______(Дата)_________
ЗАКАЗ
БлюдоКоличество

Рисунок 1.2 – Форма выходного документа «Отчёт за период»

Таблица 1.2

Перечень и описание реквизитов выходных сообщений

Наименование

реквизита

Идентификаторы

выходных документов

Условное

обозначение

Характеристика

реквизитов

1234
Единица измеренияD01NAME_EIA(5)
РесторанD01, D02ORGA(25)
Текущая датаD01, D02NOW9(2).9(2).9(4)
Наименование типа блюдаD01NAME_TYPE_BA(25)
Наименование блюдаD01, D02NAME_BA(25)
Цена приготовленияD01CENA_B9(6),9(2)
Наименование продуктаD01NAME_PRODA(25)
Количество продуктаD01KOL_VO_IN_B9(5)
Стоимость продуктаD01STOIM_P9(6),9(2)
Стоимость рецептаD01ALL_B_STOI9(6),9(2)
Количество блюдD02KOL_VO_B9(6)

1.2.3 Описание входной информации

Входные документы задачи «Автоматизация заказа блюд в ресторане» подразделяются на оперативно-учетную, условно-постоянную и нормативно справочную информацию.

Для решения задачи оперативно-учётной информацией используется документ «перечень блюд на текущий день» (форма входного документа представлена на рисунке 1.3), в котором указаны тип блюда и его наименование.

Перечень входных документов представлен в таблице 1.3, описание реквизитов в таблице 1.4.

Таблица 1.3

Перечень и описание входных документов

Наименование документаИдентификатор входных сообщенийФорма представленияЧастота поступления
1234
Перечень блюд на текущий деньSpisokПервичный документЕжедневно

Таблица 1.4

Перечень и описание реквизитов входных сообщений

Наименование реквизитаИдентификатор реквизитаХарактеристика реквизитаИсточник информацииИдентификатор источника
12345
ДатаCURDATA9(2).9(2).9(4)Первичный документSpisok
Наименование типа блюдаNAME_TYPE_BA(25)Первичный документSpisok
Наименование блюдаNAME_BA(25)Первичный документSpisok
Spisok
(Ресторан)______(Дата)_________

Перечень блюд на текущий день

_____( Наименование типа блюда)____
Наименование

Рисунок 1.3 – Форма входного документа «Перечень блюд на текущий день»


Условно-постоянной информацией для решения задачи являются справочники блюд и продуктов, в которых отражена информация о блюдах и продуктах соответственно. Также используется справочник продуктов в блюде. Документы условно-постоянной информации представлены в таблице 1.4, а их реквизиты в таблице 1.5.

Таблица 1.4

Перечень и описание условно-постоянной информации

Наименование

документа

Идентификатор входных

сообщений

Форма представления
123
Справочник блюдSpisokB

Массив данных

на магнитном диске

Справочник продуктовProducts

Массив данных

на магнитном диске

Справочник продуктов в блюдеProdInRec

Массив данных

на магнитном диске

Таблица 1.5

Перечень и описание реквизитов условно-постоянной информации

Наименование реквизита

Условное

обозначение

Идентификатор источника

Характеристика

реквизитов

1234
Код блюдаIdBSpisokB, ProdInRec9(4)
Наименование блюдаNAME_BSpisokBA(30)
Цена приготовленияCENA_B SpisokB9(5),9(2)
Код типа блюдаIdTBSpisokB9(2)
Код продуктаIdPProducts9(4)
Количество продуктаKOL_VOProducts9(5),9(3)
Стоимость продуктаSTOIM_PProducts9(5),9(2)
Наименование продуктаNAME_PRODProducts, ProdInRecA(30)
Код единицы измеренияIdEIProducts9(2)
Количество продукта в блюдеKOL_VOPvBProdInRec9(5),9(3)

Нормативно-справочной информацией являются справочники единиц измерения и типов блюд. В нём находится вся информация о единицах измерения и типах блюд соответственно. Документы нормативно-справочной информации представлены в таблице 1.6, а их реквизиты в таблице 1.7.

Таблица 1.6

Перечень и описание нормативно-справочной информации.

Наименование

документа

Идентификатор входных

сообщений

Форма представления
123
Справочник единиц измеренияEI

Массив данных

на магнитном диске

Справочник типов блюд TypeB

Массив данных

на магнитном диске

Таблица 1.7

Перечень и описание реквизитов нормативно-справочной информации

Наименование реквизита

Условное

обозначение

Идентификатор источника

Характеристика

реквизитов

1234
Код типа блюдаIdTBTypeB9(2)
Наименование типа блюдаNameTBTypeBA(30)
Код единицы измеренияIdEIEI9(2)
Наименование единицы измеренияNameEIEIA(30)

1.3 Разработка информационного обеспечения задачи

1.3.1 Структурный анализ с помощью диаграмм SADT

Рисунок 1.4 – 0 уровень диаграммы IDEF0

Рисунок 1.5 – 1 уровень диаграммы IDEF0

1.3.2 Определение информационных объектов и связей между ними

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

1.3.3 Структурный анализ с помощью диаграмм “сущность - связь”

Рисунок 1.6 – Информационно-логическая модель данных



Рисунок 1.7 –диаграмма «сущность – связь» созданная в ErWin

2 СПЕЦИАЛЬНЫЙ РАЗДЕЛ

2.1 Конфигурация системы с помощью утилиты BDE ADMINISTRATOR или средств связи приложения и БД DELPHI

Для работы приложения необходимо используемую им базу данных подключить через соответствующий системный драйвер. В Windows это реализуется через ODBC (Open DataBase Connectivity) открытый интерфейс доступа к базам данных, определяющий набор функций, которые можно использовать для доступа к любой реляционной СУБД. Пользователь программы, которая не предусматривает автоматическое подключение к алиасам ODBC, может вручную прописать местонахождение базы данных. Это делается либо через Администратор источников данных ODBC, либо через BDEAdministrator, как функциональное расширение администратора. Так как BDEAdministrator требует своей предустановки, а администратор ODBC наличествует на всех компьютерах с установленной ОС Windows, то подключение базы данных программы будет идти через«Администратор ODBC».

«Администратор ODBC» открывается через «Панель управления» Windows.

Рисунок 2.1 –окно «Администратор ODBC»


Для добавления алиаса требуется нажать кнопку «Добавить…». Появляется окно добавления нового источника данных.


Рисунок 2.2 –окно создания нового источника данных

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


Рисунок 2.3 –Окно настройки драйвера

2.2 Создание таблиц базы данных с помощью утилиты DATABASEDESKTOP или ACCESS

Таблицы задачи были созданы в СУБД ACCESS. Таблицы создаются с помощью конструктора.

Рисунок 2.4 – ACCESS с выведенным списком таблиц задачи

Рисунок 2.5 –Окно конструктора таблиц

2.3 Организация пользовательского интерфейса

2.3.1 Создание меню, реализующего основные функции информационной системы

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

Также в программе реализованы всплывающие подсказки, появляющиеся при наведении курсора на какой-либо объект и кнопки быстрого вызова, вынесенные на панель инструментов.

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

При работе с программой пользователь может пользоваться как клавиатурой, так и “мышью”.

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

Для решения задачи необходимо преждевременно ввести исходные данные в справочники. Формы для ввода этих данных, представленные в п.1.2, были изменены с помощью встроенных элементов языка программирования Delphi 6.0, таких как панель навигации и предварительный просмотр.

Формы, применяемые для ввода данных, снабжены как встроенной панелью навигации, которая представлена на рисунке 2.1, так и собственными элементами ввода и корректировки данных БД.


Рисунок 2.6 – Вид панели навигации

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

На основе полученных требований задача была разделена на модули и показана в виде иерархической схемы на рисунке 2.3.


Рисунок 2.7 –Схема меню задачи

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

Рисунок 2.8 –Видеограмма меню

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

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

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

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

- Страница в масштабе 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);

begin

MKeyvalue:=0;

repeat

MKeyvalue:=MKeyvalue+1;

until varType(T_typeB.lookup('IdTB',MKeyvalue,'IdTB'))=varnull;

end;

procedure TMainForm.T_typeBAfterInsert(DataSet: TDataSet);

begin

T_typeB.edit;

T_typeBIdTB.Value:=MKeyvalue;

T_typeBNameTB.Value:=' ';

T_typeB.Post;

InformForm.DBGrid4.Refresh;

end;

procedure TMainForm.BitBtn2Click(Sender: TObject);

begin

AboutBox.showmodal;

end;

procedure TMainForm.FormShow(Sender: TObject);

begin

memo1.Text:='Добро пожаловать в программу "Ресторан"';

end;

{-------------------------------------------------}

procedure TMainForm.TreeView1Click(Sender: TObject);

var F:integer;

begin

{определение текущей выделеннки}

for f:=0 to 15 do if TreeView1.Items[f].Selected then break;

memo1.Clear;

case f of

0:begin

ZakazForm.Show;

InformForm.Hide;

Aboutbox.Hide;

memo1.Text:='Ведение заказов';

end;

1:begin

InformForm.Show;Aboutbox.Hide;

InformForm.PageControl1.ActivePageIndex:=0;

InformForm.SetFocus;

memo1.Text:='Ведение справочников';

end;

2:begin

InformForm.PageControl1.ActivePageIndex:=0;

memo1.Text:='Определение меню, заполение списка блюд';

end;

3:begin //InformFrame1.PageControl1.ActivePageIndex:=1;

InformForm.PageControl1.ActivePageIndex:=1;

memo1.Text:='Ведениесостоянияпродуктов';

end;

4:begin

InformForm.PageControl1.ActivePageIndex:=2;

memo1.Text:='Дополнительные справочники, типы ед. измерения, типы блюд';

end;

{Reports}

5:begin

InformForm.Hide;

Aboutbox.Hide;

ZakazForm.Hide;

memo1.Text:='Отчеты';

end;

{Menu} 6:begin

MenuForm.QuickRep1.Refresh;

memo1.Text:='Просмотр меню, печать';

end;

{Preview}7:begin

memo1.Text:='Просмотрменю';

MenuForm.Query1.Close;

MenuForm.Query1.Open;

MenuForm.QuickRep1.Preview;

end;

{Print}8:begin

memo1.Text:='Печатьменю';

MenuForm.Query1.Close;

MenuForm.Query1.Open;

MenuForm.QuickRep1.Print;

end;

{Zakaz} 9:FRepZakaz.QuickRep1.Preview;

10: begin

memo1.Text:='Настройкашрифтаменю';

FontDialog1.Font := MainForm.Font;

if FontDialog1.Execute then TreeView1.font:=FontDialog1.Font

end;

end;

end;

procedure TMainForm.FormActivate(Sender: TObject);

begin

T_EI.open;

T_Prodinrec.open;

T_products.open;

T_spisokB.open;

T_zakaz.open;

T_typeB.open;

end;

procedure TMainForm.T_zakazCalcFields(DataSet: TDataSet);

begin

T_zakazCalc_stoim.AsCurrency:=T_zakazKol_voZ.AsCurrency + T_zakazLU_CEnaB.AsCurrency

end;

end.

unit RepMenu;

interface

uses

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

Dialogs, StdCtrls, QuickRpt, QRCtrls, ExtCtrls, DB, DBTables;

type

TMenuForm = class(TForm)

QuickRep1: TQuickRep;

QRBand1: TQRBand;

QRLabel1: TQRLabel;

Query1: TQuery;

DataSource1: TDataSource;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRBand2: TQRBand;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRDBText6: TQRDBText;

QRBand3: TQRBand;

QRExpr1: TQRExpr;

QRDBText7: TQRDBText;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRExpr2: TQRExpr;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

QRShape2: TQRShape;

QRShape3: TQRShape;

QRShape4: TQRShape;

QRLabel7: TQRLabel;

QRShape5: TQRShape;

QRShape1: TQRShape;

QRShape6: TQRShape;

private

{ Private declarations }

public

{ Public declarations }

end;

var

MenuForm: TMenuForm;

implementation

{$R *.dfm}

end.

unit RepZakaz;

interface

uses

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

Dialogs, QuickRpt, QRCtrls, ExtCtrls;

type

TFRepZakaz = class(TForm)

QuickRep1: TQuickRep;

QRBand1: TQRBand;

QRBand2: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRLabel1: TQRLabel;

QRBand3: TQRBand;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRShape1: TQRShape;

private

{ Private declarations }

public

{ Public declarations }

end;

var

FRepZakaz: TFRepZakaz;

implementation

uses Main;

{$R *.dfm}

end.

unit ZakazUnit;

interface

uses

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

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

type

TZakazForm = class(TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

BitBtn1: TBitBtn;

Clear: TBitBtn;

Panel1: TPanel;

Preview: TBitBtn;

Print: TBitBtn;

Memo1: TMemo;

MaskEdit1: TEdit;

procedure ClearClick(Sender: TObject);

procedure PreviewClick(Sender: TObject);

procedure PrintClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

ZakazForm: TZakazForm;

implementation

uses Main, RepZakaz;

{$R *.dfm}

procedure TZakazForm.ClearClick(Sender: TObject);

begin

MainForm.T_zakaz.close;

MainForm.T_zakaz.EmptyTable;

MainForm.T_zakaz.Open;

end;

procedure TZakazForm.PreviewClick(Sender: TObject);

begin

FRepZakaz.QuickRep1.Preview;

end;

procedure TZakazForm.PrintClick(Sender: TObject);

begin

FRepZakaz.QuickRep1.Print;

end;

procedure TZakazForm.FormActivate(Sender: TObject);

begin

if not(MainForm.T_zakaz.Active) then MainForm.T_zakaz.Open;

end;

procedure TZakazForm.BitBtn1Click(Sender: TObject);

begin

ZakazForm.Hide;

end;

end.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

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

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
СПбГУТ
Оформил заказ 14 мая с сроком до 16 мая, сделано было уже через пару часов. Качественно и ...
star star star star star
Красноярский государственный аграрный университет
Все сделано хорошо, а самое главное быстро, какие либо замечания отсутствуют
star star star star star
РЭУ им. Г. В. Плеханова
Алексей пошел на встречу, и сделал работу максимально быстро и качественно! Огромное спасибо!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

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

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно