- •Пояснительная записка
- •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. Динамическое поведение объектов.
- •Приложение Пример формата файла
- •Приложение: Описание интерфейса (на правах руководства пользователя)
- •Текст разработанной программы.
Поток данных: Имя2
Хранилище: Семья
Выходные данные:
Поток данных: Имя2
Алгоритм:
if (Семья не пуста)
{
запомнить позицию хвоста
запомнить позицию головы
while (голова не ровна хвостуl)
{
сохранить имя текущего человека
if (сравнить это имя с имя1) сохранить указатель
перейти на следующего человека
}
переместиться к хвосту
запомнить имя человека в хвосте
if (сравнить это имя с имя1) сохранить указатель
}
Процесс 1.2.1.2. : «Создать».
Входные данные:
Поток данных: Имя1
Выходные данные:
Поток данных: Имя1
Алгоритм:
Создать нового человека с именем имя1 и полом.
Процесс 1.2.1.3. : «Внести».
Входные данные:
Поток данных: Имя1
Поток данных: Имя2
Поток данных: Простая связь
Выходные данные:
Поток данных: Имя1
Алгоритм:
Добавить нового человека в хвост списка
if (простейшая связь: отец)
{
у имя2 указатель отец установить на Имя1
у имя1 указатель ребенок установить на Имя2
вывести соответствующее сообщение
}
if (простейшая связь: супруг)
{
у имя2 указатель супруг установить на Имя1
у имя1 указатель супруг установить на Имя2
вывести соответствующее сообщение
}
if (простейшая связь: сын) || (простейшая связь: дочь)
{
у имя1 указатель отец установить на Имя2
if (у имя 2 нет ребенка 1)
{
у имя2 указатель ребенок1 установить на Имя1
вывести соответствующее сообщение
}
else if (у имя 2 нет ребенка 2)
{
у имя2 указатель ребенок2 установить на Имя1
вывести соответствующее сообщение
}
else if (у имя 2 нет ребенка 3)
{
у имя2 указатель ребенок3 установить на Имя1
вывести соответствующее сообщение
}
else
{
детей слишком много
вывести соответствующее сообщение
}
}
if (простейшая связь: супруга)
{
у имя2 указатель супруга установить на Имя1
у имя1 указатель супруга установить на Имя2
вывести соответствующее сообщение
}
Процесс 1.2.2.1. : «Загрузить».
Входные данные:
Поток данных: Имя Файла Хранилище: Семья Поток данных: Данные
Выходные данные:
Поток данных: Имя
Алгоритм:
Открыть Имя Файла
InStr=считать весь Имя Файла
Вызвать процесс «Очистить»
while (inStr не пуст)
{
вычленить первую строку //1 строка - имя
if (первый символ='1') мужчина; else женщина
вычленить из первой строки все кроме первого символа
запустить процесс «Поиск» для этого имя
if (не нашел)
{ создать нового человека
добавить в хвост Хранилища Семья
}
вычленить вторую строку //2 строка - отец
if (первый символ ='~')
{
вырезать все кроме первого символа
if (первый символ='1') мужчина; else женщина
вычленить из второй строки все кроме первого символа
запустить процесс «Поиск» для этого имя
if (не нашел)
{
создать нового человека
добавить в хвост Хранилища Семья
}
else
{
у найденного указатель отец установить на строку1
if (строка1 нет детей)
у строка1 указатель ребенок1 установить на найденного
else if (строка1 нет ребенок 2)
у строка1 указатель ребенок2 установить на найденного
else if (строка1 нет ребенок 3)
у строка1 указатель ребенок3 установить на найденного
}
}
вычленить строку 3//3 строка - муж/жена
if (первый символ ='~')
{
вырезать все кроме первого символа
if (первый символ='1') мужчина; else женщина
вычленить из строки3 все кроме первого символа
запустить процесс «Поиск» для этого имя
if (не нашел)
{
создать нового человека
добавить в хвост Хранилища Семья
}
else
{
у найденного указатель супруг установить на строку1
у строка1 указатель супруг установить на найденного
}
}
вычленить строку 4//4 строка - первый ребенок
if (первый символ ='~')
{
вырезать все кроме первого символа
if (первый символ='1') мужчина; else женщина
вычленить из строки3 все кроме первого символа
запустить процесс «Поиск» для этого имя
if (не нашел)
{
создать нового человека
добавить в хвост Хранилища Семья
}
else
{
у найденного указатель ребенок1 установить на строку1
у строка1 указатель отец установить на найденного
}
}
вычленить строку 5//5 строка - второй ребенок
if (первый символ ='~')
{
вырезать все кроме первого символа
if (первый символ='1') мужчина; else женщина
вычленить из строки3 все кроме первого символа
запустить процесс «Поиск» для этого имя
if (не нашел)
{
создать нового человека
добавить в хвост Хранилища Семья
}
else
{
у найденного указатель ребенок1 установить на строку1
у строка1 указатель отец установить на найденного
}
}
вычленить строку 4//6 строка - третий ребенок
if (первый символ ='~')
{
вырезать все кроме первого символа
if (первый символ='1') мужчина; else женщина
вычленить из строки3 все кроме первого символа
запустить процесс «Поиск» для этого имя
if (не нашел)
{
создать нового человека
добавить в хвост Хранилища Семья
}
else
{
у найденного указатель ребенок1 установить на строку1
у строка1 указатель отец установить на найденного
}
}
}
Процесс 1.2.2.2. : «Очистить».
Входные данные: