Автор работы: Пользователь скрыл имя, 01 Октября 2013 в 14:34, курсовая работа
Требуется разработать программную систему для поддержки генеалогических деревьев.
Система хранит сведения о персонах (Ф.И.О., пол, дата рождения, дата смерти, биография) и о родственных связях между ними. Связи бывают только трех видов: «мужья-жены», «дети-родители» и «братья-сестры». Система обеспечивает возможность добавления данных о новых персонах и родственных связях, изменение введенных данных и удаление ненужных данных. Система следит за непротиворечивостью вводимых данных. Например, недопустимо, чтобы человек был собственным предком или потомком.
Разработанная модель должна содержать схему базы данных для хранения генеалогических деревьев.
1. Постановка задачи 3
1.2. Глоссарий проекта 3
1.3. Анализ и определение требований 3
2. Проектирование программного продукта 6
2.1. Описание модели вариантов использования 6
2.1.1. Диаграмма вариантов использования 6
2.2. Описание модели анализа системы 6
2.2.1. Диаграммы деятельности 6
2.2.2. Диаграммы последовательностей и кооперации 8
2.2.3. Диаграммы состояний 9
2.2.4. Диаграмма классов 10
2.3. Описание модели реализации 12
2.3.1. Диаграмма компонентов 12
3. Процесс генерации программного кода 13
4. Описание программы 14
4.1. Общие сведения 14
4.2. Определение классов 14
5. Тестирование программы 16
Заключение 17
Список литературы 18
Приложения 19
ЦЕНТРОСОЮЗ РОССИЙСКОЙ ФЕДЕРАЦИИ
СИБИРСКИЙ
УНИВЕРСИТЕТ ПОТРЕБИТЕЛЬСКОЙ
Кафедра прикладной информатики
Проектирование информационных систем в экономике
КУРСОВАЯ РАБОТА
Генеалогическое дерево
Выполнил
Студент гр. 391 Пешков Е. Г.
Проверил
Доцент Гомбоев Л. Г.
Чита 2013
Содержание
1. Постановка задачи 3
1.2. Глоссарий проекта 3
1.3. Анализ и определение требований 3
2. Проектирование программного продукта 6
2.1. Описание модели вариантов использования 6
2.1.1. Диаграмма вариантов использования 6
2.2. Описание модели анализа системы 6
2.2.1. Диаграммы деятельности 6
2.2.2. Диаграммы последовательностей и кооперации 8
2.2.3. Диаграммы состояний 9
2.2.4. Диаграмма классов 10
2.3. Описание модели реализации 12
2.3.1. Диаграмма компонентов 12
3. Процесс генерации программного кода 13
4. Описание программы 14
4.1. Общие сведения 14
4.2. Определение классов 14
5. Тестирование программы 16
Заключение 17
Список литературы 18
Приложения 19
Требуется разработать
программную систему для
Система хранит сведения о персонах (Ф.И.О., пол, дата рождения, дата смерти, биография) и о родственных связях между ними. Связи бывают только трех видов: «мужья-жены», «дети-родители» и «братья-сестры». Система обеспечивает возможность добавления данных о новых персонах и родственных связях, изменение введенных данных и удаление ненужных данных. Система следит за непротиворечивостью вводимых данных. Например, недопустимо, чтобы человек был собственным предком или потомком.
Разработанная модель должна содержать схему базы данных для хранения генеалогических деревьев.
Пользователи системы могут осуществлять поиск полезной информации по дереву:
Генеалогическое дерево состоит из персон и связей между ними. Эти списки хранятся в базе данных в виде таблиц с несколькими полями.
Поля таблицы «Персона»:
Поля таблицы «Связь»:
Целесообразно спроектировать базу данных со следующей структурой:
Необходимые функции системы:
1. Наполнение базы информацией. Должна быть предусмотрена возможность добавлять записи о новых персонах и связях, редактировать данные о персонах и удалять ненужные записи.
При создании
связи соблюдается
Доступны для изменения следующие поля таблицы «Персона»: имя, дата смерти, биография.
Во избежание нарушений целостности данных доступны для удаления только те персоны, которые не состоят в связях.
2. Вывод запрошенной информации. Должна быть предусмотрена возможность получать следующие сведения о персоне:
- список детей;
- список родителей;
- список братьев и сестер;
- список всех предков;
- список всех потомков;
- список всех родственников;
Так же должна быть возможность прослеживать цепочку родственных связей между двумя персонами, то есть выходить с одной заданной персоны на другую через общих родственников.
К предкам персоны относятся родители, их родители, родители их родителей и т.д.
К потомкам персоны относятся дети, их дети, дети их детей и т.д.
К родственникам персоны относятся все персоны, прямо или косвенно связанные с ней.
База данных хранится в файле на внешнем носителе. Должна быть возможность сохранения текущей базы и загрузки ранее созданной.
Были выбраны следующие актеры и прецеденты.
Актёры:
Пользователь – человек, работающий с системой. Этот актер инициирует все прецеденты.
База данных – файл на внешнем носителе, хранящий таблицы данных. Взаимодействие с этим актером происходит при чтении и сохранении базы данных.
Прецеденты:
Наполнение базы – включает в себя процедуры добавления, редактирования и удаления записей из базы.
Запрос к базе – включает в себя процедуры обработки пользовательских запросов и вывода найденной информации.
Рассмотрим более подробно прецеденты, выделенные на предыдущем этапе.
Вариант использования «Наполнение базы»
Основные потоки событий:
1. Пользователь выбирает, какое действие выполнить.
1.1. Работа с персонами
1.1.1. Добавить персону.
1.1.1.1. Система запрашивает данные о персоне.
1.1.1.2. Пользователь вводит данные о персоне.
1.1.1.3. Система проверяет, введено ли имя.
1.1.1.4. Если
имя введено, новая запись
1.1.2. Изменить персону
1.1.2.1. Пользователь выбирает персону из списка.
1.1.2.2. Система запрашивает новые данные о персоне.
1.1.2.3. Пользователь вводит данные о персоне.
1.1.2.4. Система проверяет, введено ли имя.
1.1.2.5. Если
имя введено, изменения
1.1.3. Удалить персону.
1.1.3.1. Пользователь выбирает персону из списка.
1.1.3.2. Система проверяет, состоит ли персона в связях.
1.1.3.3. Если не состоит, запись о персоне удаляется из базы.
1.2. Работа со связями.
1.2.1. Добавить связь.
1.2.1.1. Система проверяет, имеется ли хотя бы 2 записи в таблице персон.
1.2.1.2. Если
имеется, пользователь
1.2.1.3. Система проверяет, возможна ли связь между выбранными персонами.
1.2.1.4. Если возможна, в базу добавляется новая запись.
1.2.2. Удалить связь.
1.2.2.1. Пользователь выбирает нужную связь.
1.2.2.2. Из базы удаляется запись о связи.
Альтернативные потоки событий:
1. При удалении персоны
1.1. Выводится сообщение об ошибке, и прецедент завершается.
2. При добавлении связи выясняется, что таблица персон содержит менее двух записей.
2.1. Выводится
сообщение об ошибке и
Предусловия.
1. Система
должна находиться в состоянии
«Ожидание действий от
Постусловия.
1. Система
возвращается в состояние «
Вариант использования «Запрос к базе»
Основные потоки событий:
1. Пользователь выбирает, какой запрос выполнить.
1.1. Исходными данными для запроса служит одна персона.
1.1.1. Пользователь
выбирает нужный запрос в
1.2. Исходными данными для запроса служит 2 персоны.
1.2.1. Пользователь выбирает нужных персон из списка.
2. Система выполняет поиск в базе по запросу.
3. Система отображает результат запроса.
Предусловия.
1. Система
должна находиться в состоянии
«Ожидание действий от
Постусловия.
1. Система
возвращается в состояние «
Перед построением диаграмм взаимодействия были разработаны классы будущей программы на основе диаграмм прецедентов и деятельности. Затем были построены диаграммы последовательности, описывающие переход активности между классами во времени, на основании которых средствами Rational Software Architect автоматически были созданы диаграммы кооперации.
Для построения диаграмм взаимодействия были выбраны следующие объекты:
Вариант использования «Наполнение базы»
Выполняется одно из следующих действий.
1. Пользователь добавляет персону.
1.1. В базу
данных добавляется новая
2. Пользователь изменяет персону.
2.1. В
базу данных вносятся
3. Пользователь удаляет персону.
3.1. Проверяется,
не участвует ли персона в
связях (CGenealogicalDoc::
3.2. Если
не участвует, выполняется
4. Пользователь добавляет связь.
4.1. В
базу данных добавляется новая
запись (CGenealogicalDoc::
4.1.1. Если
создали связь типа «родители - дети»,
автоматически создаются связи «брат-сестра»
между новым ребенком и другими детьми
родителя, при этом выполняется функция
CGenealogicalDoc::
5. Пользователь удаляет связь.
5.1. Выполняется
удаление записи из базы (CGenealogicalDoc::
Вариант использования «Запрос к базе»
Выполняется один из следующих запросов.
1. Получить список детей персоны.
1.1. Выполняется
поиск детей и выводится
2. Получить список родителей персоны.
2.1. Выполняется
поиск родителей и выводится
результат (CGenealogicalDoc::
3. Найти братьев и сестер персоны.
3.1. Выполняется
поиск братьев и сестер и
выводится результат (функция
CGenealogicalDoc::
4. Получить список всех предков персоны.
4.1. Выполняется
поиск предков и выводится
результат (CGenealogicalDoc::
4.1.1. Выполняется
рекурсивная функция поиска родителей
CGenealogicalDoc::
5. Получить список всех потомков персоны.
5.1. Выполняется
поиск потомков и выводится результат
(CGenealogicalDoc::
5.1.1. Выполняется
рекурсивная функция поиска детей CGenealogicalDoc::
6. Получить
список всех родственников
6.1. Выполняется
поиск родственников и
6.1.1. Выполняется
рекурсивная функция поиска ближайших
родственников CGenealogicalDoc::
7. Проследить цепочку родственных связей между персонами.
7.1. Выполняется
поиск связей и выводится результат (CGenealogicalDoc::
7.1.1. Выполняется
рекурсивная функция поиска связей CGenealogicalDoc::
Система может находиться в следующих состояниях: