- •Реферат
- •Перечень условных обозначений и сокращений
- •Введение
- •Бинарные деревья и их актуальность
- •Назначение бинарных деревьев
- •Определение бинарного дерева
- •Алгоритм бинарного поиска
- •1.4 Алгоритм вставки узлов
- •1.5 Алгоритм удаления узлов
- •Методика решения поставленой задачи и обоснование наравления разработки программного продукта
- •2.1 Обоснование выбранного языка программирования
- •2.2 Методика решения поставленной задачи
- •3 Разработка программы
- •Диаграмма классов
- •Проектирование интерфейса программы
- •Описание программных модулей
- •Разработка, тестирование методов
- •Тестирование программы с использованием ложных данных
- •Заключение
- •Список использованых источникав
- •Приложение а
- •Руководство пользователю
- •1 Назначение и условия применения
- •2 Подготовка к работе
- •3 Описание операций
- •4 Аварийные ситуации
- •5 Рекомендация по освоению
- •Приложение б
- •Листинг программы
3 Разработка программы
Диаграмма классов
Диаграмма классов – диаграмма, демонстрирующая классы системы, их атрибуты, методы и взаимосвязи между ними [6]. Существует два вида диаграмм классов:
– статический вид диаграммы рассматривает логические взаимосвязи классов между собой;
– аналитический вид диаграммы рассматривает общий вид и взаимосвязи классов, входящих в систему.
Взаимосвязь – это особый тип логических отношений между сущностями, показанных на диаграммах классов и объектов.
Ассоциация – вид отношений между сущностями, показывающий, что объекты одной сущности (класса) связаны с объектами другой сущности.
Рисунок 3.1 – Иерархический вид диаграммы классов
Проектирование интерфейса программы
Для начала необходимо сделать некий макет, по которому будет строится дальнейший интерфейс, а также придумать какими элементами управления будет осуществляться то или иное действие. Макет интерфейса представлен на рисунке 3.2.
Рисунок 3.2 – Макет интерфейса программы
Область 1 для просмотра информации и выполняемых пользоветелем операций, мы использовали компонент DataGridView.
Область 2,3,4 для управления таблицей (добавления, удаления, замены элементов и т.д.) можно воспользоваться компонентом Button. Это кнопка, нажатие на которую будет приводить к соответствующему названию кнопки действию.
Область 5 предназначена для расположения компонента TextBox для предостовления информации для пользователя.
Для поиска элементов в дереве можно воспользоваться компонентом TextBox. Он представляет из себя строковое поле для ввода данных и расположен, он будет в области 3.
Кнопки переключения вкладок будут расположены в области 4. Область 5 служит для компонента MenuStrip. В нем будут продублированы основные действия для управления таблицами.
Описание программных модулей
Модуль System.IO – используется в основном для работы с файлами (создания, копирования, удаления и т.д.). Для работы с файлами используется такой класс как File.
Модуль System.Collections.Generic – подключен для использования интерфейса IEnumerable, а также типа данных List<>, который в свою очередь поддерживает интерфейс IEnumerable.
Модуль System.Linq – используется для работы с множествами: сортировки, выборки и тому подобных действий. Например, метод OrderBy(Func<T,TKey>) сортирует множество по возрастанию по ключу TKey объекта T.
Модуль System.Drawing – используется для визуализации бинарного дерева. Данный модуль содержит такой полезный метода, как DrawCurve(Pen pen, Points[] points). Данный метод рисует кривую по заданному массиву точек от одной к другой последовательно. Он использовался для рисования ветвей бинарного дерева [7].
Разработка, тестирование методов
«public void Output()» – данный метод осуществляет считывание данных из файла. Для его вызова необходимо сначала вызвать диалоговое окно, которое открывается по нажатии на кнопку «Добавить», после заполнения всехпунктов находящихся в всплывшем делоговом окне мы сможем увидеть нашу вписаную информацию на рисунке 3.3.
Рисунок 3.3 – Главное меню, вызов метода Output()
После того, как информаци была заполнена, метод Output() формирует бинарное дерево из полученных данных, отсеивая неправильно оформленные и выводит их в компонент DataGridView как показано на рисунке 3.4.
Рисунок 3.4 – Результат выполнения метода
«public void Add» – метод, осуществляющий добавление узла в дерево. Для его вызова необходимо сначала нажать на кнопку «Добавить». После чего появится форма для добавления нового узла на рисунке 3.5.
Рисунок 3.5 – Форма добавления элемента
После того, как все поля заполнены следует нажать кнопку «Сохранить». После нажатия на кнопку сохранить, элемент будет сохранен в файл и добавлен в DataGridView на hисункt 3.6.
Рисунок 3.6 – Результат добавления нового элемента
«public static Delete» – метод-расширение, осуществляющий преобразование дерева tree в множество значений его узлов. Используется данный метод для удаления и замены узлов из дерева. Для того, чтобы удалить узел, под название грейпфрут на рисунке 3.7, необходимо нажать на кнопку «Удалить», после чегопоивится диалоговое окноотом с наименованием удоляемого элемента на рисунке 3.8 производится удаление выбранного элемента на рисунке 3.9.
Рисунок 3.7 – Удаление элемента «Грейпфрут»
Рисунок 3.8 – Наименование удоляемого элемента
Рисунок 3.9 – Результат удаление элемента
Метод public List<Агроном> Search(string q) – осуществляет поиск элемента в таблице по культуре, названию удобрения., стоимости, еденицы измирения. Результат выводится в тот же момент, когда набирается слово для поиска. Таблица с данными представленна на рисуноке 3.10.
Рисунок 3.10 – Вся таблица с данными на символ “С”
