Создание программы «Кулинарная книга»

Введение

Современный компьютер - это целый мир. Использование компьютера в банках, офисах, издательствах, дома стало уже привычным делом. Но это очень маленькая часть из возможных сфер его применения. Без автоматизации нельзя представить современное производство. Информационные технологии открывают каждому, кто учится, доступ к практически неограниченному объему информации и ее аналитической разработки, обеспечивает «непосредственную включенность» в информационные потоки общества . Характерной чертой современного этапа развития общества является быстрое проникновение информационных технологий во все сферы общественной жизни, что вызывает необходимость оценки существующих подходов к образовательному процессу с точки зрения их адекватности новым жизненным реалиям.

Для использования огромных объемов хранимой информации, помимо развития системных устройств и средств передачи данных средства обеспечения диалога человек - ЭВМ , которые позволяют пользователю вводить запросы, читать файлы, модифицировать хранимые данные, добавлять новые данные или принимать решения на основании сохранившихся данных. Для обеспечения этих функций созданы специализированные средства - системы управления базами данных (СУБД). Современные СУБД - многопользовательские системы управления базой данных, которые специализируется на управлении массивом информации одним или множеством одновременно работающих пользователей.

Целью данной курсовой работы является создание программы «Кулинарная книга», интерфейс которой близок списку рецептов на сайте millionmenu.ru.

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

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

1. Описание таблиц и структуры БД.

База данных представлена в формате mdb и состоит из 8 взаимосвязанных таблиц. Структура связей представлена на следующем рисунке.

Рис.1 Структура связей между таблицами базы данных

Рассмотрим структуру полей используемых таблиц.

Рис. 2 Таблица «Виды кухни»

Рис. 3 Таблица «Национальные кухни»

Рис. 4 Таблица «Рецепт»

Рис. 5 Таблица «Справочник блюд»

Рис. 6 Таблица «Справочник ингредиентов»

Рис. 7 Таблица «Технологии приготовления»

Рис. 8 Таблица «Типы блюд»

Рис. 9 Таблица «Этапы приготовления»

2. Описание интерфейса.

При запуске появляется главное окно программы.

Рис. 10 Главное окно программы

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

Рис. 11 Окно справочника «Национальные кухни»

Рис. 12 Окно справочника «Виды кухни»

Рис. 13 Окно справочника «Технологии»

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

Рис. 14 Окно справочника «Типы блюда»

Рис. 15 Окно справочника «Ингредиенты»

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

На рис. 16 представлен результат запроса «Армянская кухня».

Рис. 16 Главное окно программы после выполнения запроса «По национальной кухне»

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

При выполнении запроса «По времени приготовления» интерфейс программы немного отличается. Мы имеем возможность выбрать из списка условие (больше, меньше или равно) и ввести количество минут.

Рис. 17 Главное окно программы после выполнения запроса «По времени приготовления»

Переключатель «Показать все» позволяет снять фильтрацию

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

Рис. 18 Окно «Карточка блюда»

Здесь мы вводим наименование блюда. Национальную кухню, вид кухни, технологию и тип блюда выбираем из списков, которые формируются на основе справочников. Если они отсутствуют в списке, нажимаем на кнопку «..» и добавляем их в справочник. Кнопка «Загрузить» позволяет хранить в базе данных изображение в формате bmp.

Также мы выбираем из списка калорийность (высокая, средняя, низкая), вводим количество порций и время приготовления. После этого нажимаем на кнопку «Сохранить»

Далее приступаем к формированию рецепта приготовления. Наименование ингредиента выбираем из списка, при этом единица измерения заносится в таблицу автоматически. Если ингредиент отсутствует в справочнике, нажимаем кнопку «Добавить ингредиент в справочник», появляется окно справочника, где мы вводим информацию об ингредиенте.

После нажатия кнопки «Описание приготовления» на экране появится следующее окно:

Рис. 19 Окно «Описание приготовления»

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

Рис. 20 Окно «Карточка блюда» в режиме просмотра

3. Программная реализация.

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

Процедура выбора критерия фильтрации выглядит следующим образом.

procedure Tmain.ListBox1Click(Sender: TObject);

begin

CheckListBox1.Items.Clear; // очищаем список

ComboBox1.Visible:=false; Edit1.Visible:=false; // делаем невидимыми компоненты, которые применяются при выборе времени приготовления

label1.Visible:=false;

case ListBox1.ItemIndex of // в случае если выбрано

0: // национальная кухня

with DataModule2 do

begin

nat_kuh.First; // переход к первой записи

while not nat_kuh.Eof do // перебираем все записи таблицы, которая содержит информацию об национальной кухне

begin

CheckListBox1.Items.Add(nat_kuhn_nk.AsString);// добавляем значение поля "название" в список

nat_kuh.Next // переход к следующей записи

end;

end;

…..

end;

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

procedure Tmain.BitBtn1Click(Sender: TObject);

var st:string ;

begin

CheckBox2.Checked:= not CheckBox2.Checked; // сбрасываем флажок "Показать все"

case ListBox1.ItemIndex of // в зависимости от того, какой критерий выбран

0: begin

if CheckListBox1.ItemIndex=-1 then exit; // если не выбрано значение из списка, завершаем процедуру

with DataModule2 do

begin

nat_kuh.Locate('n_nk',CheckListBox1.Items[CheckListBox1.ItemIndex],[]); // в таблице, которая содержит список национальных кухонь текущей становится запись, выбранная пользователем в списке

ADOQuery1.SQL.Clear; // очищаем свойство SQL компонента

// формируем текст SQL-запроса

ADOQuery1.SQL.Add('select * from sp_bluda where kod_nk='+IntToStr(nat_kuhkod_nk.AsInteger)); // выбираем из таблицы справочника блюд все записи, где код национальной кухни соответствует выбранному пункту

ADOQuery1.Active:=true; // выполняем запрос

end;

end;

1: begin

if CheckListBox1.ItemIndex=-1 then exit;

end;

Аналогичным образом выполняем запросы по другим критериям. Особенностями обладает запрос по времени приготовления. Рассмотрим его.

4: with DataModule2 do // запрос по времени приготовления

begin

if ComboBox1.ItemIndex=-1 then exit; // если не выбрано из списка значение "Больше", "Меньше" или "Равно"

if Edit1.Text='' then exit; // если не введено время

if ComboBox1.ItemIndex=0 then st:='>' else // заносим в строковою переменную знак

if ComboBox1.ItemIndex=1 then st:='<' else st:='=';

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select * from sp_bluda where time_pr'+st+Edit1.Text); // в компоненте Edit1 содержится время приготовления в минутах

ADOQuery1.Active:=true;

edit1.Text:='' // очищаем поле ввода

end;

Сброс фильтрации реализован следующим образом.

procedure Tmain.CheckBox2Click(Sender: TObject);

begin

if CheckBox2.Checked then // если флажек установлен

with DataModule2 do

begin

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select * from sp_bluda'); // формируем запрос - отображать весь список

ADOQuery1.Active:=true;

end;

end;

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

procedure Tmain.BitBtn3Click(Sender: TObject); //

begin

DataModule2.recept.Filter:='kod_bluda=0'; // устанавливаем значение фильтра таблицы, в которой хранится список ингредиентов

DataModule2.recept.Filtered:=true;

DataModule2.sp_bluda.Insert; // вставляем пустую запись в таблицу справочника блюд

kartochka.ShowModal // выводим окно на экран

end;

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

procedure Tmain.BitBtn2Click(Sender: TObject);

begin

DataModule2.sp_bluda.Locate('kod_bluda',DataModule2.ADOQuery1kod_bluda.AsInteger,[]); // переходим на запись, которая соответствует коду выбранного блюда

DataModule2.recept.Filter:='kod_bluda='+IntToStr(DataModule2.sp_bludakod_bluda.AsInteger); // фильтруем таблицу по коду выбранного блюда

DataModule2.recept.Filtered:=true;

kartochka.ShowModal

end;

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

procedure Tkartochka.BitBtn3Click(Sender: TObject); // кнопка "Загрузить"

begin

DataModule2.sp_bluda.Edit;

with OpenPictureDialog1 do

if Execute then

DBImage1.Picture.LoadFromFile(filename); // загружаемый выбранный файл в компонент, который связан с полем базы данных

DataModule2.sp_bluda.Post

end;

Процедура сохранения данных в базе.

procedure Tkartochka.BitBtn4Click(Sender: TObject); // Кнопка "Сохранить

begin

DataModule2.sp_bluda.Edit;

DataModule2.sp_bluda.Post ;

DataModule2.recept.Filter:='kod_bluda='+IntToStr(DataModule2.sp_bludakod_bluda.AsInteger); // фильтруем таблицу рецептов по коду блюда

DataModule2.recept.Filtered:=true;

end;

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

procedure Tkartochka.BitBtn2Click(Sender: TObject);

begin

DataModule2.Etap.Filter:='kod_bluda='+IntToStr(DataModule2.sp_bludakod_bluda.AsInteger); // фильтруем таблицу, которая содержит информацию об этапах приготовления по коду блюда

DataModule2.Etap.Filtered:=true;

etap.ShowModal

end;


Заключение

В результате выполнения курсовой работы была разработана программа «Кулинарная книга». Система была разработана с использованием технологии доступа к базам данных АDО в среде Delphi 7.

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

Для задания каких-либо свойств элемента разрабатываемой, совсем не обязательно писать массивные текстовые строки, достаточно изменить это свойство в инспекторе объектов (так называемом мониторе свойств выбранного элемента). Это изменение автоматически дополнит или модифицирует программный код. Это большой плюс в визуальной технологии программирования. Создавая или модифицируя свой программный продукт, пользователь не зная или не обращая внимания на некоторые свойства элемента программы, а используя только необходимые, пишет полностью готовый рабочий продукт, порой выступающий на равных по сложности с написанными в невизуальном редакторе.

Литература

  1. Бобровский С. Delphi 5 - CПб.: Питер, 2000.
  1. Гаевский А. Разработка программных приложений на Delphi 6 - М.: Киев, 2000.
  1. Глинский Я.Н., Анохин В.Е., Ряжская В.А. Turbo Pascal 7.0 и Delphi. Учебное пособие. СПб.: ДиаСофтЮП, 2003.
  1. Гофман В., Хомоненко А. Delphi 6. CПб.: БХВ-Петербург, 2004.
  1. Грибачев К. Г. Delphi и Model Driven Architecture. Разработка приложений баз данных. - СПб.. Питер, 2004.
  1. Дарахвелидзе П. Г., Марков Е. П. Delphi - среда визуального программирования. СПб.: BHV- Санкт-Петербург, 1999.
  1. Климова Л. М.  "Delphi 7. Самоучитель. М.: ИД КУДИЦ-ОБРАЗ, 2005.

PAGE 16

Создание программы «Кулинарная книга»