База данных учета размещения и услуг гостиницы-отеля
В настоящее время происходит изменение технологии обработки информации. Во всех организациях происходит переход на безбумажный документооборот, который позволяет увеличить скорость и эффективность обработки информации. Средства информатизации стали необходимыми многим работникам разных уровней, ранее не имевших никакого отношения к ЭВМ, информационным технологиям и информации вообще. Эти средства… Читать ещё >
База данных учета размещения и услуг гостиницы-отеля (реферат, курсовая, диплом, контрольная)
Аннотация
В данном курсовом проекте в соответствии с заданием разработана база данных учета размещения и услуг гостиницы-отеля «Баташев». Произведён краткий обзор существующих на сегодняшний день методов решения поставленной задачи. Разработана структура базы данных и реализована база данных на СУБД MySQL. Разработано приложение для работы с базой данных.
- Введение
- 1. Анализ технического задания
- 1.1 Обзор методов решения поставленной задачи
- 1.2 Обоснование выбора средств реализации базы данных
- 2. Анализ предметной области
- 3. Проектирование базы данных
- 3.1 Разработка логической модели базы данных
- 3.2 Разработка физической модели данных
- 4. Реализация базы данных
- 4.1 Реализация SQL-запросов для создания объектов в БД
- 4.2 Реализация SQL-запросов для получения отчетов
- 4.3 Реализация приложения для работы с базой данных
- Заключение
- Список литературы
В настоящее время происходит изменение технологии обработки информации. Во всех организациях происходит переход на безбумажный документооборот, который позволяет увеличить скорость и эффективность обработки информации. Средства информатизации стали необходимыми многим работникам разных уровней, ранее не имевших никакого отношения к ЭВМ, информационным технологиям и информации вообще. Эти средства все более широко внедряются в народное хозяйство, социальную сферу, образование и культуру, а также во все промышленные и непромышленные сферы. На создание, приобретение и внедрение программных, технических, информационных и технологических средств информатизации в мире уже затрачены огромные материальные, временные и трудовые ресурсы, которые будут затрачиваться в возрастающих масштабах и в будущем.
В соответствии с заданием, в данном курсовом проекте производится разработка базы данных учета размещения постояльцев и оказания услуг гостиницы-отеля «Баташев» .
Целью данного проекта является разработка базы данных для обеспечения автоматизации ведения учета номерного фонда, бронирования номеров, размещения постояльцев и оказания дополнительных услуг в гостинице.
Для решения частных и точно сформулированных задач подчас нет смысла использовать масштабные приложения. Программа обеспечивает доступ к базе данных из любого места. С помощью приложения бизнес процесс организации может стать более прозрачным, как для руководства, так и для сотрудников обеспечивающих работу с клиентами.
В ходе выполнения проекта будет разработана логическая и физическая модель базы данных, произведена реализация базы данных в СУБД MySQL и будет разработано приложение на языке C# для работы с базой данных.
1. Анализ технического задания
1.1 Обзор методов решения поставленной задачи
Разрабатываемая база данных не является уникальной и имеет ряд коммерческих аналогов. Аналогичные программные продукты можно разделить на следующие группы.
Корпоративные информационные системы (ERP). Примерами таких систем являются 1С: Предприятие, Oracle E-Business Suite, SAP R/3. Данные продукты являются платформой для разработки информационной системы на их основе.
Системы управления заказами, системы управления взаимодействия с клиентами (CRM-системы) — корпоративные информационные системы, предназначенные для автоматизации CRM-стратегии компании, в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путём сохранения информации о клиентах (контрагентах) и истории взаимоотношений с ними, установления и улучшения бизнес-процедур и последующего анализа результатов.
Поддержка этих бизнес-целей включает сбор, хранение и анализ информации о потребителях, поставщиках, партнёрах, а также о внутренних процессах компании. Функции для поддержки этих бизнес-целей включают продажи, маркетинг, поддержку потребителей, управление качеством, обучение и повышение квалификации сотрудников компании, найм и развитие персонала, управление мотивацией персонала. Технологии для поддержки модели CRM должны являться частью общей клиентоориентированной стратегии компании.
Рассмотренные решения требуют больших временных и ресурсных затрат на внедрение и имеют высокую стоимость. Кроме всего, приведенный выше обзор аналогичных продуктов других производителей показал, что:
некоторые приложения не имеют достаточно гибкой настройки;
ограниченные функциональные возможности;
не все бесплатные пакеты имеют полную документацию на русском языке, необходимую для разработки собственных модулей или изменения существующей программы;
многие аналогичные приложения, обладающие хорошим функциональным набором, являются коммерческими, — что делает невозможным их применение в учебных целях.
Анализ вышеперечисленных недостатков аналогичных продуктов, а также требований конечных пользователей такого рода продуктов, позволяет сформулировать следующий список общих технических требований к разрабатываемой базе данных:
ведение учета номерного фонда отеля;
ведения прейскуранта цен на размещение в номерах;
ведение прейскуранта цен на дополнительные услуги;
учет бронирования номеров;
учет размещения постояльцев в номерах;
учет оказания дополнительных услуг клиентам;
получение отчетности по выручке за период;
получение отчетов по использованию номерного фонда гостиницы.
Проектируемая система должна быть масштабируемой и гибкой. Под масштабируемостью понимается возможность использовать ее на многократно возросших объемах операций бизнеса, а под гибкостью — наращивание функциональности системы и возможность ведения собственной разработки.
Процесс разработки данной информационной системы можно разделить на две части. Первая из них является проектной, вторая же направлена непосредственно на разработку соответствующего программного продукта.
Этап проектирования системы включает в себя решение следующих вопросов:
исследование предметной области;
обоснование необходимости разработки системы;
постановка задачи и цели разработки;
обзор научной литературы и анализ теоретического материала;
анализ существующих систем-аналогов;
проектирование структуры информационной системы;
разработка методов и алгоритмов решения поставленной задачи.
Разработка программного комплекса включает в себя решение следующих задач:
выбор языка программирования, информационной модели, комплекса технических средств;
разработка структуры базы данных;
определение стандартных запросов к системе, способов получения информации, форм предоставления информации;
построение структуры программного комплекса, определение функций составных частей и их взаимосвязи;
разработка, тестирование и отладка приложения и базы данных;
создание документации на разработанную систему (руководства по эксплуатации, модификации, доработке).
Для реализации системы в соответствии с требованиями задания, необходимо разработать базу данных для хранения информации.
Хранение информации в базе данных имеет следующие преимущества перед другими способами организации хранения:
легко организовывать поиск, сортировать записи по дате и времени, проводить различные отборы записей, так как в БД предусмотрена эффективная организация хранения информации, минимизирующая время доступа и поиска;
запись в БД могут осуществлять неограниченное число пользователей. В файлы же, если идёт запись одним, то другой пользователь получит отказ;
возможность устранения противоречивости;
введение
ограничений для обеспечения целостности данных;
1.2 Обоснование выбора средств реализации базы данных
Хранение данных в информационных системах можно организовать следующими способами:
набор файлов на диске;
реляционная база данных;
нереляционная база данных (иерархические СУБД и др.).
Наиболее универсальным, масштабируемым и простым для поддержки является использование в разрабатываемой системе реляционной СУБД. Сравнительные характеристики наиболее распространенных на сегодняшний день реляционных СУБД приведены в таблице 1.1.
Таблица 1.1 — Сравнительные характеристики реляционных СУБД
СУБД / Характеристики | MS SQL Server | Oracle | MySQL | SQLite | |
Обрабатываемые объёмы данных | Большие | Большие | Средние | Небольшие | |
Быстродействие | Высокое | Высокое | Среднее | Среднее | |
Требовательность к ресурсам | Средняя | Высокая | Низкая | Низкая | |
Масштабируемость | Высокая | Высокая | Высокая | Низкая | |
Стоимость | Средняя | Высокая | Бесплатно | Бесплатно | |
Проектируемая база данных предполагает работу со сравнительно небольшими объемами данных (создание не более нескольких сотен записей в сутки). При этом важным критерием является масштабируемость и возможно низкая стоимость решения. Исходя из этих критериев, согласно таблице 1.1, для решения поставленной задачи наиболее целесообразным является использования СУБД MySQL.
база приложение отчет запрос Для создания базы данных был выбран язык структурированных запросов SQL, поскольку он имеет следующие преимущества:
независимость от конкретных СУБД;
переносимость с одной вычислительной системы на другую.
SQL используется в СУБД, предназначенных для различных вычислительных систем: от персональных компьютеров и рабочих станций до локальных сетей, мини-компьютеров и больших ЭВМ;
однопользовательские приложения на основе SQL могут быть перенесены в более крупные системы;
возможность различного представления данных. С помощью SQL создатель базы может сделать так, что различные пользователи базы данных будут видеть различные представления её структуры и содержимого;
полноценность как языка, предназначенного для работы с базами данных. Первоначально SQL был задуман как язык интерактивных запросов, но сейчас он вышел далеко за рамки чтения данных;
наличие стандартов (наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка);
декларативность (с помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать);
возможность совместного использование данных несколькими пользователями, работающими параллельно;
SQL является полноценным и логичным языком, предназначенным для следующих целей:
создание базы данных;
управление защитой базы данных;
изменение данных;
чтение данных;
Для реализации базы данных выбрана СУБД MySQL версии 5.2, так как она является бесплатным свободно распространяемым программным обеспечением и имеет функционал, достаточный для решения поставленной задачи.
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы.net, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.
Версия MySQL 5.3 имеет следующие ключевые возможности:
Сегментирование — возможность разбить одну большую таблицу на несколько частей, размещенных в разных файловых системах, основываясь на определенной пользователем функции. При определенных условиях это может дать серьезное увеличение производительности и, кроме того, облегчает масштабирование таблиц.
Поведение ряда операторов совместимо со стандартом SQL2003.
Построчная репликация (англ. row-based replication), при которой в бинарный лог будет записываться только информация о реально измененных строках таблицы вместо оригинального (и, возможно, медленного) текста запроса. Построчную репликацию можно использовать только для определенных типов sql-запросов, в терминах MySQL — смешанная репликация (англ. mixed replication).
Встроенный планировщик периодически запускаемых работ. По синтаксису добавление задачи похоже на добавление триггера к таблице, по идеологии — на crontab.
Дополнительный набор функций для обработки XML, реализация поддержки XPath. Новые средства диагностики проблем и утилиты для анализа производительности. Расширены возможности по управлению содержимым лог-файлов, логи теперь могут быть сохранены и в таблицах general_log и slow_log. Утилита mysqlslap позволяет провести нагрузочное тестирование БД с записью времени реакции на каждый запрос. Для упрощения операции обновления подготовлена утилита mysql_upgrade, которая выполнит проверку всех существующих таблиц на предмет совместимости с новой версией, и при необходимости выполнит надлежащие корректировки. API для плагинов, которое позволяет загружать сторонние модули, расширяющие функциональность (например, полнотекстовый поиск), без перезапуска сервера. Для проектирования структуры базы данных целесообразно использование CASE-средств, т.к. данный подход упрощает разработку и построение оптимальной структуры для хранения данных.
Программную реализацию приложения для работы с базой данных целесообразно выполнить в виде «толстого клиента» — Windows-приложения. Среда разработки — Microsoft Visual Studio, язык программирования — C#. Выбор объясняется тем, что данная платформа разработки на сегодняшний день является наиболее мощной и гибкой для создания приложений работающих с базой данных. Перечень программных средств для реализации поставленной задачи приведен в таблице 1.2.
Таблица 1.2 — Перечень используемых программных средств
Выполняемая задача | Используемые программные продукты | |
Проектирование структуры базы данных | ERWin | |
Реализация базы данных | СУБД MySQL | |
Среда администрирования базы данных | MySQL Maestro | |
Среда разработки приложения для работы с базой данных | Microsoft Visual Studio 2010, язык программирования C#. | |
2. Анализ предметной области
В данном курсовом проекте, в соответствии с заданием, необходимо разработать базу данных размещения и услуг гостиницы-отеля «Баташев» .
Гостиница «Баташев» расположена в г. Выкса. Гостиница функционирует с 2008 г., имеет статус «4 звезды» .
В гостинице 98 номеров, в том числе номера категории люкс и президентские апартаменты. Кроме того, в гостинице имеются номера для некурящих и людей с ограниченными возможностями.
Все номера и гостевые зоны гостиницы соответствуют высоким стандартам. Каждый номер оснащен индивидуальной системой кондиционирования, доступом в интернет, кабельным телевидением, телефоном, мини-баром, сейфом.
В гостинице «Баташев» расположены ресторан «Аристократ» и два банкетных зала, представляющие европейскую кухню.
Также в здании гостиницы находится круглосуточный лобби-бар, каминная зона с библиотекой.
В гостинице имеется комплекс для проведения конференций, семинаров, тренингов, презентаций и деловых встреч.
Бизнес-процессы в гостинице «Баташев» построены на основании внутренних регламентов. При размещении постояльцев, работа гостиницы построена следующим образом.
Перед приездом, клиент или организация бронирует один или несколько номеров. При бронировании указывается класс номера, планируемая дата заселения и дата выезда. Администратор гостиницы фиксирует эту информацию в журнале бронирования.
По прибытию клиента в гостиницу, администратор производит заселение клиента в номер. При этом на основании сделанной записи о бронировании, создается новый счет на проживание. В счёт на проживание заносятся паспортные данные проживающих в номере лиц, дата заселения и дата выезда. Проживание может быть оформлено как на основании предварительного бронирования, так и без бронирования при наличии свободных номеров. В номер могут быть заселены только физические лица, следовательно счёт на проживание может быть выставлен только физическому лицу.
В процессе проживания в гостинице, клиент может пользоваться дополнительными платными услугами. При этом создается один или несколько счетов на дополнительные услуги, в котором указывается перечень предоставленных услуг, их количество и цена. Дополнительные услуги могут быть предоставлены не только постояльцам, но и клиентам, не проживающим в гостинице. Кроме того, счет на оплату дополнительных услуг может быть выставлен юридическому лицу.
Администратор гостиницы ведет журнал учета номерного фонда, по которому в любой момент времени можно получить информацию о занятых, свободных и освобождающихся номерах на произвольную дату.
3. Проектирование базы данных
3.1 Разработка логической модели базы данных
Проектирование структуры базы данных выполнено на основании анализа предметной области, произведенного в разделе 2.
Основной деятельностью гостиницы является размещение клиентов в номерах с возможностью предварительного бронирования номера, а также оказание дополнительных услуг. Оплата проживания и дополнительных услуг осуществляется на основании выставляемого счёта. Из данного факта можно выделить следующие сущности:
Номер;
Вид услуг;
Клиент;
Счет.
Сущность «Номер» имеет следующие атрибуты:
Номер комнаты;
Этаж;
Вид номера (стандартный, люкс, президентский и др.).
Каждый вид номера имеет свою цену проживания за сутки и дополнительные характеристики. Следовательно, вид номера необходимо выделить в отдельную сущность со следующими атрибутами:
Наименование вида номера;
Количество мест в номере;
Текущая цена проживания за 1 сутки.
Каждый номер относится строго к одному виду. В то же время к одному виду может относится несколько номеров. Следовательно, между сущностями «Номер» и «Вид номера» имеется отношение «Один-ко-многим» .
Рисунок 3.1 — Логическая модель базы данных
Сущность «Вид услуг» имеет следующие атрибуты:
Наименование вида услуги;
Текущая стоимость услуги.
Сущность «Клиент» может характеризовать как клиентов-физических лиц, так и юридических лиц. Данная сущность имеет следующие атрибуты:
Наименование юр. лица или ФИО физического лица;
Серия паспорта (для физических лиц);
Номер паспорта (для физических лиц);
Данные о выдаче паспорта (для физических лиц);
ИНН (для юридических и физических лиц);
КПП (для юридических лиц);
Расчетный счет (для юридических лиц).
Предварительное бронирование номеров осуществляется с помощью записей в журнале бронирования. Запись в журнале бронирования представляется с помощью сущности «Бронирование номера», имеющей следующие атрибуты:
Дата бронирования;
Дата заезда;
Дата выезда;
Дополнительное примечание;
Клиент;
Бронируемый номер.
Для бронирования каждого номера создается отдельная запись о бронировании. При этом один и тот же номер за все время может быть забронирован любое количество раз. Следовательно, между сущностями «Бронирование номера» и «Номер» имеется отношение вида «Один-ко-многим» .
В запись о бронировании номера вносятся сведения о клиенте бронирующем номер. При этом один клиент в разное время может забронировать несколько номеров. Следовательно, между сущностями «Бронирование номера» и «Клиент» существует отношение вида «Один-ко-многим» .
Счета, выставляемые клиентам, делятся на две группы: счета за проживание и счета за дополнительные услуги. Структура указанных счетов различна, поэтому выделено две разных сущности:
Счет за проживание;
Счет за услуги.
Сущность «Счет за проживание» имеет следующие атрибуты:
Номер счета;
Дата выписки счета;
Дата заезда в номер;
Дата выезда из номера;
Номер в котором осуществляется проживание;
Стоимость номера;
Номер записи предварительного бронирования.
В одном номере может проживать несколько человек, если номер многоместный. При этом один и тот же клиент в разное время может проживать в разных номерах. Следовательно, между сущностями «Клиент» и «Счет за проживание» имеется отношение вида «Многие-ко-многим». Данное отношение необходимо привести к третьей нормальной форме за счет введения дополнительной сущности «Проживание в номере», имеющей следующие атрибуты:
Клиент;
Номер счета за проживание.
Введение
данной сущности позволит включить в один счет за проживание несколько проживающих лиц.
Сущность «Счет за услуги» имеет следующие атрибуты:
Номер счета;
Дата выписки счета;
Клиент.
В рамках одного счета клиенту может быть оказано несколько услуг. При этом, одна и та же услуга может быть оказана нескольким клиентам по разным счетам, с разной стоимостью и в различном количестве. Следовательно, между сущностями «Услуга» и «Счет за услуги» имеется отношение вида «Многие-ко-многим». Данное отношение необходимо привести к третьей нормальной форме за счет введения дополнительной сущности «Оказание услуг», имеющей следующие атрибуты:
Вид услуги;
Номер счета за услуги;
Цена оказания услуги;
Количество раз оказания услуги.
Введение
данной сущности позволит включить в один счет за услуги несколько различных услуг.
Перечень отношений между сущностями приведен в таблице 3.1.
Таблица 3.1 — Отношения между сущностями в базе данных
Название сущности 1 | Название сущности 2 | Вид отношения | Описание | |
Номер | Вид номера | 1: ? | По полю «Код вида номера» | |
Бронирование номера | Номер | 1: ? | По полю «Код номера» | |
Счет за проживание | Номер | 1: ? | По полю «Код номера» | |
Счет за проживание | Бронирование номера | 1: 1 | По полю «№ записи в журнале бронирования» (необязательная связь) | |
Бронирование номера | Клиент | 1: ? | По полю «Код клиента» | |
Проживание в номере | Клиент | 1: ? | По полю «Код клиента» | |
Проживание в номере | Счет за проживание | 1: ? | ПО полю «№ счета за проживание» | |
Счет за услуги | Клиент | 1: ? | По полю «Код клиента» | |
Оказание услуг | Счет за услуги | 1: ? | По полю «№ счета за услуги» | |
Оказание услуг | Вид услуг | 1: ? | По полю «Код вида услуг» | |
На основе разработанной логической модели, получена структура таблиц, входящих в базу данных. Структура таблиц данных приведена на логической модели данных (рисунок 3.1).
3.2 Разработка физической модели данных
Разработка физической модели данных выполняется согласно разработанной логической модели (структуре базы данных). База данных создается на сервере СУБД MySQL. Создание базы данных подразумевает создание следующих объектов на сервере СУБД:
база данных;
таблицы;
поля таблиц.
СУБД MySQL позволяет работать со следующими основными типами данных:
CHAR: символьный фиксированной длины;
VARCHAR: текстовый переменной длины;
NUMBER: числовой с задаваемой точностью;
DOUBLE: числовой с плавающей точкой;
DECIMAL: числовой с фиксируемой точностью;
INTEGER: целочисленный;
DATE: дата;
DATE_TIME: дата и время.
Основанием для выбора типов данных полей в базе данных является тип данных в атрибутах сущностей, описываемых в базе данных. Ниже приведен перечень сущностей из логической модели и атрибуты с указанием целесообразного типа данных.
Рисунок 3.2 — Физическая структура базы данных
Номер:
Номер комнаты: текстовый, 5 знаков;
Этаж: целочисленный;
Вид номера: целочисленный, по коду.
Вид номера:
Наименование вида номера: текстовый, 100 знаков;
Количество мест в номере: целочисленный;
Текущая цена проживания за 1 сутки: с фиксированной точностью до 2_х знаков.
Вид услуг:
Наименование вида услуги: текстовый, 100 знаков;
Текущая стоимость услуги: с фиксированной точностью до 2_х знаков.
Клиент:
Наименование или ФИО физического лица: текстовый, 100 знаков;
Серия паспорта: текстовый, 4 знака;
Номер паспорта: текстовый, 6 знаков;
Данные о выдаче паспорта: текстовый, 100 знаков;
ИНН: текстовый, 30 знаков;
КПП: текстовый, 30 знаков;
Расчетный счет: текстовый, 100 знаков.
Бронирование номера:
Дата бронирования: дата и время;
Дата заезда: дата;
Дата выезда: дата;
Дополнительное примечание: текстовый, 200 знаков;
Клиент: целочисленный (по коду);
Бронируемый номер: целочисленный (по коду).
Счет за проживание:
Номер счета: целочисленный;
Дата выписки счета: дата;
Дата заезда в номер: дата;
Дата выезда из номера: дата;
Номер в котором осуществляется проживание: целочисленный (по коду);
Стоимость номера: с фиксированной точностью до 2_х знаков;
Номер записи предварительного бронирования: целочисленный.
Проживание в номере:
Клиент: целочисленный (по коду);
Номер счета за проживание: целочисленный.
Счет за услуги:
Номер счета: целочисленный;
Дата выписки счета: дата;
Клиент: целочисленный (по коду).
Оказание услуг:
Вид услуги: целочисленный (по коду);
Номер счета за услуги: целочисленный;
Цена оказания услуги: с фиксированной точностью до 2_х знаков;
Количество раз оказания услуги: с фиксированной точностью до 2_х знаков.
Разработанная физическая модель базы данных приведена на рисунке 3.2.
4. Реализация базы данных
4.1 Реализация SQL-запросов для создания объектов в БД
Объекты базы данных создаются на сервере СУБД MySQL. Создание объектов базы данных выполняется с помощью языка SQL-запросов. Все SQL-запросы для создания объектов в базе данных получены с помощью автоматической генерации скриптов в программе ER-Win на основе построенной физической модели.
SQL-запрос для создания базы данных следующий:
CREATE DATABASE «HOTEL»
Каждая таблица в базе данных может быть создана с помощью SQL-оператора следующего синтаксиса:
CREATE TABLE table_name
(column1 data_type,
column2 data_type,
…,
PRIMARY_KEY (column1)
)
где table_name — имя создаваемой таблицы;
column1, column2 — имена полей таблицы;
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,
PRIMARY 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,
PRIMARY KEY (`APPARTMENT_CUST_ID`,`CUSTOMER_ID`)
)
Таблица APPARTMENT_RESERV («Бронирование номера») создана с помощью следующего SQL-запроса:
CREATE TABLE IF NOT EXISTS `appartment_reserv` (
`REC_ID` int (10) NOT NULL auto_increment,
`REC_DATE` datetime NOT NULL,
`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,
PRIMARY KEY (`REC_ID`)
)
Таблица CUST («Счет за услуги») создана с помощью следующего SQL_запроса:
CREATE TABLE IF NOT EXISTS `cust` (
`ID` int (10) NOT NULL auto_increment,
`CUST_DATE` date NOT NULL,
`CUSTOMER_ID` int (11) NOT NULL,
PRIMARY KEY (`ID`)
)
Таблица CUSTOMER («Клиент») создана с помощью следующего SQL_запроса:
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,
PRIMARY KEY (`ID`)
)
Таблица CUST_DETAIL («Оказание услуги») создана с помощью следующего SQL-запроса:
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',
PRIMARY 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,
PRIMARY KEY (`ID`)
)
Таблица SPR_APPARTMENT_TYPE («Вид номера») создана с помощью следующего SQL-запроса:
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,
PRIMARY KEY (`ID`)
)
Таблица SPR_SERVICE («Вид услуги») создана с помощью следующего SQL-запроса:
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,
PRIMARY KEY (`ID`)
)
Ограничения целостности данных по внешним ключам не поддерживаются используемой версией сервера MySQL (версия 5.2, ENGINE=MyISAM). Данные ограничения реализованы программным способом на стороне клиентского приложения средствами технологии доступа к данным ADO.net.
4.2 Реализация SQL-запросов для получения отчетов
Отчет «Прайс-лист на услуги» является простейшей выборкой из справочника услуг и реализован с помощью следующего SQL-запроса:
select service_name «Наименование услуг» ,
price «Цена»
from spr_service
Отчет «Прайс-лист на проживание» реализован с помощью следующего SQL-запроса:
select apt. name «Категория номеров» ,
apt. sizing «Количество мест» ,
apt. price «Цена, руб. «,
(select count (*) from spr_appartment where appartment_type_id=apt. ID)" Количество номеров" ,
from spr_appartment_type apt
order by «Количество номеров» desc, sizing, price
Отчет «Предоставление услуг» реализован с помощью следующего SQL_запроса:
select c. ID «Счет №» ,
c. cust_date «Дата счета» ,
cs. CUSTOMER_NAME «Клиент» ,
s. SERVICE_NAME «Наименование услуг» ,
cd. PRICE «Цена, руб. «,
cd. QUANTITY «Количество» ,
cd. PRICE*cd. QUANTITY «Сумма, руб. «
from cust_detail cd
join spr_service s on cd. service_id=s. id
join cust c on c. id=cd. CUST_ID
join customer cs on c. CUSTOMER_ID=cs. ID
where c. cust_date>=@start_date and c. cust_date<@end_date
order by c. id
4.3 Реализация приложения для работы с базой данных
Приложение для работы с базой данных построено на платформе.net Framework версии 3.5 Программа написана на языке C# в среде разработки Microsoft Visual Studio.net.
Для доступа к серверу базы данных MySQL используются сборки MySQL Connector версии 6.3 Работа с данными осуществляется по технологии ADO.net. Концепция доступа к данным в ADO.net основана на использовании двух компонентов:
НАБОРА ДАННЫХ (представляется объектом класса DataSet) со стороны клиента. Это локальное временное хранилище данных;
ПРОВАЙДЕРА ДАННЫХ (представляется объектом класса DataProvider). Это посредник, обеспечивающий взаимодействие приложения и базы данных со стороны базы данных (в распределенных приложениях — со стороны сервера).
Рисунок 4.1 — Структура доступа к данным в приложении
Объектная модель ADO.net предполагает существование (при написании приложения для работы с базой данных — использование) двух множеств классов, выполняющих четко определенные задачи при работе с базой данных:
Рисунок 4.2 — Объектная модель доступа к данным
Классы подсоединенных объектов обеспечивают установление соединения с базой данных и управление базой со стороны приложения; классы отсоединенных объектов обеспечивают сохранение, использование и преобразование полученной от базы данных информации на стороне приложения.
Заключение
База данных учета размещения и услуг гостиницы-отеля «Баташев» разработана в соответствии с заданием на курсовой проект.
В процессе работы над проектом проанализирована предметная область, выделены основные сущности, выбраны средства реализации базы данных и пользовательской программы. Произведено проектирование и реализация базы данных, а также реализация приложения для работы пользователей с базой данных.
Разработанная система позволяет собирать, хранить и анализировать информацию о бронировании номеров, проживании постояльцев, вести журнал счетов на проживание и на оказание дополнительных услуг. База данных предусматривает получение отчетов за произвольный период по выручке за оказание услуг, состоянию номерного фонда гостиницы и др.
Использование системы позволит упростить регистрацию постояльцев в гостинице-отеле «Баташев» и автоматизировать выставление счетов за проживание и услуги.
1. Брауде Э. Дж. Технология разработки программного обеспечения. — СПб.: Питер, 2004. — 655с.
2. Вендеров А. М. CASE-технологии. Современные методы и средства проектирования информационных систем. — М.: Финансы и статистика, 1998. — 340с.
3. Дж. Грофф, П. Вайнберг. SQL: Полное руководство: Пер. с англ. — 2-е изд., перераб. и доп. — К.: Издательская группа BHV, 2001. — 816 с., ил.
4. MySQL Руководство по изучению языка. Издательство ДМК Пресс; Питер; 2004 г. — 352 с.
5. MySQL Библиотека профессионала. Издательство Диалектика; 2002 г. — 624 с.
6. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft.net Framework 2.0 на языке C#. Мастер-класс. /Пер. с англ. — М.: Издательство «Русская Редакция»; СПб.: Питер, 2007. — 656 стр.: ил.