Создание класса и разработка приложения 'Бинарное дерево поиска'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    741,77 Кб
  • Опубликовано:
    2013-01-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание класса и разработка приложения 'Бинарное дерево поиска'

Реферат

Отчет содержит 30 листов, 21 рисунков, 2 приложения и 3 источника.

БИНАРНОЕ ДЕРЕВО ПОИСКА, ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ, ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ, C#

Предмет разработки - программа для работы с бинарным деревом поиска. Пользователь может добавлять, удалять, искать элементы.

Цель работы - создание класса и разработка приложения "Бинарное дерево поиска".

Результат разработки - приложение Windows "Бинарное дерево поиска".

Содержание

Введение

. Создание класса и разработка приложения "Бинарное дерево поиска"

1.1Анализ предметной области

.2Анализ требований

1.2.1 Требования к интерфейсу пользователя

.2.2 Требования к структуре данных

.2.3 Требования к программным средствам

1.3 Технология разработки

2. Проектирование

2.1 Проектирование интерфейса пользователя

.2 Проектирование структуры данных

.3 Структура программных средств

.4 Пример блок-схемы

3. Реализация

3.1 Кодирование

3.2 Тестирование

Заключение

Список литературы

Приложение

Введение


Объектом разработки в курсовой работе является структура данных - бинарное дерево поиска.

Целью работы является изучение данной структуры, а затем разработка приложения на языке программирования C# с её реализацией в виде класса.

В ходе курсовой работы был создан на языке C# среды Visual Studio 2010 класс, описывающий структуру бинарного дерева поиска и позволяющий выполнять с ним основные операции (например, добавления, удаления и поиска).

В пояснительной записке разобраны основные понятия, связанные с бинарными деревьями. Также рассмотрены требования к интерфейсу пользователя. В разделах проектирования и реализации приведены структура и компоненты программных средств и результаты тестирования, а также диаграммы вариантов использования и иерархии классов.

1. Создание класса и разработка приложения "Бинарное дерево поиска"

 

1.1    Анализ предметной области


Организация данных с помощью бинарных деревьев часто позволяет значительно сократить время поиска нужного элемента. Поиск элемента в линейных структурах данных обычно осуществляется путем последовательного перебора всех элементов, присутствующих в данной структуре. Поиск по дереву не требует перебора всех элементов, поэтому занимает значительно меньше времени. Максимальное число шагов при поиске по дереву равно высоте данного дерева, т.е. количеству уровней в иерархической структуре дерева.

Бинарное дерево - это упорядоченное дерево, каждая вершина которого имеет не более двух поддеревьев, причем для каждого узла выполняется правило: в левом поддереве содержатся только ключи, имеющие значения, меньшие, чем значение данного узла, а в правом поддереве содержатся только ключи, имеющие значения, большие, чем значение данного узла.

Узлы дерева, не имеющие потомков, называются листьями.

Схематичное изображение бинарного дерева представлено на рисунке 1:

Рисунок 1.

1.2    Анализ требований

 

1.2.1 Требования к интерфейсу пользователя

Все возможности, предоставляемые Пользователю при работе с приложением, основываются на основных операциях, осуществляемых над бинарными деревьями поиска:

2       создание дерева;

3       добавление нового узла в дерево;

4       поиск элемента в дереве;

         удаление узла из дерева;

         удаление дерева;

         обход (просмотр) дерева.

 

.2.2 Требования к структуре данных

Каждая вершина бинарного дерева имеет следующую структуру (рисунок 2) [1. стр. 63]:

PLP

INF

PRP

Рисунок 2 - Структура вершины бинарного дерева

·        INF - значение элемента;

·        PLP- указатель на левого потомка;

·        PRP - указатель на правого потомка;

 

.2.3 Требования к программным средствам

Основные функции, выполняемые разрабатываемые программными средствами приведены в диаграмме вариантов использования (рисунок 3).

Рисунок 3. Диаграмма вариантов использования.

 

.3 Технология разработки


В курсовой работе используется технология объектно-ориентированного программирования C# среды Visual Studio 2010.

В ООП данные и подпрограммы непосредственно связаны, что позволяет разрабатывать программу постепенно (создавая модули и компоненты), поэтому такой подход способствует реализации приложения в короткие сроки и быстрому произведению их отладки.

Также стоит отметить, что данная технология не уменьшает размер кода и не упрощает его.

2. Проектирование

 

.1 Проектирование интерфейса пользователя


На рисунке 4 изображен интерфейс программы.

Рисунок 4, 5. Визуальные компоненты интерфейса пользователя

бинарный дерево интерфейс программный

1.      button_add_Click - Кнопка "Добавить элемент"

2.      button_search_Click - Кнопка "найти элемент "

3.      button_clear_Click - Кнопка "удалить элемент"

.        button1_Click - Кнопка "об авторе"

5.      button_clear_history_Click - Кнопка "очистить историю"

.        button_clear_all_Click - Кнопка "удалить дерево"

.        textBoxVN_TextChanged - поле для просмотра "обход сверху вниз"

.        textBoxLP_TextChanged - поле для просмотра "обход слева направо"

.        textBoxNV_TextChanged - поле для просмотра "обход справа налево"

11.    textBox_search_TextChanged - поле для ввода значения для поиска

12.    textBox_clear_TextChanged - поле для ввода значения для удаления

13.    listBox1_SelectedIndexChanged - поле для вывода истории

14.    - Форма "о проекте"

2.2 Проектирование структуры данных


Ниже приведена структура и описание разработанной структуры данных.

public class Tree

{string Z; // значение узла Tree left, right; // указатели на потомков

2.3 Структура программных средств


Для проектирования данного приложения была разработана структура собственных классов: Tree (таблица 1), FormTree (таблица 2).

Член класса

Описание

public string Z

Значение узла

public Tree left

Указатель на левого потомка

public Tree right

Указатель на правого потомка

public bool Insert(string value)

Функция добавления элемента

public Tree Search(string value)

Функция поиска элемента

public string DisplayVN(Tree t)

Функция обхода дерева сверху вниз

public string DisplayLP(Tree t)

Функция обхода дерева слева направо

public string DisplayNV(Tree t)

Функция обхода дерева справа налево

public bool IsEmpty()

Функция проверки на пустоту

public bool Delete(string value)

Функция удаления элемента

public void Dispose()

Функция удаления дерева


Член класса

Описание

Tree t

Элемент, предназначенный для работы с деревом

public FormTree()

Конструктор

private void button_add_Click(object sender, EventArgs e)

Обработчик нажатия на кнопку button_add

private void button_clear_Click(object sender, EventArgs e)

Обработчик нажатия на кнопку button_clear

private void button_search_Click(object sender, EventArgs e)

Обработчик нажатия на кнопку button_search

private void button_clear_history_Click(object sender, EventArgs e)

Обработчик нажатия на кнопку button_clear_history

public void Display()

Функция обработки дерева

private void button_clear_all_Click(object sender, EventArgs e)

Обработчик нажатия на кнопку button_clear_all_Click

private void button_info_Click(object sender, EventArgs e)

Обработчик нажатия на кнопку button_info_Click

private void textBoxVN_KeyPress(object sender, KeyPressEventArgs e)

Обработчик события KeyPress текстового поля textBoxVN

private void textBoxLP_KeyPress(object sender, KeyPressEventArgs e)

Обработчик события KeyPress текстового поля textBoxLP

private void textBoxNV_KeyPress(object sender, KeyPressEventArgs e)

Обработчик события KeyPress текстового поля textBoxNV

private void textBox_add_KeyPress(object sender, KeyPressEventArgs e)

Обработчик события KeyPress текстового поля textBox_add

private void textBox_clear_KeyPress(object sender, KeyPressEventArgs e)

Обработчик события KeyPress текстового поля textBox_clear

private void textBox_search_KeyPress(object sender, KeyPressEventArgs e)

Обработчик события KeyPress текстового поля textBox_search

private void button1_Click(object sender, EventArgs e)

Обработчик события KeyPress MessageBox


Иерархия классов приведена на рисунке 6

Рисунок 6 - Иерархия классов

 

.4 Пример блок-схемы


Блок-схема операции "Поиск элемента" приведена на рисунке 7.

Рисунок 7 - Блок-схема "Поиск элемента"

3. Реализация

 

.1 Кодирование


Текст программы приведен в Приложении А

 

.2 Тестирование


План функционального тестирования приведен в таблице 3.

Варианты использования

Тесты

Результат

Запуск программы

Открываем приложение Tree.exe

Приложение открылось, все текстовые поля пусты.

Добавление элемента

Добавляем элемент в пустое дерево.

Элемент добавился в корень дерева, в текстовом поле истории появилось сообщение об этом, обновились поля с выводом дерева (Приложение Б, рис.1).


Добавляем элемент, несуществующий в дереве.

Элемент встал на свое место в дереве, в текстовом поле истории появилось сообщение об этом, обновились поля с выводом дерева (Приложение Б, рис.2).


Добавляем элемент, уже существующий в дереве

Элемент не добавляется в дерево, в текстовом поле истории появляется сообщение о недопустимости добавления, поля с выводом дерева не изменяются (Приложение Б, рис.3).

Удаление элемента

Удаляем элемент, существующий в дереве, у которого нет потомков.

Элемент удалился, в текстовом поле истории появилось сообщение о выполненной операции, поля с выводом дерева обновились (Приложение Б, рис.4).


Удаляем элемент, существующий в дереве, у которого есть один левый потомок.

Элемент удалился, на его место встал левый потомок, в текстовом поле истории появилось сообщение о выполненной операции, поля с выводом дерева обновились (Приложение Б, рис.5).


Удаляем элемент, существующий в дереве, у которого есть один правый потомок.

Элемент удалился, на его место встал правый потомок, в текстовом поле истории появилось сообщение о выполненной операции, поля с выводом дерева обновились (Приложение Б, рис.6).


Удаляем элемент, существующий в дереве, у которого есть два потомка.

Элемент удалился, на его место встал либо правый потомок (если у правого потомка не было левого узла), либо самый левый узел правого потомка (если он существовал). В текстовом поле истории появилось сообщение о выполненной операции, поля с выводом дерева обновились (Приложение Б, рис.7 - до выполнения операции, Приложение Б, рис.8 - после выполнения операции).


Удаляем элемент, несуществующий в дереве

Элемент не удаляется, в текстовом поле истории появляется сообщение об ошибке, поля с выводом дерева не обновляются (Приложение Б, рис.9).

Удаление дерева

Нажимаем на кнопку "Удалить дерево", если дерево не пустое.

Дерево удалено, в текстовом поле истории появляется сообщение о выполненной операции, поля с выводом дерева становятся пустыми (Приложение Б, рис.10).


Нажимаем на кнопку "Удалить дерево", если дерево пустое.

Дерево не удаляется, в текстовом поле истории появляется сообщение о невыполненной операции (Приложение Б, рис.11).

Поиск элемента

Поиск элемента при условии, что элемент существует в дереве

Элемент находится, в текстовом поле истории появляется сообщение, что элемент найден (Приложение Б, рис.12).


Поиск элемента при условии, что элемент не существует в дереве

Элемент не находится, в текстовом поле истории появляется сообщение, что элемент не существует в дереве (Приложение Б, рис.13).

Очистка поля с историей

Нажимаем на кнопку "Очистить историю"

Поле истории становится пустым, появляется сообщение, что история очищена (Приложение Б, рис.14).

Просмотр информации о программе

Нажатие на кнопку "?"

Появляется новая форма с информацией о программе (Приложение Б, рис.15).

Закрытие программы

Нажатие на кнопку

Закрытие программы происходит без ошибок.


Все рисунки, сделанные при тестировании, находятся в Приложение Б.

 


Заключение


В данном отчете выполнены анализ требований, проектирование и реализация программных средств, которые являются необходимыми этапами разработки программного обеспечения.

Для реализации бинарного дерева поиска были созданы собственные классы Tree, FormTree. В итоге разработано приложение Tree.exe, предназначенное для работы с бинарным деревом поиска.

Результаты тестирования показали, что приложение работает корректно, соблюдены все правила работы с бинарным деревом поиска.

Список литературы


1.      И.А. Казакова, С.В. Самуйлов "Структуры данных" Учебное пособие. Пенза 2011г.

.        #"601496.files/image007.gif">

Рисунок 1

Рисунок 2

Рисунок 3

Рисунок 4

Рисунок 5

Рисунок 6

Рисунок 7

Рисунок 8

Рисунок 9


Рисунок 11

Рисунок 12

Рисунок 13

Рисунок 14

Рисунок 15

Похожие работы на - Создание класса и разработка приложения 'Бинарное дерево поиска'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!