Министерство топлива и энергетики Украины
Севастопольский национальный университет ядерной энергии и промышленности
Кафедра КЭЭМ
Лабораторная работа №5
По дисциплине: « Организация баз данных и знаний»
Выполнил:
студент кл.
Проверил: преподаватель
Гончаренко Ю.Ю.
Севастополь
2010
Цель работы: научиться создавать сложные запросы в БД с помощью MDI приложения с использованием компонентов BDS.
Теоретические сведения
Ход выполнения работы:
Создаем в нашем MDI приложении (см. л.р. №4) еще одно исполняемое окно «Запросы», в котором будем реализовывать наши сложные запросы в БД:
Создаем связь окна с родительской формой через Object Inspector, где также указываем что это форма вызываемая родительской независима от нее, т.е. делает окно всегда остающимся на экране поверх остальных окон не только данного приложения, но и всех других приложений, в которые может перейти пользователь (свойство formstyle/fsStayOnTop). На рабочее оно выносим компоненты DbGrid1, Query1, DataSource1, Button1, Button2, Edit1. Для этих компонентов создаем определенную связь и производим все необходимые запросы, где получаем следующий вид нашей формы:
После того как все настройки произведены, реализовываем запросы в БД в соответствии с вариантом (в данном случае Гостиничный комплекс, см. приложение А).
Запросы:
1-й запрос: перечень фирм с забронироваными местами > 20
select Nazvanie_org, kol_nomerov from zakazchik, bron1 where(bron1.id_zakazchik=zakazchik.id_zak) AND (bron1.kol_nomerov>20)
2-й запрос: перечень постояльцев прожывающих в номерах типа "оптимальный"
select FIO, id_nomer, Time_zaseleniya from clients, nomer, time where (nomer.id_type=2) and (clients.id=time.id_client) and (nomer.id_client=clients.id)
3-й запрос: кол-во свободных номеров на данный момент
select id_nomer from nomer where (id_client=0)
4-й запрос: кол-во свободных номеров типа «люкс»
select id_nomer from nomer where (id_client=0) and(nomer.id_type=1)
5-й запрос: Характеристика номера №5
select Etazh, Mestnost1,Class, Vid from nomer, korpus,vid_nomera where (nomer.id_korp=korpus.id_korp)and(nomer.id_type=vid_nomera.id)and(nomer.id_nomer=5)
6-й запрос: Список занятых номеров
select id_nomer, Time_zaseleniya, Time_projivaniya from nomer, time where (time.id_client=nomer.id_client)
8-й запрос: Список клиентов и их жалоб
select FIO, Soderganie from clients, zhalobu where (clients.id=zhalobu.id_client)
10-й запрос: Сведенья о постояльце, его жалобах услугах и счетах
select FIO, Soderganie,type_uslygi.Nazvanie, type_uslygi.Cena, uslygi.Data from clients, zhalobu, type_uslygi, uslygi where (clients.id=2) and (zhalobu.id_client=clients.id) and (type_uslygi.id_type=clients.id) and (uslygi.id_type=clients.id)
11-й запрос: Сведенья о наибольших заказчиках
select Nazvanie_org, Data from zakazchik, bron1 where (zakazchik.id_zak=bron1.id_zakazchik) and (bron1.kol_nomerov>15)
14-й запрос: сведенья о конкретном человеке
select FIO, Time_zaseleniya, id_nomer,Vid, Nazvanie, Data, Cena from clients, time, nomer, vid_nomera, uslygi, type_uslygi where (clients.id=3) and (clients.id=time.id_client) and (clients.id=nomer.id_client) and (nomer.id_type=vid_nomera.id) and (uslygi.id_type=type_uslygi.id_type) and (clients.id=uslygi.id_client)
15-й запрос: сведенья о конкретном номере
select id_korp, Etazh, Mestnost1, Vid, FIO, Time_zaseleniya, Time_projivaniya from nomer, vid_nomera, clients, time where (clients.id=4) and (clients.id=nomer.id_client) and (clients.id=time.id_client) and (nomer.id_type=vid_nomera.id)
Листинг исполняемой формы: unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids, ComCtrls, ToolWin, ExtCtrls, Menus; type TForm3 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; Button1: TButton; Button2: TButton; Query1: TQuery; Edit1: TEdit; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; s: string; implementation {$R *.dfm} //Процедура кнопки закрытия окна procedure TForm3.Button1Click(Sender: TObject); begin close; end; //Процедура кнопки запроса procedure TForm3.Button2Click(Sender: TObject); begin Query1.Close(); Query1.SQL.Clear(); s:=Edit1.Text; Query1.SQL.Add(s); Query1.Open(); end; end. |
Вывод: в данной лабораторной работе мы научились создавать сложные запросы в базу данных с помощью MDI приложения, а также выполнять различные элементы управления.
Список используемой литературы:
1. Конспект лекций по ОБД;
2. А.Я. Архангельский Программирование в Delphi 7;
3. Дюбуа Поль – MySQL;
4. http://www.mysql.ru/docs/gruber/
Приложение А
Информационная система гостиничного комплекса
Гостиничный комплекс состоит из нескольких зданий-гостиниц (корпусов). Каждый корпус имеет ряд характеристик, таких, как класс отеля ( двух–, пятизвездочные), количество этажей в здании, общее количество комнат, комнат на этаже, местность номеров (одно-, двух–, трехместные и т.д.), наличие служб быта: ежедневная уборка номера, прачечная, химчистка, питание (рестораны, бары) и развлечения (бассейн, сауна, бильярд и пр.). От типа корпуса и местности номера зависит сумма оплаты за него. Химчистка, стирка,
дополнительное питание, все развлечения производятся за отдельную плату.
С крупными организациями ( туристические фирмы, организации, занимающиеся проведением международных симпозиумов, конгрессов, семинаров, карнавалов и т.д.) заключаются договора, позволяющие организациям бронировать номера с большими скидками на определенное время вперед не для одного человека, а для группы людей. Каждая из перечисленных групп организаций обладает характеристиками, свойственными только этой группе. Желательно группы людей от одной организации не расселять по разным этажам. В брони указывается класс отеля, этаж, количество комнат и общее количество людей. Броня может быть отменена за неделю до заселения. На основе маркетинговых работ расширяется рынок гостиничных услуг, в результате чего заключаются договора с новыми фирмами. Также исследуется мнение жильцов о ценах и сервисе. Жалобы фиксируются и исследуются. Изучается статистика популярности номеров. Ведется учет долгов постояльца гостинице за все дополнительные услуги. Новые жильцы пополняют перечень клиентов гостиницы. Ведется учет свободных номеров, дополнительных затрат постояльцев гостиницы и учет расходов и доходов гостиничного комплекса.
Виды запросов в информационной системе:
1. Получить перечень и общее число фирм, забронировавших места в объеме, не менее указанного, за весь период сотрудничества, либо за некоторый период.
2. Получить перечень и общее число постояльцев, заселявшихся в номера с указанными характеристиками за некоторый период.
3. Получить количество свободных номеров на данный момент.
4. Получить сведения о количестве свободных номеров с указанными характеристиками.
5. Получить сведения о конкретном свободном номере: в течение какого времени он будет пустовать и о его характеристиках.
6. Получить список занятых сейчас номеров, которые освобождаются к указанному сроку.
7. Получить данные об объеме бронирования номеров данной фирмой за указанный период, и каким номерам отдавались предпочтения.
8. Получить список недовольных клиентов и их жалобы.
9. Получить данные о рентабельности номеров с определенными характеристиками: соотношение об объеме продаж номеров к накладным расходам за указанный период.
10. Получить сведения о постояльце из заданного номера: его счет гостинице за дополнительные услуги, поступавшие от него жалобы, виды дополнительных услуг, которыми он пользовался.
11. Получить сведения о фирмах, с которыми заключены договора о брони на указанный период.
12. Получить сведения о наиболее часто посещающих гостиницу постояльцах по всем корпусам гостиниц, по определенному зданию.
13. Получить сведения о новых клиентах за указанный период.
14. Получить сведения о конкретном человеке, сколько раз он посещал гостиницу, в каких номерах и в какой период останавливался, какие счета оплачивал.
15. Получить сведения о конкретном номере: кем он был занят в определенный период.
16. Получить процентное отношение всех номеров к номерам, бронируемым партнерами.