Исходя из требований к программе, рациональней всего разделить ее на модули, взаимодействие которых показано на рисунке 3.5.1
Спецификация модулей
Модуль создания и прорисовки сетки лабиринта
Входные данные: отсутствуют
Выходные данные: карта поля
Функции: создание карты поля
Модуль ввода и корректировки данных
Входные данные: команды
Выходные данные: карта поля
Функции - ввод данных и предоставление пользователю возможности их редактирования.
Модуль считывания и сохранения структуры лабиринта
Входные данные: команды, карта поля
Выходные данные: карта поля, файл
Внешние эффекты: загрузка сохраненного лабиринта, также модуль сохраняет файл на диске.
Функции - считывание и сохранения структуры лабиринта.
Модуль визуализации
Входные данные: координаты комнат и дверей
Выходные данные: отсутствуют
Внешние эффекты: на экране монитора появляется лабиринт и путь прохождения.
Функции – вывод на экран монитора информации.
|
|
Модуль расчета кратчайшего пути лабиринта
Входные данные: карта поля
Выходные данные: карта прохождения
Функции – нахождение путей прохождения и поиск кратчайшего.
Переход к тексту программы
Используя материал разработки программы, диаграмму потоков данных, диаграмму состояний перейдем к реализации программы.
Написание программного кода будет проводиться с использованием среды программирования Borland C++.
Реализация функций программы зависит полностью от программиста.
Рабочий проект
Программирование и отладка программы
Исходя из требований к программному обеспечению, программа кодировалась в среде программирования Borland C++ для функционирования в операционной системе Windows 9x. (Смотрите приложение В)
Тестирование программы
Тестирование программы заключается в проверке работы основных функций. Была разработана и проведена серия тестовых примеров для программы. Программа и методика испытаний приведены в приложении В. Результаты тестирования показали работоспособность программы и его соответствие предъявляемым требованиям.
Предложенное ПО тестировалось как во время разработки, так и после её завершения.
Для тестирования делались попытки ввода недействительных данных и попытки выполнить недопустимые действия как при программировании, так и в режиме взаимодействия с пользователями. Предложенное ПО адекватно реагировало на такие действия.
Заключение
В данной документации была разработана программа “Поиск кратчайшего пути”, которая создает лабиринт и находит кратчайший путь прохождения.
|
|
Описана область применения программного продукта. Приводятся диаграммы потоков данных, диаграммы состояния, диаграммы взаимодействия модулей. Доступным языком описывается методология создания программы.
Разработана спецификация функций программы, описано поведение программы в критических ситуациях, приводится спецификация модулей. В документации также приведены результаты тестирования программы
ПРИЛОЖЕНИЕ А
(обязательное)
Описание программы
Общие сведения
Наименование программы: “Поиск кратчайшего пути”
Для функционирования программы необходима Операционная Система Windows 9x.
Кодировка производилась в среде программирования Borland C++.
Функциональное назначение
Классы задач, которые решаются с помощью программы: программа находит кратчайший путь в лабиринте.
Описание логической структуры
Программа имеет главную функцию main, которая описана в файле sapr_kyrsovik.cpp, с которой начинается выполнение программы. Также программа имеет библиотечные функции, которые описаны в заголовочном файле head.h. Заголовочный файл содержит все остальные функции, используемые в пограмме. Программа имеет структуру с именем Lab, которая содержит двухмерный массив карты лабиринта (Мар[MY][MX]) и двухмерный массив карты прохождения (Put[MY][MX]). В эту структуру производится запись координат комнат и дверей лабиринта.
Программа состоит из следующих функций:
int Grin(struct Lab *P)
Она выполняет:
инициализацию графики: очищается экран, включается графический режим
рисует сетку лабиринта
инициализацию масивов структуры P
void Rasstan(struct Lab *P) – функция расставляет комнаты и двери на карте поля, а также удаляет их, это реализуется с помощью клавиш управления курсором (< > - вверх, < > - вниз, < > - вправо, < > - влево) и клавиш специального назначения (например, при помощи клавиши <к> происходит ввод комнаты, при помощи клавиши <д> происходит ввод двери, при помощи клавиши <я> можно удалять комнаты или двери). Эта функция вызывает дополнительные две функции:
void vyvod(int x, int y) – функция рисует рамочку белого цвета, служащую курсором для расстановки и удаления комнат и дверей а также служащую для ввода входа и выхода в лабиринте.
void maska (int x, int y) – функция скрывает(закрашивает) курсор.
void Vvod(struct Lab *P, int *x1, int *y1, int *x2,int *y2) – функция запрашивает ввести вход в лабиринт, после чего с помощью клавиш управления курсором и клавиши Enter функция считывает вход, далее функция запрашивает ввести выход.
int Find(struct Lab *P, int x1, int y1, int x2,int y2) – выполняет поиск пути.
void Puty(struct Lab *P, int x1, int y1, int x2,int y2) – функция прорисовывает путь.