数据结构家谱管理系统(二叉链表)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《项目实训二》
项目名称__ 家谱管理系统__ 姓名__ ___________ 班级 __ _______________ 学号__ ________________ 指导教师__ __________ __
2018.1
模块划分:
1、统计模块
(1)统计家族总人数、健在人数、几代人
(2)主要函数:
int Generation(Node *root); //这个家族共有几代人
int NumberOfPeople( ); //家族的总人数
int LifeNum( ); //健在人数
(3)实现方法:静态成员变量
(4)实现结果:
2、更新模块
(1)创建家谱、增加成员、删除成员、成员改名
(2)主要函数:
Node* Creat( ); //构造函数调用
void AddNewPeople(Node *root,string FatherName,string
NAme); //增加新的家族成员
int DeletePeople(Node *root,string FatherName,string
Deletepeople); //删除家族成员
int SetNewName(Node *root,string NAme,string NewName); //更改
(3)实现方法:创建家谱和成员改名主要通过递归调用;增加成员和删除成员主要通过栈的非递归调用。
(4)实现结果:
3、查询模块
(1)查询成员详细信息、查询成员的孩子以及孩子的详细信息
(2)主要函数:
int Message(Node *root,string Name); //显示该成员的基本信
息
int FindChild(Node *root,string NAme); //显示孩子信息(3)实现方法:通过递归调用,找到成员,输出相应的信息
(4)实现结果:
4、显示模块
(1)前序、中序、后序遍历家谱
(2)主要函数:
void PreOrder(Node *root); //前序递归遍历输出家谱
void InOrder(Node *root); //中序递归遍历输出家谱
void PostOrder(Node *root); //后序递归遍历输出家谱(3)实现方法:递归遍历
(4)实现结果:
5、文件模块
(1)保存到文件、从文件读取
(2)主要函数:
void SaveToFile(Node *root); //保存到文件
void FileToFamilyTree( Node *root) ; //从文件中读取(3)实现方法:文件流
(4)实现结果:
实验结果及分析1、创建家谱
2、保存到文件
3、读取文件
4、增加成员
5、基本信息
6、查询成员信息
7、成员改名
8、遍历家谱
9、查询孩子信息
10、删除成员