Помощь в написании студенческих работ
Антистрессовый сервис

Проектирование создания дерева и способов работы с ним

РефератПомощь в написанииУзнать стоимостьмоей работы

Sist_Broth: integer; Place_death:string; PatronName: string; Cause_death:string; Place_born:string; MotherId: integer; Home_page: string; FatherId: integer; Date_death:string; Date_born: string; Children: integer; TPerson = record. Id_death:boolean; Husbend: integer; Xp, yp: integer; Another: string; E_mail: string; Pok: integer; Name: string; Pol: string; Id: integer; Fam: string; Sist_Broth… Читать ещё >

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

Методика построения генеалогического дерева

Основная часть работ дипломного проекта связана с созданием и визуализацией генеалогического дерева. В результате введенной информации должно получится наглядное представление этой информации.

Существуют различные подходы к построению генеалогических деревьев. Это и использование формата 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 Структура записи элемента массива.

Показать весь текст
Заполнить форму текущей работой