Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet.doc
Скачиваний:
2
Добавлен:
15.09.2019
Размер:
977.92 Кб
Скачать

Санкт-Петербургский Государственный Политехнический Университет

Факультет Управления и Информационных Технологий

Кафедра «Управление в социально-экономических системах

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

(курс «Информатика»)

Создание Базы данных

«Web-сайт - авиакомпании»

Выполнил:

Студент Группа 1242/0

Xxxxxxx X.X.

Проверил:

Санкт- Петербург

0000 год

Содержание.

Описание таблиц. 5

Описание форм. 8

Отчеты. 22

Меню. 30

Введение. Описание предметной области.

Передо мной стояла задача сделать базу данных авиакомпании, с помощью которой возможны просмотр, редактирование и выборка нужной информации. У авиакомпании имеется несколько типов самолетов, в которых имеется определенное количество мест. Каждый самолет летает по определенному маршруту. Каждому маршруту соответствует свои дата полета, время отправления и цена, причем она определяется в зависимости от выбранного типа класса, Также авиакомпания предоставляет скидки для некоторых групп лиц. Все это было необходимо учесть при создании базы данных авиакомпании. Значит основными задачами моей базы данных было:

  1. Хранение информации о

    1. самолетах

а. типы самолетов

b. количество имеющихся мест в каждом самолете

с. рейсы, выполняемые данным типом самолета

2) рейсах

а. какой самолет осуществляет полет по данному рейсу

b. пункт отправления

c. пункт назначения

d. время в пути

e. дни недели, в который осуществляется данный рейс.

3) типах билетов (классы)

4) предоставляемых скидка

5) стоимости билетов ( в зависимости от класса и скидки)

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

  1. Вывод на печать выбранных рейсов, информацию о всех имеющихся рейсах, и прайс-лист.

Для удобства пользования базой сделано меню.

Описание таблиц.

Итак мною были выработаны следующие таблицы:

  • Самолеты

  • Маршруты

  • Дни

  • Скидки

  • Типы билетов

  • Стоимость

Теперь рассмотрим более подробно каждую из таблиц.

  1. Самолеты

Таблица содержит данные о всех самолетах, имеющихся в распоряжении данной авиакомпании. Данная таблица выглядит так:

  1. Маршруты.

Таблица содержит информацию о всех рейсах, предоставляемых данной авиакомпанией, а также типах самолетах, осуществляющих данные рейсы:

3.Дни

В этой таблице содержится информация о днях недели, в которые осуществляется тот или иной рейс, а также время отправления:

4.Скидки.

Здесь содержится информация о скидках, предоставляемых авиакомпанией:

5.Типы билетов

Информация о имеющихся классах:

6.Стоимость.

В этой таблице содержится информация о стоимости билетов, в зависимости от маршрута и класса:

Схема данных.

Между таблицами для обеспечения целостности данных установлены следующие связи:

Описание форм.

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

Опишу сначала первый вид форм.

Для начала я создала ленточные формы по каждой таблице (Самолеты, Маршруты, Дни, ТипыБилетов, Скидки, Стоимость). Получилось 6 ленточных форм. Но легко было заметить, что просмотр информации в таких формах крайне неудобен и некоторые формы надо было объединить. Поэтому форму Маршруты я сделала подчиненной к форме Самолеты.

В таком виде более удобно просматривать, изменять и добавлять новую информацию о всех типах самолетов. Таким образом хорошо видно, какой самолет каким рейсом летает и в случае необходимости данную информация очень просто изменить. Причем в главной форме (Самолеты) пользователю не надо видеть код самолета. Поэтому в свойствах этого поля я поставила вывод на экран – нет.

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

Причем, в форме Дни пользователю не надо показывать код маршрута, т.к. он уже отображается в форме Маршруты =>его необходимо скрыть. В форме ТипыБилетов пользователю необязательно видеть код классов, поэтому его тоже необходимо скрыть. В форме Стоимость также необходимо скрыть поля КодТипаБилета и КодМаршрута.

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

В общем итоге у меня получилась форма, имеющая следующий вид:

Итак, мною была создана форма для удобного просмотра и изменения информации о рейсах, самолетах, совершающих эти рейсы и ценах на билет в зависимости от класса.

Форму Скидки я оставила почти без изменений. Только поле Код скидки сделала невидимым, т.к. пользователю его видеть не нужно.

Формы для выборки нужной информации.

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

Для создания данной формы сначала было необходимо создать запрос, где будут содержаться все необходимые поля. Это запрос на основе двух таблиц: Маршруты и Дни. У меня он получился вот таким:

Я назвала его ЗапросНаДатуБезФильтра

Далее на основе этого запроса я создала ленточную форму, которую назвала Все. Форма имела вот такой вид:

Дальше пришлось немного переделать внешний вид этой формы в режиме конструктора, а именно: в заголовок формы я вставила еще 3 новых поля. Первое я назвала Отк ( здесь пользователь будет выбирать необходимый ему пункт отправления), второе – Куд (пункт назначения) и третье – Дата (необходимая дата).поля Отк и Куд я преобразовала в поля со списком и создала еще 2 запроса: Откуда и Куда ( на основе таблицы Маршруты)

И поставила 2 эти запроса источником строк полей Отк и Куд соответственно. Теперь пользователь может выбирать необходимый ему город из списка, а не вбивать его вручную.

В свойствах поля Дата на вкладке данные поставим маску ввода – выберем краткий формат даты. Теперь пользователю необходимо вводить только числа соответствующие числу, месяцу и году необходимым ему, без всяких разделительных знаков. Это сводит до минимума возможность неверного ввода и ошибок при выводе данных. Итак, моя форма приняла вид:

Далее необходимо было создать запрос для фильтрации данных. Для этого я просто скопировала уже созданный запрос запросНаДатуБезФильтра и изменила свойства некоторых полей. Т.к. пункт отправления должен браться тот, что выберет пользователь в поле Отк поэтому в условии отбора поля откуда я написала следующую формулу:

Like IIf(IsNull([Forms]![Все]![Отк]);"*";[Forms]![Все]![Отк])

В поле Куда:

Like IIf(IsNull([Forms]![Все]![Куд]);"*";[Forms]![Все]![Куд])

(Информация берется из поля Куд)

Т.к. в базе хранится информация по каким дням недели летает тот или иной рейс, а пользователь вводит необходимую ему дату => необходимо было преобразовать введенную дату в день недели и в зависимости от него вывести информацию на экран. Поэтому в условие отбора поля день я поставила следующую формулу:

Like IIf(IsNull([Forms]![Все]![Дата]);"*";WeekdayName(Weekday(CVDate([Forms]![Все]![Дата]));0;1))

И еще в этом запросе необходимо добавить еще одно поле День, для отображения дня недели.

Далее я поставила в искомой форме кнопку и назвала ее Выбор а в свойствах, на вкладке События - Нажатие кнопки поставила следующую процедуру обработки событий:

Me.RecordSource = "ЗапросНаДату"

Me.Requery

‘Первая строчка задает в качестве источника записей для формы запрос с фильтрами по городам и дате. Вторая обновляет данные в форме.

Потом стоило поставить еще одну кнопку в форме (БезФильтра) ,при нажатии которой отображаются все имеющиеся рейсы. В свойствах этой кнопки я поставила на нажатие процедуру возврата формы к искомому виду, т.е. без фильтра.

Me.RecordSource = "ЗапросНаДатуБезФильтра"

Me.Requery

Следовательно форма приняла следующий вид:

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

Форму По ценам я делала в режиме конструктора. В области данных я создала 5 новых полей: класс, скидка, цена, ставка и ИТОГО. Поля Класс и Скидка я преобразовала в поля со списком, здесь пользователь должен выбирать желаемый класс и скидку. При этом мне хотелось, чтобы при выборе класса в поле цена автоматически подставлялась цена билета, соответствующая данному классу. Поэтому для источника данных поля класс я создала запрос, который назвала ЗапросНаЦены. Выглядит он так:

Однако при выборе класса пользователю необходимо видеть только типы классов, поэтому в свойствах поля присоединенных столбцов пишем четыре, однако видимым ставим только один.( ненужным столбцам ширину устанавливаем равной нулю)

На вкладке события – после обновления ставим следующую процедуру обработки событий:

Me.Цена = Me.Класс.Column(0)

Me.Requery

Т.о. я сделала автоподстановку цены при выборе класса.

С полем скидка дело обстоит аналогично. Необходимо выбирать имеющиеся скидки из списка + необходима автоматическая подстановка процентной ставки выбранной скидки в поле ставка => я создала запрос, который назвала СкидкиЗапрос:

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

И наконец поле ИТОГО. В этом поле должен идти подсчет цены на билет с учетом выбранных класса и скидки. Поэтому в свойствах этого поля на вкладке данные пишем следующую формулу:

=[Цена]-[Цена]*[Ставка]/100

Теперь для более удобного просмотра все данные необходимо вывести на один лист. Для этого я поставила в форме кнопку(КнопкаДляОтчета), которая открывает отчет, систематизирующий введенные данные в двух формах - Все и ПоЦенам.( ОтчетОполете – о нем можно прочитать в главе Отчеты).

Итак, в конечном итоге формы принимают вот такой вид:

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

Во - Первых, я создала запрос (ЗапросНаВыборПоРейсуБезФильтра):

Затем на его основе – форму (ВыборПоРейсу):

В заголовке формы создала новое поле ( поле со списком) для выбора необходимого номера рейса. Для этого снова пришлось сделать запрос (ЗапросНаКодМаршрута):

Далее я создала запрос с фильтром ( ЗапросНаВыборПоРейсу) путем копирования первоначального запроса (ЗапросНаВыборПоРейсуБезФильтра) и изменения условия отбора одного из полей, а именно КодМаршрута:

[Forms]![ВыборПоРейсу]![МаршрутаКод].

Затем в форме ПоРейсу я создала две кнопки ( ПоРейсу и Все Рейсы) на одну я поставила фильтр, а на другую искомый запрос без фильтра.

Также еще я поставила кнопку (КнопкаОтчетаОрейсах) для вывода для печати отчета о выбранном рейсе.(ОтчетОрейсах – о нем можно прочитать в главе Отчеты)

И в конечном итоге форма ВыборПоРейсу приняла вид:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]