Учебная работа. Курсовая работа: Автоматизация работы базы отдыха
Курсовая работа
«База отдыха»
Владивосток, 2010
Введение
Данная курсовая работа, а конкретно база данных, написанная на ACCESS, создана для автоматизации работы базы отдыха.
Имеется некая база отдыха, на которую приезжают отдыхающие, приезжающие могут избрать пространство проживание, пользоваться различными услугами.
человек может избрать, в котором месте ему проживать (гостиница либо домики) избрать класс номера (эконом, обыденный либо люкс).
Вся информация о отдыхающем (Ф.И.О., паспортные данные, прописка) на время его проживания на базе отдыха хранится в базе.
При выезде человека выводим счет и выселяем его, удаляя его из базы данных.
1. Многофункциональные способности системы
Система «База отдыха» предоставляет последующие способности для юзеров:
· Занесение новейших отдыхающих
· Выбор отдыхающими определенных услуг
· Возможность выбора различных видов питания
· Просмотр сумм которые должен заплатить клиент
· Просмотр инфы о любом отдыхающем
· Выведения счета о оплате
· Выселение клиента
2. Построение информационно-логической модели базы данных
2.1 Выделение информационных объектов
а) документы и их реквизиты, подлежащие хранению в базе данных
№ п/п
документ
Наименование реквизита (реальное)
Наименование реквизита в базе данных
Тип реквизита
Связи
1.
клиента
Паспорт номер
Паспорт серия
Прописка
Номер клиента
Fio
Passport_nomer
Passport_seria
Propiska
Код_Fio
Описательный
Описательный
Описательный
Описательный
Главный
2.
Проживание клиентов
Ф.И.О. клиента
Номер
Дата приезда
Дата выезда
код
Fio
№_komnati
Data_zasel
Data_visel
Код
Описательный
Описательный
Описательный
Описательный
Главный
3.
Номера
Код номера
Номера
Стоимость
Код пространство
Пространство
Код вид
Вид
количество мест
Ключ кол-во мест
Ключ класс
Класс
Ключ состояние
Состояние
Код_nomera
№_komnati
Stoimost’
Код_mesto
Name_mesto
Код_vidi
Name_vidi
Код_kol_mest
Kol_mest
Num_klass
Name_klass
Num_sost
Name_sost
Главный
Описательный
Описательный
Главный
Описательный
Главный
Описательный
Главный
Описательный
Главный
Описательный
Главный
Описательный
4.
Использование услугами и питанием
Ключ номер-чел.
Код питания
Питание
Стоимость питания
количество на чел.
Ключ питание
Код польз услуг
Код услуги
Стоимость услуг
Дата
Kl_n/ch
Код_pitanie
Pitanie
Cena_pitanie
Kol_vo
Kl
Код_usl
Код_uslugi
Nazv_uslugi
Cena_uslugi
data
Описательный
Главный
Описательный
Описательный
Описательный
Главный
Главный
Главный
Описательный
Описательный
Описательный
б) зависимые реквизиты
Описательные реквизиты
Главные реквизиты
Fio
Код_Fio
Passport_nomer
Код_Fio
Passport_seria
Код_Fio
Propiska
Код_Fio
Код_Fio
Код_Fio
№_komnati
Код_nomera
Data_zasel
Код
Data_visel
Код
Код
Код
Код_nomera
Код_nomera
Stoimost’
Код_nomera
Код_mesto
Код_nomera
Name_mesto
Код_mesto
Код_vidi
Код_nomera
Name_vidi
Код_vidi
Код_kol_mest
Код_nomera
Kol_mest
Код_kol_mest
Num_klass
Код_nomera
Name_klass
Num_klass
Num_sost
Код_nomera
Name_sost
Num_sost
Kl_n/ch
Код
Код_pitanie
Kl
Pitanie
Код_pitanie
Cena_pitanie
Код_pitanie
Kol_vo
Kl
Kl
Kl
Код_usl
Код_usl
Код_uslugi
Код_usl
Nazv_uslugi
Код_uslugi
Cena_uslugi
Код_uslugi
data
Код_usl
в) группировка реквизитов
Реквизиты
Ключ
имя инф. объекта
Описание
Код
Name_mesto
mesto_prozhiv
Ключ
Name_vidi
vidi_prozhiv
Код
Mesto_prozhiv
Vidi_prozhiv
№_komnati
Klass
Kol-vo_mest
Stoimost’
Sostoianie
Nomera
Код
Kol_mest
kol-vokomnat
Name_klass
Num_klass
klass
Name_sost
Num_sost
sost_nomerov
Код
FIO
Passport_nomer
Passport_seria
Propiska
spisok_otdih
FIO
№_komnati
Data_zasel
Data_visel
Код
Sdan_nomer
Kl_n/ch
Pitanie
Kol_vo
kl
pitanie_otdih
Код
Pitanie
cena
Питание
Код
Ключ н/ч
услуга
Строчки
Код
Nazv_uslugi
Cena_uslugi
spravochnik_uslug
2.2 структура информационных объектов базы данных
1.пространство проживания (mesto_prozhiv)
№п/п
Наименования столбца
тип
ключ
1.
код
счетчик
2.
Name_mesto
текстовый
2. Виды проживания (
№п/п
Наименования столбца
тип
ключ
1.
ключ
счетчик
2.
Name_vidi
текстовый
3. Номера (Nomera)
№п/п
Наименования столбца
тип
ключ
1.
Код
счетик
2.
Mesto_prozhiv
числовой
3.
Vidi_prozhiv
числовой
4.
№_komnati
числовой
5.
klass
числовой
6.
Kol-vo_mest
числовой
7.
Stoimost’
числовой
8.
Sostoianie
числовой
4. количество комнат (kol-vokomnat)
№п/п
Наименования столбца
тип
ключ
1.
код
счетчик
2.
Kol_mest
текстовый
5. Класс (klass)
№п/п
Наименования столбца
тип
ключ
1.
Name_klass
текстовый
2.
Num_klass
счетчик
6. состояние номеров (sost_nomerov)
№п/п
Наименования столбца
тип
ключ
1.
Name_sost
текстовый
2.
Num_sost
счетчик
7. Перечень отдыхающих (spisok_otdih)
№п/п
Наименования столбца
тип
ключ
1.
Код
счетчик
2.
FIO
текстовый
3.
Passport_nomer
числовой
4.
Pasport_seria
числовой
5.
Propiska
текстовый
8. Сдан номер (Sdan_nomer)
№п/п
Наименования столбца
тип
ключ
1.
FIO
числовой
2.
№_komnati
числовой
3.
Data_zasel
числовой
4.
Data_visel
числовой
5.
Код
счетчик
9. Питание отдыхающих (pitanie_otdih)
№п/п
Наименования столбца
тип
ключ
1.
Kl_n/ch
числовой
2.
pitanie
числовой
3.
Kol_vo
числовой
4.
kl
счетчик
10. Питание
№п/п
Наименования столбца
тип
ключ
1.
Код
счетчик
2.
Pitanie
текстовый
3.
cena
числовой
11. Строчки
№п/п
Наименования столбца
тип
ключ
1.
Код
счетчик
2.
Ключ н/ч
числовой
3.
услуга
числовой
2.3 Связи меж информационными объектами
3. Проектирование алгоритмов обработки данных
Заезд отдыхающего
Проживание отдыхающего
Выезд отдыхающего
Регистрация его на базе отдыха
Предоставление выбора номера
Выбор вольного номера
Занесение инфы о о отдыхающем
Занесение в инфы, что номер занят
Подсчет суммы за прожитые деньки
Подсчет суммы за услуги
Подсчет суммы за питание
Подсчет общей суммы
Выселение человека отражения этого в таблицах
Вывод итоговой суммы
Вывод счета
4. Разработка запросов для корректировки и подборки данных
4.1 Запросы на подборку данных
1. Z
_
uslug
_2
– запрос для расчета суммы за повторяющиеся услуги для всякого отдыхающего и количество циклических использованных услуг.
а) Данные из последующих таблиц должны быть включены в запрос:
б) структура связей меж таблицами:
FROM [spravochnik-uslug] INNER JOIN (Sdan_nomer INNER JOIN строчки ON Sdan_nomer. Код = строчки. [ключ н/ч]) ON [spravochnik-uslug].Код = строчки. услуга
в) поля, включаемы в запрос:
SELECTстроки. ключ н/ч, строчки. услуга, spravochnik-uslug.cena_uslugi.
г) групповая операция:
SELECT строчки. [ключ н/ч], строчки. услуга, Sum([spravochnik-uslug].cena_uslugi) AS [Sum-cena_uslugi], Count (строчки. услуга) AS [Count-услуга]
FROM [spravochnik-uslug] INNER JOIN (Sdan_nomer INNER JOIN строчки ON Sdan_nomer. Код = строчки. [ключ н/ч]) ON [spravochnik-uslug].Код = строчки. услуга
GROUP BY строчки. [ключ н/ч], строчки. услуга;
2. stoim_prozhiv-подсчитывает сумму за проживания для всякого человека
3. Z_inf_otdih – вся информация о отдыхающих.
4. Z_ludi – нужен для поиска по отдыхающим
5. z_nomer – нужен для воплощения поиска номеров по различным данным
6. z_pitanie, z_uslug_sum – просчитывает сумму за питания и услуги для всякого человека.
7. z_stoim – считает общую сумму за проживание, услуги и питание.
4.2 Корректировка данных средствами запросов
1. Z
_
obnov
_
nomer
: обновление данных о номерах волен либо занят.
Весь процесс можно обрисовать.
Нахождения нужного номера и подмена «волен» на «занят».
Данный запрос, описанный в SQL:
UPDATE sost_nomerov INNER JOIN Nomera ON sost_nomerov.num_sost = Nomera.sostoianie SET Nomera.sostoianie = 2
WHERE (((Nomera. №_komnati)=[Forms]! [F_main]! [f_nomer]. [Form]! [№_komnati]));
2.Z_obnov_visel-запрос на обновления нужного номера с «занят» на «волен».
3.z_visel, z_visel_otl2 – удаление инфы о выехавших отдыхающих.
5. Реализация пользовательского интерфейса средствами форм
5.1 разработка загрузки базы данных
Таблицы – объекты загрузки.
klass
Питание
— Сначала заполняется таблица ‘Nomera’, в которую заносятся все данные о имеющихся в отеле номерах;
— Таблица ‘Spisok_otdih’ заполняется на основании данных о прибытии клиента;
— Таблица ‘строчки’ и таблица ‘pitanie_otdih’заполняется на основании использовании услуг и питания клиентами, таблица «Sdan_nomer» заполняется на основании данных о проживании клиентами в отеле. Эта информация является рабочей.
5.2 Разработка форм
Основная форма имеет три вкладки: «Регистрация», «Услуги» и «Выселение».
На первой вкладке информация о заселении клиентов гостиницы. При заселение клиента информация о клиенте автоматом переносится в формы на 2-ой и третьей вкладках, таковым образом обновляя информацию о клиенте.
Превая вкладка ‘Регистрация’ содержит подчиненную форму ‘f_nomer’. Также вкладка ‘Регистрация’ включает клавишу ‘Зарегистрировать’.
Форма ‘f_nomer’ создается на базе запроса ‘z_nomer’.
На 2-ой вкладке размещена информация о услугах, которыми могут воспользоваться клиенты. Она содержит форму ‘f_uslug’, которая строится на базе таблиц ‘Sdan_nomer’ и ‘Spisok_otdih’, имеет подчиненные формы ‘fpp_uslug’, которая строится на основание ‘z_uslug’, и подчиненной формы ‘f_pitanie_otdih’ котороя строится на основании таблиц ‘питание’ и ‘pitanie_otdih’.
На третьей вкладке показывается сумма за все услуги, которыми воспользовались клиенты, сумма за питание, проживание и общий результат. Она содержит форму ‘f_s4et’, которая строится на базе таблиц ‘Sdan_nomer’, ‘Spisok_otdih’, ‘Nomera’, запроса ‘Stoim_prozhiv’ имеет подчиненную. форму ‘fp_z_stoim’, которая строится на основание ‘z_stoim’.Также вкладка ‘Выселение’ включает клавиши ‘Счет’ и ‘о отдыхающем’.
Проектирование формы для корректировки данных о услугах
Требуется иметь возможность вносить данные о услугах, которыми пользуются клиенты (спорт зал, боулинг и т.д.). По таковой же схему будут вносится данные о питание людей.
1) Составная форма
Источник записей: Sdan_nomer+ строчки
Недочеты: Нереально корректировать таблицы, отсутствует иерархический просмотр.
)
Sdan_nomer
Таблица, на которой строится форма: Sdan_nomer
Корректируемые данные: Sdan_nomer
количество записей: Sdan_nomer
Подчиненная:
Источник записей: строчки
Таблица, на которой строится форма: строчки
Корректируемые данные: Нет
количество записей: сколько выведенный клиент воспользовался услугами
Плюсы: Возможность корректировать таблицу «Sdan_nomer», реализуется иерархический просмотр.
Вывод: Избираем для реализации форму 2, потому что она удовлетворяет всем поставленным требованиям.
1) Определение подсхемы данных.
Для удобства использования лучше вносить информациюоб услугах, по любому клиенту имея возможность отыскать его при помощи поиска.
2) Общая структура вложенной формы.
В соответствие с приведенной подсхемой определим структуру вложенной формы ‘f_uslug’. В главный части будут размещаться реквизиты клиента (заглавие клиента: name_klient); подчиненная форма ‘fpp_uslug’ будет содержать перечень записей о услугах,которыми пользуются клиенты. Связь меж формами будет осуществляться по полям код-ключ н/ч.
Таковым образом форму ‘f_uslug’ определяют:
— Тип формы: вложенная;
— Источник записей для главный части формы: таблица ‘Sdan_nomer’;
— Включаемая подчиненная форма: ‘fpp_uslug’.
Форму ‘fpp_uslug’ определяют:
— Тип формы: подчиненая;
— Источник строк: таблица ‘строчки’.
3) Реквизиты главный и подчиненной формы.
В заголовок формы ‘f_uslug’ включаем реквизит поле, содержащий заглавие клиента. При помощи этого поля будет осуществляться поиск записей в форме для всякого определенного клиента. В основную часть формы включаем подчиненную форму ‘fpp_uslug’ в которую включаем поле со перечнем, содержащий заглавие услуги (услуга), поле (cena_uslugi) и поле (data).
6. Разработка отчетов
Общий счет представляет собой счет-итог, который выдается к оплате клиенту при выезде. Также этот отчет можно употреблять для получения инфы о потраченных клиентом суммах с момента заезда до реального времени.
Заголовок группы «FIO»:
· Отдыхающий
· Дата заезда
· Дата заезда
Область данных:
· Наименование услуги
· Итоговая сумма за каждую услугу
· количество услуг
Примечание группы:
· Количество прожитых дней
· Результат за услуги
· Результат за питание
· Результат за проживания
· Итоговая сумма
7.
Реализация алгоритмов обработки инфы
7.1 Реализация алгоритмов средствами макросов
Разработаны последующие макросы:
1. Макрос 1
. Производит открытие формы ‘sdan_nomer’ для занесения данных о новеньком клиенте, записывает текущий номер в форму ‘sdan_nomer’ из формы f_nomer, обновляет данные во всей главной форме ‘F_main’. Привязан к событию ‘Нажатие’ клавиши ‘Зарегистрировать’ в форме ‘F_main’ во вкладке ‘Регистрация’.
2. m_
inf
. Производит открытие формы ‘F_inf’ для корректировки данных и получения сведений. Привязан к событию ‘Нажатие’ клавиши ‘о отдыхающем’ в форме ‘F_main’ во вкладке ‘Счет’.
3. m_
otchet
. Производит открытие отчета ‘o_otchet’ для определенного клиента, т.е. для клиента, запись про которого является текущей в форме ‘F_c4et’. Привязан к событию ‘Нажатие’ клавиши ‘Счет’ в форме ‘ ‘F_main’ во вкладке ‘Счет’.
4. m
_
obnov
. Производит обновление записей о наличии номеров в таблице ‘Nomera’ при помощи запроса ‘z_obnov_nomer’, а так же закрывает форму ‘ ‘sdan_nomer». Привязан к событию ‘Нажатие’ клавиши ‘Вселить’ в форме ‘ ‘sdan_nomer».
5. m_
udal
. Удаляет записи о выехавших отдыхающих из таблиц ‘Spisok_otdih’, ‘Sdan_nomer’, производит обновление записей о освобождении номеров в таблице ‘Nomera’ при помощи запросов ‘Z_obnov_visel’, ‘Z_visel’, ‘Z_visel_otl2’. Привязан к событию ‘Нажатие’ клавиши ‘Выселение’ в форме ‘F_inf’.
Описание метода выселения клиента из базы отдыха
1) Сделать запросы на удаление и обновление, для того чтоб очистить таблицу ‘spisok_otdih’ ‘Sdan_nomer’ от прошлых записей и обновить записи о освобождении номеров в таблице ‘Nomera’.
2) Сделать макрос ‘M_udal’, поочередно запускающий запросы на удаление, обновление и добавление.
Макрокоманда
ОткрытьЗапрос (Z_visel; Таблица; Изменение
ОткрытьЗапрос (Z_visel_otl2; Таблица; Изменение)
ОткрытьЗапрос (z_obnov_visel; Таблица; Изменение)
ОбновитьОбъект (Форма, F_main)
3) В форме ‘Sdan_nomer’ сделать клавишу ‘Выселение’. К событию ‘Нажатие’ данной нам клавиши привязать макрос ‘M_udal’.
7.2 Реализация алгоритмов средствами
VisualBasic
PrivateSubf1_AfterUpdate()
Forms! [F_main]! [f_nomer].Requery
Forms! [F_main]! [f2].Requery
End Sub
Private Sub f2_AfterUpdate()
Forms! [F_main]! [f_nomer].Requery
End Sub
Private Sub f3_AfterUpdate()
Forms! [F_main]! [f_nomer].Requery
End Sub
Private Sub k1_AfterUpdate()
Forms! [F_main]! [Z_ludi].Requery
End Sub
Private Sub k2_AfterUpdate()
Forms! [F_main]! [f_uslug].Requery
End Sub
Private Sub Зарегистрировать_Click()
On Error GoTo Err_Зарегистрировать_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = «f_otdih»
DoCmd. OpenForm stDocName, stLinkCriteria
Exit_Зарегистрировать_Click:
ExitSub
Err_Зарегистрировать_Click:
MsgBox Err. Description
Resume Exit_Зарегистрировать_Click
EndSub
8. Разработка приложения юзера
Основная форма «f_main», в какой есть 3 вкладки:
· Регистрация.
· услуги.
· Счет.
Для занесения инфы о прибывшем отдыхающем нужно на вкладке ‘Регистрация’ с помощью поиска избрать пригодный номер (по местопребыванию, по виду, классу) в форме ‘f_nomer’, потом надавить на клавишу «Зарегистрировать», при нажатии которой раскроется форма ‘Sdan_nomer’ и поочередно заполнить все поля. Опосля занесения всех нужных сведений, нужно надавить клавишу ‘Вселить’ и данные о отдыхающем внесутся в таблицы.
Для занесения инфы о использовании услугами необходимо перейти на вкладку «Услуги». В форме «f_uslug» следует избрать в поиски нужного человека и в подчиненной форме fpp_uslugиз поля со перечнем подходящую услугу и указать его дату, а в подчиненной форме f_pitanie_otdih таковым же образом избрать нужное питание и указать на сколько человек (другими словами количество) либо показать его отсутствие.
При выезде клиента нужно перейти на вкладку ‘Счет’. Избрать в поиски нужного человека и мы увидим на какую сумму были применены услуги, питание и проживание и так же мы лицезреем там общий результат. Клиенту нужно выдать Счет, нажав на вкладке «Счет» клавишу «Счет», опосля этого требуется выселить человека, для этого на той же вкладке «Счет» мы жмем конку «о отдыхающем» и лицезреем информацию о человеке на форме «F_inf» (в котором номере пребывал с какого заехал и какого должен выехать и т.д.), убеждаемся что это тот человек, опосля это жмем клавишу «Выселить» на форме «F_inf».
]]>