Объект автоматизации – алгоритм Форда-Фалкерсона и система шифрования методом шифрующих таблиц.
Алгоритм Форда-Фалкерсона служит для нахождения максимального потока в графе. Метод Форда-Фалкерсона непосредственно основывается на постепенном нахождении меньшего из смежных ребер.
Постановка задачи
Для решения поставленных задач необходимо спроектировать алгоритм, построить программу, обеспечивающую взаимодействие с ней в режиме диалога с пользователем.
Работа с приложением предполагает выполнение следующих подзадач:
· нахождение максимального потока в графе;
· шифрование сообщений с использованием системы Цезаря (аффинная система подстановок Цезаря);
Пользователь может вносить следующие изменения:
· вводить граф;
· указывать с какой в какую вершину отобразить кратчайший путь;
· шифровать и дешифровать.
2 Разработка программного продукта
При запуске приложения открывается главное меню (рис. 1).
Рисунок 1 – Главное меню программы
При нажатии на одну из кнопок, за исключением кнопки «Выход», решается одна из поставленных задач. Нажав на кнопку «Теория», откроется Документ Microsoft Word IDZ.docx, в котором и содержится информация о графике и анимации в WPF (рис. 2).
|
|
Рисунок 2 – Результат выполнения Задания 1
При нажатии на кнопку «Алгоритм Форда-Фалкерсона», откроется форма, реализующая данное задание (рис. 3).
Рисунок 3 – Пустая форма Алгоритма Форда-Фалкерсона
Как видно на рисунке 3 нужно указать путь к файлу, а затем заполнить все возможные поля формы и нажать на кнопку Найти.
Рисунок 4 – Пример работы Алгоритма Форда-Фалкерсона
По нажатию на кнопку Шифр Цезаря, откроется форма, реализующая данное задание (рис.5).
Рисунок 5 – Пустая форма Шифр Цезаря (аффинная система подстановок)
Пример выполнения шифрования (рис.6).
Рисунок 6 – Пример шифрования
3 Тестирование программного продукта
Алгоритм Форда-Фалкерсона
Компоненты | Ожидаемый результат | Полученный результат |
Button1 | При нажатии на кнопку, должно открываться окно, в котором необходимо выбрать путь к файлу с данными матрицы. | При нажатии на кнопку, открывается окно, в котором пользователь выбирает путь к файлу с данными матрицы. |
TextBox1 | При выборе файла, должен отображаться путь к нему. | При выборе файла, отображается путь к нему. |
TextBox2 | Должно вводиться число, которое равно числу вершин в графе. | Вводится число, которое равно числу вершин в графе. |
TextBox3 | Должно вводиться число, которое равно номеру начальной вершины, от которой будет высчитываться максимальный поток. | Вводится число, которое равно номеру начальной вершины, от которой будет высчитываться максимальный поток. |
TextBox4 | Должно вводиться число, которое равно номеру конечной вершины, до которой будет высчитываться максимальный поток. | Вводится число, которое равно номеру конечной вершины, до которой будет высчитываться максимальный поток. |
Button3 | При нажатии на кнопку, должен высчитываться результат алгоритма и выводится на экран. | При нажатии на кнопку, высчитывается результат алгоритма и выводится на экран. |
Button2 | При нажатии на кнопку, должен осуществляться переход на главную форму. | При нажатии на кнопку, осуществляется переход на главную форму. |
Label1 | Должен отображаться текст о введении пути к файлу. | Отображается текст о введении пути к файлу. |
Label2 | Должен отображаться текст о введении вершин в графе. | Отображается текст о введении вершин в графе. |
Label3 | Должен отображаться текст о введении начальной вершины. | Отображается текст о введении начальной вершины. |
Label4 | Должен отображаться текст о введении конечной вершины. | Отображается текст о введении конечной вершины. |
Label5 | Должен отображаться текст о выводе результата. | Отображается текст о выводе результата. |
Шифрование с использованием системы Цезаря (аффинная система подстановок Цезаря)
|
|
Компоненты | Ожидаемый результат | Полученный результат |
numericUpDown1 | Должен осуществляться ввод переменной а. | Осуществляется ввод переменной а. |
numericUpDown2 | Должен осуществляться ввод переменной b. | Осуществляется ввод переменной b. |
TextBox2 | Должно вводиться выражение, которое необходимо зашифровать. | Вводится выражение, которое необходимо зашифровать. |
TextBox1 | Должен выводиться результат шифрования. | Выводится результат шифрования. |
Button1 | При нажатии на кнопку, должно выполняться шифрование заданного выражения и выводиться в TextBox. | При нажатии на кнопку, выполняется шифрование заданного выражения и выводится в TextBox. |
Button2 | При нажатии на кнопку, должен выполняться переход на главную форму. | При нажатии на кнопку, выполняется переход на главную форму. |
ЗАКЛЮЧЕНИЕ
Разработанные в ходе выполнения индивидуального задания алгоритм Форда-Фалкерсона и шифрования с использованием системы Цезаря (аффинная система подстановок Цезаря).
В результате выполнения данного индивидуального задания были решены задачи, поставленные в начале работы. При этом были учтены все требования, выдвинутые в начале выполнения данного проекта.
Целью работы было разработать программную реализацию системы шифрования с использованием системы Цезаря (аффинная система подстановок) и автоматизировать алгоритм Форда-Фалкерсона. Цель, поставленная перед началом разработки, достигнута.
Данный проект обладает рядом преимуществ и недостатков.
Преимуществами являются:
- легкость и удобство в исполнении;
- быстрый расчет;
- легко переносится с одного компьютера на другой;
- возможность редактирования данных.
Недостатками являются:
- не очень высокий уровень безопасности.