- •Введение
- •1 Техническое задание
- •1.1 Назначение разработки
- •1.2 Основание для разработки
- •1.3 Требования к программе
- •2 Вариант задания
- •3 Краткие теоретические сведения
- •4 Эскизный проект
- •4.1 Переборный алгоритм раскраски
- •4.2 Последовательный алгоритм раскраски
- •4.3 Разработка структуры программы
- •5 Технический проект
- •5.1 Сценарий диалогас пользователем
- •5.2 Разработка основных форматов данных
- •5.3 Детализация алгоритма раскраски графа
- •5.4 Разработка формата файла для хранения графов
- •6 Рабочий проект
- •6.1 Выбор удобочитаемых идентификаторов
- •6.2 Общая организация проекта
- •6.3 Описание модулей
- •6.3.1 Модуль uMain
- •6.3.2 Модуль uData
- •6.3.3 Модуль uFiling
- •6.3.4 Модуль uColoring
- •6.3.5 Модуль uInputk
- •6.3.6 Модуль uHelp
- •6.4 Отладка и тестирование программного продукта
- •6.5 Руководство пользователю
6.2 Общая организация проекта
Данный проект состоит из 6-ти модулей: uMain, uData, uHelp, uFiling, uColoring, uInputk.
6.3 Описание модулей
6.3.1 Модуль uMain
Модуль предназначен для организации редактирования обрабатываемых графов, реализации функции главного меню и координации работы остальных программных модулей. Описание пунктов меню приведено в разделе 5.1.
6.3.1.1 Основные переменные, константы и типы модуля
fmMain: TfmMain – основная форма;
TUndoItem – тип данных для представления информации о последнем выполненном действии над графом (используется в режимах Отмена и Восстановление);
VRadius – радиус окружности вершины графа;
AdMatrix: TAdMatrix – матрица смежности вершин текущего графа;
VCount: Byte – число вершин текущего графа;
VColor: TColoring – текущая раскраска вершин;
VCenter: array of TPoint – массив координат центров вершин;
UndoItem: array of TUndoItem – информация об отмененной операции;
k: Byte – требуемое число цветов;
GraphChanged: Boolean – признак измененного и не сохраненного графа.
6.3.1.2 Компоненты модуля
Компоненты модуля uMain представлены в таблице 2.
Таблица 2
Компонент |
Свойства, отличные от свойств по умолчанию |
Функции |
fmMain: TForm |
BorderStyle: bsToolWindow, Caption: Раскраска графа, ClientHeight: 554, ClientWidth: 792, Color: clBtnFace, Menu: MainMenu, Position: poScreenCenter |
Форма – контейнер |
btnColoring: TBitBtn |
Caption: Раскраска, Kind: bkOK |
Кнопка «Раскраска» для запуска процесса раскраски графа |
btnExit: TBitBtn |
Caption: &Выход, Kind: bkClose |
Кнопка «Выход» для выхода из программы |
btnNew: TBitBtn |
Caption: &Новый граф, Kind: bkRetry |
Кнопка «Новый граф» для создания нового графа |
MainMenu: TMainMenu |
Items |
Выбор необходимого режима работы при щелчке на соответствующем пункте главного меню |
iFile |
Caption: Файл |
Пункты главного меню |
iEdit |
Caption: Редактирование | |
iHelp |
Caption: Справка | |
iFNew |
Caption: Новый, ShortCut: Ctrl+N |
Подпункты пункта «Файл» главного меню |
iFOpen |
Caption: Открыть, ShortCut: Ctrl+O | |
iFSave |
Caption: Сохранить, ShortCut: Ctrl+S | |
iFSaveAs |
Caption: Сохранить как, ShortCut: Ctrl+A | |
iFBreak |
Caption: - | |
iFExit |
Caption: Выход, ShortCut: F10 | |
iEUndo |
Caption: Отмена, ShortCut: Ctrl+Z |
Подпункты пункта «Редактирование» главного меню |
iERedo |
Caption: Восстановление, ShortCut: Ctrl+Alt+Z | |
iEBreak |
Caption: - | |
iEAddV |
Caption: Добавить вершину, ShortCut: F2 | |
iEDelV |
Caption: Удалить вершину, ShortCut: Del | |
iHHelp |
Caption: Помощь, ShortCut: F1 |
Подпункты пункта «Справка» главного меню |
iHAbout |
Caption: О программе... | |
SaveDialog: TSaveDialog |
DefaultExit: *.zot, Filter: Graph files (*.zot)|*.zot, Options: ofPathMustExist, Title: Сохранение графа в файл |
Стандартное диалоговое окно для сохранения файлов |
Таблица 2 (продолжение)
Компонент |
Свойства, отличные от свойств по умолчанию |
Функции |
OpenDialog: TOpenDialog |
DefaultExit: *.zot, Filter: Graph files (*.zot)|*.zot, Options: ofPathMustExist, ofFileMustExist, Title: Открытие файла для загрузки графа |
Стандартное диалоговое окно для открытия файлов |
sgMatrix: TStringGrid |
DefaultColWidth: 20, DefaultRowHeight: 20, ScrollBars: ssBoth |
Строковая таблица для отображения и ввода матрицы смежности вершин исходного графа |
StatusBar: TStatusBar |
SimplePanel: True, SizeGrip: False |
Полоса статуса для отображения текущего состояния программы |
stGraph: TStaticText |
Caption: Исходный граф: |
Метка для размещения в окне надписи «Исходный граф:» |
stMatrix: TStaticText |
Caption: Матрица смежности: |
Метка для размещения в окне надписи «Матрица смежности:» |
6.3.1.3 Процедуры модуля
Процедура iFOpenClick – открывает файл при выборе пункта меню «Открыть», производит очистку и переформат таблицы матрицы смежности sgMatrix.
Процедура iFSaveClick – сохраняет файл при выборе пункта меню «Сохранить».
Процедура btnColoringClick – запускает процесс раскраски графа.
Процедура FormActivate – осуществляет инициализацию глобальных и компонентных данных модуля.
Процедура btnNewClick – создает новый граф при нажатии на кнопку «Новый граф».
Процедура iFNewClick – создает новый граф при выборе пункта меню «Новый».
Процедура iFSaveAsClick – сохраняет граф в другом файле при выборе пункта меню «Сохранить как».
Процедура iFExitClick – осуществляет выход из программы при выборе пункта меню «Выход».
Процедура btnExitClick – осуществляет выход из программы при нажатии на кнопку «Выход».
Процедура iEAddVClick – осуществляет добавление вершины, при этом изменяет матрицу смежности, определяет координаты новой вершины и осуществляет перерисовку вершин.
Процедура iEDelVClick – открывает форму fmInputk как модальную, осуществляет удаление выбранной вершины, удаление смежных с ней ребер, сброс цветов, перенумерацию и перерисовку оставшихся вершин.
Процедура iEUndoClick – осуществляет отмену последнего действия при выборе пункта меню «Отмена».
Процедура iERedoClick – осуществляет восстановление последнего отмененного действия при выборе пункта меню «Восстановление».
Процедура FillUndoDelVrx – осуществляет заполнение структуры данных для отмены удаления вершины.
Процедура iHHelpClick – осуществляет загрузку информации из файла помощи.
Процедура iHAboutClick – осуществляет загрузку информации о программе.
Процедура FormDeactivate – осуществляет освобождение памяти при закрытии формы.
Процедура sgMatrixSelectCell – осуществляет редактирование матрицы смежности вершин графа, сброс цветов и перерисовку вершин.
Процедура FormPaint – осуществляет перерисовку текущего графа в области построения, а также отображает границы области построения графа.
Процедура FormMouseUp – осуществляет добавление или удаление вершины графа при помощи мыши, при этом изменяет матрицу смежности, определяет координаты новой вершины, осуществляет перерисовку вершин после перенумерации и сброс цветов.
Процедура FormMouseDown – осуществляет захват вершины левой кнопкой мыши.
Процедура FormMouseMove – осуществляет соединение вершин перетаскиванием, очистку области, где ребро было на предыдущем шаге и прорисовку нового ребра в следующей позиции.
Процедура FormCloseQuery – запрос на закрытие формы.
Процедура InitForm – осуществляет приведение вида формы к исходному состоянию.
Процедура RemoveVertex – осуществляет удаление выбранной вершины, перезапись sgMatrix в матрицу смежности, формирование массива координат центров вершин, смежных с удаляемой, перенумерацию матрицы смежности и сдвиг массива координат центров вершин, а также изменение размеров структур данных и восстановление измененной матрицы смежности.
Процедура FillAdMatrix – осуществляет построение матрицы смежности по содержимому sgMatrix.
Процедура RepaintVertex – осуществляет перерисовку вершины на форме.
Процедура RepaintEdge – осуществляет перерисовку ребра на форме.
Процедура RepaintAllVertices – осуществляет перерисовку всех вершин на форме.
Процедура InitUndo – инициализирует структуру данных об отмененном действии.
Процедура FillUndoDelVrx – осуществляет заполнение структуры данных для отмены удаления вершины.
Процедура PrintGraphPath – осуществляет отображение пути к файлу с графом в заголовке.
6.3.1.4 Функции модуля
Функция SaveRequest – вызывает запрос на сохранение графа в файле.