Автор: Пользователь скрыл имя, 26 Декабря 2010 в 19:45, курсовая работа
Целью создания проекта является программная реализация демонстрационной программы, работающей с бинарными деревьями.
Система имеет удобный графический интерфейс, предназначенный для теоретической справки и демонстрации работы с бинарными деревьями.
Данный программный продукт может использоваться в обучающих целях и при решении задач, связанных с использованием бинарных деревьев, где каждый узел представляет ситуацию, имеющую возможные исходы.
Введение……………………………………………………………………6
1 Теоретические данные…………………………………………………...7
2 Постановка задачи……………………………………………………….11
2.1 Общая постановка задачи……………………….…………………..11
2.2 Схема информационных потоков…………………………………..11
3 Описание входных и выходных структур данных…………………….12
3.1 Входные данные……………………………………………………...12
3.2 Выходные данные …………………………………………………...12
4 Описание и обоснование выбора метода решения и алгоритмы……..13
4.1 Обоснование выбора языка программирования…………………...13
4.2 Структура для узла в языке С……………………………………….13
4.3 Структура в языке С для дерева…………………………………….13
4.4 Создание БД………………………………………………………….14
4.5 Поиск………………………………………………………………….14
4.6 Вставка………………………………………………………………..15
4.7 Удаление……………………………………………………………...16
4.8 Упорядоченное рекурсивное прохождение………………………...19
5 Описание программной реализации……………………………………..21
5.1 Функциональная схема программы………………………………....21
5.2 Комплект поставки и порядок инсталляции………………………..21
6 Анализ эффективности реализуемого метода……………………….….22
6.1 Общая оценка поиска в двоичном дереве…………………………..22
7 Анализ результата………………………………………………………..23
8 Минимальные требования программы…………………………………27
Выводы……………………………………………………………………..28
Список литературы……………………….……………………………….29
Приложение A Техническое задание……………….....………………....30
Приложение Б Руководство пользователя.……..…...…………………..33
Приложение В Экранные формы..………………………....…………….34
Приложение Г Листинг программы……………………………………...35
8 МИНИМАЛЬНЫЕ
ТРЕБОВАНИЯ ПРОГРАММЫ
Данная программа была проверена на работоспособность на компьютере со следующими параметрами: Intel Pentium I 150 MHz, 16 Mb RAM, MS DOS 7.0. Во время работы не было замечено никаких признаков нехватки ресурсов.
Автор не сомневается, что данная программа будет работоспособна и на компьютере с более низкими параметрами, а именно:
а) процессор 386;
б) объём RAM 4Mb;
в) MS DOS 6.0;
г) видеоадаптер 512Kb.
Столь
низкие требования программы обусловлены
тем, что она использует динамическую
память и не использует никаких дополнительных
ресурсов.
выводы
Результатом проведенной работы является ПП под названием ”WBT”. Программа демонстрирует добавление, удаление и поиск в двоичном дереве.
Нужно отметить, что смысл данной программы направлен прежде всего на обучение пользователя конкретной структуре данных, поэтому в дальнейшем планируется расширение справочных возможностей данной программы.
Описанная структура данных в программе может заинтересовать школьников старших классов и студентов первого курса соответственной специальности.
WBT прост в использовании и содержит достаточное количество подсказок, таким образом, даже неопытный пользователь сможет в нём легко разобраться.
Автор планирует в дальнейшем усовершенствовать данный ПП путём расширения возможностей программы:
а) кроме демонстраций работы предоставить пользователю некий тест своих знаний;
б)
демонстрация других, не мене интересных
структур данных.
Список
литературы
Приложение А
ТЕХНИЧЕСКОЕ
ЗАДАНИЕ
А.1
Общие сведения
Полное
название проектируемой программы:
«Работа с двоичными деревьями»
Программа проектируется студентом 2-го курса Донецкого государственного института искусственного интеллекта (ДГИИИ), факультета СКИТ, группы ПО-01б Ружицким Андреем Владиславовичем в качестве курсового проекта для кафедры программного обеспечения интеллектуальных систем (ПОИС) ДГИИИ.
Программа проектируется на основании задания на курсовой проект от 24.09.02, выданного кафедрой ПОИС.
Плановый срок начала работы по созданию программы 24 сентября 2002г., срок окончания 26 декабря 2002г.
Основная функция программы «WBT» заключается в демонстрации принципа работы с двоичными деревьями. Данная программа должна будет представлять собой справочную систему, позволяющую ознакомиться с теоретическими сведениями о работе с двоичными деревьями.
Целью
создания программы является программная
реализация справочной системы, позволяющей
производить различные операции над заданными
структурами данных.
А.3 Требования к работе
В программе должно быть реализована следующая работа:
а) как данные расположены относительно друг друга;
б) какие данные хранятся в памяти;
в) какие данные будут содержаться в файлах, и как файлы устроены;
а) доступ к элементу для использования или изменения данных;
б) включение или добавление нового элемента;
в) исключение/удаление некоторого существующего элемента;
г) упорядочивание одним из методов сортировки;
д) ввод/вывод данных.
A.3.2
Требования к программе в целом
В
целом к программе
A.3.3
Требования к задачам и функциям, выполняемым
программой
К задачам и функциям, выполняемых “WBT” предъявляются следующие требования:
A.3.5
Требование к техническому обеспечению
К техническому обеспечению
предъявляются следующие
а) IBM PC совместимый компьютер;
б) программный продукт со всеми ресурсными файлами;
в) монитора VGA или лучше;
г) операционная
система MS DOS или Windows.
А.4
Календарный план выполнения курсовой
работы
Календарный
план представлен в таблице А.1.
Таблица А.1 – Стадии разработки программы
№ этапа | Содержание этапа программирования | Сроки выполнения |
1 | Получение задания на разработку |
24.09.02 |
2 | Написание и согласование технического задания |
24.09.02-2.10.02 |
3 | Подбор и изучение литературы |
2.10.02 – 20.10.02 |
4 | Написание алгоритмов | 20.10.02 – 01.11.02 |
5 | Написание программы | 01.11.02 – 24.11.02 |
6 | Тестирование и отладка программы | 24.11.02 – 2.12.02 |
7 | Написание пояснительной записки | 2.12.02 – 26.12.02 |
8 | Защита курсового проекта | 26.12.02 |
РУКОВОДСТВО
ПОЛЬЗОВАТЕЛЯ
Б.1
Общие сведения
Данный ПП предназначен для предоставления пользователю демонстрации работы с БД и предоставления справочной информации о данной структуре.
Данная
программа имеет удобный
Интерфейс программы состоит из постоянной области подсказки и области отображения дерева (см. Приложение В рис В.1), а также появляющихся нескольких полей для ввода данных.
Для
запуска программы требуется
запустить файл Install.exe с поставляемой
дискеты и, не меняя директории D:\Temp, извлечь
файлы. Для повторного запуска программы
следует запустить файл WBT.exe из директории
D:\Temp.
Б.2
Ввод входных данных
Ввод
данных производится только с клавиатуры
(нет смысла формировать файлы и считывать
из них данные).
Б.3
Осуществление удаления, добавления
и поиска данных
Удаление, добавление
и поиск данных осуществляется посредством
нажатия определённых клавиш. Вводить
можно только целые числа. Кроме того,
стоит ограничитель ввода в 2 знака для
избежания неправильной прорисовки БД.
Б.4
Использование справки и выход из программы
Программ содержит три вида справочной информации: короткая подсказка о работе с программой, дополнительные сведения, вызываемые клавишей F1 и теоретические сведения о двоичных деревьях поиска (см. Приложение В рис В.2), вызываемые клавишей F2.
Для
выхода из программы нажмите кнопку F10.
Приложение В
ЭКРАННЫЕ
ФОРМЫ
Рисунок
В.1 – Интерфейс программы
Рисунок В.2 – Теоретические сведения
ЛИСТИНГ ПРОГРАММЫ
#include <conio.h>
#include <io.h>
#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <graphics.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <dos.h>
#include <string.h>
#include <alive\tr.h>
#include <alive\video2.h>
#include <alive\vfx.h>
#include <alive\winfont.h>
int fp,flag;
/* A binary tree node. */
struct bin_node {
int data;
struct bin_node *left;
struct bin_node *right;
};
/* A binary tree. */
struct bin_tree {
struct bin_node *root;
int count;
};
/* Creates and returns a new binary tree. Returns a null pointer if a
memory allocation error occurs. */
struct bin_tree *bin_create(void)
{
struct bin_tree *tree = malloc(sizeof *tree);
if (tree == NULL)
return NULL;
tree->root = NULL;
tree->count = 0;
return tree;
}
/* Searches TREE for matching ITEM. Returns 1 if found, 0
otherwise. */
int bin_search(const struct bin_tree *tree, int item)
{
const struct bin_node *node;
assert(tree != NULL);
node = tree->root;
for (;;) {
if (node == NULL)
return 0;
else if (item == node->data)
{
if(flag) fp = item;
return 1;
}
else if (item > node->data)
node = node->right;
else
node = node->left;
}
}
/* Inserts ITEM into TREE. Returns 1 if the item was inserted, 2 if
an identical item already existed in TREE, or 0 if a memory
allocation error occurred. */
Информация о работе Работа с двоичными деревьями: построение, поиск, удаление, включение и обход