C++家谱管理系统[2023-06-18]

发布时间 2023-06-18 16:55:37作者: programwriter

C++家谱管理系统[2023-06-18]

小组项目二

实验题目:家谱管理系统

实验目的:
1、掌握树以及二叉树的定义;
2、掌握树以及二叉树的基本操作,如建立、查找、插入和删除等。
实验要求:小组合作方式,共同讨论完成该任务。

实验内容:
家谱管理系统是查询家谱信息必不可少的一部分,利用家谱管理系统可以清楚的查询到家族成员的详细信息。

输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:假设姓名中没有重名
层号、姓名、性别、出生日期、婚否、配偶姓名(若已婚)、家庭地址、是否健在、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。
具有如下功能:

[1]从family.txt文件读取信息,并创建家谱树
[2]对家谱信息进行后序遍历(对应二叉树的中序),并输出
[3]保存家谱信息到文件(按先序遍历顺序输出)
[4]以凹入表示法显示家谱信息;每一代空一格
[5]显示第n 代所有人的信息
[6]按照姓名查询,输出成员信息(包括其本人、父母、孩子的信息)
[7]输入出生日期查询成员名单
[8]为某成员添加孩子                                          
[9]根据姓名查找,修改某成员信息                            
[10]按出生日期对家谱中所有人排序
[11]根据姓名查找,删除成员

[其他]输入值若小于1或者大于11,结束程序

备注:系统需要包含但不仅限于以上功能。

实验提示:

初始家庭成员信息存放在family.txt中,你也可以修改数据。

数据样例:

15
层号  姓名  性别  出生日期  婚否  配偶姓名(若已婚,否则无该数据)  家庭地址  是否健在  死亡日期
1 陈雪见  男 1926.11.21 已婚  李美丽  江西南昌  否 2016.07.02
2 陈敏瑜  女 1953.04.26 已婚  江怀国  江西南昌  是
3 江浩东  男 1977.08.02 已婚  田晶晶  江西南昌  是
4 江天宇  男 2008.07.26 未婚  江西南昌  是
3 江浩南  男 1979.08.26 已婚  高晓云  江西南昌  是
4 江天怡  女 2010.08.26 未婚  江西南昌  是
3 江浩北  男 1981.06.02 已婚  黄志丽  江西南昌  是
4 江天豪  男 2010.03.02 未婚  江西南昌  是
2 陈敏杰  男 1956.09.01 已婚  曾钰  江西南昌  是
3 陈贝贝  女 1983.04.26 已婚  薛庚庆  江西南昌  是
4 薛加真  男 2009.10.1 未婚  江西南昌  是
4 薛惊云  男 2011.08.26 未婚  江西南昌  是
3 薛加美  女 1988.02.04 已婚  曹志高  北京  是   
4 曹霄涵  男 2015.08.26 未婚  北京  是
4 曹雪涵  女 2018.07.08 未婚  北京  是

家谱文本文件中,每一行包含一个人的名字。第一行是家族人数,第二行是表头信息,第三行之后是家族成员。家谱仅包含最早祖先的后代,而他们的丈夫或妻子出现在家谱的配偶信息中。每个人的信息第一列是层号信息,数据以先序遍历的顺序给出 。以上述家谱文本文件为例,“陈雪见”是这个家族最早的祖先;他有两个子女“陈敏瑜”和“陈敏杰”;“陈敏瑜”有三个子女“江浩东”、“江浩南”和“江浩北”;“江浩东”有只有一个子女“江天宇”。

#define MaxPerson 100
typedef struct datainfo {
 int level;
 char name[50];//姓名
 char sex[3];//性别
 char birthday[11];//生日 2008.09.02
 bool marriage;//婚否(true表示结婚,false表示没结婚)
 char partner[50];//伴侣,如果已婚
 char address[100];//住址
 bool live;//是否健在(true表示活着,false表示过世)
 char death_date[11];//死亡日期(如果其已经死亡) 1998.07.02
} familyInfoNode,*FamilyInfo;

//将树结构转换成二叉树来处理
typedef struct biTreeNode {
 familyInfo data;
 struct biTreeNode *leftChild,*rightChild,*parent;
} familyTreeNode,*FamilyTree;

实验要求:
(1) 程序要添加适当的注释,程序的书写要采用缩进格式。
(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。
(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
(4) 根据实验报告模板详细书写实验报告,在实验报告中给出根据姓名进行查找的算法和插入算法的流程图或者伪代码。
(5) 上传源程序和实验报告小组作业中。实验报告命名为:第小组-小组实验报告03+家族管理系统.doc 或者小组实验报告03+家族管理系统.docx。源程序压缩为一个文件(如果定义了头文件则一起压缩),按以下方式命名:第小组-实验报告02+家族管理系统.rar或者  第小组-实验报告02+家族管理系统.zip
(6)录制5分钟左右的视频,对项目进行介绍,需对项目实现功能进行演示,同时上传到学习通的小组作业中。

源码

https://pan.baidu.com/s/1J--MYtUyPilpJKTD15-SgA?pwd=1111