Гостиничный комплекс
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
ГОУВПО “Комсомольский-на-
Факультет компьютерных технологий
Кафедра информационных систем
Курсовая работа
по курсу:
«Базы данных»
на тему:
«Гостиничный комплекс»
Руководитель работы ______________ «____»_______________2009 г. Исполнитель студент группы ______________ «____»_______________2009 г.
|
2009 г.
Содержание
Введение
Данная курсовая работа направлена на:
- закрепление знаний и умений по дисциплине Базы данных
- выработку новых навыков в создании реляционных баз данных
- получение навыков разработки ИС
1. Задание
Разработать информационную систему гостиничного комплекса, которая несет собой следующую информацию: занятость номеров, заказ (дата заказа, дата въезда/выезда, стоимость), сведения о клиенте, занимающего тот или иной номер (ФИО, сведения о документе, удостоверяющем личность, адрес) и о самом номере (расположение, вид, стоимость периодичность обслуживания), а также использование служб быта: ежедневная уборка номера, прачечная, химчистка, питание (рестораны, бары) и развлечения (бассейн, сауна, бильярд и пр.).
Необходимо составить пакет из процедур и функций, который позволяет:
- получить перечень и общее число постояльцев, заселявшихся в номера с указанными характеристиками за некоторый период;
- получить список свободных номеров на данный момент;
- получить сведения о постояльце из заданного номера: его счет гостинице за дополнительные услуги, виды услуг, которыми он пользовался;
- получить сведения о наиболее часто посещающих гостиницу постояльцах;
- получить список занятых сейчас номеров, которые освобождаются к указанному сроку;
- получить сведения о конкретном номере: кем он был занят в определенный период.
Список требований к выполнению работы:
- Построить инфологическую концептуальную модель (ER-модель), для чего:
- Проанализировав предметную область, при необходимости уточнив и дополнив ее, выявить необходимый набор сущностей;
- Определить требуемый набор атрибутов для каждой сущности, выделив идентифицирующие атрибуты;
- Определить связи между объектами;
- Описать полученную ER-модель на языке инфологического проектирования и на языке ER-диаграмм.
- Получить реляционную схему из ER-модели, для чего:
- Построить набор необходимых отношений базы данных;
- Выделить первичные и внешние ключи определенных отношений;
- Привести полученные отношения к третьей нормальной форме;
- Определить ограничения целостности для внешних ключей отношений и для отношений в целом.
- Используя имеющуюся СУБД создать спроектированную базу данных.
- На языке SQL записать выражения для указанных в варианте задания типов запросов.
- Проверить работоспособность написанных запросов в интерактивном режиме.
2. Построение инфологической концептуальной модели (ER-модели)
В результате анализа предметной области было выделено три класса объектов: заказ, клиент, описание номера, класс обслуживания, перечень услуг и используемые услуги.
Опишем, какими свойствами обладает каждый класс объектов для нашей конкретной задачи:
- «Заказ» - номер заказа, дата заказа, дата прибытия, дата выезда, номер клиента, № номера, стоимость заказа.
- «Клиент» - ФИО, номер клиента, номер паспорта, серия, адрес, гражданство
- «Описание номера» - № номера, расположение, вид.
- «Класс обслуживания» - вид номера, стоимость номера, периодичность обслуживания.
- «Перечень услуг» - номер услуги, наименование, стоимость, ед. измерения.
- «Используемые услуги» - номер заказа, номер услуги, дата, количество, общая стоимость.
Изобразим графически каждый объект и его свойства (см. рис. 1 - 6).
Рис. 1 Изображение связи «Объект - Свойство» для объекта «Заказ»
Рис. 2 Изображение связи «Объект- Свойство» для объекта «Клиент»
Рис. 3 Изображение связи «Объект - Свойство» для объекта «Описание номера»
Рис. 4 Изображение связи «Объект - Свойство» для объекта «Класс обслуживания»
Рис. 5 Изображение связи «Объект
- Свойство» для объекта «Перечен
Рис. 6 Изображение связи «Объект
- Свойство» для объекта «
Однако инфологическая модель предполагает наличие в себе отображения не только отдельных объектов и их свойств, но также связей между различными объектами. Изобразим графически инфологическую модель всей базы данных (см. рис. 7).
Рис. 7 Инфологическая модель базы данных гостиничного комплекса
3. Построение реляционной схемы из ER-модели данных
Следующим шагом выполнения курсовой работы было построение реляционной схемы базы данных из ER-модели. Для этой цели были использованы следующие правила:
- Для каждого простого объекта и его единичных свойств строится таблица, атрибутами которой являются идентификатор объекта и реквизиты, соответствующие каждому из свойств.
- Если у объекта имеются множественные свойства, то каждому из них ставиться в соответствии отдельная таблица.
- Если между объектом и его свойствам имеется условная связь, то при отображении в реляционной модели возможны следующие варианты:
- Если многие из объектов обладают рассматриваемым свойством, то его можно хранить в базе данных так же, как и обычное.
- Если только незначительное число обладает указанным свойством, то при использовании предыдущего решения для многих записей в таблице значение соответствующего поля будет пустым. Для устранения этого недостатка выделяют отдельную таблицу, которая включает в себя идентификатор объекта и атрибут, соответствующий рассматриваемому свойству (аналогично пункту 2).
- Если у объекта имеется составное свойство, то составляющие составного свойства либо помещаются в отдельные поля реляционной таблицы, либо в одно поле.
- Если связь между объектами 1:1 и классы принадлежности обоих объектов являются обязательными, то для отображения данных объектов и связей между ними можно:
- Использовать одну таблицу, первичным ключом которой может быть идентификатор любого из двух объектов.
- Для каждого из этих объектов использовать отдельные таблицы, а связь между ними отразить включив в одну из таблиц идентификатор связанного объекта из другой таблицы.
- Если связь между объектами 1:1 и класс принадлежности одного объекта является обязательным, а другого – нет, то для каждого из этих объектов используют отдельные таблицы, а идентификатор объекта, для которого класс принадлежности является необязательным, добавляется в таблицу, соответствующую тому объекту, для которого класс принадлежности обязателен.
- Если между объектами связь 1:1 и класс принадлежности является необязательным, то следует воспользоваться тремя таблицами: по одной для каждого объекта и одну для отображения связи между ними.
- Если между объектами связь 1:М и класс принадлежности одного из них обязателен, то используют две таблицы – по одной для каждого объекта. При этом в таблицу, соответствующую объекту, класс принадлежности которого является обязательным, добавляется идентификатор второго объекта.
- Если между объектами предметной области имеется связь 1:М и оба класса принадлежности не обязательны, то поступают аналогично пункту 7 (создают три таблицы: по одной для каждого объекта и одну для связи между ними)
- Если между объектами предметной области имеется связь М:М, то для хранения информации требуется три таблицы: по одной для каждого объекта и одна для отображения связи между ними (классы принадлежности могут быть любыми).
- Агрегированному объекту, имеющему место в предметной области, ставится в соответствии одна таблица, атрибутами которой являются идентификаторы всех объектов, задействованных в данном агрегированном объекте, а так же реквизиты, соответствующие свойствам этого объекта.
Такое объединение информации в одну таблицу возможно только в том случае, если между объектами связь 1:1, если связь другая, то выделяют по одной таблице для каждого объекта и одну для связи.
- При отображении обобщенных объектов могут быть приняты разные решения:
- Всему обобщенному объекту может быть поставлена в соответствии одна таблица.
- Каждой из категорий ставится в соответствии отдельная таблица, которая содержит в себе идентификатор объекта, общие свойства и свойства данной категории.
Кроме этого, возможны и комбинированные варианты. Выбор конкретного решения будет зависеть от того, насколько часто информация о разных категориях объекта обрабатывается совместно, как велико различие видовых свойств и т.п.
- При отображении составного объекта так же возможны варианты:
- Если речь идет о составе изделий, то между изделием и деталью связь будет М:М. В этом случае – см. пункты 7, 9, 10.
- Если речь идет о составе какой-нибудь организации, то между объектами скорее всего будет связь 1:М. В этом случае – см. пункты 8, 9.
В результате применения данных рекомендаций к инфологической модели была получена следующая реляционная модель:
Заказ (Номер заказа, Дата заказа, Дата прибытия, Дата выезда, Номер клиента, № номера, Стоимость);
Клиент (ФИО, Номер клиента, Номер паспорта, Серия, Адрес, Гражданство);
Описание номера (№ Номера, Расположение, Вид);
Класс обслуживания (Вид номера, Стоимость номера, Периодичность обслуживания);
Перечень услуг (Номер услуги, Наименование, Стоимость, Ед. измерения);
Используемые услуги (Номер заказа, Номер услуги, Дата, Количество, Общая стоимость).
Проверим соответствие данной модели нормальной форме Бойса-Кодда.
Данная модель удовлетворяет 1НФ, т.к. все атрибуты всех отношений имеют и всегда будут иметь атомарные значения.
Данная модель удовлетворяет 2НФ, т.к. она удовлетворяет 1НФ и во всех отношениях имеющих сложный первичный ключ, каждый не ключевой атрибут полностью зависит от первичного ключа.
Данная модель удовлетворяет 3НФ, т.к. она удовлетворяет 2НФ и никакой не ключевой атрибут не зависит от другого не ключевого атрибута.
Данная модель удовлетворяет НФБК, т.к. она удовлетворяет 3НФ и каждый из детерминантов отношений модели является ее ключом.
4. Описание приложения
Для хранения данных было создано 6 таблиц, структура которых приведена в таблице 1.
Таблица 1. Структура таблиц
Название поля |
Тип данных |
Заказ | |
Номер заказа |
Счетчик |
Дата заказа |
Дата/время |
Дата прибытия |
Дата/время |
Дата выезда |
Дата/время |
Номер клиента |
Числовой |
№ номера |
Числовой |
Стоимость |
Денежный |
Клиент | |
Номер клиента |
Числовой |
ФИО |
Текстовый |
Номер паспорта |
Числовой |
Серия паспорта |
Числовой |
Адрес |
Текстовый |
Гражданство |
Текстовый |
Описание номера | |
№ номера |
Числовой |
Расположение |
Текстовый |
Вид номера |
Текстовый |
Класс обслуживания | |
Вид номера |
Текстовый |
Стоимость номера |
Денежный |
Периодичность обслуживания |
Текстовый |
Перечень услуг | |
Номер услуги |
Счетчик |
Наименование |
Текстовый |
Стоимость |
Денежный |
Единицы измерения |
Текстовый |
Используемые услуги | |
Номер заказа |
Числовой |
Номер услуги |
Числовой |
Дата |
Дата/время |
Количество раз |
Числовой |
Общая стоимость |
Денежный |
Для связи таблиц использовалась следующая схема, изображенная на рис. 8.
Рис. 8. Схема данных
Целостность данных обеспечена включением специальной опции «Обеспечение целостности данных», а затем ставших доступными «Каскадное обновление связанных полей» и «Каскадное удаление связанных полей», что изображено на рис. 9.
Рис. 9. Целостность данных
5. Проектирование форм, запросов и отчетов
Разработанное мною приложение состоит из 2 форм. Подробное описание создания каждой из них следует ниже.
Все формы были созданы в режиме конструктора и при помощи встроенного редактора Visual Basic для некоторых событий элементов этих форм были написаны макросы.
Форма «Клиент» создавалась для просмотра, изменения, и добавления информации о клиентах и их заказах. Данная форма включает в себя подчиненную форму «Заказ (рис. 10).
Рис. 10. Форма «Книга». Режим конструктора
Для отображения в поле «Номер» списка свободных относительно данных дат номеров был построен специальный запрос на выборку (рис. 11).
Рис. 11. Запрос по свободным номерам
При этом были использованы некоторые параметры объединения (рис. 12).
Рис 12. Окно «Параметры объединения»
Форма «Заказ услуг» предназначена для работы с информацией об услугах, которыми клиент пользовался в течение пребывания в гостинице. Данная форма содержит в себе две подчиненных формы: «Заказ» и «Используемые услуги» (рис. 13).
Рис. 13. Форма «Заказ услуг»
Помимо форм, для работы с базой данных было создано 5 запросов. Все запросы были спроектированы в мастере запросов и отредактированы в режиме конструктора.
Первый запрос называется «Все свободные номера» и определяет перечень свободных номеров на текущий момент (рис. 14).
Рис. 14 Запрос «Все свободные номера»
Следующий запрос называется «Заняты до даты». Его назначение состоит в определении занятых на текущий момент до определенного времени номеров (рис. 15).
Рис. 15. Запрос «Заняты до даты»
Третий запрос называется «Номер за время». Результатом выполнения этого запроса является список клиентов, которые проживали в этом номере в течение определенного периода времени (рис. 16).
Рис. 16. Запрос «Номер за время»
Четвертый запрос называется «Посещаемость». Он определяет тот факт, как часто клиент посещал гостиницу. И на основании этого мы получаем сведения о наиболее часто посещающих гостиницу постояльцах (рис. 17).
Рис. 17. Запрос «Посещаемость»
Наконец последний запрос называется «Номер/Клиент/Услуги». В результате выполнения запроса (рис. 18) получаем сведения об услугах, которыми пользовались клиенты данного гостиничного номера.
Рис. 18. Запрос «Номер/Клиент/Услуги»
Для отображения данных последнего запроса составим отчет с одноименным названием. В отчете пропишем сведения о постояльце из заданного номера: его счет гостинице за дополнительные услуги, виды услуг, которыми он пользовался.
6. Код программы
Подчиненная форма «Заказ» формы «Клиент»
Option Compare Database
Dim kolvo As Single
Private Sub Дата_выезда_AfterUpdate()
kolvo = [Дата_выезда] - [Дата_прибытия]
[Стоимость] = kolvo * [Стоимость_номера]
Refresh
End Sub
Private Sub Дата_прибытия_AfterUpdate()
kolvo = [Дата_выезда] - [Дата_прибытия]
[Стоимость] = kolvo * [Стоимость_номера]
Refresh
End Sub
Private Sub Номер_номера_AfterUpdate()
kolvo = [Дата_выезда] - [Дата_прибытия]
[Стоимость] = kolvo * [Стоимость_номера]
Refresh
End Sub
Private Sub Номер_номера_Click()
End Sub
Подчиненная форма «Заказ» формы «Заказ услуг»
Option Compare Database
Sub Form_Current()
Dim ParentDocName As String
On Error Resume Next
ParentDocName = Me.Parent.Name
If Err <> 0 Then
GoTo Form_Current_Exit
Else
On Error GoTo Form_Current_Err
Me.Parent![Используемые услуги подчиненная форма].Requery
End If
Form_Current_Exit:
Exit Sub
Form_Current_Err:
MsgBox Error$
Resume Form_Current_Exit
End Sub
Подчиненная форма «Используемые услуги» формы «Заказ услуг»
Option Compare Database
Private Sub Дата_Change()
Refresh
If [Дата] < Forms![Заказ
услуг]![Заказ подчиненная
MsgBox "Дата не соответствует времени вашего пребывания в гостинице.", vbExclamation
[Дата].Value = ""
End If
End Sub
Private Sub Количество_раз_AfterUpdate()
[Общая стоимость] = [Стоимость] * [Количество раз]
Refresh
End Sub
Private Sub Номер_услуги_AfterUpdate()
[Общая стоимость] = [Стоимость] * [Количество раз]
Refresh
End Sub
7. Тестирование базы данных
Запустим разработанное
Взаимодействие с пользователем осуществляется при помощи форм и запросов. Подробное их описание следует ниже.
Откроем форму «Клиент», которая предназначена для работы с информацией о клиентах и заказах (рис. 19).
Рис. 19. Форма «Книга»
Первоначально вводится информация о клиенте (ФИО, номер и серия паспорта, адрес, гражданство), а затем на подчиненной форме вводятся сведения о самом заказе. В поле со списком «Номер» пользователь может выбрать один из свободных на текущий момент номеров или же изменить свой выбор. В последнем случае информация об общей стоимости заказа обновиться.
Заполнив сведения о клиенте и заказе мы можем перейти к форме «Заказ услуг» (рис. 20), которая позволяет оформлять на клиента любые услуги, предоставляемые гостиницей.
Рис. 20. Форма «Заказ услуг»
Подчиненная форма «Заказ» содержит неизменную информацию, которая отображает некоторые сведения о заказе. В подчиненной форме «Используемые услуги» в поле со списком «Номер услуги» пользователь может выбрать любую доступную услугу. Некоторые сведения о ней автоматически появятся в соответствующих полях. В поле «Дата» ведется проверка на значение: дата должна соответствовать времени пребывания клиента в гостинице (в противном случае будет выдано сообщение об ошибке и просьба повторить ввод).
Помимо форм, важную роль играют запросы.
Так, нажав на запрос о свободных номерах, пользователь в любой момент может узнать список незанятых номеров на текущий момент (рис. 21).
Рис. 21 Список свободных номеров
Или наоборот, щелкнув по запросу «Заняты до даты», пользователь сможет узнать перечень номеров, занятых до определенной даты календаря (рис. 22).
Рис. 22. Постановка даты
Рис. 23 Выполнение запроса «Заняты до даты»
Следующим на очереди идет запрос «Номер за время». После нажатия на запрос пользователю будет предложено несколько окон ввода (Введите номер номера, Введите начальную дату, Введите конечную дату). После ввода появиться таблица, характеризующая занятость номера в течение определенного периода времени (рис. 24).
Рис. 24. Выполнение запроса «Номер за время»
Последним запросом является «Посещаемость». В результате выполнения этого запроса на экране отображаются сведения о регулярности посещения гостиницы теми или иными клиентами (рис. 25). На основании этой информации можно сделать вывод о наиболее часто посещающих гостиницу постояльцах.
Рис. 25. Выполнение запроса «Посещаемость»
Кроме всего вышеперечисленного, немалое
значение имеет отчет «Номер/Клиент/
Рис. 26. Отчет «Номер/Клиент/Услуги»
Заключение
В результате выполнения курсовой работы мною была создана база данных, содержащая следующую информацию: занятость номеров, заказ (дата заказа, дата въезда/выезда, стоимость), сведения о клиенте, занимающего тот или иной номер (ФИО, сведения о документе, удостоверяющем личность, адрес) и о самом номере (расположение, вид, стоимость периодичность обслуживания), а также использование служб быта: ежедневная уборка номера, прачечная, химчистка, питание (рестораны, бары) и развлечения (бассейн, сауна, бильярд и пр.).
Разработан пакет, состоящий из процедур и функций, позволяющий:
- получить перечень и общее число постояльцев, заселявшихся в номера с указанными характеристиками за некоторый период;
- получить список свободных номеров на данный момент;
- получить сведения о постояльце из заданного номера: его счет гостинице за дополнительные услуги, виды услуг, которыми он пользовался;
- получить сведения о наиболее часто посещающих гостиницу постояльцах;
- получить список занятых сейчас номеров, которые освобождаются к указанному сроку;
- получить сведения о конкретном номере: кем он был занят в определенный период.
А также закреплены знания и умения по дисциплине «Базы данных», получены навыки разработки ИС, выработаны новые навыки для разработки реляционных баз данных.
Список использованной литературы
- Лекции по курсу «Базы данных» – Д.Н. Кузнецов, 2007.
- Карпов Б. «Microsoft Access 2000 Справочник» – СПб: Питер, 2001.

- Гостиничный менеджмент
- Гостиничный номер в стиле модерн
- Гостиничный рынок Росси и мира
- Гостиничный рынок Санкт-Петербурга и его статистическое исследование
- Гостиничный сегмент недвижимости
- Гостиничный сервис
- Гостиничный сервис
- Гостиничный бизнес
- Гостиничный бизнес в Казахстане
- Гостиничный бизнес в РБ
- Гостиничный бизнес в России
- Гостиничный бизнес Нижнего Новгорода: проблемы и перспективы развития
- Гостиничный бизнес «Соловьиная Роща»
- Гостиничный и ресторанный сервис в туризме