49171 (608973)
Текст из файла
Реферат
Представляемый документ содержит:
52 страницы текста и список из двух источников.
Объектом исследования является структура данных «Q-дерево».
Цель работы состоит в создании программного комплекса, обеспечивающего работу со структурой данных «Q-дерево», представленной в виде модели. Методы, используемые при разработке, – язык программирования высокого уровня Object Pascal. Созданный программный продукт обеспечивает выполнение всех требований технического задания.
Содержание
Введение
1. Техническое задание
1.1 Основание для разработки
1.2 Назначение разработки
1.3 Функциональные требования к программе
1.4 Требования к составу и параметрам технических средств
1.5 Требования к информационной и программной совместимости
1.6 Требования к программной документации
1.7 Порядок контроля и приемки
2. Рабочий проект
2.1 Модуль UnitModel
2.1.1 Назначение
2.1.2 Функциональные требования, реализуемые модулем
2.1.3 Глобальные переменные и константы модуля
2.1.4 Подпрограммы модуля
2.2 Модуль UnitMainForm
2.2.1 Назначение
2.2.2 Функциональные требования, реализуемые модулем
2.2.3 Используемые компоненты
2.2.4 Глобальные переменные и константы модуля
2.2.5 Подпрограммы модуля
Заключение
Список используемых источников
Приложение
-
-
Введение
Цель данной курсовой работы – разработка программного продукта, предназначенного для работы со структурой данных «Q-дерево». Существует множество различных структур данных, предназначенных для работы с множествами: деревья, массивы и так далее. Среди них есть Q-деревья, позволяющие хранить множества точек и обеспечивать к ним быстрый и удобный доступ. Практическое значение. Программный продукт позволяет пользоваться Q-деревьями. Актуальность разработки программного продукта состоит в увеличении скорости работы с множествами. Программный продукт должен быть разработан на языке программирования высокого уровня Object Pascal, использовать принципы объектно-ориентированного программирования и структурный подход к решению поставленных задач.
Результатом выполнения курсовой работы должен стать готовый программный продукт, отвечающий всем требованиям технического задания.
-
-
1. Техническое задание
1.1.1.1 Основание для разработки
Основанием для разработки программного продукта служит задание на курсовую работу “Q-дерево точек”.
1.2.1.2 Назначение разработки
Программный продукт разрабатывается для работы с Q-деревьями точек.
1.3.1.3 Функциональные требования к программе
-
Возможность добавления элементов в дерево
-
Удаление элементов из дерева
-
Очистка дерева
-
Подсчет количества элементов
-
Отображение элементов дерева в виде точек на карте
-
Поиск точек в заданной прямоугольной области карты
-
Возможность выбора области карты для просмотра содержащихся в ней точек
-
Отображение точек заданной области карты в отдельном окне просмотра
-
Отображение координат выбранных точек
1.4.1.4 Требования к составу и параметрам технических средств
Программный комплекс должен корректно работать на компьютере со следующими техническими характеристиками:
-
процессор Intel® Celeron® CPU 2.40 ГГц;
-
оперативная память объемом 512 Мб;
-
жесткий диск Seagate ST380011A, объемом 80 Гб;
-
видеоадаптер AGP 8X;
-
клавиатура;
-
манипулятор типа “мышь”.
1.5.1.5 Требования к информационной и программной совместимости
Для работы программы необходима операционная система Microsoft Windows XP Professional 2002 (SP1-2).
1.6.1.6 Требования к программной документации
Программная документация должна включать следующие документы:
-
техническое задание;
-
рабочий проект.
В приложении к документу "Рабочий проект" должен быть приведен листинг исходных текстов программного изделия.
1.7.
1.8.1.7 Порядок контроля и приемки
-
1.7.1 Возможность добавления элементов в дерево, подсчет количества элементов
Добавление элементов в дерево производится щелчком левой кнопкой мыши по точке с нужными координатами в окне просмотра (рис. 1)
Рис. 1
Результат: добавление точки в дерево и его перерисовка; увеличение количества точек в дереве на единицу.
-
1.7.2 Удаление элементов из дерева, подсчет количества элементов
Удаление элемента производится путем выделения точки с помощью мыши в окне просмотра в режиме выделения точек и щелчка по кнопке «Удалить точку» (рис. 2)
Рис. 2
Результат: удаление точки из дерева и его перерисовка; уменьшение количества точек в дереве на единицу.
-
1.7.3 Очистка дерева
Очистка дерева (удаление всех элементов) производится щелчком по кнопке «Удалить все» (рис. 3)
Рис. 3
Результат: удаление всех элементов дерева и соответствующая перерисовка изображений
-
1.7.4 Возможность выбора прямоугольной области карты для просмотра содержащихся в ней точек, поиск точек в заданной прямоугольной области карты
Выбор области просмотра осуществляется перемещением окна выделения с помощью мыши или клавиш (рис. 4)
Рис. 4
Результат: перемещение окна выделения, поиск и отрисовка точек, находящихся в выделенной области карты.
-
-
1.7.5 Отображение элементов дерева в виде точек на карте, отображение координат выбираемых точек
Выбор точки производится с помощью щелчка левой кнопкой мыши по точке с нужными координатами в режиме выбора точек (рис. 5)
Рис. 5
Результат: отображение координат выбранной точки в строке состояния; перерисовка соответствующим цветом ее изображения в окне просмотра.
-
1.7.6 Отображение точек заданной области карты в отдельном окне просмотра, отображение координат выбираемых точек
Для получения координат точки без ее выделения достаточно навести указатель мыши на ее изображение в окне просмотра (рис. 6)
Рис. 6
Результат: отображение координат точки в строке состояния без ее выбора; перерисовка соответствующим цветом ее изображения в окне просмотра.
-
-
2. Рабочий проект
1.9.2.1 Модуль UnitModel
-
2.1.1 Назначение
Данный модуль представляет собой реализацию модели структуры данных «Q-дерево точек».
-
2.1.2 Функциональные требования, реализуемые модулем
-
Возможность добавления элементов в дерево
-
Удаление элементов из дерева
-
Очистка дерева
-
Поиск точек в заданной прямоугольной области карты.
-
2.1.3 Глобальные переменные и константы модуля
Константы
-
М = 3 – максимальное число точек в листе;
-
тип – целый;
-
область видимости – внутри и вне модуля;
-
используется в операциях вставки и удаления элементов дерева для проверки числа точек в листьях.
-
2.1.4 Подпрограммы модуля
-
2.1.4.1 Функция InsertPoint
-
Функция предназначена для вставки нового элемента в Q-дерево
-
Параметры
-
выходной параметр – указатель на узел дерева, в которое вставляется элемент (тип PNode);
-
входной параметр – границы этого узла (тип TRect);
-
входной параметр – координаты вставляемой точки (тип TPoint);
-
Функция возвращает логическое значение (тип boolean), указывающее на изменение количества элементов в дереве
-
Локальные переменные
-
CurNode – текущий квадрант (тип PNode);
-
DopArray – дополнительный массив, необходимый при делении листа на новые узлы (тип TArrayOfPoints);
-
midX, midY – координаты середины узла (тип real);
-
NewBounds – границы нового узла, передаваемые в качестве параметра в рекурсивном вызове функции (тип TRect);
-
i – счетчик цикла (тип integer).
-
Словесный алгоритм
В начале своей работы функция проверяет, не является ли пустым параметр-указатель; если да, то для него выделяется память, устанавливаются начальные значения полей и вставляется новый элемент. Если он не является листом, осуществляется цикл переходов к листу с нужными границами. Далее проверяется число элементов в листе, и, если оно меньше допустимого, туда вставляется новая точка; иначе этот лист разделяется на 4 новых, его точки рекурсивно распределяются по новым листам и затем – вставка новой точки.
-
-
2.1.4.2 Процедура DeletePoint
-
Процедура предназначена для удаления элемента из Q-дерева
-
Параметры
-
выходной параметр – указатель на корневой узел дерева, из которого удаляется элемент (тип PNode);
-
входной параметр – границы этого узла (тип TRect);
-
входной параметр – координаты вставляемой точки (тип TPoint);
-
Предусловия
Указатель на дерево не должен быть пустым
-
Локальные переменные
-
CurNode – текущий квадрант (тип PNode);
-
ParentNode – родительский узел листа с удаляемой точкой;
-
DopArray – дополнительный массив, необходимый при делении листа на новые узлы (тип TArrayOfPoints);
-
midX, midY – координаты середины узла (тип real);
-
PointsInNodes, numSZ, numSV, numYZ, numYV – переменные, использующиеся при подсчете числа точек в листах (тип real);
-
there – индикатор наличия точки в дереве (тип boolean);
-
N – число точек в листе (тип integer);
-
i – счетчик цикла (тип integer).
-
Словесный алгоритм
В начале своей работы функция проверяет, не является ли пустым параметр-указатель; если да – выход из подпрограммы. Если он не является листом, осуществляется цикл переходов к листу с нужными границами. Далее проверяется наличие точки в листе, и, если она там не обнаружена, процедура заканчивает свою работу; иначе происходит удаление точки из листа и последующая проверка общего числа точек в соседних листах. Если появилась возможность, соседние листы объединяются в один, старые удаляются.
-
2.1.4.3 Процедура ClearTree
-
Процедура предназначена для удаления всех элементов Q-дерева
-
Параметры
-
выходной параметр – указатель на узел дерева (тип PNode);
-
Предусловия
Указатель на дерево не должен быть пустым
-
Словесный алгоритм
В начале своей работы функция проверяет, не является ли пустым параметр-указатель; если да – выход из подпрограммы. Если он не является листом, осуществляются рекурсивные вызовы подпрограммы для каждого из его дочерних узлов; если параметр-указатель является листом, подпрограмма освобождает занятую им память и завершает свою работу.
-
2.1.4.4 Функция Find
-
Функция предназначена для поиска элементов Q-дерева, расположенных в заданной области карты
-
Параметры
-
входной параметр – указатель на узел дерева (тип PNode);
-
параметр-константа – границы этого узла (тип TRect);
-
параметр-константа – границы заданной области карты (тип TRect);
-
Функция возвращает список (тип TList) элементов дерева, расположенных в заданной области
-
Предусловия
Указатель на дерево не должен быть пустым
-
Локальные переменные
-
NewBounds – границы нового узла, передаваемые в качестве параметра в рекурсивном вызове функции (тип TRect);
-
i – счетчик цикла (тип integer).
-
Словесный алгоритм
В начале своей работы функция проверяет, не является ли пустым параметр-указатель; если да – выход из подпрограммы. Если часть площади узла находится в заданной области, осуществляются рекурсивные вызовы подпрограммы для каждого из его дочерних узлов. Для достигнутых таким образом листьев происходит проверка точек на принадлежность заданной области.
-
2.1.4.5 Процедура SetProperties
-
Процедура предназначена для выделения памяти и установки начальных характеристик для нового узла
-
Параметры
-
выходной параметр – указатель на узел дерева (тип PNode);
-
Словесный алгоритм
Для нового узла, переданного в качестве параметра, выделяется память, устанавливаются начальные характеристики: тип узла (лист) и количество точек в нем (0).
-
Подпрограмма используется функцией вставки точек в дерево при разделении листа на 4 новых.
-
2.1.4.6 Процедура CopyPoints
-
Процедура предназначена для копирования точек из листа в дополнительный массив
-
Параметры
-
входной параметр – указатель на узел дерева, из которого происходит копирование (тип PNode);
-
выходной параметр – дополнительный массив, необходимый при делении листа на новые узлы (тип TArrayOfPoints);
-
выходной параметр – счетчик элементов в дополнительном массиве (тип integer).
-
Локальные переменные
-
j – счетчик цикла (тип integer).
-
Словесный алгоритм
Подпрограмма копирует значения точек из данного листа в дополнительный массив, одновременно увеличивая число его элементов, передаваемое в качестве параметра.
-
Подпрограмма используется функцией удаления точек из дерева при объединении 4-х листов в один.
1.10.2.2 Модуль UnitMainForm
-
2.2.1 Назначение
В данном модуле описаны методы работы с Q-деревом точек
-
2.2.2 Функциональные требования, реализуемые модулем
-
Подсчет количества элементов в дереве
-
Отображение элементов дерева в виде точек на карте
-
Возможность выбора области карты для просмотра содержащихся в ней точек
-
Отображение точек заданной области карты в отдельном окне просмотра
-
Отображение координат выбранных точек
-
2.2.3 Используемые компоненты
| № | Имя компонента | Класс | Настраиваемые свойства | Значения | Обработанные события | ||||||||
| 1 | MainForm | TMainForm | BorderStyle | bsSingle | OnCreate; OnKeyDown | ||||||||
| Caption | Q-дерево | ||||||||||||
| KeyPreview | True | ||||||||||||
| 2 | MaxImage | TImage | – | – | OnCreate; OnMouseMove | ||||||||
| 3 | MinImage | TImage | – | – | – | ||||||||
| 4 | ShapeView | TShape | Brush | Style | bsClear | OnMouseDown; OnMouseMove; OnMouseUp | |||||||
| Pen | Color | clRed | |||||||||||
| № | Имя компонента | Класс | Настраиваемые свойства | Значения | Обработанные события | ||||||||
| 5 | SBtnCursor | TSpeedButton | Down | True | – | ||||||||
| GroupIndex | 1 | ||||||||||||
| 6 | SBtnPoints | TSpeedButton | GroupIndex | 1 | – | ||||||||
| 7 | ButtonDelete | TBitBtn | Caption | Удалить точку | OnClick | ||||||||
| Enabled | False | ||||||||||||
| ShowHint | True | ||||||||||||
| Hint | Удалить выбранную точку | ||||||||||||
| 8 | ButtonClear | TBitBtn | Caption | Удалить все | OnClick | ||||||||
| ShowHint | True | ||||||||||||
| Hint | Удалить все точки дерева | ||||||||||||
| 9 | StatusBar | TStatusBar | – | – | – | ||||||||
-
2.2.4 Глобальные переменные и константы модуля
Константы
-
Xmax = 1024 – ширина всего квадрата, отведенного под Q-дерево;
-
тип – целый;
-
область видимости – внутри и вне модуля;
-
используется в операциях вставки и удаления элементов для задания границ главного квадранта
-
K = 10.56 – отношение длины стороны окна выделения к длине стороны окна просмотра;
-
-
тип – вещественный;
-
область видимости – внутри модуля;
-
используется при выводе на карту изображений точек
-
R = 3 – радиус точки, изображенной на карте;
-
-
тип – целый;
-
область видимости – внутри модуля;
-
используется при выводе изображений точек
-
LightColor = clYellow – цвет подсветки точек;
-
-
тип – TColor;
-
область видимости – внутри модуля;
-
используется при выводе изображений точек
-
SelectColor = clRed – цвет выделенной точки;
-
-
тип – TColor;
-
область видимости – внутри модуля;
-
используется при выводе изображений точек
-
BackColor = clBtnFace – цвет фона карты;
-
-
тип – TColor;
-
область видимости – внутри модуля;
-
используется при выводе изображений точек.
-
Переменные
-
Tree – указатель на корневой узел дерева;
-
тип – PNode;
-
область видимости – внутри модуля;
-
используется в подпрограммах, работающих с деревом.
-
X0, Y0 – начальные координаты указателя мыши при перемещении окна выделения;
-
-
тип – целый;
-
область видимости – внутри модуля;
-
используются при определении координат просматриваемой области карты
-
drag = false – индикатор перетаскивания окна выделения;
-
-
тип – логический;
-
область видимости – внутри модуля;
-
используется при определении координат просматриваемой области карты
-
PointCount = 0 – количество точек в дереве;
-
-
тип – целый;
-
область видимости – внутри модуля;
-
используется для определения числа точек в дереве
-
mainBounds, Query – координаты соответственно главного квадранта и выделенной области;
-
-
тип – TRect;
-
область видимости – внутри модуля;
-
используются при поиске и выводе изображений точек просматриваемой области
-
LightPoint, SelectedPoint – соответственно текущая и выделенная точки;
-
-
тип – TPoint;
-
область видимости – внутри модуля;
-
используются для выбора и удаления точек.
-
2.2.5 Подпрограммы модуля
-
2.2.5.1 Процедура DrawPoint
-
Процедура предназначена для вывода изображений точек на карту
-
Процедура является методом класса TMainForm
-
Параметры
-
параметр-константа – точка (тип TPoint);
-
входной параметр – цвет изображенной точки (тип TColor);
-
Локальные переменные
-
-
dopX, dopY – координаты точки относительно окна просмотра (тип integer).
-
Словесный алгоритм
-
Процедура вычисляет координаты отображаемой точки для каждой из карт (большой и малой) и рисует точку в виде эллипса радиусом R.
-
2.2.5.2 Процедура ClearBackground
-
Процедура стирает предыдущее изображение на карте
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – компонент-карта (тип TImage);
-
Словесный алгоритм
-
Процедура закрашивает поверхность карты цветом фона BackColor.
-
2.2.5.3 Процедура DrawRegion
-
Процедура предназначена для поиска и вывода изображений точек дерева в заданной области карты
-
Процедура является методом класса TMainForm
-
Параметры
-
параметр-константа – указатель на узел дерева (тип PNode);
-
параметр-константа – границы заданной области (тип TRect);
-
Локальные переменные
-
-
FindedPoints – список найденных точек (тип TList);
-
dopPoint – точка из списка (тип TPoint);
-
i – счетчик цикла (тип integer).
-
Словесный алгоритм
-
Процедура создает пустой список, копирует туда точки дерева, найденные в заданной области, и выводит их изображения на карты.
-
2.2.5.4 Процедура FormCreate
-
Процедура предназначена для задания начальных координат областей и точек
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject)
-
Словесный алгоритм
-
Процедура устанавливает границы главного квадранта и выделенной области, начальные координаты для текущей и выбранной точек.
-
2.2.5.5 Процедура ShapeViewMouseDown
-
Процедура предназначена для получения начальных координат указателя мыши перед началом перетаскивания выделяющего окна
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject);
-
входной параметр – индикатор нажатой кнопки мыши (тип TMouseButton);
-
входной параметр – индикатор нажатой клавиши (тип TShiftState);
-
входные параметры – координаты указателя мыши (тип integer)
-
Словесный алгоритм
-
Координаты указателя записываются в глобальные переменные X0 и Y0. Индикатору перетаскивания drag присваивается true.
-
-
2.1.5.6 Процедура ShapeViewMouseUp
-
Процедура предназначена для установки значения соответствующего индикатора при окончании перетаскивания окна выделения
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject);
-
входной параметр – индикатор нажатой кнопки мыши (тип TMouseButton);
-
входной параметр – индикатор нажатой клавиши (тип TShiftState);
-
входные параметры – координаты указателя мыши (тип integer)
-
Словесный алгоритм
-
Индикатору перетаскивания drag присваивается false.
-
2.1.5.7 Процедура ShapeViewMouseMove
-
Процедура предназначена для перемещения окна выделения по малой карте и вывода на карту изображений точек из выделенной области
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject);
-
входной параметр – индикатор нажатой клавиши (тип TShiftState)
-
входные параметры – координаты указателя мыши (тип integer)
-
Предусловия
-
Индикатор перетаскивания должен быть равен true.
-
Локальные переменные
-
newLeft, newTop – новые координаты окна выделения (тип integer)
-
Словесный алгоритм
-
Процедура вычисляет новые координаты окна выделения и области просмотра с использованием глобальных переменных X0 и Y0; затем осуществляет поиск и вывод на карту изображений точек из новой области с помощью процедуры DrawRegion.
-
2.1.5.8 Процедура MaxImageMouseMove
-
Процедура предназначена для отображения координат выделяемых точек в строке состояния и выделения их изображений на карте
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject);
-
входной параметр – индикатор нажатой клавиши (тип TShiftState);
-
входные параметры – координаты указателя мыши (тип integer)
-
Локальные переменные
-
-
Point – выделенная точка (тип TPoint);
-
Rect – область поиска точки в дереве (тип TRect);
-
str – строка с координатами выбранной точки (тип string);
-
List – список точек, найденных в области вблизи указателя мыши
-
Словесный алгоритм
-
Подпрограмма выводит в строку состояния координаты движущегося указателя мыши и осуществляет проверку того, наведен ли он на точку, путем поиска точек дерева в области вокруг указателя. Если таковые имеются, изображение первой из них перерисовывается соответствующим цветом.
-
2.1.5.9 Процедура MaxImageClick
-
Процедура предназначена для добавления точки в дерево и «запоминания» координат выбранной точки
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject)
-
Локальные переменные
-
-
Point – новая либо выбранная точка (тип TPoint);
-
str – строка с координатами выбранной точки (тип string);
-
i, j – координаты точки относительно окна просмотра (тип integer)
-
Словесный алгоритм
-
Подпрограмма получает координаты новой (или выбранной) точки из строки состояния. Затем, если программа находится в режиме добавления точек, вставляет в дерево новую точку; в зависимости от результата функции вставки, увеличивает счетчик точек на единицу и перерисовывает изображение. В режиме выбора точек процедура записывает в глобальную переменную координаты выбранной точки и перекрашивает ее на карте соответствующим цветом. Координаты выбранной точки выводятся в строку состояния.
-
2.1.5.10 Процедура ButtonDeleteClick
-
Процедура предназначена для удаления выбранной точки из дерева
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject)
-
Словесный алгоритм
-
Подпрограмма удаляет выбранную точку из дерева; затем, если необходимо, перерисовывает просматриваемую область карты.
-
2.1.5.11 Процедура ButtonClearClick
-
Процедура предназначена для удаления всех точек из дерева
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject)
-
Словесный алгоритм
-
Подпрограмма удаляет все точки из дерева, «стирает» изображение с карты и устанавливает «пустые » координаты для выбранной и текущей точек.
-
2.1.5.12 Процедура FormKeyDown
-
Процедура осуществляет перемещение окна выделения при нажатии клавиш
-
Процедура является методом класса TMainForm
-
Параметры
-
входной параметр – объект, сгенерировавший событие (тип TObject);
-
выходной параметр – индикатор нажатой клавиши (тип word);
-
входной параметр – индикатор нажатой клавиши (тип TShiftState)
-
Локальные константы
-
– dif = 4 – число пикселей, на которое перемещается окно выделения
-
Словесный алгоритм
Подпрограмма вызывает перемещающую окно выделения процедуру ShapeViewMouseMove, передавая ей разные параметры в зависимости от нажатой клавиши.
-
-
Заключение
Разработанный программный продукт обеспечивает выполнение всех требований, предъявленных к нему в техническом задании.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















