Генеалогическое дерево

Автор работы: Пользователь скрыл имя, 25 Мая 2013 в 12:57, курсовая работа

Описание работы

Разработанная модель должна содержать схему базы данных для хранения генеалогических деревьев.
Пользователи системы могут осуществлять поиск полезной информации по дереву:
находить для указанного члена семьи его детей;
находить для указанного члена семьи его родителей;
находить для указанной персоны братьев и сестер, если таковые есть;
получать список всех предков персоны;
получать список всех потомков персоны;
получать список всех родственников персоны;

Содержание работы

1. Постановка задачи 2
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

Файлы: 1 файл

course.docx

— 525.40 Кб (Скачать файл)

ЦЕНТРОСОЮЗ  РОССИЙСКОЙ ФЕДЕРАЦИИ

СИБИРСКИЙ УНИВЕРСИТЕТ ПОТРЕБИТЕЛЬСКОЙ КООПЕРАЦИИ ЗАБАЙКАЛЬСКИЙ ИНСТИТУТ ПРЕДПРИНИМАТЕЛЬСТВА


 

Кафедра прикладной информатики

 

 

 

 

 

 

 

 

 

 

Проектирование  информационных систем в экономике

КУРСОВАЯ  РАБОТА

Генеалогическое дерево

 

 

 

 

 

 

 

 

 

 

 

Выполнил:

Студент гр. 391 Пешков Е.Г.

Проверил:

Доцент Гомбоев  Л. Г.

 

 

 

 

 

 

 

 

 

 

Чита 2013

Содержание

1. Постановка задачи 2

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. Постановка  задачи

 

Требуется разработать  программную систему для поддержки генеалогических деревьев.

Система хранит сведения о персонах (Ф.И.О., пол, дата рождения, дата смерти, биография) и о родственных связях между ними. Связи бывают только трех видов: «мужья-жены», «дети-родители» и «братья-сестры». Система обеспечивает возможность добавления данных о новых персонах и родственных связях, изменение введенных данных и удаление ненужных данных. Система следит за непротиворечивостью вводимых данных. Например, недопустимо, чтобы человек был собственным предком или потомком.

Разработанная модель должна содержать схему базы данных для  хранения генеалогических деревьев.

Пользователи системы  могут осуществлять поиск полезной информации по дереву:

  • находить для указанного члена семьи его детей;
  • находить для указанного члена семьи его родителей;
  • находить для указанной персоны братьев и сестер, если таковые есть;
  • получать список всех предков персоны;
  • получать список всех потомков персоны;
  • получать список всех родственников персоны;
  • прослеживать цепочку родственных связей от одной персоны до другой (например, если Петр является шурином Ивана, то на запрос о родственных связях между Петром и Иваном выдается такой результат: «Петр - брат Ольги, Ольга - жена Ивана»).

1.2. Глоссарий проекта

 

  1. Система – программная система для поддержки генеалогических деревьев.
  2. Пользователь – человек, работающий с системой.
  3. База данных – файл во внешней памяти компьютера, хранящий таблицы данных.

1.3. Анализ и определение требований

 

Генеалогическое дерево состоит из персон и связей между ними. Эти списки хранятся в базе данных в виде таблиц с несколькими полями.

 

Поля  таблицы «Персона»:

  1. Код персоны
  2. Имя
  3. Пол
  4. Дата рождения
  5. Дата смерти
  6. Биография

 

Поля  таблицы «Связь»:

  1. Код связи
  2. Код персоны 1
  3. Код персоны 2
  4. Код вида связи
  5. Название связи

 

Целесообразно спроектировать базу данных со следующей  структурой:

 

Необходимые функции системы:

1. Наполнение базы информацией. Должна быть предусмотрена возможность добавлять записи о новых персонах и связях, редактировать данные о персонах и удалять ненужные записи.

При создании связи соблюдается непротиворечивость. Должны выполняться следующие условия:

  • участники связи не могут быть одной и той же персоной;
  • между каждой парой персон нельзя создавать более одной связи;
  • для создания связи «мужья – жены» участники должны иметь разный пол;
  • для создания связи «мужья – жены» участники не должны состоять в такой же связи с другими персонами (т.е. у персоны не может быть несколько супругов);
  • для создания связи «родители дети» первый участник (родитель) должен быть старше второго участника (ребенок).

 

Доступны  для изменения следующие поля таблицы «Персона»: имя, дата смерти, биография.

Во избежание  нарушений целостности данных доступны для удаления только те персоны, которые  не состоят в связях.

2. Вывод запрошенной информации. Должна быть предусмотрена возможность получать следующие сведения о персоне:

- список детей;

- список родителей;

- список братьев и сестер;

- список всех предков;

- список всех потомков;

- список всех родственников;

Так же должна быть возможность прослеживать цепочку  родственных связей между двумя  персонами, то есть выходить с одной  заданной персоны на другую через  общих родственников.

К предкам  персоны относятся родители, их родители, родители их родителей и т.д.

К потомкам персоны относятся дети, их дети, дети их детей и т.д.

К родственникам  персоны относятся все персоны, прямо или косвенно связанные  с ней.

База  данных хранится в файле на внешнем  носителе. Должна быть возможность  сохранения текущей базы и загрузки ранее созданной.

 

2. Проектирование программного продукта

2.1. Описание модели вариантов использования

2.1.1. Диаграмма вариантов использования

 

Были  выбраны следующие актеры и прецеденты.

 

Актёры:

Пользователь – человек, работающий с системой. Этот актер инициирует все прецеденты.

База  данных – файл на внешнем носителе, хранящий таблицы данных. Взаимодействие с этим актером происходит при чтении и сохранении базы данных.

 

Прецеденты:

Наполнение  базы – включает в себя процедуры добавления, редактирования и удаления записей из базы.

Запрос  к базе – включает в себя процедуры обработки пользовательских запросов и вывода найденной информации.

2.2. Описание модели анализа системы

2.2.1. Диаграммы деятельности

 

Рассмотрим  более подробно прецеденты, выделенные на предыдущем этапе.

 

Вариант использования  «Наполнение базы»

 

Основные потоки событий:

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. Система  возвращается в состояние «Ожидание  действий от пользователя».

2.2.2. Диаграммы последовательностей и кооперации

 

Перед построением  диаграмм взаимодействия были разработаны  классы будущей программы на основе диаграмм прецедентов и деятельности. Затем были построены диаграммы  последовательности, описывающие переход  активности между классами во времени, на основании которых средствами Rational Software Architect автоматически были созданы диаграммы кооперации.

Для построения диаграмм взаимодействия были выбраны  следующие объекты:

  1. Актер Пользователь.
  2. Объект класса CGenealogicalTreeView – класса вида, содержащего методы-обработчики пользовательских действий.
  3. Объект класса CGenealogicalTreeDoc – класса документа.

 

Вариант использования  «Наполнение базы»

 

Выполняется одно из следующих действий.

1. Пользователь  добавляет персону.

1.1. В базу данных добавляется новая запись (функция CGenealogicalDoc::AddPerson()).

2. Пользователь  изменяет персону.

2.1. В базу данных вносятся изменения (CGenealogicalDoc::ChangePerson()).

3. Пользователь  удаляет персону.

3.1. Проверяется, не участвует ли персона в связях (CGenealogicalDoc::CheckRelationshipExist()).

3.2. Если не участвует, выполняется удаление записи из базы (CGenealogicalDoc::DeletePersona()).

4. Пользователь  добавляет связь.

4.1. В базу данных добавляется новая запись (CGenealogicalDoc::AddRelationship).

4.1.1. Если создали связь типа «родители - дети», автоматически создаются связи «брат-сестра» между новым ребенком и другими детьми родителя, при этом выполняется функция CGenealogicalDoc::CheckCorrectRelationship().

5. Пользователь  удаляет связь.

5.1. Выполняется удаление записи из базы (CGenealogicalDoc::DeleteRelationship()).

 

Вариант использования  «Запрос к базе»

 

Выполняется один из следующих запросов.

1. Получить  список детей персоны.

1.1. Выполняется поиск детей и выводится результат (функция CGenealogicalDoc::ShowChild()).

2. Получить  список родителей персоны.

2.1. Выполняется поиск родителей и выводится результат (CGenealogicalDoc::ShowParent()).

3. Найти  братьев и сестер персоны.

3.1. Выполняется поиск братьев и сестер и выводится результат (функция CGenealogicalDoc::ShowBrotherSister()).

4. Получить  список всех предков персоны.

4.1. Выполняется поиск предков и выводится результат (CGenealogicalDoc::ShowAncestor()).

4.1.1. Выполняется рекурсивная функция поиска родителей CGenealogicalDoc::FindAllAncestors().

5. Получить список всех потомков персоны.

5.1. Выполняется поиск потомков и выводится результат (CGenealogicalDoc::ShowDescendant()).

5.1.1. Выполняется рекурсивная функция поиска детей CGenealogicalDoc::FindAllDescendants().

6. Получить  список всех родственников персоны.

6.1. Выполняется поиск родственников и выводится результат (CGenealogicalDoc::ShowRelative()).

6.1.1. Выполняется рекурсивная функция поиска ближайших родственников CGenealogicalDoc::FindAllRelatives().

7. Проследить цепочку родственных связей между персонами.

7.1. Выполняется поиск связей и выводится результат (CGenealogicalDoc::TraceRelationship()).

7.1.1. Выполняется рекурсивная функция поиска связей CGenealogicalDoc::FindAllRelationships().

2.2.3. Диаграммы состояний

 

Система может  находиться в следующих состояниях:

  1. Ожидание действий от пользователя.
  2. Ввод данных о новой персоне.
  3. Изменение данных о персоне.
  4. Ввод данных о связи.
  5. Загрузка базы.
  6. Сохранение базы.

Информация о работе Генеалогическое дерево