- •Пояснительная записка
- •1.5. Требования к программной документации
- •1.6. Стадии этапа разработки
- •1.7. Порядок контроля и приемки.
- •2. Разработка логической модели
- •2.1. Словарь данных.
- •2.5. Алгоритмы процессов.
- •Поток данных: Запрос1 Хранилище: Семья
- •Поток данных: Ответ1
- •Поток данных: Ответ1
- •Поток данных: Имя2
- •Поток данных: Имя Файла Хранилище: Семья Поток данных: Данные
- •Поток данных: Имя
- •Хранилище: Семья
- •3. Разработка физической модели.
- •3.1. Проектные решения.
- •3.2. Структура представления основных данных.
- •3.2.1. Виды родственных связей.
- •3.2.2. Структура дерева.
- •3.2.3. Формат файла.
- •3.3. Разработанные классы.
- •3.3.1 Описание классов.
- •3.3.2. Взаимосвязь классов.
- •3.3.3. Динамическое поведение объектов.
- •Приложение Пример формата файла
- •Приложение: Описание интерфейса (на правах руководства пользователя)
- •Текст разработанной программы.
Хранилище: Семья
Выходные данные:
Хранилище: Семья
Алгоритм:
if (Семья не пуста)
{
запомнить позицию хвоста
запомнить позицию головы
while (голова не ровна хвостуl)
{
удалить текущего человека
}
переместиться к хвосту
удалить текущего человека
}
Процесс 1.2.2.3. : «Сохранить».
Входные данные:
Поток данных: Имя Файла
Хранилище: Семья
Выходные данные:
Поток данных: Данные
Алгоритм:
Создать и Открыть Имя Файла
if (Семья не пуста)
{
запомнить позицию хвоста
запомнить позицию головы
while (голова не ровна хвостуl)
{
сохранить имя текущего человека
if (сравнить это имя с имя1) сохранить указатель
перейти на следующего человека
if (мужчина) add_name+="1"
else add_name+="0"
add_name+=получить имя;
add_name+="\n";
if (нет отца)
add_name+="-\n";
else
{
add_name+="~";
if (отец-мужчина) add_name+="1";
else add_name+="0";
add_name+=получить имя отца;
add_name+="\n";
}
if (нет супругв)
add_name+="-\n";
else
{
add_name+="~";
if (супруг - мужчина)
add_name+="1";
else add_name+="0";
add_name+=получить имя супруга;
add_name+="\n";
}
if (нет ребенка1)
add_name+="-\n";
else
{
add_name+="~";
if (ребенок-мужчина)
add_name+="1";
else add_name+="0";
add_name+=получить имя ребенка;
add_name+="\n";
}
if (нет ребенка2)
add_name+="-\n";
else
{
add_name+="~";
if (ребенок-мужчина)
add_name+="1";
else add_name+="0";
add_name+=получить имя ребенка;
add_name+="\n";
}
if (нет ребенка3)
add_name+="-\n";
else
{
add_name+="~";
if (ребенок-мужчина)
add_name+="1";
else add_name+="0";
add_name+=получить имя ребенка;
add_name+="\n";
}
Записать в Имя Файла add_name
}
3. Разработка физической модели.
3.1. Проектные решения.
Добавить дополнительных родственных связей к уже существующим. (см. таблицу)
Для того чтоб начать работу с системой, необходимо ввести главу семьи.
Семья – это набор людей связанных простейшими родственными связями.
Простейшие родственные связи это:
Отец –1
Сын – 2
Дочь – 3
Муж –4
Жена – 5
Семья задана в памяти деревом.
Дерево представляет собой сложный объект, элементами которого являются персоны.
Между персонами в дереве двунаправленная связь
Общее число указателей у каждой персоны : 5
В дереве, только персоны мужского пола могут иметь не пустыми указатели на детей.
По умолчанию глава семьи мужского пола, но существует метод сделать главой женщину. (метод рассмотрен в руководстве пользователя).
Для реализации персоны вводится класс СPerson.
Определение «небольшой» семьи – это семья, родственные связи которой не превосходят 4 степени.
Степень родства – необходимое количество преобразований (используя таблицу «Таблица связей») для получения конечной родственной связи (номер от 1 до 32) из таблицы «Связь».
В систему может быть введена семья, размеры которой ограничены лишь оперативной памятью компьютера. Но вычисления родственной связи, возможны только на уровне некоторой локально «небольшой» семьи (поддерево общего дерева семьи).
Количество детей у одного мужчины ограничено тремя, если совершается попытка добавить 4-го ребенка, система выдает соответствующую ошибку.