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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

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), не изменяя настроек проекта.

 

Приложение 13. Листинг программы.

 

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 &copy);

CPersona& operator=(CPersona &copy);

//атрибуты

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 &copy);

CRelationship& operator=(CRelationship &copy);

//атрибуты

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(CGenealogicalTreeDoc)

 

// Attributes

public:

CTypedPtrArray<CObArray,CPersona*> PersonaTable;//коллекция персон

CTypedPtrArray<CObArray,CRelationship*> RelationshipTable;//коллекция связей

 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(CGenealogicalTreeView)

 

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::GetDocument() const

   { return reinterpret_cast<CGenealogicalTreeDoc*>(m_pDocument); }

#endif


 

 

 

 

 

 




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