1.家谱管理系统
问题描述:
家谱用于记录某家族历代家族成员的情况与关系。本系统要求能对家谱进行存储、更新、查询、统计等操作。
【实现要求】
程序必须采用树形数据结构实现。每个家族成员是一个树结点,每个成员结点逻辑上作为其父亲结点的孩子结点插入树中(不需要记录母亲结点)。提示:可以采用孩子兄弟链表法存储树,相当于存储树对应的二叉树。
(1) 录入:录入家庭成员信息,家庭成员的基本信息包括:(姓名,性别,出生日期,死亡日期(如果有就输入),学历,职业等)。各家庭成员之间的关系,例如录入李四时,指定李四是张三的孩子,则要把李四作为张三的孩子结点插入树中。
(2) 修改:修改成员信息;
(3) 删除:删除成员信息(删除某成员必须把其子孙全部删除);
(4) 输出:将家谱以较友好的格式输出(显示);
(5) 查询:按基本信息查询成员。
(6)导出:将家谱信息导出到文件中保存(例:若采用孩子兄弟链表法存储树对应的二叉树,可以采用括号表示法或带虚结点的先序遍历序列);
(7)导入:把家谱信息从文件读入程序(例:采用带虚结点的先序遍历序列生成二叉树);
https://pan.baidu.com/s/1SHX3aW20HP_98kAK11GSJg?pwd=0000
建立“我的家谱”问题 家谱:又称族谱,是记载一个家族的世系繁衍及重要人物事迹的书。家谱中记录着父亲、母亲和孩子的姓名。请大家利用二叉树设计一个家谱,要求完成以下功能:
(1)输入和输出家谱记录;
(2)查找某个人所有的孩子;
(3)查找某个人所有的祖先;
(4)为某个人添加配偶和孩子的记录。
实验五 二叉树的应用
(难度系数:☆☆☆☆☆)
[问描述]
假定在当今家庭中,每个人最多可以养育两个孩子,请建立一个从曾祖父开始的家谱,用二叉树的数据结构表示(二叉树的层数可以为 3-4 层)。
[基本要求]
1.实现整个家谱成员的输出。
2.实现家谱中成员的查找与定位,比如该成员位于家谱的第几代。
3.实现家谱中某个成员的双亲结点、子女结点的输出。
家谱管理
中国历史悠久,中华民族有五千年的文明史。从远古的神话传说时代、尧舜禹的禅让、夏商西周、东周春秋战国的百家争鸣、秦汉一统、三国战乱、魏晋南北朝的民族大融合、隋唐五代光辉灿烂的文化直到宋元明清帝制结束。五千年的历史留给我们的是无尽的财富,四大发明,随处可见的文化遗产,代代相传的优秀的民族精神和思想,象形文字的汉字等等。
任选中国某一朝代或者历史上有影响力的名人,查阅资料,感受中国历史文化的魅力,尽可能全面的搜集其家族成员,设计和实现家谱管理系统,至少具有以下功能中的(1)、(2) (3)任选一项、(4)(5)任选一项:
(1)录入家谱数据
(2)查询指定家族成员的所有祖先信息
(3)查询指定家族成员的所有子孙信息
(4)插入指定家族成员。
(5)删除指定家族成员
小组项目二
实验题目:家谱管理系统
实验目的:
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分钟左右的视频,对项目进行介绍,需对项目实现功能进行演示,同时上传到学习通的小组作业中。
题目8:家谱管理系统 (1~3人)
[问题描述]
实现具有下列功能的家谱管理系统
1).输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。
2).实现数据的存盘和读盘。
3).显示家谱。
4).显示第 n 代所有人的信息。
5).按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)
6).按照出生日期查询成员名单。
7).输入两人姓名,确定其关系。
8).某成员添加孩子。
9).删除某成员(若其还有后代,则一并删除)。
10).修改某成员信息。
11).按出生日期对家谱中所有人排序。
[基本要求]
建立至少 30 个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。[界面要求]:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
[存储结构]:
学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。
[测试数据]:
要求使用 1、全部合法数据; 2、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
https://pan.baidu.com/s/1SHX3aW20HP_98kAK11GSJg?pwd=0000
题目3:家谱管理系统(10 人左右,每两人一组)
内容:
设计一个家谱管理系统,为家族成员提供各种信息服务。建立至少20个成员信息数据以直观的方式显示结果。
基本要求:
1.输入家谱中各成员信息,成员的信息中包括的内容有:姓名、出生日期、婚否、地址、健在否等,也可以附加其他信息。
2.实现成员数据的保存和读取。
3.以树形方式显示家谱信息。
4.显示第n代所有人的信息
5.按照姓名查询,输出成员信息(包括本人、双亲和孩子信息)
6.按照出生日期查询家族成员名单。
7.输入两人姓名,确定其关系。
8.修改某位家族成员信息。
9.按出生日期对家族中所有人排序:
要求:
(1)程序要添加适当的注释,程序的书写要采用缩进格式。
(2)程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。
(3)程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
(4)根据课程设计报告模板详细书写课程设计报告报告。
(5)上传源程序和课程设计报告到学习通。
注意:课设的内容可以根据需要拓展。
家族族谱管理
通过训练,强化学生对树结构、二叉树结构的表示及操作算法的掌握和灵活运用
3.具体要求:
要求设计实现具有下列功能的家谱管理系统:
(1) 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含姓名、出生日期、婚否、地址等;
(2) 实现数据的存盘和读盘;
(3) 以图形方式显示家谱;
(4) 显示第n 代所有人的信息;
(5) 按照姓名查询,输出成员信息 (包括其本人、父亲、孩子的信息);
(6) 按照出生日期查询成员名单;
(7) 输入两人姓名,确定其关系;
(8) 某成员添加孩子;
(9) 删除某成员 (若其还有后代,则一并删除);
(10) 修改某成员信息。