- •Введение
- •1 Анализ предметной области
- •2.6 Порядок контроля и приемки
- •3 Функциональное проектирование системы автоматизированной системы «Расписание движение поездов»
- •3.1 Общие сведения case-средства bpWin
- •3.2 Описание функциональной модели
- •4 Проектирование базы данных автоматизированной системы «Расписание движение поездов»
- •4.1 Описание case-средства erWin
- •4.2 Логическое проектирование базы данных системы
- •4.3 Разработка структуры связей
- •4.4 Нормализация отношений базы данных
- •5 Обоснование выбора средств разработки
- •6 Описание программы
- •6.1 Общие сведения
- •6.2 Функциональное назначение
- •6.3 Описание логической структуры
- •6.4 Используемые технические средства
- •6.5 Вызов и загрузка
- •6.6 Входные данные
- •7.4 Требования к программной документации
- •7.5 Средства и порядок испытаний
- •7.6 Методы испытаний
- •8.4 Входные и выходные данные
- •Заключение
- •Список использованных источников
- •Функциональная модель Приложение а
- •Модель структуры базы данных системы Приложение б
- •Текст программы Приложение в
- •Результаты испытаний Приложение г
- •Приложение д
6 Описание программы
6.1 Общие сведения
Автоматизированная система называется «Расписание движения поездов». Главный проектный файл называется Poezda.exe. При работе программа использует базу данных, файл которой называется Maria.fdb.
Программа работает в операционных системах Windows XP /NT/7.
6.2 Функциональное назначение
Разработанная автоматизированная система предназначена для автоматизации работ, связанных с ведением расписания движения поездов. Система предоставляет возможность ввода, редактирования и просмотр содержимого базы данных, а также составления отчетов. Она позволяет существенно упростить и ускорить составление расписания движения поездов. Также система повышает эффективность работы, за счет того, что система легка в обращении, позволяет хранить большое количество сведений в одной базе, автоматизирует некоторые процессы ввода и расчета, включает запросы, создает отчеты и др.
Разработанная автоматизированная система должна давать возможность диспетчерам легко и просто вести расписание движение поездов.
6.3 Описание логической структуры
В базе данных необходимо хранить информацию о поездах, об их категориях, об электропоездах, о вагонах, об их категориях, о станциях, о зонах, о расписании, о стоимости.
С помощью инструмента IBExpert была создана база данных. При этом в качестве сервера базы данных использовался удаленный сервер с именем localhost.
Файл базы данных имеет имя MARIA.FDB. При создании базы данных были заполнены поля: сервер — удалённый, имя сервера - localhost, файл БД - MARIA.fdb, клиентская библиотека — fbclient.dll, имя пользователя — SYSDBA, пароль — masterkey, диалект БД — 3. При этом использован сервер Firebird версии 2.0.
Были созданы 9 таблиц: «POEZDA», «KAT_POEZD», «EPOEZDA», «VAGONY», «KAT_VAGON», «STANCII», «ZONA», «RASPISANIE», «STOIMOST».
Таблицы «KAT_POEZD» и «POEZDA» соединены между собой внешним ключом KAT_POEZD_ID. Для этого был написан обработчик:
ALTER TABLE POEZDA ADD CONSTRAINT FK_POEZDA_1 FOREIGN KEY (KAT_POEZD_ID) REFERENCES KAT_POEZD (KAT_POEZD_ID)
Таким же образом были соединены и другие таблицы.
Таблицы «KAT_VAGON» и «VAGONY» соединены между собой внешним ключом KAT_VAGON_ID.
Таблицы «POEZDA» и «VAGONY» соединены между собой внешним ключом POEZD_NUM.
Таблицы «RASPISANIE» и «POEZDA» соединены между собой внешним ключом POEZD_NUM.
Таблицы «RASPISANIE» и «EPOEZDA» соединены между собой внешним ключом EPOEZDA_ID.
Таблицы «RASPISANIE» и «STANCII» соединены между собой внешним ключом STANCIA_ID.
Таблицы «STANCII» и «ZONA» соединены между собой внешним ключом ZONA_ID.
Таблицы «STOIMOST» и «KAT_VAGON» соединены между собой внешним ключом KAT_VAGON_ID».
Таблицы «RASPISANIE» и «STOIMOST» соединены между собой внешним ключом RASPISANIE_ID».
И при изменении или удалении поля внешнего ключа (например, «Код категории поезда») выдаётся ошибка:
violation of FOREIGN KEY constraint "".
violation of FOREIGN KEY constraint "FK_POEZDA_1" on table "POEZDA".
Foreign key references are present for the record.
Программа разработана в среде Delphi 7.0.
Проект сохранен в отдельном каталоге Kurs на локальном диске C:\ под именем Poezda.dpr. В указанном каталоге также сохранены модули всех созданных форм.
Были разработаны следующие формы:
а) вход в систему;
б) категории поездов;
в) категории вагонов;
г) поезда;
д) электропоезда;
ж) станции;
з) ценовые зоны;
и) расписание поездов дальнего следования;
к) расписание пригородных поездов;
м) запросы по поездам дальнего следования;
н) запросы по пригородным поездам;
о) перекрёстный запрос по поездам;
п) диаграмма;
р) справка;
c) модуль данных ( представлен на рисунке Г32).
Форма «Вход в систему» появляется при запуске системы, и позволяет начать работу с системой, либо изменить данные.
Форма «Категории поездов» содержит названия категорий поездов, позволяет их изменять, добавлять и удалять.
Форма «Категории вагонов» содержит названия категорий вагонов, стоимость постельного белья, позволяет их изменять, добавлять и удалять.
Форма «Поезда» содержит сведения о поездах, позволяет их изменять, добавлять и удалять, она содержит подчиненную форму «Поезд».
Форма «Электропоезда» содержит номера и названия электропоездов позволяет их изменять, добавлять и удалять.
Форма «Станции» содержит список станций и ценовые зоны, позволяет изменять, добавлять и удалять записи, она содержит подчиненную форму «Станция».
Форма «Ценовые зоны» содержит названия зон и цены, позволяет х изменять, добавлять и удалять данные.
Форма «Расписание поездов дальнего следования» позволяет формировать записи расписания движения поездов дальнего следования, изменять и удалять их. Она содержит подчиненную форму «Расписание».
Форма «Расписание пригородных поездов» позволяет формировать записи расписания движения поездов дальнего следования, изменять и удалять их. Она содержит подчиненную форму «Расписание».
Форма «Запросы по поездам дальнего следования» позволяет выводить список поездов до выбранной станции, просматривать стоимость билета выбранного поезда. Также выводит список доступных поездов в выбранный промежуток времени отправления и до указанной станции.
Форма «Запросы по пригородным поездам» позволяет выводить список электропоездов до выбранной станции, просматривать стоимость билета выбранного электропоезда. Также выводит список доступных электропоездов в выбранный промежуток времени отправления и до указанной станции.
Форма «Перекрёстный запрос по поездам» позволяет выводить сведения по выбранному поезду: номер, название, станция назначения, время отправления и прибытия, время в пути, периодичность.
Форма «Диаграмма» позволяет увидеть диаграмму соотношения поездов дальнего следования и пригородных поездов.
Форма «Справка» содержит справочные сведения о системе.
В ходе выполнения курсового проекта были разработаны следующие отчеты:
а) отчёт со списком поездов до станции назначения;
б) отчёт о времени отправления и прибытия, длительности пути и периодичности поездов;
в) отчет о стоимости проезда.
Исполняемый файл — POEZDA.exe.
Текст модулей разработанной программы приведен в приложении В. Экранные формы представлены в приложении Г.
Модули, процедуры и функции данной программы перечислены в таблице 12.
Таблица 12 – Структура программы
Модули |
Процедуры и функции |
Назначение |
|
||
Form_Main _Unit (модуль главной формы)
|
procedure N3Click(Sender: TObject) |
Обработчик события закрытия главной формы при нажатии на кнопку «Выход» главного меню |
|
||
procedure TForm_Main.N2Click(Sender: TObject) |
Обработчик события создания формы «Категории поездов» |
|
|||
procedure TForm_Main.N4Click(Sender: TObject) |
Обработчик события создания формы «Категории вагонов» |
|
|||
procedure TForm_Main.N5Click(Sender: TObject) |
Обработчик события создания формы «Электропоезда» |
|
|||
procedure TForm_Main.N1Click(Sender: TObject) |
Обработчик события создания формы «Сростав Поездов» |
|
|||
procedure TForm_Main.N8Click(Sender: TObject) |
Обработчик события создания формы «Зона» |
|
|||
procedure TfmMain.N7Click(Sender: TObject); |
Обработчик события создания формы «Станции» |
|
|||
procedure TfmMain.N10Click(Sender: TObject); |
Обработчик события создания формы «Расписание поездов дальнего следования» |
|
|||
procedure TfmMain.N14Click(Sender: TObject); |
Обработчик события создания формы «Расписание пригородных поездов» |
|
|||
procedure TfmMain.N15Click(Sender: TObject); |
Обработчик события вызова формы «Запросы для поездов дальнего следования» |
|
|||
procedure TfmMain.N16Click(Sender: TObject); |
Обработчик события вызова формы «Запросы для пригородных поездов» |
|
|||
procedure TfmMain.N20Click(Sender: TObject); |
Обработчик события вызова формы «Перекрёстный запрос для поездов» |
|
|||
procedure TfmMain.N17Click(Sender: TObject); |
Обработчик события вызова формы «График» |
|
|||
procedure TfmMain.N19Click(Sender: TObject); |
Обработчик события вызова отчета со списком поездов до станции назначения Otchet1 |
|
|||
procedure TfmMain.N23Click(Sender: TObject); |
Обработчик события вызова отчета о времени отправления и прибытия, длительности пути и периодичности поездов Otchet2 |
|
|||
procedure TfmMain.N22Click(Sender: TObject); |
Обработчик события вызова формы «Справка» |
|
|||
|
|
|
|||
Form_ElPoezda_Unit (модуль данных об электропоездах) |
procedure TfmElPoezda.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы «Электропоезда», осуществляет закрытие сеанса связи с базой данных |
|
||
DM_Unit (модуль данных) |
procedure TdmVokzal.dst_vagonyNewRecord(DataSet: TDataSet); |
Обработчик события добавления новой записи в таблицу «Вагоны», при котором новому значению идентификатора присваивается текущий |
|
||
procedure TdmVokzal.dst_stoimost_proezdaNewRecord(DataSet: TDataSet); |
Обработчик события добавления новой записи в таблицу «Стоимость», при котором новым значениям идентификаторов присваиваются текущие |
|
|||
procedure TdmVokzal.dst_stanciiFilterRecord(DataSet: TDataSet; |
Обработчик события фильтрации по названию станции в запросах для поездов дальнего следования |
|
|||
procedure TdmVokzal.dst_Stancii_ElPoezdaFilterRecord(DataSet: TDataSet; |
Обработчик события фильтрации по названию станции в запросах для пригородных поездов |
|
|||
procedure TdmVokzal.dst_poezdaFilterRecord(DataSet: TDataSet; |
Обработчик события фильтрации по названию поездов в перекрёстном запросе для поездов |
|
|||
Form_Raspisanie_Unit (модуль данных расписания поездов дальнего следования) |
procedure TfmRaspisaniePoezd.buAddClick(Sender: TObject); |
Обработчик события нажатия кнопки «Добавить». Осуществляет добавление записи данных расписания. |
|
||
procedure TfmRaspisaniePoezd.buChangClick(Sender: TObject); |
Обработчик события нажатия кнопки «Изменить» для редактирования данных расписания. |
|
|||
procedure TfmRaspisaniePoezd.buDelClick(Sender: TObject); |
Обработчик события нажатия кнопки «Удалить». Осуществляет удаление записи расписания. |
|
|||
procedure TfmRaspisaniePoezd.buPriceClick(Sender: TObject); |
Обработчик события нажатия кнопки «Оформить стоимость». Осуществляет оформление и расчёт цены билета. |
|
|||
procedure TfmRaspisaniePoezd.buPriceChangClick(Sender: TObject); |
Обработчик события нажатия кнопки«Изменить стоимость» для редактирования стоимости проезда. |
|
|||
procedure TfmRaspisaniePoezd.FormClose(Sender: TObject; |
Обработчик события закрытия формы |
|
|||
Form_New_Raspisanie_Unit (модуль добавления данных расписания поездов дальнего следования) |
procedure TfmNewRaspis.DateTimePicker2Change(Sender: TObject); |
Обработчик события изменения даты в поле DateTimePicker2. |
|
||
procedure TfmNewRaspis.DateTimePicker4Change(Sender: TObject); |
Обработчик события изменения даты в поле DateTimePicker4. |
|
|||
procedure TfmNewRaspis.FormCreate(Sender: TObject); |
Обработчик события присваивания DBEdit1 полю БД дату DateTimePicker2 и DBEdit2 соответственно – DateTimePicker4. |
|
|||
Form_Zona_Unit (модуль данных о зонах) |
procedure TfmZona.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
Form_Stancii_Unit (модуль данных о станциях) |
procedure TfmStancii.buAddClick(Sender: TObject); |
Обработчик события нажатия кнопки «Добавить». Осуществляет добавление станций |
|
||
procedure TfmStancii.buChangClick(Sender: TObject); |
Обработчик события нажатия кнопки «Изменить». Осуществляет редактирование станций |
|
|||
procedure TfmStancii.buDelClick(Sender: TObject); |
Обработчик события нажатия кнопки «Удалить». Осуществляет удаление станций |
|
|||
procedure TfmStancii.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
|||
Form_Raspisanie_ElPoezd_Unit (модуль данных расписания пригородных поездов) |
procedure TfmRaspisanieElPoezd.buAddClick(Sender: TObject); |
Обработчик события нажатия кнопки «Добавить». Осуществляет добавление записи данных расписания. |
|
||
procedure TfmRaspisanieElPoezd.buChangClick(Sender: TObject); |
Обработчик события нажатия кнопки «Изменить» для редактирования данных расписания. |
|
|||
procedure TfmRaspisanieElPoezd.buDelClick(Sender: TObject); |
Обработчик события нажатия кнопки «Удалить». Осуществляет удаление записи расписания. |
|
|||
procedure TfmRaspisanieElPoezd.FormClose(Sender: TObject |
Обработчик события закрытия формы |
|
|||
Form_Zapros2_Unit (модуль данных запроса для пригородных поездов) |
procedure TfmZapros2.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
procedure TfmZapros2.DBGrid1CellClick(Column: TColumn); |
Обработчик события по клику выбранной строки таблицы |
|
|||
procedure TfmZapros2.DBGrid2CellClick(Column: TColumn); |
Обработчик события по клику выбранной строки таблицы |
|
|||
procedure TfmZapros2.Time1Change(Sender: TObject); |
Обработчик события изменения времени |
|
|||
procedure TfmZapros2.Time2Change(Sender: TObject); |
Обработчик события изменения времени |
|
|||
procedure TfmZapros2.Edit1Change(Sender: TObject); |
Обработчик фильтрации по названию станции |
|
|||
Form_Graph_Unit (модуль построения диаграммы) |
procedure TfmGraph.FormShow(Sender: TObject); |
Обработчик события отображения формы. Осуществляет установление связи с БД и активирует запрос при запуске. |
|
||
procedure TfmGraph.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
|||
Unit1 (модуль данных запроса для поездов дальнего следования) |
procedure TfmZapros.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
procedure TfmZapros.DBGrid1CellClick(Column: TColumn); |
Обработчик события по клику выбранной строки таблицы |
|
|||
procedure TfmZapros.DBGrid2CellClick(Column: TColumn); |
Обработчик события по клику выбранной строки таблицы |
|
|||
procedure TfmZapros.Time1Change(Sender: TObject); |
Обработчик события изменения времени |
|
|||
procedure TfmZapros.Time2Change(Sender: TObject); |
Обработчик события изменения времени |
|
|||
procedure TfmZapros.Edit1Change(Sender: TObject); |
Обработчик фильтрации по названию станции |
|
|||
Form_Poezda_Unit (модуль данных о поездах) |
procedure TfmPoezda.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
procedure TfmPoezda.buAddClick(Sender: TObject); |
Обработчик события нажатия кнопки «Добавить» для добавления нового поезда |
|
|||
procedure TfmPoezda.buChangClick(Sender: TObject); |
Обработчик события нажатия кнопки «Изменить» для изменения данных поезда |
|
|||
procedure TfmPoezda.BuDelClick(Sender: TObject); |
Обработчик события нажатия кнопки «Удалить» для удаления данных |
|
|||
Form_Kat_Poezd_Unit (модуль данныхо категориях поездов) |
procedure TfmKat_Poezd.FormClose(Sender: TObject; |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
Form_Kat_Vag_Unit (модуль данных о категориях вагонов) |
procedure TfmKat_Vag.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
Form_Perekr_Unit (модуль данных перекрёстного запроса по поездам) |
procedure TfmPerekr.Edit1Change(Sender: TObject); |
Обработчик фильтрации по названию поезда
|
|
||
procedure TfmPerekr.DBGrid1CellClick(Column: TColumn); |
Обработчик события по клику выбранной строки таблицы |
|
|||
procedure TfmPerekr.Button1Click(Sender: TObject); |
Обработчик события нажатия на кнопку «Вывести отчёт», запрос на вывод отчёта по поездам |
|
|||
Form_New_Stoimost_Unit (модуль данных о стоимости проезда) |
procedure TfmStoimost.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
procedure TfmStoimost.DBLookupComboBox1CloseUp(Sender: TObject); |
Обработчик события выбора категории вагона из DBLookupComboBox1 |
|
|||
SpravUnit3 (модуль данныхсо со справкой) |
-
|
-
|
|
||
Otchet1Unit (модуль данных отчета) |
procedure TOtchet1.FormClose(Sender: TObject; var Action: TCloseAction); |
Обработчик события закрытия формы. Осуществляет закрытие сеанса связи с базой данных. |
|
||
procedure TOtchet1.Button1Click(Sender: TObject); |
Обработчик события нажатия на кнопку «Вывести». |
|
|||
Form_New_Poezda_Unit (модуль добавления данных о поездах) |
- |
- |
|
||
Form_New_Stancii_Unit (модуль добавления данных о станциях) |
- |
- |
|
||
Form_New_Vagon_Unit (модуль добавления данных о вагонах) |
- |
- |
|