logo
пз

Описание программы ис «рациональное питание школьников»

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

Главное окно нашей ИС состоит из перечня продуктов, возможностью редактирования добавления и удаления строк. Тут же можно перейти в разделы склад, формирование блюда и меню в соответствии с рисунком 7.

Рисунок 7 – Главное окно

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

Рисунок 8 –Раздел блюда

Листинг 1 – раздел блюда

unit SostavBludoUnit;

interface

uses

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

Dialogs, StdCtrls, Buttons, Grids, DBGrids, Menus, ExtCtrls;

type

TSostavBludoForm = class(TForm)

DBGrid1: TDBGrid;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

Panel1: TPanel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

Panel2: TPanel;

DBGrid2: TDBGrid;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

SostavBludoForm: TSostavBludoForm;

implementation

uses BludoUnit, ProductsUnit, DMUnit, BludoUnit1, EditBludoUnit;

{$R *.dfm}

procedure TSostavBludoForm.BitBtn1Click(Sender: TObject);

begin

i:=1;

EditBludoForm.ShowModal;

end;

procedure TSostavBludoForm.BitBtn3Click(Sender: TObject);

var id:string;

begin

If DBGrid1.SelectedField.IsNull then begin

Application.MessageBox(Pchar('Удаление пустой строки не возможно!'),'Warning!',mb_Ok) end else

If application.MessageBox(PChar('Вы действительно хотите удалить блюдо: '+DMU.BludoZQname.AsString+' ?'),'',mb_YesNo+mb_IconQuestion)=id_Yes then

with DMU do begin

id:=BludoZQ.FieldByName('idbludo').AsString;

EditBludoZQ.Close;

EditBludoZQ.SQL.Clear;

EditBludoZQ.SQL.Add('DELETE FROM Bludo WHERE idBludo="'+id+'"');

EditBludoZQ.ExecSQL;

BludoZQ.Refresh;

DBGrid1.Refresh;

end;

end;

procedure TSostavBludoForm.BitBtn2Click(Sender: TObject);

begin

i:=2;

EditBludoForm.ShowModal;

end;

procedure TSostavBludoForm.BitBtn4Click(Sender: TObject);

begin

BludoForm.ShowModal;

end;

procedure TSostavBludoForm.N1Click(Sender: TObject);

begin

BitBtn1.Click;

end;

procedure TSostavBludoForm.N2Click(Sender: TObject);

begin

BitBtn2.Click;

end;

procedure TSostavBludoForm.N3Click(Sender: TObject);

begin

BitBtn4.Click;

end;

procedure TSostavBludoForm.N4Click(Sender: TObject);

begin

BitBtn3.Click;

end;

procedure TSostavBludoForm.BitBtn5Click(Sender: TObject);

begin

Close;

end;

end.

При желании можно добавить новое блюдо, указав его данные в соответствии с рисунком 9

Рисунок 9 – форма добавления нового блюда

Есть возможность редактирования состава уже созданного блюда в соответствии с рисунком 10.

Рисунок 10 – Редактирование состава блюд

Листинг 2 – Состав блюда

unit BludoUnit;

interface

uses

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

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

type

TBludoForm = class(TForm)

DBLookupListBox1: TDBLookupListBox;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Label1: TLabel;

DBGrid1: TDBGrid;

Label2: TLabel;

procedure FormActivate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

BludoForm: TBludoForm;

implementation

uses DMUnit, DB, MassaUnit;

{$R *.dfm}

procedure TBludoForm.FormActivate(Sender: TObject);

var id:string;

begin

Label1.Caption:='Состав блюда - "'+DMU.BludoZQname.AsString+'"';

Label2.Caption:='Состав блюда - "'+DMU.BludoZQname.AsString+'"';

//id:=DMU.EditBludoZQ.SQL.Add('SELECT MAX(idbludo) FROM bludo');

//DMU.EditBludoZQ.ExecSQL;

//DMU.EditBludoZQ.SQL.Clear;

//DMU.EditBludoZQ.SQL.Add('SELECT name FROM bludo where idbludo="'+id+'"');

//DMU.EditBludoZQ.ExecSQL;

end;

procedure TBludoForm.BitBtn1Click(Sender: TObject);

begin

MassaForm.ShowModal;

end;

procedure TBludoForm.BitBtn2Click(Sender: TObject);

var id:string;

begin

If DBGrid1.SelectedField.IsNull then begin

Application.MessageBox(Pchar('Удаление пустой строки не возможно!'),'Warning!',mb_Ok) end else

If application.MessageBox(PChar('Вы действительно хотите удалить ингридиент: '+DMU.SostavZQname.AsString+' ?'),'',mb_YesNo+mb_IconQuestion)=id_Yes then

with DMU do begin

id:=SostavZQ.FieldByName('idlink1').AsString;

EditLink1ZQ.Close;

EditLink1ZQ.SQL.Clear;

EditLink1ZQ.SQL.Add('DELETE FROM Link1 WHERE idlink1="'+id+'"');

EditLink1ZQ.ExecSQL;

SostavZQ.Refresh;

DBGrid1.Refresh;

end;

end;

procedure TBludoForm.BitBtn3Click(Sender: TObject);

begin

Close;

end;

end.

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

Рисунок 11 - Склад

Листинг 3 - Склад

.unit SkladUnit;

interface

uses

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

Dialogs, StdCtrls, Buttons, Grids, DBGrids, Menus;

type

TSkladForm = class(TForm)

DBGrid1: TDBGrid;

BitBtn1: TBitBtn;

PopupMenu1: TPopupMenu;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

SkladForm: TSkladForm;

implementation

uses DMUnit, EditSkladUnit, ProductsUnit;

{$R *.dfm}

procedure TSkladForm.BitBtn4Click(Sender: TObject);

begin

Close;

end;

procedure TSkladForm.BitBtn1Click(Sender: TObject);

begin

i:=1;

EditSkladForm.ShowModal;

end;

procedure TSkladForm.BitBtn2Click(Sender: TObject);

begin

i:=2;

EditSkladForm.ShowModal;

end;

procedure TSkladForm.BitBtn3Click(Sender: TObject);

var id:string;

begin

If DBGrid1.SelectedField.IsNull then begin

Application.MessageBox(Pchar('Удаление пустой строки не возможно!'),'Warning!',mb_Ok) end else

If application.MessageBox(PChar('Вы действительно хотите удалить со склада продукт : '+DMU.SkladZQname.AsString+' ?'),'',mb_YesNo+mb_IconQuestion)=id_Yes then

with DMU do begin

id:=SkladZQidsklad.AsString;

EditSkladZQ.Close;

EditSkladZQ.SQL.Clear;

EditSkladZQ.SQL.Add('DELETE FROM sklad WHERE idsklad="'+id+'"');

EditSkladZQ.ExecSQL;

SkladZQ.Refresh;

DBGrid1.Refresh;

end;

end;

end.

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

Рисунок 12 – форма добавления продуктов

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

Рисунок 13 – форма создание меню

Рисунок 14 – Форма Создание обеда

Рисунок 15 – Перенос в Excel

Перейдя в раздел расчеты в соответствии с рисунком 16 можно посмотреть отчет по потраченным деньгам на каждый день в формате Excel. Также предоставляется отчет о количестве израсходованных продуктов питания за десять дней за период выбранный для отчета. А так же сравнение и результат в процентах о отклонении от нормы потребляемых продуктов по каждому ингредиенту.

Рисунок 16 – Расчеты

ИС защищена от случайного нажатия на пусковые устройства, где этого существует проверка на согласие выполнения удаления в соответствии с рисунком 17. И при желании сохранить пустые строки выдаст сообщение , что еще не все поля в соответствии с рисунком 18.

Рисунок 17 – Запрос на согласие удаления компонента

Рисунок 18 – Запрет на сохранение пустых строк