C语言二叉树家谱管理系统

C语言二叉树家谱管理系统

ID:47486648

大小:225.01 KB

页数:22页

时间:2020-01-12

C语言二叉树家谱管理系统_第1页
C语言二叉树家谱管理系统_第2页
C语言二叉树家谱管理系统_第3页
C语言二叉树家谱管理系统_第4页
C语言二叉树家谱管理系统_第5页
资源描述:

《C语言二叉树家谱管理系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、摘要本文设计了一个对数据输入,输出,储存,查找的多功能软件,本文需要保存家族的基本信息,包括姓名及它们的关系,但是由于家族信息很巨大而且关系很复杂所以采用二叉树来表示它们的关系。并且具有保存文件的功能,以便下次直接使用先前存入的信息。家谱的功能是查询家族每个人的信息,并且输出它们的信息,还要具有查询输出功能。本文采用二叉树来存取家族的基本信息,头结点作为父亲节点,他的左孩子为他的妻子,妻子结点的右孩子为他的孩子,依次存储每个家庭的信息。可以查找每个父亲的孩子和每个人的所有祖先。关键词:二叉树家谱结点目录1系统功能概述11.1系

2、统功能1图2成员二叉树功能模块图41.2总体功能模块42系统各功能模块的详细设计42.1功能选择42.2信息输入62.3信息输出72.4信息存盘72.5信息清盘82.6信息查询82.7源程序103设计结果与分析163.1菜单函数功能测试164.2输入功能函数测试163.3输出功能函数测试173.4清盘功能函数测试173.5存盘功能函数测试173.6查询功能函数测试18总结19参考文献201系统功能概述1.1系统功能实现的方法是先定义一个二叉树,该二叉树上的每个结点由三个元素组成:姓名、指向它左孩子的指针、以及指向它右孩子的指针

3、构成。该家谱管理系统将信息用文件的方法进行存储管理,再从文件中将成员信息以递归的方法创建二叉树。该输入成员信息的方法是将父亲结点存上父亲的信息,然后父亲结点的左孩子存上母亲的信息,母亲结点的右孩子存上孩子的信息。(1)定义结构体结构体为表示一个对象的不同属性提供了连贯一致的方法,结构体类型的说明从关键词struct开始,成员可以由各种数据类型混合构成,成员甚至还可以是数组或者其他类型的结构,但是,结构体中不能包含自身定义类型的成员。本文定义了两个结构体,分别是家族成员和二叉树结点的结构体。代码如下:typedefstructf

4、node{charfather[NAMEWIDTH];charwife[NAMEWIDTH];charson[NAMEWIDTH];}FamType;typedefstructtnode{charname[NAMEWIDTH];structtnode*lchild,*rchild;}BTree;(2)二叉树的建立二叉树的结点有三个域,数据域和两个指针域,数据域用来存放数据,两个指针域分别存放指向该结点左右孩子的指针。并且还有个root结点,称二叉树的根节点。代码如下:BTree*CreatBTree(char*root,Fam

5、Typefam[],intn)20{inti=0,j;BTree*bt,*p;bt=(BTree*)malloc(sizeof(BTree));strcpy(bt->name,root);bt->lchild=bt->rchild=NULL;while(ilchild=p->rchild=NULL;strcpy(p->name,fam[i].wife);bt->lch

6、ild=p;for(j=0;jrchild=CreatBTree(fam[j].son,fam,n);p=p->rchild;}}return(bt);}(3)家族成员信息的输入依次输入一个家庭的父亲、母亲和孩子的姓名。并将它们保存在相应的文件里。(4)家族成员信息的输出依次输出每个家庭的父亲、母亲和孩子的姓名。(5)查找某人的儿子20首先输入父亲的姓名,在二叉树中查找是否有此人,如果没有就输出不存在这样的父亲。如果有就先查看它的左孩子是否

7、存在,不存在就输出这个父亲没有妻子,如果存在就查找左孩子的右孩子,没有右孩子就输出这个父亲没有孩子,存在就输出右孩子的姓名,即为查找到的儿子。(6)查找某人的祖先采用后序非递归遍历方法输入从根结点到*s结点的路径,首先输入一个成员的姓名,用一个栈存入查找的路径,当找到时栈中的元素即为它的所有祖先。该家谱管理系统将各个家庭的信息以文件的形式存储,具体步骤如下图:文件输入输入父亲、母亲和儿子的姓名保存图1文件存储功能模块图该家谱管理系统还将各个成员的信息以及成员之间的关系存储在二叉树上,具体存储方式如下图:父亲母亲儿子2儿子120

8、图2成员二叉树功能模块图1.2总体功能模块家谱管理系统家谱的建立家谱的插入家谱的删除家谱的查找家谱的显示图3总体功能模块图2系统各功能模块的详细设计2.1功能选择功能选择模块函数,主要提供1:文件2:家谱两个功能模块让用户选择。输入数字1的时候,出现界面1:输入2:输出9:清

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。