- •Г осударственный комитет рф по высшему образованию
- •(Технический университет)
- •Содержание дипломного проекта:
- •1. Специальная часть. Разработка программного обеспечения «Хроника моего рода».
- •2. Технологическая часть. Технология разработки программных систем.
- •Постановка задачи………………………………………………………………..
- •Введение.
- •3. Организационно-экономическая часть. Расчет затрат на разработку программного продукта.
- •4. Производственно-экологическая часть. Анализ воздействия вредных факторов на оператора эвм.
- •4.1. Введение ……………………………………………………………………………… 94
- •1.1 Техническое задание
- •Назначение разработки
- •1.1.2 Технические требования
- •1.1.3 Технико-экономические показатели
- •1.1.4 Стадии и этапы разработки
- •1.2 Эскизный проект
- •1.2.1 Постановка задачи
- •1.2.1.1 Назначение системы
- •1.2.1.2 Общая структура системы
- •1.2.1.3 Требования к программному обеспечению комплекса
- •1.2.1.4 Требования к составным частям программного комплекса
- •Основные требования к экранной форме "Генеалогическое дерево":
- •Основные требования к экранной форме «Ввод информации»:
- •Основные требования к экранной форме «Справка»:
- •Основные требования к защите программного продукта:
- •1.2.2 Обзор аналогичных программных продуктов, имеющихся на рынке
- •Р ис. 1.2.2.1 Главное окно программы GenoPro.
- •1.2.3 Выбор языка программирования
- •1.3. Технический проект
- •Общий алгоритм работы программы
- •Алгоритм ввода и хранения информации
- •1.3.3 Проектирование создания дерева и способов работы с ним
- •1.3.3.1 Методика построения генеалогического дерева
- •Алгоритм отображения дерева
- •Алгоритм выделения отдельной ветви дерева
- •Pис.1.3.3.3 Схема алгоритма рекурсивной процедуры Potomok(Id, pos).
- •Алгоритм объединения деревьев.
- •Рабочий проект
- •1.4.1 Общий вид программного продукта
- •Инсталляция программного комплекса
- •1.4.3 Защита программного продукта
- •1.4.4 Разработка программы
- •Тестирование надежности программного продукта
- •1.4.6 Зависимость размера файлов родословных и машинного времени построения генеалогического дерева от количества персон.
- •1.5 Выводы
1.3.3 Проектирование создания дерева и способов работы с ним
1.3.3.1 Методика построения генеалогического дерева
Основная часть работ дипломного проекта связана с созданием и визуализацией генеалогического дерева. В результате введенной информации должно получится наглядное представление этой информации.
Существуют различные подходы к построению генеалогических деревьев. Это и использование формата GEDCOM, и использование обходов бинарных и n-нарных деревьев. В проекте использован следующий подход.
Для удобства рисования дерева создана следующая структура записей массива дерева. Структура записи представлена на рис. 1.3.3.1. Но на этом рисунке показаны только те поля записи, которые необходимы для визуализации генеалогического дерева. Полностью элемент массива дерева в виде записи выглядит так:
TPerson = record
Id: integer;
pol: string[3];
MotherId: integer;
FatherId: integer;
Fam: string[80];
Name: string[50];
PatronName: string[80];
Husbend: integer;
Sist_Broth: integer;
Children: integer;
pok: integer;
date_born: string[16];
place_born:string[80];
date_death:string[16];
place_death:string[80];
cause_death:string[20];
e_mail: string[50];
home_page: string[50];
another: string[50];
id_death:boolean;
xp, yp: integer;
end;
Необходимо пояснить, что информация о людях, необходимая для осуществления визуализации генеалогического дерева, хранится в одномерном массиве PersonAr. Одному элементу этого массива соответствует запись.
Двадцать одно поле записи дает кратко наиболее полную информацию о персоне. В программе вся эта информация отражается в форме fmMainInfo. Для осуществления визуализации дерева необходима только часть этих полей записи. Поэтому на рис. 3.4 приведен не полный объем записи элемента массива.
Первое поле записи – идентификационный номер человека, Id. Следующие поля - идентификационные номера отца и матери, MotherId и FatherId. Получается, всегда есть ссылка на родителей человека. Значит, есть вся необходимая информация для того, чтобы восстановить вверх нисходящее генеалогическое дерево. Поле Husbend - идентификационный номер супруга. По нему узнаем информацию о людях, находящихся слева и справа в дереве от рассматриваемого человека с номером Id. Теперь рассмотрю поля Sist_Broth и Children. Благодаря последним идентификационным номерам есть ссылки на сестру/брата и на детей. Следовательно, можно восстановить нижнюю часть генеалогического дерева. Есть некоторая особенность у полей Sist_Broth и Children: если у человека есть несколько сестер/братьев, то человек с идентификационным номером Sist_Broth в своем поле Sist_Broth хранит ссылку на следующего сестру/брата. Так будет продолжаться до тех пор, пока не найдутся все сестры/братья, т.е. у последнего человека поле Sist_Broth будет равно нулю, ссылки ни на кого больше не будет.
Таким образом, с помощью такой созданной структуры записи элементов массива хранится вся необходимая информация для визуального представления дерева. Эти поля записи используются для осуществления алгоритмов рисования дерева и работы с ним.
Id |
MotherId |
FatherId |
Husbend |
Sist_Broth |
Children |
Рис. 1.3.3.1 Структура записи элемента массива
