Проектирование базы данных предметной области «Фирма по продаже пластиковых окон».

Автор: Пользователь скрыл имя, 07 Апреля 2011 в 18:37, курсовая работа

Краткое описание

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

Оглавление

Введение
Постановка задачи и анализ предметной области
Назначение проектируемой базы данных
Проектирование инфологической модели данных
Информационные потребности пользователя (анализ запросов).
Определение сущностей и связей
Определение функций пользователя, атрибутов, ключей.
Выявление и описание ограничений целостности.
Разработка инфологической модели предметной области.
Проектирование даталогической модели БД.
Выбор СУБД.
Отображение инфологической модели на даталогическую модель.
Реализация БД
Разработка средств реализации ограничений целостности.
Разработка процедур ведения БД (добавление, удаление, изменение, контроль).
Разработка процедур реализации запросов и интерфейса пользователя.
Интерфейс и руководство пользователя
Спецификация входных и выходных документов.
Спецификация запросов пользователя
Заключение
Список используемой литературы

Файлы: 1 файл

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

— 427.50 Кб (Скачать)
ify">(((Аэропорты.НазвАэропорта)=[Forms]![Билет1]![ПолеСоСписком0]) AND

((ОбслужРейса.Дата)=[Forms]![Билет1]![Поле16]) AND

((РасписаниеРейсов.ДеньНедели)=Weekday([Forms]![Билет1]![Поле16])))

      ORDER BY РасписаниеРейсов.ВрОтпр; 

      ВсеМеста. Запрос для получения списка всех мест в самолете  в определенный день и рейс.

      SELECT IIf(ВидСамолета!КоличМест=80,[Список

мест]!список80места,IIf(ВидСамолета!КоличМест=60,[Список

мест]!список60места,[Список мест]!список50места)) AS Место

      FROM [Список мест], ВидСамолета

      WHERE (((IIf([ВидСамолета]![КоличМест]=80,[Список 

мест]![список80места],IIf([ВидСамолета]![КоличМест]=60,[Список

мест]![список60места],[Список мест]![список50места]))) Is Not Null)); 

      Занятые места. Запрос для получения списка занятых мест по конкретному рейсу в определенный день.

      SELECT [Проданные места].Место, [Проданные  места].КодРейса, [Проданные места].Дата

      FROM [Проданные места]

      WHERE ((([Проданные места].КодРейса) =

[Forms]![Билет2]![ПолеСоСписком31]) AND (([Проданные места].Дата) =

[Forms]![Билет1]![Поле16])); 
 
 
 

      ИтогиРейса. Запрос для получения количества проданных билетов и суммы в определенный день.

      SELECT ИтогиДня.Дата, РасписаниеРейсов.КодМарш,  Маршрут.КонАэропорт, РасписаниеРейсов.ВрОтпр, ИтогиДня.ЧислоПроданБил, ИтогиДня.Сумма, РасписаниеРейсов.КодРейса

      FROM (Маршрут INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш = РасписаниеРейсов.КодМарш) INNER JOIN ИтогиДня ON РасписаниеРейсов.КодРейса = ИтогиДня.КодРейса

      WHERE (((ИтогиДня.Дата)=[Forms]![ВводДаты]![ПолеСоСписком1])); 

      ОбслуживаниеРейса. Какие летчики (ФИО),самолеты обслуживают рейс и в какое время.

      SELECT [Сведения о летчиках].КодЛетчика, [Сведения о летчиках].Фамилия, [Сведения  о летчиках].Имя, [Сведения о летчиках].Отчество, ОбслужРейса.Дата, РасписаниеРейсов.ВрОтпр, ОбслужРейса.КодРейса, РасписаниеРейсов.КодМарш, Маршрут.КонАэропорт, ОбслужРейса.НомСам

      FROM [Сведения о летчиках] INNER JOIN ((Маршрут  INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш  = РасписаниеРейсов.КодМарш) INNER JOIN ОбслужРейса ON РасписаниеРейсов.КодРейса = ОбслужРейса.КодРейса) ON [Сведения о летчиках].КодЛетчика = ОбслужРейса.КодЛетчика

      GROUP BY [Сведения о летчиках].КодЛетчика, [Сведения о летчиках].Фамилия, [Сведения  о летчиках].Имя, [Сведения о летчиках].Отчество, ОбслужРейса.Дата, РасписаниеРейсов.ВрОтпр, ОбслужРейса.КодРейса, РасписаниеРейсов.КодМарш, Маршрут.КонАэропорт, ОбслужРейса.НомСам

      ORDER BY ОбслужРейса.Дата;

      ПоВрДвиж. Запрос, определяющий список самолетов  и летчиков, совершающих рейс в момент вылета очередного (требующего введения сведений об обслуживании)

      SELECT ОбслужРейса.КодЛетчика, [Сведения  о летчиках].Фамилия, [Сведения о  летчиках].Имя, [Сведения о летчиках].Отчество, Самолеты.НомСам, ОбслужРейса.Дата, РасписаниеРейсов.ВрОтпр, РасписаниеРейсов.ВрПриб

      FROM [Сведения о летчиках] INNER JOIN ((Маршрут  INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш  = РасписаниеРейсов.КодМарш) INNER JOIN (Самолеты INNER JOIN ОбслужРейса ON Самолеты.НомСам = ОбслужРейса.НомСам) ON РасписаниеРейсов.КодРейса = ОбслужРейса.КодРейса) ON [Сведения о летчиках].КодЛетчика = ОбслужРейса.КодЛетчика

      WHERE (((ОбслужРейса.Дата)=[Forms]![Изменение 

ОбслуживаниеРейса]![Дата]) AND

((РасписаниеРейсов.ВрПриб)>(select[часы]from[ВрДвижРейса])));

 

      ПолнаяСтоим. Вывод стоимости билетов для всех рейсов и всех типов билета.

      SELECT Аэропорты.НазвАэропорта, РасписаниеРейсов.КодРейса, Int([Стоим За 1км]*[Аэропорты].[Расстояние]) AS 1кл, Int([1кл]*0.75) AS 2кл, Int([1кл]*0.52) AS д1кл, Int([д1кл]*0.75) AS д2кл

      FROM СтоимПоНапр INNER JOIN ((Маршрут INNER JOIN Аэропорты ON Маршрут.КодМарш = Аэропорты.КодМарш) INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш = РасписаниеРейсов.КодМарш) ON СтоимПоНапр.КодНапр = Маршрут.КодНапр;

     ПоНачалуДвиж. Запрос, определяющий список летчиков и самолетов, совершающих рейс до момента прибытия очередного (требующего введения сведений об обслуживании).

     SELECT ОбслужРейса.КодЛетчика, [Сведения  о летчиках].Фамилия, [Сведения о  летчиках].Имя, Самолеты.НомСам, [Сведения  о летчиках].Отчество, ОбслужРейса.Дата, РасписаниеРейсов.ВрОтпр, РасписаниеРейсов.ВрПриб

     FROM [Сведения о летчиках] INNER JOIN ((Маршрут  INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш  = РасписаниеРейсов.КодМарш) INNER JOIN (Самолеты INNER JOIN ОбслужРейса ON Самолеты.НомСам = ОбслужРейса.НомСам) ON РасписаниеРейсов.КодРейса = ОбслужРейса.КодРейса) ON [Сведения о летчиках].КодЛетчика = ОбслужРейса.КодЛетчика

     WHERE (((ОбслужРейса.Дата)=[Forms]![Изменение 

ОбслуживаниеРейса]![Дата]) AND ((РасписаниеРейсов.ВрОтпр)<(select

[врдвиж]from[ВрДвижРейса]))); 

     СвобЛет. Запрос для получения списка тех летчиков, которые фактически могут обслужить данный рейс.

     SELECT [Сведения о летчиках].КодЛетчика, [Сведения о летчиках].Фамилия, [Сведения  о летчиках].Имя, [Сведения о летчиках].Отчество

     FROM [Сведения о летчиках]

     WHERE ((([Сведения о летчиках].КодЛетчика) Not In (select [КодЛетчика] from [ПоВрДвиж]))) OR ((([Сведения о летчиках].КодЛетчика) Not In (select [КодЛетчика] from [ПоНачалуДвиж] ))); 

     Свободные места. Запрос для получения списка свободных мест в определенный день и рейс (для ввода номера места в билете).

     SELECT ВсеМеста.Место

     FROM ВсеМеста

     WHERE Not Exists (select  [Занятые места].[Место] from [Занятые места] where  [Занятые  места].[Место]=[ВсеМеста].[Место]); 

     СвобСам. Запрос для получения списка самолетов, которые фактически могут обслужить данный рейс.

     SELECT Самолеты.НомСам, Самолеты.ТребРемонт

     FROM Самолеты

     WHERE (((Самолеты.НомСам) Not In (select [НомСам] from [ПоВрДвиж])) AND ((Самолеты.ТребРемонт)=False)) OR (((Самолеты.НомСам) Not In (select [НомСам] from [ПоНачалуДвиж] )) AND ((Самолеты.ТребРемонт)=False)); 

     СтавкаЗаРейс (все). Запрос для получения заработной платы всех летчиков за определенный месяц.

     SELECT ОбслужРейса.КодЛетчика, ОбслужРейса.Дата, Аэропорты.НазвАэропорта, [СтавкаЗаРейс]*[Расстояние] AS СуммаЗаРейс, Month([Дата]) AS Месяц, [Сведения о летчиках].Фамилия, [Сведения о летчиках].Имя, [Сведения о летчиках].Отчество, Аэропорты.Расстояние, РасписаниеРейсов.ВрОтпр

     FROM СтоимПоНапр INNER JOIN ([Сведения о  летчиках] INNER JOIN (((Маршрут INNER JOIN Аэропорты ON Маршрут.КодМарш = Аэропорты.КодМарш) INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш = РасписаниеРейсов.КодМарш) INNER JOIN ОбслужРейса ON РасписаниеРейсов.КодРейса = ОбслужРейса.КодРейса) ON [Сведения о летчиках].КодЛетчика = ОбслужРейса.КодЛетчика) ON СтоимПоНапр.КодНапр = Маршрут.КодНапр

     WHERE (((Month([Дата]))=[Forms]![Выбор месяца]![ПолеСоСписком1])); 

     СтавкаЗаРейсЛетч. Запрос для получения заработной платы определенного летчика за определенный день.

     SELECT [Сведения о летчиках].Фамилия, [Сведения о летчиках].Имя, [Сведения о летчиках].Отчество, ОбслужРейса.КодЛетчика, ОбслужРейса.Дата, Аэропорты.НазвАэропорта, Аэропорты.Расстояние, Month([Дата]) AS 11, [СтавкаЗаРейс]*[Расстояние] AS СуммаЗаРейс, РасписаниеРейсов.ВрОтпр

     FROM СтоимПоНапр INNER JOIN ([Сведения о  летчиках] INNER JOIN (((Маршрут INNER JOIN Аэропорты  ON Маршрут.КодМарш = Аэропорты.КодМарш) INNER JOIN РасписаниеРейсов ON Маршрут.КодМарш  = РасписаниеРейсов.КодМарш) INNER JOIN ОбслужРейса  ON РасписаниеРейсов.КодРейса = ОбслужРейса.КодРейса) ON [Сведения о летчиках].КодЛетчика = ОбслужРейса.КодЛетчика) ON СтоимПоНапр.КодНапр = Маршрут.КодНапр

     WHERE (((ОбслужРейса.КодЛетчика)=[Forms]![Сведения  о 

летчиках]![КодЛетчика]) AND

((Month([Дата]))=[Forms]![ВыборМесЛетч]![ПолеСоСписком1])); 

     Стоимость. Запрос для получения стоимости билета для всех видов билета по определенному маршруту. Связывает отношения Аэропорты, СтоимостьПоНапр, Маршрут.

     SELECT Аэропорты.НазвАэропорта, Аэропорты.Расстояние, СтоимПоНапр.[Стоим За 1км], Int([Стоим За 1км]*[Аэропорты].[Расстояние]) AS 1кл, Int([1кл]*0.75) AS 2кл, Int([1кл]*0.52) AS д1кл, Int([д1кл]*0.75) AS д2кл

     FROM СтоимПоНапр INNER JOIN (Маршрут INNER JOIN Аэропорты ON Маршрут.КодМарш = Аэропорты.КодМарш) ON СтоимПоНапр.КодНапр = Маршрут.КодНапр

     WHERE (((Аэропорты.НазвАэропорта)=[Forms]![Билет1]![ПолеСоСписком0]));

 

7. Интерфейс и руководство пользователя

      Для запуска данного проекта достаточно сделать двойной щелчок мышью  по файлу “Аэропорт.mdb. Автоматически загружается Microsoft Access и открывается главная кнопочная форма (Рис.1). Из нее можно попасть, нажимая соответствующие кнопки, в формы просмотра данных о летчиках, самолетах, заказа билета, изменения данных базы, просмотра отчетов, а также кнопка Выход, нажав которую вы сможете выйти из программы. При нажатии кнопки О программе Вы сможете прочитать краткую информацию о целях программы и ее разработчике. 

Рис.1. Иллюстрация  «Главной формы»  

      Для того чтобы просмотреть информацию о летчиках, выберите на Главной форме кнопку Летчики. При этом откроется форма Летчики (Рис.2).  

Рис.2. Иллюстрация  формы «Летчики» 

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

Рис.3. Иллюстрация  формы «Сведения о летчиках»  

      Для просмотра информации обо всех летчиках в форме Летчики нажмите кнопку Обо всех (Рис.4). 

Рис.4. Иллюстрация  формы «Сведения о летчиках список» 

      Аналогично  можно просмотреть информацию о  самолетах.

      При нажатии на Главной форме кнопки Заказ билета, появляется окно «Заказ билета» (Рис.5),  в котором необходимо выбрать аэропорт, дату и нажать кнопку Далее.  

Рис.5. Иллюстрация формы «Билет 1» 

      Вам откроется окно выбора времени отправления (Рис.6). Выберите нужное время и нажмите  кнопку Далее.  

Рис.6. Иллюстрация  формы «Билет 2» 

      Откроется окно выбора места и типа билета (Рис.7), заполните требуемые поля, и нажмите Далее.  

Рис.7. Иллюстрация  формы «Билет 3» 

      Будет открыто окно с информацией о  билете (Рис.8), для печати билета нажмите  кнопку Готово. 

Рис.8. Иллюстрация  формы «Билет 4» 
 

      Для изменения данных, их удаления или  ввода новых сведений, нажмите  в Главном меню кнопку Изменение данных. При этом откроется кнопочная форма «Изменение данных» (Рис.9), где Вы можете выбрать область для своих действий, нажав соответствующую кнопку.

Информация о работе Проектирование базы данных предметной области «Фирма по продаже пластиковых окон».