Разработка автоматизированного рабочего места кассира по продаже билетов в кассе аэрофлота
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
кран и на принтер.
Разработка технологии ввода и накопления входной информации.
Для решения рассматриваемой задачи должен производиться ввод и накопление оперативно-учетной информации о пассажирах, их данных и информации о новых рейсах и маршрутах.
Справочная информация о пассажирах, имеющихся маршрутах и рейсах должна быть ранее загружена в базу данных в процессе решения данной предметной области с соответствующих документов - Справочника пассажиров и Справочника рейсов
В соответствии с этим технология ввода входной оперативной информации и решение рассматриваемой задачи с помощью базы данных приведены на рис.2.
Рис. 2. Технологическая схема ввода информации и решения задачи оценки оплаты
Рис. 3. Источники загрузки таблиц базы данных при регистрации новых клиентов
На рис. 4 показаны источники данных - входные документы при регистрации новых клиентов для создания записей таблиц с оперативной (учетной) информацией базы данных. Здесь также указан перечень загружаемых полей, которые необходимы для решения рассматриваемой задачи.
Определение форм ввода ввода-вывода.
Для ввода информации о регистрации и регистрационных данных о новых клиентах были созданы экранные формы. Через экранные формы ввода-вывода дожен обеспечиваться однократный ввод данных во взаимосвязанные таблицы Список пассажиров - Багаж пассажиров и Список рейсов. Ниже приведена экранная форма для ввода данных клиента и его регистрации.
Форма для загрузки данных с формы нового клиента является составной многотабличной. Основная часть формы строиться на основе двух загружаемых таблиц - Список пассажиров и Багаж пассажиров.
Рис. 4. Макет формы ввода-вывода для загрузки данных с формы регистрации нового клиента в таблицы Список пассажиров и Багаж пассажиров
Подчиненная форма строиться на основе таблиц Список пассажиров и Багаж пассажиров. Включаемая форма связывается с основной по ключу Номер билета и Номер рейса. Таким образом, с одной экранной формы создается одна запись в таблице Список пассажиров и одна запись в таблице Багаж пассажиров
Реализация запросов средствами Microsoft Access 2003:
Запрос, определяющий состав посадочной ведомости для определенного рейса:[Расписание рейсов].[Номер рейса], [Список самолетов].[Бортовой номер], [Список самолетов].[Марка самолета], [Список самолетов].[Вид самолета], [Список пассажиров].[ФИО клиента], [Список пассажиров].[Номер билета], [Список пассажиров].[Полный номер паспорта], [Список пассажиров].[Место прописки клиента], [Багаж пассажиров].[Вес багажа][Список самолетов] INNER JOIN (([Описание маршрута] INNER JOIN [Расписание рейсов] ON [Описание маршрута].[Название маршрута] = [Расписание рейсов].[Название маршрута]) INNER JOIN ([Багаж пассажиров] INNER JOIN [Список пассажиров] ON [Багаж пассажиров].[Номер билета] = [Список пассажиров].[Номер билета]) ON [Расписание рейсов].[Номер рейса] = [Список пассажиров].[Номер рейса]) ON [Список самолетов].[Бортовой номер] = [Расписание рейсов].[Бортовой номер]((([Расписание рейсов].[Номер рейса])=[Введите номер рейса]))
Запрос, выводящий отчет по доходам аэропорта за определенный период с группировкой по маршрутам:[Описание маршрута].[Название маршрута], [Расписание рейсов].[Номер рейса], [Список самолетов].[Количество пассажирских мест], Count([Список пассажиров]![ФИО клиента]) AS [Количество проданных билетов], [Описание маршрута].[Стоимость билета], [Расписание рейсов].[Количество возвращенных билетов], (Count([Список пассажиров]![ФИО клиента])-[Количество возвращенных билетов])*([Описание маршрута]![Стоимость билета]) AS [Выручка по рейсам][Список самолетов] INNER JOIN (([Описание маршрута] INNER JOIN [Расписание рейсов] ON [Описание маршрута].[Название маршрута] = [Расписание рейсов].[Название маршрута]) INNER JOIN ([Багаж пассажиров] INNER JOIN [Список пассажиров] ON [Багаж пассажиров].[Номер билета] = [Список пассажиров].[Номер билета]) ON [Расписание рейсов].[Номер рейса] = [Список пассажиров].[Номер рейса]) ON [Список самолетов].[Бортовой номер] = [Расписание рейсов].[Бортовой номер]BY [Описание маршрута].[Название маршрута], [Расписание рейсов].[Номер рейса], [Список самолетов].[Количество пассажирских мест], [Описание маршрута].[Стоимость билета], [Расписание рейсов].[Количество возвращенных билетов], [Расписание рейсов].[Дата вылета]((([Расписание рейсов].[Дата вылета]) Between #1/1/2008# And #1/5/2008#))
Запрос, определяющий наличие свободных мест на определенном рейсе:[Расписание рейсов].[Номер рейса], [Количество пассажирских мест]-(Count([Список пассажиров]![ФИО клиента]))+[Количество возвращенных билетов] AS [Осталось свободных мест][Список самолетов] INNER JOIN (([Описание маршрута] INNER JOIN [Расписание рейсов] ON [Описание маршрута].[Название маршрута] = [Расписание рейсов].[Название маршрута]) INNER JOIN [Список пассажиров] ON [Расписание рейсов].[Номер рейса] = [Список пассажиров].[Номер рейса]) ON [Список самолетов].[Бортовой номер] = [Расписание рейсов].[Бортовой номер]BY [Расписание рейсов].[Номер рейса], [Список самолетов].[Количество пассажирских мест], [Расписание рейсов].[Количество возвращенных билетов];
Запрос, определяющий ближайший рейс до определенного места посадки:[Расписание рейсов].[Номер рейса], [Расписание рейсов].[Время вылета], [НОВЫЙ Запрос на кол-во свободных мест].[Осталось свободных мест], [Расписание рейсов].[Дата вылета][Список самолетов] INNER JOIN (([Описание маршрута] INNER JOIN ([Расписание рейсов] INNER JOIN [НОВЫЙ Запрос на кол-во свободных мест] ON [Расписание рейсов].