База данных учета размещения и услуг гостиницы-отеля

Курсовая работа

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

В соответствии с заданием, в данном курсовом проекте производится разработка базы данных учета размещения постояльцев и оказания услуг гостиницы-отеля «Баташев».

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

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


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

Корпоративные информационные системы (ERP).

Примерами таких систем являются 1С: Предприятие, Oracle E-Business Suite, SAP R/3. Данные продукты являются платформой для разработки информационной системы на их основе.

Системы управления заказами, системы управления взаимодействия с клиентами (CRM-системы) — корпоративные информационные системы, предназначенные для автоматизации CRM-стратегии компании, в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путём сохранения информации о клиентах (контрагентах <#»699331.files/image001.gif»>

  • Рисунок 3.1 — Логическая модель базы данных

Сущность «Вид услуг» имеет следующие атрибуты:

  • Наименование вида услуги;
  • Текущая стоимость услуги.

Сущность «Клиент» может характеризовать как клиентов-физических лиц, так и юридических лиц. Данная сущность имеет следующие атрибуты:

4 стр., 1709 слов

Туристские услуги, туристская индустрия

... Сущность и содержание туристской индустрии. 2.1. Показать отличия туристской индустрии от других отраслей экономики. В соответствии с Федеральным Законом РФ от 24.11.96 г. «Об основах туристской деятельности в Российской Федерации» туристская индустрия ... и турагентскую деятельность, операторов туристских информационных систем, а также организаций, предоставляющих услуги экскурсоводов (гидов), гидов- ...

  • Наименование юр. лица или ФИО физического лица;
  • Серия паспорта (для физических лиц);
  • Номер паспорта (для физических лиц);
  • Данные о выдаче паспорта (для физических лиц);
  • ИНН (для юридических и физических лиц);
  • КПП (для юридических лиц);
  • Расчетный счет (для юридических лиц).

Предварительное бронирование номеров осуществляется с помощью записей в журнале бронирования. Запись в журнале бронирования представляется с помощью сущности «Бронирование номера», имеющей следующие атрибуты:

  • Дата бронирования;
  • Дата заезда;
  • Дата выезда;
  • Дополнительное примечание;
  • Клиент;
  • Бронируемый номер.

Для бронирования каждого номера создается отдельная запись о бронировании. При этом один и тот же номер за все время может быть забронирован любое количество раз. Следовательно, между сущностями «Бронирование номера» и «Номер» имеется отношение вида «Один-ко-многим».

В запись о бронировании номера вносятся сведения о клиенте бронирующем номер. При этом один клиент в разное время может забронировать несколько номеров. Следовательно, между сущностями «Бронирование номера» и «Клиент» существует отношение вида «Один-ко-многим».

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

  • Счет за проживание;
  • Счет за услуги.

Сущность «Счет за проживание» имеет следующие атрибуты:

  • Номер счета;
  • Дата выписки счета;
  • Дата заезда в номер;
  • Дата выезда из номера;
  • Номер в котором осуществляется проживание;
  • Стоимость номера;
  • Номер записи предварительного бронирования.

В одном номере может проживать несколько человек, если номер многоместный. При этом один и тот же клиент в разное время может проживать в разных номерах. Следовательно, между сущностями «Клиент» и «Счет за проживание» имеется отношение вида «Многие-ко-многим». Данное отношение необходимо привести к третьей нормальной форме за счет введения дополнительной сущности «Проживание в номере», имеющей следующие атрибуты:

  • Клиент;
  • Номер счета за проживание.

Введение данной сущности позволит включить в один счет за проживание несколько проживающих лиц.

Сущность «Счет за услуги» имеет следующие атрибуты:

  • Номер счета;
  • Дата выписки счета;
  • Клиент.

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

  • Вид услуги;
  • Номер счета за услуги;
  • Цена оказания услуги;
  • Введение данной сущности позволит включить в один счет за услуги несколько различных услуг.

Перечень отношений между сущностями приведен в таблице 3.1.

Таблица 3.1 — Отношения между сущностями в базе данных

Название сущности 1

Название сущности 2

Вид отношения

Описание

Номер

Вид номера

1: ∞

По полю «Код вида номера»

Бронирование номера

Номер

1: ∞

По полю «Код номера»

Счет за проживание

Номер

1: ∞

По полю «Код номера»

Счет за проживание

Бронирование номера

1: 1

По полю «№ записи в журнале бронирования» (необязательная связь)

Бронирование номера

Клиент

1: ∞

По полю «Код клиента»

Проживание в номере

Клиент

1: ∞

По полю «Код клиента»

Проживание в номере

Счет за проживание

1: ∞

ПО полю «№ счета за проживание»

Счет за услуги

Клиент

1: ∞

По полю «Код клиента»

Оказание услуг

Счет за услуги

1: ∞

По полю «№ счета за услуги»

Оказание услуг

Вид услуг

1: ∞

По полю «Код вида услуг»

На основе разработанной логической модели, получена структура таблиц, входящих в базу данных. Структура таблиц данных приведена на логической модели данных (рисунок 3.1).

Разработка физической модели данных выполняется согласно разработанной логической модели (структуре базы данных).

База данных создается на сервере СУБД MySQL. Создание базы данных подразумевает создание следующих объектов на сервере СУБД:

база данных;

таблицы;

поля таблиц.

СУБД MySQL позволяет работать со следующими основными типами данных:

CHAR: символьный фиксированной длины;

VARCHAR: текстовый переменной длины;

NUMBER: числовой с задаваемой точностью;

DOUBLE: числовой с плавающей точкой;

DECIMAL: числовой с фиксируемой точностью;

INTEGER: целочисленный;

DATE: дата;

DATE_TIME: дата и время.

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

 1

Рисунок 3.2 — Физическая структура базы данных

Номер:

Номер комнаты: текстовый, 5 знаков;

Этаж: целочисленный;

Вид номера: целочисленный, по коду.

Вид номера:

Наименование вида номера: текстовый, 100 знаков;

Текущая цена проживания за 1 сутки: с фиксированной точностью до 2-х знаков.

Вид услуг:

Наименование вида услуги: текстовый, 100 знаков;

Текущая стоимость услуги: с фиксированной точностью до 2-х знаков.

Клиент:

Наименование или ФИО физического лица: текстовый, 100 знаков;

Серия паспорта: текстовый, 4 знака;

Номер паспорта: текстовый, 6 знаков;

Данные о выдаче паспорта: текстовый, 100 знаков;

ИНН: текстовый, 30 знаков;

КПП: текстовый, 30 знаков;

Расчетный счет: текстовый, 100 знаков.

Бронирование номера:

Дата бронирования: дата и время;

Дата заезда: дата;

Дата выезда: дата;

Дополнительное примечание: текстовый, 200 знаков;

Клиент: целочисленный (по коду);

Бронируемый номер: целочисленный (по коду).

Счет за проживание:

Номер счета: целочисленный;

Дата выписки счета: дата;

Дата заезда в номер: дата;

Дата выезда из номера: дата;

Номер в котором осуществляется проживание: целочисленный (по коду);

Стоимость номера: с фиксированной точностью до 2-х знаков;

Номер записи предварительного бронирования: целочисленный.

Проживание в номере:

Клиент: целочисленный (по коду);

Номер счета за проживание: целочисленный.

Счет за услуги:

Номер счета: целочисленный;

Дата выписки счета: дата;

Клиент: целочисленный (по коду).

Оказание услуг:

Вид услуги: целочисленный (по коду);

Номер счета за услуги: целочисленный;

Цена оказания услуги: с фиксированной точностью до 2-х знаков;

Количество раз оказания услуги: с фиксированной точностью до 2-х знаков.


Объекты базы данных создаются на сервере СУБД MySQL. Создание объектов базы данных выполняется с помощью языка SQL-запросов. Все SQL-запросы для создания объектов в базе данных получены с помощью автоматической генерации скриптов в программе ER-Win на основе построенной физической модели.

SQL-запрос для создания базы данных следующий:

CREATE DATABASE «HOTEL»

Каждая таблица в базе данных может быть создана с помощью SQL-оператора следующего синтаксиса:

CREATE TABLE table_name

(column_1 data_type,_2 data_type,

…,_KEY (column_1)

)

где table_name — имя создаваемой таблицы;

column_1, column_2 — имена полей таблицы;

data_type — тип данных для поля;

PRIMARY_KEY (имя_поля) — создание первичного ключа.

Таблица APPARTMENT_CUST («Счет за проживание») создана с помощью следующего SQL-запроса:

CREATE TABLE IF NOT EXISTS `appartment_cust` (

`ID` int (10) NOT NULL auto_increment,

`CUST_DATE` date NOT NULL,

`APPARTMENT_ID` int (11) NOT NULL,

`START_DATE` date NOT NULL,

`END_DATE` date NOT NULL,

`APPARTMENT_PRICE` decimal (10,2) NOT NULL,

`APPARTMENT_RESERV_REC_ID` int (11) default NULL,KEY (`ID`)

)

Таблица APPARTMENT_CUST_DETAIL («Проживание в номере») создана с помощью следующего SQL-запроса:

CREATE TABLE IF NOT EXISTS `appartment_cust_detail` (

`APPARTMENT_CUST_ID` int (10) NOT NULL,

`CUSTOMER_ID` int (10) NOT NULL,KEY (`APPARTMENT_CUST_ID`,`CUSTOMER_ID`)

)

Таблица APPARTMENT_RESERV («Бронирование номера») создана с помощью следующего SQL-запроса:

CREATE TABLE IF NOT EXISTS `appartment_reserv` (

`REC_ID` int (10) NOT NULL auto_increment,

`CUSTOMER_ID` int (10) NOT NULL,

`APPARTMENT_ID` int (10) NOT NULL,

`START_DATE` date NOT NULL,

`END_DATE` date NOT NULL,

`ADDITIONAL_NOTE` varchar (200) default NULL,KEY (`REC_ID`)

)

Таблица CUST («Счет за услуги») создана с помощью

CREATE TABLE IF NOT EXISTS `cust` (

`ID` int (10) NOT NULL auto_increment,

`CUST_DATE` date NOT NULL,

`CUSTOMER_ID` int (11) NOT NULL,KEY (`ID`)

)

Таблица CUSTOMER («Клиент») создана с помощью

CREATE TABLE IF NOT EXISTS `customer` (

`ID` int (10) NOT NULL auto_increment,

`CUSTOMER_NAME` varchar (100) NOT NULL,

`PASSPORT_SER` varchar (4) default NULL,

`PASSPORT_NUM` varchar (6) default NULL,

`PASSPORT_DATA` varchar (100) default NULL,

`INN` varchar (30) default NULL,

`KPP` varchar (30) default NULL,

`BANK_REQ` varchar (100) default NULL,KEY (`ID`)

)

Таблица CUST_DETAIL («Оказание услуги») создана с помощью

CREATE TABLE IF NOT EXISTS `cust_detail` (

`CUST_ID` int (10) NOT NULL,

`SERVICE_ID` int (10) NOT NULL,

`QUANTITY` decimal (10,2) NOT NULL default ‘1.00’,

`PRICE` decimal (10,2) NOT NULL default ‘0.00’,KEY (`CUST_ID`,`SERVICE_ID`)

)

Таблица SPR_APPARTMENT («Номер») создана с помощью следующего SQL-запроса:

CREATE TABLE IF NOT EXISTS `spr_appartment` (

`ID` int (10) NOT NULL auto_increment,

`APPARTMENT_TYPE_ID` int (10) NOT NULL,

`ROOM_NUMBER` varchar (5) NOT NULL,

`LEVEL_NUMBER` int (5) NOT NULL,KEY (`ID`)

)

Таблица SPR_APPARTMENT_TYPE («Вид номера») создана с помощью

CREATE TABLE IF NOT EXISTS `spr_appartment_type` (

`ID` int (10) NOT NULL auto_increment,

`NAME` varchar (100) NOT NULL,

`SIZING` int (10) NOT NULL,

`PRICE` decimal (10,2) NOT NULL,KEY (`ID`)

)

Таблица SPR_SERVICE («Вид услуги») создана с помощью

CREATE TABLE IF NOT EXISTS `spr_service` (

`ID` int (10) NOT NULL auto_increment,

`SERVICE_NAME` varchar (100) NOT NULL,

`PRICE` decimal (10,2) NOT NULL,KEY (`ID`)

)

Ограничения целостности данных по внешним ключам не поддерживаются используемой версией сервера MySQL (версия 5.2, ENGINE=MyISAM).

Данные ограничения реализованы программным способом на стороне клиентского приложения средствами технологии доступа к данным ADO.net.

Отчет «Прайс-лист на услуги» является простейшей выборкой из справочника услуг и реализован с помощью следующего SQL-запроса:

select service_name «Наименование услуг»,»Цена»spr_service

Отчет «Прайс-лист на проживание» реализован с помощью следующего SQL-запроса:

select apt. name «Категория номеров»,

apt. sizing «Количество мест»,

apt. price «Цена, руб. «,

(select count (*) from spr_appartment where appartment_type_id=apt. ID)»Количество номеров»,spr_appartment_type aptby «Количество номеров» desc, sizing, price

Отчет «Предоставление услуг» реализован с помощью

select c. ID «Счет №»,

c. cust_date «Дата счета»,

cs. CUSTOMER_NAME «Клиент»,

s. SERVICE_NAME «Наименование услуг»,

cd. PRICE «Цена, руб. «,

cd. QUANTITY «Количество»,

cd. PRICE*cd. QUANTITY «Сумма, руб. «

from cust_detail cdspr_service s on cd. service_id=s. idcust c on c. id=cd. CUST_IDcustomer cs on c. CUSTOMER_ID=cs. IDc. cust_date>=@start_date and c. cust_date<@end_date

order by c. id

Приложение для работы с базой данных построено на платформе.net Framework версии 3.5 Программа написана на языке C# в среде разработки Microsoft Visual Studio.net.

Для доступа к серверу базы данных MySQL используются сборки MySQL Connector версии 6.3 Работа с данными осуществляется по технологии ADO.net. Концепция доступа к данным в ADO.net основана на использовании двух компонентов:

ПРОВАЙДЕРА ДАННЫХ (представляется объектом класса DataProvider).

Это посредник, обеспечивающий взаимодействие приложения и базы данных со стороны базы данных (в распределенных приложениях — со стороны сервера).

 2

Рисунок 4.1 — Структура доступа к данным в приложении

Объектная модель ADO.net предполагает существование (при написании приложения для работы с базой данных — использование) двух множеств классов, выполняющих четко определенные задачи при работе с базой данных:

 3

Рисунок 4.2 — Объектная модель доступа к данным


База данных учета размещения и услуг гостиницы-отеля «Баташев» разработана в соответствии с заданием на курсовой проект.

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

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


1. Брауде Э. Дж. Технология разработки программного обеспечения. — СПб.: Питер, 2004. — 655с.

2. Вендеров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. — М.: Финансы и статистика, 1998. — 340с.

. Дж. Грофф, П. Вайнберг. SQL: Полное руководство: Пер. с англ. — 2-е изд., перераб. и доп. — К.: Издательская группа BHV, 2001. — 816 с., ил.

. MySQL Руководство по изучению языка. Издательство ДМК Пресс; Питер; 2004 г. — 352 с.

. MySQL Библиотека профессионала. Издательство Диалектика; 2002 г. — 624 с.

. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft.net Framework 2.0 на языке C#. Мастер-класс. /Пер. с англ. — М.: Издательство «Русская Редакция»; СПб.: Питер, 2007. — 656 стр.: ил.