Автоматизация работы базы отдыха

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ









		















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



«База отдыха»























		

		Владивосток, 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-vo komnat



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. Виды проживания (vidi_prozhiv)

№п/п

Названия столбца

тип

ключ

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-vo komnat)

№п/п

Названия столбца

тип

ключ

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 Запросы на выборку данных



Z_uslug_2 – запрос для расчета суммы за повторяющиеся услуги для каждого отдыхающего и количество повторяющихся использованных услуг.

а) Данные из следующих таблиц должны быть включены в запрос:

spravochnik_uslug, строки, Sdan_nomer.







б) структура связей между таблицами:

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 Корректировка данных средствами запросов



		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 Технология загрузки базы данных



Таблицы – объекты загрузки.









Sost_nomer

Vidi_prozhiv

Ko-vo_komnat

Mesto_prozhiv



Nomera





Spisok_otdih

Sdan_nomer

klass







Pitanie_otdih

строки





Питание

Spravochnik_uslug





В первую очередь заполняется таблица ‘Nomera’, в которую заносятся все данные о существующих в отеле номерах;

Таблица ‘Spisok_otdih’ заполняется на основании данных о прибытии клиента;

Таблица ‘строки’ и таблица ‘pitanie_otdih’заполняется на основании использовании услуг и питания клиентами, таблица «Sdan_nomer» заполняется на основании данных о проживании клиентами в отеле. Эта информация является рабочей.




5.2 Разработка форм



Главная форма имеет три вкладки: «Регистрация», «Услуги» и «Выселение».

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

		Превая вкладка ‘Регистрация’ содержит подчиненную форму ‘f_nomer’. А также вкладка ‘Регистрация’ включает кнопку ‘Зарегистрировать’.

		Форма ‘f_nomer’ создается на основе запроса ‘z_nomer’.

		

		

		

		На второй вкладке расположена информация об услугах, которыми могут пользоваться клиенты. Она содержит форму ‘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



FIO

код

        строки



Код   

 услуга             

ключ н/ч      

data          











Источник записей: Sdan_nomer + строки

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

2) Вложенная форма с одним уровнем





        строки



Код   

 услуга             

ключ н/ч      

data          



Sdan_nomer



FIO

код










Главная:

Источник записей: Sdan_nomer

Таблица, на которой строится форма: Sdan_nomer

Корректируемые данные: Sdan_nomer

Количество записей: Sdan_nomer

Подчиненная:

Источник записей: строки

Таблица, на которой строится форма: строки

Корректируемые данные: Нет

Количество записей: сколько выведенный клиент пользовался услугами

Достоинства: Возможность корректировать таблицу «Sdan_nomer», реализуется иерархический просмотр.

Вывод: Выбираем для реализации форму 2, так как она удовлетворяет всем поставленным требованиям.

1) Определение подсхемы данных.

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





Sdan_nomer



FIO

код



        строки



Код   

 услуга             

ключ н/ч      

data          













Основная часть

Подчиненная форма







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. Осуществляет открытие формы ‘sdan_nomer’ для занесения данных о новом клиенте, записывает текущий номер в форму ‘sdan_nomer’ из формы f_nomer, обновляет данные во всей главной форме ‘F_main’. Привязан к событию ‘Нажатие’ кнопки ‘Зарегистрировать’ в форме ‘F_main’ во вкладке ‘Регистрация’.

m_inf. Осуществляет открытие формы ‘F_inf’ для корректировки данных и получения сведений. Привязан к событию ‘Нажатие’ кнопки ‘об отдыхающем’ в форме ‘F_main’ во вкладке ‘Счет’.

m_otchet. Осуществляет открытие отчета ‘o_otchet’ для определенного клиента, т.е. для клиента, запись про которого является текущей в форме ‘F_c4et’. Привязан к событию ‘Нажатие’ кнопки ‘Счет’ в форме ‘ ‘F_main’ во вкладке ‘Счет’.

m_obnov. Осуществляет обновление записей о наличии номеров в таблице ‘Nomera’ с помощью запроса ‘z_obnov_nomer’, а так же закрывает форму ‘ ‘sdan_nomer». Привязан к событию ‘Нажатие’ кнопки ‘Вселить’ в форме ‘ ‘sdan_nomer».

m_udal. Удаляет записи о выехавших отдыхающих из таблиц ‘Spisok_otdih’, 'Sdan_nomer’, осуществляет обновление записей об освобождении номеров в таблице ‘Nomera’ с помощью запросов ‘Z_obnov_visel’, ‘Z_visel’, ‘Z_visel_otl2’. Привязан к событию ‘Нажатие’ кнопки ‘Выселение’ в форме ‘F_inf’.

Описание алгоритма выселения клиента из базы отдыха

Создать запросы на удаление и обновление, для того чтобы очистить таблицу ‘spisok_otdih’ ‘Sdan_nomer’ от предыдущих записей и обновить записи об освобождении номеров в таблице ‘Nomera’.

Создать макрос ‘M_udal’, последовательно запускающий запросы на удаление, обновление и добавление.



Макрокоманда

ОткрытьЗапрос (Z_visel; Таблица; Изменение

ОткрытьЗапрос (Z_visel_otl2; Таблица; Изменение)

ОткрытьЗапрос (z_obnov_visel; Таблица; Изменение)

ОбновитьОбъект (Форма, F_main)



В форме ‘Sdan_nomer’ создать кнопку ‘Выселение’. К событию ‘Нажатие’ этой кнопки привязать макрос ‘M_udal’.



7.2 Реализация алгоритмов средствами Visual Basic



Private Sub f1_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:

Exit Sub

Err_Зарегистрировать_Click:

MsgBox Err. Description

Resume Exit_Зарегистрировать_Click

End Sub






8. Разработка приложения пользователя



Главная форма «f_main», в которой есть 3 вкладки:

Регистрация.

Услуги.

Счет.

Для занесения информации о прибывшем отдыхающем необходимо на вкладке ‘Регистрация’ при помощи поиска выбрать подходящий номер (по местонахождению, по виду, классу) в форме ‘f_nomer’, затем нажать на кнопку «Зарегистрировать», при нажатии которой откроется форма ‘Sdan_nomer’ и последовательно заполнить все поля. После занесения всех необходимых сведений, необходимо нажать кнопку ‘Вселить’ и данные об отдыхающем внесутся в таблицы.

Для занесения информации о пользовании услугами нужно перейти на вкладку «Услуги». В форме «f_uslug» следует выбрать в поиски необходимого человека и в подчиненной форме fpp_uslug из поля со списком нужную услугу и указать его дату, а в подчиненной форме f_pitanie_otdih таким же образом выбрать необходимое питание и указать на сколько человек (то есть количество) или показать его отсутствие.

При выезде клиента необходимо перейти на вкладку ‘Счет’. Выбрать в поиски необходимого человека и мы увидим на какую сумму были использованы услуги, питание и проживание и так же мы видим там общий итог. Клиенту необходимо выдать Счет, нажав на вкладке «Счет» кнопку «Счет», после этого требуется выселить человека, для этого на той же вкладке «Счет» мы нажимаем конку «об отдыхающем» и видим информацию о человеке на форме «F_inf» (в каком номере проживал с какого заехал и какого должен выехать и т.д.), убеждаемся что это тот человек, после это нажимаем кнопку «Выселить» на форме «F_inf».

24