Разработка программы "Генеалогическое дерево", страница 2

4.  Перебирая всех людей, записываем последовательно их в файл. Причем вместо ссылок на TPeople устанавливаем численное значение (это порядковый номер в списке Peoples класса TManager).

5.  Перебирая все браки, записываем последовательно их в файл. Причем вместо ссылок на TPeople устанавливаем численное значение (это порядковый номер в списке Peoples класса TManager).

6.  Закрываем файл.


5.  Интерфейс

 



Элементы управления:

1.  Переход к отцу, матери, брату, сестре соответственно, для просмотра их информации.

2.  Добавление информации нового человека и одновременно установка необходимой связь родства.

3.  Удаление информации о текущей связи с выбранным человеком.

4.  Добавление связи родства, выбором человека, который уже находится в программе.

5.  Переход к редактированию информации выбранного человека

6.  Удаление информации и связи выбранного человека

7.  Удаление информации и связи всех людей

8.  Форма фильтра

9.  Область отображения

Порядок работы пользователя с программой:

Для добавления информацию о новом человека можно нажав на кнопку “Добавить”.  Если нужно добавить информацию нового человека и одновременно установить необходимую связь родства, то нужно воспользоваться кнопкой  (2).

Для редактирования или удаления информации человека необходимо выбрать нужного человека из “Области отображения” (9). Потом нажать на кнопку “Редактировать” (5) или  “Удалить” (6) соответственно.

Для установления необходимой  связи между людьми  нужно воспользоваться кнопками (2) или (4). С помощью кнопки (2)можно добавит информацию о новом человеке, и создать с ним соответствующую связь. С помощью кнопки (4) можно выбрать человека из уже имеющихся людей в программе и установит с ним связь.

Для удаления связи необходимо выбрать человека, с которым эта связь установлена из области (1), с последующим нажатием на кнопку (3).

Для удаления все информацию и связей людей из программы  можно воспользоваться кнопкой “Очистить” (7).

Для графического представления человека необходимо выбрать нужного человека из “Области отображения” (9) и нажать на кнопку “Нарисовать дерево”.


6. Вывод

В результате проделанной работы удалось:

1.  Создать сложную структуру данных, которая позволяет при малых затратах памяти сделать процесс обработки объектов структуры более быстрым.

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

3.  Сделать возможность сохранения и загрузки всей информации о людях и их связях из файла.

4.  Сделать возможность графическое представление выбранного человека по 4-е уровням.

5.  Сделать интерфейс, который удобен и понимаем на интуитивном уровне. Пользователь может с легкостью управлять все предоставленным ему функционалом.

6.  Полностью  реализовать все поставленные в рамках курсовой работы задачи.


7.  Приложение

type

  TPeople = class;

  TMarriage = class;

  TRFilter = record

    Sort: Boolean;

    Family: string;   

    Name: string;    

    Patronymic: string

    Children: Integer;

    Marriage: Integer;

    Sex: Integer;

    Parent: Integer;

    Brother: Integer;

  end;

  TRPeople = record

    Family: string;    

    FamilyFirst: string;

    Name: string;      

    Patronymic: string;

    Sex: Boolean;       

    Father: TPeople;

    Mother: TPeople;

    PlaceOfBirth: string;

    PlaceOfDeath: string;

    DateOfBirth: string;

    DateOfDeath: string;

    Commentary: string;

  end;

  TRSLPeople = record

    Family: string[100];     

    FamilyFirst: string[100];

    Name: string[100];     

    Patronymic: string[100];

    Sex: Boolean;      

    Father: Integer;

    Mother: Integer;

    PlaceOfBirth: string[100];

    PlaceOfDeath: string[100];

    DateOfBirth: string[100];

    DateOfDeath: string[100];

    Commentary: string[255];

  end;

  TRMarriage = record

    Family: string;

    Husband: TPeople;

    Wife: TPeople;  

    DateOfStart, DateOfEnd: string;

    Commentary: string;

  end;

  TRSLMarriage = record

    Family: string[100];

    Husband: Integer;

    Wife: Integer;  

    DateOfStart, DateOfEnd: string[100];

    Commentary: string[255];

  end;

  TRManager = record

    CountPeople: Integer;

    CountMarriage: Integer;

  end;

  TPPeople = procedure (People: TPeople);

  TPMarriage = procedure (Marriage: TMarriage; Him: Boolean = true);

  TPParentPeople = procedure (People, Children: TPeople);

  {Класс Браков}

  TMarriage = class

  public

    Family: string;

    Husband: TPeople;

    Wife: TPeople;  

    DateOfStart, DateOfEnd: string;

    Commentary: string;

    destructor Destroy(); override;

  protected

    constructor Create(RMarriage: TRMarriage);

  end;

  {Класс Человекоподобных, :)}

  TPeople = class

  public

    Family: string;    

    FamilyFirst: string;

    Name: string;      

    Patronymic: string

    Sex: Boolean;     

    Father: TPeople;

    Mother: TPeople;

    PlaceOfBirth: string;  

    PlaceOfDeath: string;  

    DateOfBirth: string;

    DateOfDeath: string;

    Commentary: string;

    destructor Destroy(); override;

    procedure AddChildren(People: TPeople);

    procedure DeleteChildren(People: TPeople);

    function ValidatePara(People: TPeople): Boolean; //Если ли брак с этим человеком

    function ValidateBrother(People: TPeople): Boolean; //Если ли Братом/Сестрой с этим человеком

    function getBrothers(): TObjectList;

    function getChildrens(): TObjectList;

    //Дети у которых отец/мать не является мужем/женой данного человека

    function getChildrensNotParentOfSuprug(): TObjectList;

    //Все Браки (с другим человек в браке), у которыйх пересекаются дети