Разработка справочной информационной системы "Рецепты"
Создание и отладка информационной справочной системы, позволяющей хранить, выводить на экран, добавлять и удалять кулинарные рецепты. Практические аспекты разработки базы данных в среде Microsoft Access и интерфейса на языке программирования Delphi7.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 01.10.2016 |
Размер файла | 1019,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
"Ярославский государственный технический университет"
Кафедра "Информационные системы и технологии"
Пояснительная записка к курсовой работе
по дисциплине: "Справочные информационные системы"
на тему: "Разработка справочной информационной системы "Рецепты""
Выполнил: студент гр. ДСИТ-47
Окунев А.С.
2012
Содержание
Аннотация
Введение
1. Теоретическая часть
2. Практическая часть
2.1 Обоснование выбора программных средств
2.1.1 Microsoft Access
2.1.2 Borland Delphi 7
2.2 Руководство пользователя
Список использованной литературы
Приложение. Листинг исходного кода программы
Аннотация
В современном мире человеку приходится сталкиваться с огромными массивами однородной информации. Эту информацию необходимо упорядочить каким-либо образом, обработать однотипными методами и в результате получить сводные данные или разыскать в массе конкретную информацию. Этой цели служат базы данных.
В данной курсовой работе представлена справочная информационная система, которая хранит кулинарную книгу, отображает рецепты и фото к ним, а также есть возможность редактировать рецепты, добавлять новые и удалять уже имеющиеся. информационная справочная рецепт аccess
Интерфейс данного приложения прост и не требует каких-либо специальных знаний.
Введение
Задание курсовой работы. Разработать и отладить информационную справочную систему "Рецепты", которая будет позволять хранить, выводить на экран, добавлять и удалять кулинарные рецепты.
База данных создается в Microsoft Access, интерфейс в Delphi7.
Для решения различного рода задач на компьютере применяются различные классы программ. Так, для обработки текстов используются текстовые редакторы, для обработки изображений - графические редакторы, для хранения и обработки справочной информации, используются специализированные базы данных - компьютерные справочные системы.
Именно справочные системы решают все поставленные задачи по обеспечению пользователей информацией. Справочные системы имеют целый ряд уникальных достоинств и возможностей.
В первую очередь это:
· возможность компактно хранить большие объемы информации;
· возможность структурировано отображать хранимую информацию;
· возможность быстрого поиска нужных документов или даже их фрагментов в огромных массивах данных.
1. Теоретическая часть
Информационно-справочные системы предназначены для управления различными информационными и справочными массивами, в число которых входят и базы данных.
Эти системы организовывают определенный интерфейс пользователя с функциями обработки информации самой системы. Набор возможностей таких систем обычно включает в себя коррекцию структуры используемого объекта (инкапсулирующего информацию), работа с его составляющими - дополнение, редактирование, удаление (в случае, когда роль такого объекта выполняет база данных, это - записи), простой просмотр, поиск элементов. Также необходимо обеспечить для такой системы и функции постоянного надежного хранения - в простейшем случае, это - запись базы из памяти в файл на диске и считывание оного с диска в память.
Программная реализация мало отличается от подобной концепции, но конкретизирует абстрактные операции в конкретные процедуры и функции (или же объекты) и зависит полностью от возможностей языка, поставленной задачи и искусства программиста.
2. Практическая часть
2.1 Обоснование выбора программных средств
2.1.1 Microsoft Access
База данных разработана в среде Microsoft Access.
Microsoft Access - реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.
Состав программного продукта
Основные компоненты MS Access:
· построитель таблиц;
· построитель экранных форм;
· построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);
· построитель отчётов, выводимых на печать.
Они могут вызывать скрипты на языке VBA, поэтому MS Access позволяет разрабатывать приложения и БД практически "с нуля" или написать оболочку для внешней БД.
MS Access является файл-серверной СУБД и потому применима лишь к маленьким приложениям. Отсутствует ряд механизмов, необходимых в многопользовательских БД, таких, например, как триггеры.
Существенно расширяет возможности MS Access по написанию приложений механизм связи с различными внешними СУБД: "связанные таблицы" (связь с таблицей СУБД) и "запросы к серверу" (запрос на диалекте SQL, который "понимает" СУБД). Также MS Access позволяет строить полноценные клиент-серверные приложения на СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки.
Версии:
· 1993 Access 2.0 для Windows (Office 4.3)
· 1995 Access 7 для Windows 95 (Office 95)
· 1997 Access 97 (Office 97)
· 1999 Access 2000 (Office 2000)
· 2001 Access 2002 (Office XP)
· 2003 Access 2003 (из комплекта программ Microsoft Office 2003)
· 2007 Microsoft Office Access 2007 (из комплекта программ Microsoft Office 2007)
· 2010 Microsoft Office Access 2010 (из комплекта программ Microsoft Office 2010).
Рис. 1. Схема данных
2.1.2 Borland Delphi 7
Интерфейс программы был написан в среде Borland Delphi 7 - визуальной среде программирования, использующей объектно-ориентированную модификацию языка Pascal, называемую Object Pascal.
Delphi - язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Целевая платформа. Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux, однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft.NET. При этом высказывались предположения, что эти два факта взаимосвязаны.
Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU и написания компилятора для GCC.
История языка. Delphi - результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal - динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией - данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.
Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить "желание" "где хочу - там и буду лежать". Соответственно организуется и "многокучность".
Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.
Delphi оказал огромное влияние на создание концепции языка C# для платформы.NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Делфи, из компании Borland Ltd. в Microsoft Corp.
· Версия 1 была предназначена для разработки под 16-разрядную платформу Win16;
· Версии со второй компилируют программы под 32-разрядную платформу Win32;
· Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux;
· Версия 8 способна генерировать байт-код исключительно для платформы.NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы.NET);
· Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы.NET.
Delphi for.NET - среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для.NET.
Первая версия полноценной среды разработки Delphi для.NET - Delphi 8. Она позволяла писать приложения только для.NET.
В настоящее время, в Delphi 2006, можно писать приложения для.NET, используя стандартную библиотеку классов.NET, VCL для.NET. Среда также позволяет создавать.NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием библиотек VCL и CLX.
Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.
В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.
Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания - CodeGear, которая будет финансово полностью подконтрольна Borland.
В августе 2006 года Borland выпустил облегченные версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и.NET), Turbo C#, Turbo C++.
В марте 2008 года было объявлено о прекращении развития этой линейки продуктов.
В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.
В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.
25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. Версия принесла множество нововведений в язык, как-то:
· По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
· Обобщённые типы, они же generics.
· Анонимные методы.
· Новая директива компилятора $POINTERMATH [ON|OFF].
· Функция Exit теперь может принимать параметры в соответствии с типом функции.
2.2 Руководство пользователя
Рис. 2. Окно работающей программы
Программа не требует установки. Для начала работы необходимо запустить файл Project1.exe, после чего на экране появится окно работающей программы.
Рис. 3. Просмотр рецепта
Для просмотра рецепта необходимо в правом окне выделить нужный рецепт и нажать кнопку "Посмотреть рецепт".
Рис. 4. Редактирование рецепта
Для редактирования рецепта необходимо в правом окне выделить нужный рецепт и нажать кнопку "Править рецепт". В этом режиме доступны кнопки: Обзор (для выбора фото), очистить, записать и закрыть.
Рис. 5. Добавление нового рецепта
Для того чтобы создать новый рецепт необходимо нажать кнопку "Новый рецепт". Далее заполняются нужные поля. В этом режиме так же доступны кнопки: Обзор (для выбора фото), очистить, записать и закрыть.
Для поиска рецепта необходимо нажать кнопку "Найти рецепт", далее в появившемся окне выбрать по какому критерию будет идти выборка (по названию, по ингредиентам, по рецептуре) ввести данные для поиска и нажать кнопку "ОК"
Рис. 6. Форма поиска рецепта
Рис. 7. Ввод слова для поиска
Рис. 8. Отображение результата поиска
Для того чтобы удалить рецепт необходимо нажать кнопку "Удалить рецепт".
Для создания нового оглавления - кнопка "Новое оглавление".
Для создания нового заголовка - кнопка "Новый заголовок".
В ходе данной курсовой работы была разработана информационная справочная система "Рецепты" с помощью среды программирования Borland Delphi 7 и СУБД Microsoft Access.
Список использованной литературы
1. Культин Н.Б. "Программирование в Turbo Pascal 7.0 и Delphi".
2. http://ru.wikipedia.org.
3. http://delphistudio.ru.
4. С. Бобровский "Delphi 7 Учебный курс".
5. http://www.lessons-tva.info/edu/inf-access/access.html.
6. http://www.interface.ru/home.asp?artId=8028.
7. http://www.specialist.ru/Course/aks2-1.
Приложение. Листинг исходного кода программы
unit Unit2; // основная форма
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, ComCtrls, Menus;
type
TForm2 = class(TForm)
TreeView1: TTreeView;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
DBGrid1: TDBGrid;
Panel2: TPanel;
Button3: TButton;
Panel3: TPanel;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
PopupMenu1: TPopupMenu;
procedure FormActivate(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
RecObject=record //создание массива записей
ItemU1:integer;
ItemU2:integer; //определение записи
в запись пишется информация из двух полей о том какой именно узел первого уровня и какой второго в виде одномерного массива - чтобы потом можно было определить местоположение текущей записи
end;
var
Form2: TForm2;
RObject:array [1..100000]of RecObject; //определение массива
SelectedIndex, i: integer;
implementation
uses Unit3, Unit4, Unit5, Unit1;
{$R *.dfm}
procedure TForm2.FormActivate(Sender: TObject); //Событие OnActivate наступает,
//когда форма становится активной,
//т.е. получает фокус
var
nd,nr:TTreeNode;
fds: string;
begin
Form2.TreeView1.Items.BeginUpdate; //блокирует обновление экрана
Form2.TreeView1.SortType:=stNone; // дерево не сортируется
Form2.TreeView1.Items.Clear; // очистка списка
DataModule3.ADOTable1.First; //DataModule - это контейнер для компонентов доступа к данным; переходим на первую запись в таблице 1
i:=0;
if DataModule3.ADOTable1.RecordCount>0 then //если кол-во записей больше 0
begin
while not DataModule3.ADOTable1.Eof do //проверяем до тех пор, пока не наступит конец таблиц 1
begin
i:=i+1;
RObject [i].ItemU1:=DataModule3.ADOTable1.Fields [0].AsInteger; //
RObject [i].ItemU2:=0;
Так мы показываем, что это заголовок и конкретное его положение в дереве по первичному ключу - по нему мы его сможем найти если потребуется или если поместим указатель на него
//в переменную nd записываем значение из столбца 1 - создаем родительский заголовок
nd:=Form2.TreeView1.Items.AddObject(nil,DataModule3.ADOTable1.Fields [1].AsString,nil);
fds:=DataModule3.ADOTable1.Fields [0].AsString; //переменная для определения есть ли такой заголовок в дереве или нет чтобы его можно было внести
DataModule3.ADOQuery1.Active:=false; //делаем запрос не активным
DataModule3.ADOQuery1.Parameters.ParamByName('ogl').Value:=fds; // передаем в параметр запроса `ogl' значение fds
DataModule3.ADOQuery1.Active:=true; //делаем запрос активным для выполнения
if DataModule3.ADOQuery1.RecordCount>0 then //если существуют записи тогда
begin
DataModule3.ADOQuery1.First; //переходим на первую запись
while not DataModule3.ADOQuery1.Eof do //до тех пор пока не наступит конце
begin
i:=i+1;
RObject [i].ItemU1:=DataModule3.ADOQuery1.Fields [2].AsInteger; //здесь мы как раз в запись пишем текущее положение узла, отвечающего за заголовок
RObject [i].ItemU2:=DataModule3.ADOQuery1.Fields [0].AsInteger; //здесь мы как раз в запись пишем текущее положение узла, отвечающего за подраздел
В совокупности [заголовок, подраздел]- можно всегда задать в связную таблицу куда мы должны поместить новый рецепт
//записываем в nr значение - создаем подзаголовок
nr:=Form2.TreeView1.Items.AddChildObject(nd,DataModule3.ADOQuery1.Fields [1].AsString,nil);
DataModule3.ADOQuery1.Next; //переход к следующей записи
end;
end;
DataModule3.ADOTable1.Next; //переход к следующей записи
end;
end;
DataModule3.ADOTable1.Filter:=''; //очистка значений фильтра (на всякий случай - вдруг что-то там еще осталось)
DataModule3.ADOQuery1.Filter:=''; //очистка значений фильтра (на всякий случай - вдруг что-то там еще осталось)
Form2.TreeView1.Items.EndUpdate; //окончание обновления дерева
end;
procedure TForm2.TreeView1Click(Sender: TObject); //раскрытие списка
begin
DataModule3.ADOTable3.Filtered:=false; //отключение фильтра (вдруг он был включен)
DataModule3.ADOTable3.Filter:='id_zag='+IntToStr(RObject [Form2.TreeView1.Selected.AbsoluteIndex+1].ItemU2); //задание значения фильтрации чтобы показать те рецепты, которые находятся по текущему положению в дереве по указателю мыши, зная при этом значение записей массивов [заголовок, подраздел]
DataModule3.ADOTable3.Filtered:=true; //включение механизма фильтрации
SelectedIndex:=RObject [Form2.TreeView1.Selected.AbsoluteIndex+1].ItemU2; // определение текущего индекса в дереве
DataModule3.ADOQuery2.Close; //закрываем запрос
//передаем в значение rc значение из SelectedIndex
DataModule3.ADOQuery2.Parameters.ParamByName('rc').Value:=SelectedIndex;
end;
procedure TForm2.Button1Click(Sender: TObject); //новое оглавление
begin
Form5.Caption:= 'Новая группа'; //задаем заголовок формы
Form5.GroupBox1.Caption:= 'Введите оглавление'; //задаем заголовок GroupBox1
Form5.Edit1.Text:= ''; //очищаем Edit1
DataModule3.ADOTable1.Insert; //задаем режим записи для таблицы 1
Form5.ShowModal; //открываем форму 5
end;
procedure TForm2.Button2Click(Sender: TObject); // новый заголовок
begin
Form5.Caption:= 'Новая группа';
Form5.GroupBox1.Caption:= 'Введите заголовок';
Form5.Edit1.Text:= '';
DataModule3.ADOTable2.Insert;
//добавление будет происходить в список второго уровня
DataModule3.ADOTable2.FieldByName('id_oglav').AsInteger:= RObject [Form2.TreeView1.Selected.AbsoluteIndex+1].ItemU1;
Form5.ShowModal;
end;
procedure TForm2.Button4Click(Sender: TObject); // удалить рецепт
begin
DataModule3.ADOQuery2.Close;
DataModule3.ADOQuery2.Parameters.ParamByName('rc').Value:=SelectedIndex;
DataModule3.ADOQuery2.Open;
if (DataModule3.ADOTable3.IsEmpty=true) and (DataModule3.ADOQuery2.RecordCount=0) then //проверка на пустоту таблицы и количество записей в ней
ShowMessage('В разделе нет рецептов для удаления')
else
DataModule3.ADOTable3.Delete; //удаляем запись из таблицы 3
end;
procedure TForm2.Button5Click(Sender: TObject); // править рецепт
begin
Form4.DBMemo2.ReadOnly:=false;
DataModule3.ADOTable3.Edit; //устанавливаем режим редактирования для таблицы
Form4.DBEdit1.Enabled:=true; //открываем компонент для редактирования
Form4.DBEdit1.ReadOnly:=false;
Form4.DBMemo1.ReadOnly:=false;
Form4.DBMemo2.ReadOnly:=false;
Form4.DBImage1.ReadOnly:=false;
Form4.Button1.Enabled:=true;
Form4.Button2.Enabled:=true;
Form4.Button3.Enabled:=true;
Form4.Button4.Enabled:=true;
//задаем заголовок формы
Form4.Caption:='Редактирование рецепта'+DataModule3.ADOTable3.FieldByName('Name_rezepta').AsString;
//Вытаскиваем из текущей записи значение по имени поля в этой таблице
Form4.ShowModal; //открываем форму 4
end;
procedure TForm2.Button6Click(Sender: TObject); // посмотреть рецепт
begin
Form4.Caption:='Просмотр рецепта'+DataModule3.ADOTable3.FieldByName('Name_rezepta').AsString;
//Вытаскиваем из текущей записи значение по имени поля в этой таблице
Form4.ShowModal;
end;
procedure TForm2.Button3Click(Sender: TObject); // Новый рецепт
begin
Form4.DBEdit1.ReadOnly:=false;
Form4.DBMemo1.ReadOnly:=false;
Form4.DBMemo2.ReadOnly:=false;
Form4.DBImage1.Enabled:=true;
Form4.Button1.Enabled:=true;
Form4.Button2.Enabled:=true;
Form4.Button3.Enabled:=true;
Form4.Button4.Enabled:=true;
DataModule3.ADOTable3.Insert;
Form4.Caption:='Новый рецепт';
DataModule3.ADOTable3.FieldByName('id_zag').AsInteger:= SelectedIndex;
//указываем в какой поддолжна попасть новая запись таблицы
Form4.DBImage1.Picture.LoadFromFile('фото\NotFound.bmp');
Form4.ShowModal;
end;
procedure TForm2.Button7Click(Sender: TObject); // Найти рецепт
begin
form1.ShowModal;
end;
end.
--------------------------------------------------------------------------------------
unit Unit4; // форма для просмотра, создания, редактирования рецептов
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Mask, ExtDlgs;
type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
DBEdit1: TDBEdit;
DBMemo1: TDBMemo;
DBMemo2: TDBMemo;
Label4: TLabel;
DBImage1: TDBImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
OpenPictureDialog1: TOpenPictureDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit3, Unit2;
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject); //открытие обзорной папки с изображением
begin
if OpenPictureDialog1.Execute then
begin
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;
procedure TForm4.Button2Click(Sender: TObject); //удаление изображение и вставка изображения - NotFound - Нет изображения
begin
DBImage1.Picture.LoadFromFile(`фото\NotFound.bmp');
end;
procedure TForm4.Button3Click(Sender: TObject); //запись произведенных изменений в базу данных
begin
DataModule3.ADOTable3.Post;
DataModule3.ADOQuery2.Close;
DataModule3.ADOQuery2.Open;
Close;
end;
procedure TForm4.Button4Click(Sender: TObject); //закрытие формы
begin
DataModule3.ADOTable3.Cancel;
Close;
end;
end.
----------------------------------------------------------------------------
unit Unit5; // форма для создания нового оглавления или заголовка
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm5 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit3, Unit2;
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
if GroupBox1.Caption = 'Введите оглавление' then //если было выбрано "Введите оглавлении" тогда
begin
//добавление в таблицу Оглавление значение из Edit1
DataModule3.ADOTable1.FieldByName('Oglavlenie').AsString:=Edit1.Text;
DataModule3.ADOTable1.Post;
//внесение произведенных изменений в запись таблицы
//переходим на форму 2
Form2.FormActivate(nil);
//для перерисовки дерева
//закрываем
Close;
end
else
begin //аналогично, если было выбрано "Введите заголовок"
DataModule3.ADOTable2.FieldByName('Zagolovok').AsString:=Edit1.Text;
DataModule3.ADOTable2.Post;
Form2.FormActivate(nil);
Close;
end;
end;
procedure TForm5.Button2Click(Sender: TObject); //выход из формы и отмена операции
begin
if GroupBox1.Caption = 'Введите оглавление' then
begin
DataModule3.ADOTable1.Cancel;
Close;
end
else
begin
DataModule3.ADOTable2.Cancel;
Close;
end;
end;
end.
--------------------------------------------------------------------------------------------
unit Unit1; // поиск рецепта
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ch:byte;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); // поиск по названию
var s:String;
begin
s:='';
//создание диалогового окна для ввода данных для поиска и передачи их в переменную s
if not InputQuery ('Поиск рецепта','Введите название рецепта',s) then exit; // здесь записывается в s то что введено с клавиатуры и форма закрывается
Form1.DBGrid1.DataSource:=DataModule3.DataSource4; // в DBGrid, который находится на форме 1 передается результат запроса через DataSource4 (который связан с ADOQuery3)
DataModule3.ADOQuery3.Active:=false; //закрытие запроса
//передача переменной s в запрос с параметром - встречается в любом месте слова
DataModule3.ADOQuery3.Parameters.ParamByName('pr').Value:=' %'+s+' %';
//запуск запроса
DataModule3.ADOQuery3.Active:=true;
ch:=1;
end;
procedure TForm1.Button2Click(Sender: TObject); // поиск по ингредиенту
var s:String;
begin
s:='';
//создание диалогового окна для ввода данных для поиска и передача их в переменную s
if not InputQuery ('Поиск рецепта','Введите ингридиент',s) then exit; // здесь записывается в s то что введено с клавиатуры и форма закрывается
Form1.DBGrid1.DataSource:=DataModule3.DataSource5; // в DBGrid, который находится на форме 1 передается результат запроса через DataSource5 (который связан с ADOQuery4)
DataModule3.ADOQuery4.Active:=false; //закрытие запроса
//передача переменной s в запрос с параметром - встречается в любом месте слова
DataModule3.ADOQuery4.Parameters.ParamByName('pr').Value:=' %'+s+' %';
DataModule3.ADOQuery4.Active:=true; //запуск запроса
ch:=2;
end;
procedure TForm1.Button3Click(Sender: TObject); // поиск по рецептуре
var s:String;
begin
s:='';
//создание диалогового окна для ввода данных для поиска и передача их в переменную s
if not InputQuery ('Поиск рецепта','Введите рецептуру',s) then exit; // здесь записывается в s то что введено с клавиатуры и форма закрывается
Form1.DBGrid1.DataSource:=DataModule3.DataSource6; // в DBGrid, который находится на форме 1 передается результат запроса через DataSource6 (который связан с ADOQuery5)
DataModule3.ADOQuery5.Active:=false; //закрытие запроса
//передача переменной s в запрос с параметром - встречается в любом месте слова
DataModule3.ADOQuery5.Parameters.ParamByName('pr').Value:=' %'+s+' %';
DataModule3.ADOQuery5.Active:=true; //запуск запроса
ch:=3;
end;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
if ch=1 then // если нажата кнопка "поиск по названию"
begin // присваиваем всем компонентам формы 4 результат запроса ADOQuery3
form4.DBEdit1.DataSource:=datamodule3.DataSource4;
form4.DBMemo1.DataSource:=datamodule3.DataSource4;
form4.DBMemo2.DataSource:=datamodule3.DataSource4;
form4.DBImage1.DataSource:=datamodule3.DataSource4;
Form4.Caption:= 'Рецепт ';
Form4.ShowModal; // показать форму 4
end;
if ch=2 then // если нажата кнопка "поиск по ингредиенту"
begin // присваиваем всем компонентам формы 4 результат запроса ADOQuery4
form4.DBEdit1.DataSource:=datamodule3.DataSource5;
form4.DBMemo1.DataSource:=datamodule3.DataSource5;
form4.DBMemo2.DataSource:=datamodule3.DataSource5;
form4.DBImage1.DataSource:=datamodule3.DataSource5;
Form4.Caption:= 'Рецепт ';
Form4.ShowModal; // показать форму 4
end;
if ch=3 then // если нажата кнопка "поиск по рецепту"
begin // присваиваем всем компонентам формы 4 результат запроса ADOQuery5
form4.DBEdit1.DataSource:=datamodule3.DataSource6;
form4.DBMemo1.DataSource:=datamodule3.DataSource6;
form4.DBMemo2.DataSource:=datamodule3.DataSource6;
form4.DBImage1.DataSource:=datamodule3.DataSource6;
Form4.Caption:= 'Рецепт ';
Form4.ShowModal; // показать форму 4
end;
end;
end.
-----------------------------------------------------------------------------
unit Unit3;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDataModule3 = class(TDataModule)
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOTable2: TADOTable;
ADOTable3: TADOTable;
DataSource2: TDataSource;
DataSource3: TDataSource;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
ADOTable2id_zag: TAutoIncField;
ADOTable2Zagolovok: TWideStringField;
ADOTable2id_oglav: TIntegerField;
ADOTable3id_reepta: TAutoIncField;
ADOTable3id_zag: TIntegerField;
ADOTable3Name_rezepta: TWideStringField;
ADOTable3Ingridient: TMemoField;
ADOTable3Receptura: TMemoField;
ADOTable3Foto: TBlobField;
ADOQuery3: TADOQuery;
DataSource4: TDataSource;
ADOQuery4: TADOQuery;
ADOQuery5: TADOQuery;
DataSource5: TDataSource;
DataSource6: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule3: TDataModule3; //datamodule3 - это так называемый пакет, в котором
//хранятся компоненты для связи делфи с базой
implementation
uses Unit2;
{$R *.dfm}
end.
Размещено на Allbest.ru
Подобные документы
Разработка базы данных "Аптека" в Microsoft Access, построение ее визуальной части в Delphi. Технологии связывания Microsoft Access со средой программирования Delphi. Создание запросов поисков. Реализация таблиц: продавцы, товары, чеки, поставка, счета.
курсовая работа [3,7 M], добавлен 04.03.2014Возможности Microsoft Access, типы данных, оценка степени безопасности, принципы защиты информации. Инфологическое проектирование базы данных. Основные преимущества Office Access 2007. Разработка и описание пользовательского интерфейса, решаемые задачи.
курсовая работа [1,5 M], добавлен 28.04.2014Разработка структуры информационной системы с использованием СУБД MS Access. Моделирование бизнес-процессов с помощью IDEF0-диаграмм. Проектирование приложения в среде Delphi. Физическая реализация структуры базы данных. Создание интерфейса системы.
отчет по практике [3,4 M], добавлен 07.01.2015Проектирование модели данных и ее реализация средствами СУБД Microsoft Access. Разработка приложения "Комиссионное вознаграждение". Выполение интерфейса информационной базы средствами системы управления данными. Создание запросов и отчетных форм.
курсовая работа [5,8 M], добавлен 25.09.2013Понятие информационной системы. Основное определение базы данных (БД). Системы управления базами данных. Популярность СУБД Microsoft Access. Характеристика СУБД MySQL. Особенности разработки информационной системы по курсу вычислительной математики.
курсовая работа [785,8 K], добавлен 05.10.2012Разработка информационной системы, позволяющей повысить эффективность управления деятельностью автосервиса за счет использования современных компьютерных технологий. Построение базы данных в Microsoft SQL Server. Описание пользовательского интерфейса.
дипломная работа [417,5 K], добавлен 27.01.2009Общие понятия реляционного похода к базам данных. Разработка программы для автоматизации функций руководителя салона сотовой связи. Детализация бизнес-процессов. Интерфейс для работы пользователя. Тестирование разработанной информационной системы.
курсовая работа [2,2 M], добавлен 26.06.2012Основные компоненты, используемые при создании информационно-справочной системы "Музыкальная школа". Разработка базы данных в MS Access и информационной системы в C++Builder. Соединение базы данных, опции создания отчёта и добавление записей в таблицу.
курсовая работа [953,9 K], добавлен 15.01.2013Реализация информационно-справочной системы на языке программирования C#. ее тестирование и отладка. Назначение, состав и структура программы "Адресная книга", описание операций. Программные и аппаратные требования к системе. Блок-схема и код программы.
курсовая работа [709,5 K], добавлен 11.06.2019Анализ предметной области разрабатываемой информационной системы "Библиотека". Проектирование базы данных в среде MS Access. Физическая реализация данной информационной системы средствами Delphi 7 и MS Access 2003. Области применения технологии BDE.
курсовая работа [2,4 M], добавлен 12.01.2016