欢迎来到天天文库
浏览记录
ID:31943809
大小:1.67 MB
页数:24页
时间:2019-01-29
《人类族谱管理系统设计报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、可编辑版软件学院综合训练项目报告书课程名称数据结构项目名称人类家谱管理系统专业班级软件13-3班组别第五组成员张伟竹王雨柔何惠民任课教师孙宁Word完美格式可编辑版目录1.设计时间………………………………………………………………12.设计任务………………………………………………………………13.设计内容………………………………………………………………13.1问题分析…………………………………………………………….13.2程序设计……………………………………………………………33.3测试与分析……………………………………
2、…………………..103.3.1测试………………………………………………………..……103.3.2分析………………………………………………………..……143.4代码………………………………………………………………..144.总结与展望………………………………………………………….215.参考文献…………………………………………………………….22Word完美格式可编辑版1设计时间2014年12月16日——2015年1月6日2设计任务树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的层次关系,人类家谱是树形
3、结构的典型体现,通过此项训练让学生掌握树形结构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历;此项训练要求构造一棵家谱树,并完成任意成员的查找。3设计内容3.1问题分析1.程序所能达到的功能,见功能模块图(图3-1)。(1)输入家族始祖信息,初始化(或创建)一个家族族谱树。(2)输入要添加人信息,插入新的家族成员。(3)输入要查找人姓名,对家族成员进行查找。(4)输入要修改人姓名,修改某一个家族成员信息。2.输入的形式和输出的形式。输入和输出的姓名可以是中文也可以是英文,变量名为char类型,且最多不得多余
4、20字符,对于某一个人所处代数为数字,变量名为int类型,对输入输出的性别,本设计要求是M或F表示,故必须是英文,为char类型的变量。3.存储结构设计思想。本项目设计采用孩子兄弟链表(二叉链表)方式存储信息,包含一个data域和两个指针域,其中data域又为一个结构体类型,存储某一个人的信息,而对于指针域,一个为child域,指向此人的孩子,另一个为brother域,指向此人的兄弟姐妹,形成如下存储结构,见图3-2。4.测试数据。Word完美格式可编辑版首先,创建一个家谱,输入始祖的姓名及性别,然后根据菜单要求输入要
5、选择的步骤,本次测试以三代人的家谱为例,输入三代人的姓名及性别,三代人各查找一次,修改某一代人姓名(或性别)后,查找修改人信息,以验证本程序是否正确,最后退出族谱管理系统。当家谱中成员存在时,显示初始化、添加、修改成功等信息。当家谱中不存在此成员时,系统提示信息有误,要求重新输入所要添加、查找或修改人的信息。图3-1功能模块图图3-2存储结构图Word完美格式可编辑版3.2程序设计1.本程序中用到的所有抽象数据类型的定义及实现。(1)定义一个data存储结构,存放个人信息。typedefstructnode{charn
6、ame[MAX];//姓名charsex;//性别intgeneration;//代}node;(2)此处采用孩子兄弟链表法,定义一个结构体存放各代人信息。typedefstructtreenode{structnodel;//家谱中直系家属structtreenode*brother;//用来指向兄弟structtreenode*child;//用来指向孩子}treenode;(3)定义一个指针变量,为treenode类型,指向各代人信息。treenode*root;//root是指向结构体treenode的指针(4
7、)主要函数列表及说明,见表3-1。表3-1主要函数列表及说明函数名及其类型函数功能参数及其类型参数功能InitTreevoid型,无返回值创建一个家族族谱charb[MAX],cinta数组参数b[MAX]存放姓名;参数c代表性别;参数a代表此人是第几代人Addvoid型,无返回值添加家谱新成员intaTreenode*m,*nTreenode*t参数a接收搜索到的代数;m,n,t为三个treenode类型的指针变量,将搜索到的个人信息赋给m,n,tSearchvoid型,无返回值查找家谱成员信息chard[MAX]t
8、reenode*n数组参数d[MAX]用于存放姓名;n为treenode类型的指针变量,将搜索到的个人信息赋给nChangevoid型,无返回值修改家谱成员信息chara[MAX],ccharr[MAX]treenode*ninti数组参数a[MAX]存放要修改人的姓名;数组参数r[MAX]存放修改后的姓名;c代表修改的性别;n为
此文档下载收益归作者所有