Автор работы: Пользователь скрыл имя, 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
GenealogicalTreeDoc.cpp
GenealogicalTreeDoc.h
GenealogicalTreeView.cpp
GenealogicalTreeView.h
Persona.cpp
Persona.h
Relationship.cpp
Relationship.h
Файлы определения и реализации классов диалоговых окон:
persondlgClass.cpp
persondlgClass.h
relationshipdlgClass.cpp
relationshipdlgClass.h
Файлы, созданные ClassWizard:
GenealogicalTreeDoc.h/cpp
– файлы определения и
GenealogicalTreeView.h/cpp
– файлы определения и
MainFrm.h/cpp
– файлы определения и
resource.h – файл идентификаторов ресурсов
StdAfx.h/cpp – файлы прекомпилированного заголовка
GenealogicalTree.h/cpp
– файлы определения и
GenealogicalTree.rc – файл ресурсов
res – папка ресурсов (изображения, иконки)
GenealogicalTree.vcproj – файл проекта
Для сборки приложения следует открыть проект в среде Microsoft Visual Studio и собрать (build), не изменяя настроек проекта.
Persona.h |
#pragma once
class CPersona : public CObject { public: CPersona(void); ~CPersona(void); CPersona(int id_persona1, CString name1, int gender1, COleDateTime birthdate1, COleDateTime deathdate1, CString bio1); CPersona(const CPersona ©); CPersona& operator=(CPersona ©); //атрибуты private: int id_persona; //код персоны CString name; //имя int gender; //пол COleDateTime birthdate; //дата рождения COleDateTime deathdate; //дата смерти CString bio; //биография //функции protected: DECLARE_SERIAL(CPersona); public: void Serialize (CArchive& ar); int GetId(void) { return id_persona; } CString GetName(void) { return name; } int GetGender(void) { return gender; } COleDateTime GetBirthdate(void) { return birthdate; } COleDateTime GetDeathdate(void) { return deathdate; } CString GetBio(void) { return bio; } }; |
Relationship.h |
#pragma once
class CRelationship : public CObject { public: CRelationship(void); ~CRelationship(void); CRelationship(int id_relationship, int pers1_1, int pers2_1, int variety1); CRelationship(const CRelationship ©); CRelationship& operator=(CRelationship ©); //атрибуты private: int id_relationship,pers1,pers2; //первая персона, вторая персона int variety; //вид связи CString variety_name; //функции protected: void Serialize(CArchive &ar); DECLARE_SERIAL(CRelationship); public: int GetId(void) { return id_relationship; } int GetPers1(void) { return pers1; } int GetPers2(void) { return pers2; } int GetVarietyNumb(void) { return variety; } CString GetVariety(void) { return variety_name; } }; |
GenealogicalTreeDoc.h |
// GenealogicalTreeDoc.h : interface of the CGenealogicalTreeDoc class // #include "afxtempl.h" #include "Persona.h" #include "Relationship.h"
#pragma once
class CGenealogicalTreeDoc : public CDocument { protected: // create from serialization only CGenealogicalTreeDoc(); DECLARE_DYNCREATE(
// Attributes public: CTypedPtrArray<CObArray, CTypedPtrArray<CObArray, private: int count; struct rels { int relative1; int relative2; int type; }; CArray<rels,rels> relatives; CArray<int,int> relationships; // Operations public: static CGenealogicalTreeDoc * GetDoc();
// Overrides public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar);
// Implementation public: virtual ~CGenealogicalTreeDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif
protected:
// Generated message map functions protected: DECLARE_MESSAGE_MAP() public: void AddPerson(CString name, bool gender, COleDateTime birthdate, COleDateTime deathdate, CString bio); void ChangePerson(int id_persona,CString name, COleDateTime deathdate, CString bio); void Save(void); bool Load(void); void AddRelationship(int pers1, int pers2, int variety); bool CheckCorrectRelationship(int pers1, int pers2, int relationship,bool message); void DeletePersona(int id); void DeleteRelationship(int id); bool CheckRelationshipExist(int id_person); void ShowChild(int id_person); void ShowParent(int id_person); void ShowBrotherSister(int id_person); void ShowAncestor(int id_person); void FindAllAncestors(int id_person); void ShowDescendant(int id_person); void FindAllDescendants(int id_person); void ShowRelative(int id_person); void FindAllRelatives(int id_person); void TraceRelationship(int id_person1, int id_person2); void FindRelationship(int id_person1, int id_person2, bool flagstop); void New(void); }; |
GenealogicalTreeView.h |
// GenealogicalTreeView.h : interface of the CGenealogicalTreeView class //
#pragma once #include "afxcmn.h" #include "afxwin.h"
class CGenealogicalTreeView : public CFormView { protected: // create from serialization only CGenealogicalTreeView(); DECLARE_DYNCREATE(
public: enum{ IDD = IDD_GENEALOGICALTREE_FORM };
// Attributes public: CGenealogicalTreeDoc* GetDocument() const;
// Operations public: static CGenealogicalTreeView * GetView();
// Overrides public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void OnInitialUpdate();// called first time after construct
// Implementation public: virtual ~CGenealogicalTreeView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif
protected:
// Generated message map functions protected: DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedButton1(); afx_msg void OnEditNewPersona(); afx_msg void OnEditNewRelationship(); CListCtrl perslist; CListCtrl rellist; afx_msg void OnChangePerson(NMHDR *pNMHDR, LRESULT *pResult); void FillPersonaList(void); void FillRelationshipList(void); afx_msg void OnDeleteRelationship(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMRclickList1(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnContextShowchild(); afx_msg void OnContextShowparent(); afx_msg void OnContextShowbrothersister(); afx_msg void OnContextAncestor(); afx_msg void OnContextDescendant(); afx_msg void OnContextRelative(); afx_msg void OnContext2Newpersona(); afx_msg void OnContext3Newrelationship(); afx_msg void OnNMRClickList2(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnContextDeleteperson(); afx_msg void OnContext3Deleterelationship() afx_msg void OnFileLoadtree(); afx_msg void OnFileSavetree(); CListBox resultctrl; CComboBox pers1comboctrl; CComboBox pers2comboctrl; void FillComboboxes(void); afx_msg void OnBnClickedButtontrace(); int pers1pos; int pers2pos; afx_msg void OnFileNewtree(); };
#ifndef _DEBUG // debug version in GenealogicalTreeView.cpp inline CGenealogicalTreeDoc* CGenealogicalTreeView:: { return reinterpret_cast< #endif |