- •Техническое задание
- •Расширенная постановка задачи Назначение системы
- •Описание предметной области
- •Требования к системе
- •Требования к данным
- •Требования к техническим средствам
- •Требования к документации
- •Комментарии
- •Описание процесса проектирования
- •Первая итерация
- •Описание класса tTrain
- •Описание класса tBox
- •Описание класса tPas
- •Вторая итерация
- •Заключение
Комментарии
Данная система будет реализовывать схему движения пригородных электропоездов, т.е. подразумевается, что билетов, в которых будет храниться информация о пассажирах, нет и соответственно конкретный пассажир не привязан к конкретному месту в поезде.
-
Описание процесса проектирования
-
Первая итерация
-
На данном этапе перед нами поставлена задача разработки программной системы, позволяющей клиентам получать данные существующих поездах, вагонах, пассажирах и связывать их между собой.
После анализа того, что нам известно, были выделены три основных класса:
-
TTrain – класс, соответствующий поездам и содержащий поля:
-
название
-
список вагонов
-
-
TBox – класс, соответствующий вагонам и содержащий поля:
-
название
-
список пассажиров
-
Поезд, в состав которого входит вагон
-
-
TPas – класс, соответствующий пассажирам:
-
Фамилия
-
Вагон, в котором находится пассажир
-
-
Описание класса tTrain
В классе TTrain были выделены следующие поля и методы:
-
name – переменная строкового типа, название поезда
-
Box – список вагонов, входящих в состав поезда
-
Create() – конструктор класса
-
Free() – деструктор класса
-
Описание класса tBox
В классе TBox были выделены следующие поля и методы:
-
name – переменная строкового типа, название вагона
-
Tr – указатель, поезд в состав которого входит вагон
-
Pas – список пассажиров, находящихся в вагоне
-
Create() – конструктор класса
-
Free() – деструктор класса
-
Описание класса tPas
В классе TPas были выделены следующие поля и методы:
-
sname – переменная строкового типа, фамилия студента
-
Box – указатель, вагон, в котором находится пассажир
-
Create() – конструктор класса
-
Free() – деструктор класса
На данном этапе была выполнена следующая последовательность действий:
-
Разработана титульная форма программной системы
-
Были созданы и заполнены файлы, в которых хранятся данные поездах пассажирах, вагонах.
-
Реализовано создание объектов всех классов и возможность просмотра их имён
-
Разработан корректный выход из программы, в котором очищается вся занятая программой память (пункт в процессе разработки неоднократно дорабатывался)
-
Разработана система связывания объектов вагон-поезд и пассажир-вагон, а так же разрыв этой связи
-
Разработана возможность просмотра статистической информации о всех объектах, т.е. состояния (см. уточнённое задание)
Диаграмма классов для первой итерации:

-
Вторая итерация
Во время второй итерации был добавлен новый класс TWay, и расширены классы TTrain, TBox, TPas.
-
TTrain – класс, соответствующий поездам и содержащий поля:
-
название
-
список вагонов
-
маршрут на котором находится
-
максимальное число вагонов
-
-
TBox – класс, соответствующий вагонам и содержащий поля:
-
название
-
список пассажиров
-
Поезд, в состав которого входит вагон
-
Максимальное количество пассажиров
-
-
TWay – класс, соответствующий маршрутам, по которым будут двигаться поезда. Этот новый класс намного расширит область задач проектируемой программы. TWay содержит поля:
-
Список поездов
-
Название маршрута
-
Станция начала маршрута
-
Станция конца маршрута
-
Список станций
-
-
TPas – класс, соответствующий пассажирам. В него добавлены новые поля, для того чтобы собрать больше информации о пассажирах:
-
Фамилия
-
Вагон, в котором находится пассажир
-
Имя пассажира
-
Возраст пассажира
-
Паспортные данные
-
-
Описание класса TTrain
В классе TTrain были выделены следующие поля и методы:
-
name – переменная строкового типа, название поезда
-
Box – список вагонов, входящих в состав поезда
-
Way – указатель на маршрут по которому курсирует поезд
-
M_b – максимальное число вагонов, тип byte
-
Create() – конструктор класса
-
Free() – деструктор класса
-
Описание класса TBox
В классе TBox были выделены следующие поля и методы:
-
name – переменная строкового типа, название вагона
-
Tr – указатель, поезд в состав которого входит вагон
-
Pas – список пассажиров, находящихся в вагоне
-
M_p – максимальное количество пассажиров в одном вагоне
-
Create() – конструктор класса
-
Free() – деструктор класса
-
Описание класса TPas
В классе TPas были выделены следующие поля и методы:
-
Sname – переменная строкового типа, фамилия пассажира
-
Box – указатель, вагон, в котором находится пассажир
-
Name – имя пассажира
-
Age – возраст пассажира
-
Passport – паспортные данные пассажира
-
Create() – конструктор класса
-
Free() – деструктор класса
-
Описание класса TWay
В классе TWay были выделены следующие поля и методы:
-
Train – указатель, список поездов, которые находятся на маршруте
-
Name – название маршрута
-
Start_s – переменная строкового типа, название станции с которой начинается маршрут
-
End_s – переменная строкового типа, название станции в которой маршрут заканчивается
-
Station – список внутренних станций
-
Create() – конструктор класса
-
Free() – деструктор класса
На данном этапе была выполнена следующая последовательность действий:
-
Были обновлены файлы, в которых хранятся данные поездах пассажирах, вагонах.
-
Реализовано создание объектов всех классов и возможность просмотра их имён
-
Разработана система связывания объектов вагон-поезд и пассажир-вагон, а также маршрут-поезд, а также разрыв этой связи
-
Разработана возможность просмотра статистической информации о всех объектах, т.е. состояния (см. уточнённое задание)
-
Также были устранены все ошибки допущенные при первой итерации
Диаграмма классов для второй итерации
Были построены диаграммы классов, для более полного представления о том какие объекты взаимодействуют в системе, и какие между ними складываются отношения. Так например из диаграммы видно, что одному маршруту может соответствовать любое количество поездов, в том числе и ноль. Такие же отношения складываются и у поездов с вагонами, и у вагонов с пассажирами.

Диаграмма прецедентов

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

Диаграмма деятельности (моделирование)

|
Тест-план программы |
|||
|
№ теста |
Описание теста |
Ожидаемый результат |
Пройден/ Не пройден |
|
Часть 1. Добавление новых объектов |
|||
|
1.1 |
Добавление нового маршрута.(других Маршрутов нет). |
Маршрут добавился |
Пройден. |
|
1.2 |
Добавление нового маршрута.(маршрут с таким именем уже есть) |
Вывод сообщения «Такой маршрут уже есть» |
Пройден |
|
1.3 |
Добавление нового маршрута.(маршруты уже есть) |
Маршрут добавился |
Пройден |
|
1.4 |
Добавление нового Маршрута с пустым именем |
Вывод сообщения «Бессмысленное название» |
Пройден |
|
1.5 |
Добавление новой станции в маршрут (других станций нет). |
Станция добавляется |
Пройден. |
|
1.6 |
Добавление новой станции в маршрут (другие станции есть). |
Станция добавляется |
Пройден. |
|
1.7 |
Редактирование добавленной станции в маршрут |
Станция редактируется |
Пройден. |
|
1.8 |
Добавление новой станции (такая станция уже есть). |
Вывод сообщения «Станция с таким именем уже есть» |
Пройден. |
|
Часть2. Прикрепление поездов к маршрутам, вагонов к поездам, пассажиров к вагонам. |
|||
|
2.1 |
Прикрепление поездов к Маршруту(других поездов в Маршрута нет). |
Поезд добавляется |
Пройден. |
|
2.2 |
Прикрепление поездов к Маршруту(другие поезда в Маршруте есть). |
Поезд добавляется
|
Пройден. |
|
2.3 |
Прикрепление вагона к поезду (других вагонов у поезда нет). |
Вагон добавляется |
Пройден. |
|
2.4 |
Прикрепление вагона к поезду (другие вагоны у поезда есть). |
Вагон добавляется |
Пройден. |
|
2.5 |
Прикрепление пассажира к вагонам (пассажиров в вагоне нет) |
Пассажир добавляется
|
Пройден. |
|
2.6 |
Прикрепление пассажира к вагонам (пассажиры в вагоне есть) |
Пассажир добавляется
|
Пройден. |
|
Часть 3. Просмотр информации. |
|||
|
3.1 |
Просмотр поездов при нажатии кнопки Button1 |
Вывод списка всех поездов в listview1 |
Пройден. |
|
3.2 |
Просмотр вагонов при нажатии кнопки Button2 |
Вывод списка всех вагонов в listview1 |
Пройден. |
|
3.3 |
Просмотр пассажиров при нажатии кнопки Button3 |
Вывод списка всех пассажиров в listview1 |
Пройден. |
|
3.4 |
Выбор поезда из listview1, просмотр данных о поезде |
Открытие нового окна с данными о поезде |
Пройден |
|
3.4.1 |
Нажатие кнопки «Список», простор всех вагонов в поезде |
Открытие listview1, в котором показывается список вагонов |
Пройден |
|
3.4.2 |
Выбор вагона из listview1, просмотр данных о вагоне |
Открытие нового окна с данными о вагоне |
Пройден |
|
3.4.3 |
Нажатие кнопки «Список», простор всех пассажиров в вагоне |
Открытие listview1, в котором показывается список пассажиров |
Пройден |
|
3.4.4 |
Выбор пассажира из listview1, просмотр данных о пассажире |
Открытие нового окна с данными о пассажире |
Пройден |
|
Часть 4. Удаление поездов из маршрутов, вагонов из поездов, пассажиров из вагонов. |
|||
|
4.1 |
Удаление поезда из маршрута |
Поезд удалился |
Пройден. |
|
4.2 |
Удаление вагона из поезда |
Вагон удалился |
Пройден. |
|
4.3 |
Удаление пассажира из вагона |
Пассажир удалился |
Пройден |
|
Часть5. Моделирование. |
|||
|
5.1 |
Выбор МАРШРУТА, выбор времени нажатие кнопки button1 |
В listview1 информация о текущем расположении поездов на данном маршруте в данное временя |
Пройден. |
