欢迎来到天天文库
浏览记录
ID:11280628
大小:631.00 KB
页数:28页
时间:2018-07-11
《数据结构课程设计---家谱系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、项目名称:家谱系统的设计与实现学生姓名:学号:班级: 指导教师:2011年12月23日目录1系统需求分析11.1问题分析11.2任务意义12设数据结构设计及用法说明23详细设计和编码33.1初始化33.2功能选择43.3信息输入73.4信息输出73.5信息存盘83.6信息清盘93.7信息查询104实验结果134.1菜单函数功能测试134.2输入功能函数测试134.3输出功能函数测试134.4清盘功能函数测试134.5存盘功能函数测试144.6查询功能函数测试15致谢17参考文献18附录:源代码191系统需求分析1.1问题分析从课程设计的题目要求可以知道,我需要设计一个对数据输入,输出,储存,查
2、找的多功能软件,我选择用二叉树来保存家族的基本信息,包括姓名及它们的关系,但是由于家族信息很巨大而且关系很复杂所以采用二叉树来储存它们的信息及输出它们的关系。并且具有保存文件的功能,以便下次直接使用先前存入的信息。1.2任务意义家谱的功能是查询家族每个人的信息,并且输出它们的信息,还要具有查询输出功能。这样复习了一下查询。插入。删除函数的应用。并复习了上学期c语言的文件储存及调用功能,子函数和递归调用功能,熟练运用这些函数。2系统数据结构设计及用法说明采用文件保存信息,并且从文件中输出原先保存的信息,用结构体fnode来储存家族的信息,采用递归的方法从fam中创建一个空二叉树,然后初始化二叉树
3、。采用InputFam函数添加信息,OutputFam函数输出信息,DelAll函数删除家族的全部记录,SaveFile函数保存添加的信息,FindNode函数查找节点。文件1:输入输入父亲、母亲和儿子的姓名0:存盘返回图2数据存储结构图相应的存储结构代码为:typedefstructfnode{charfather[NAMEWIDTH];charwife[NAMEWIDTH];charson[NAMEWIDTH];charbrother[NAMEWIDTH];}FamType;typedefstructtnode{charname[NAMEWIDTH];structtnode*lchild,
4、*rchild;}BTree;3详细设计和编码3.1初始化图3-1为初始化函数的流程图,主要是对二叉树中数据域置空,对二叉树中的数据进行初始化。代码如下:BTree*CreatBTree(char*root,FamTypefam[],intn)//从fam中(含n个记录)递归创建一棵二叉树{inti=0,j;BTree*bt,*p;bt=(BTree*)malloc(sizeof(BTree));//创建父亲结点strcpy(bt->name,root);bt->lchild=bt->rchild=NULL;while(i5、+;if(ilchild=p->rchild=NULL;strcpy(p->name,fam[i].wife);bt->lchild=p;for(j=0;jrchild=CreatBTree(fam[j].son,fam,n);p=p->rchild;}}return(bt);}图3-1初始化函数流程图3.2功能选择图3-2为功能选择模块函数的流程图,主要提供1:文6、件2:家谱两个功能模块让用户选择。输入数字1的时候,出现界面1:输入2:输出9:清盘0:存盘返回。返回后输入数字2,出现界面1:找某人的所有儿子2:找某人所有祖先3:找某人所有兄弟。用户根据提示操作。代码如下:voidmain(){BTree*bt;BTree*p,*father;FamTypefam[MaxSize];intn,sel,sell;charxm[NAMEWIDTH];ReadFile(fam,n);do{cout<<"1.文件2:家谱0:退出请选择:";cin>>sel;switch(sel){case1:do{cout<<"1:输入2:输出9:全清0:存盘返回请选择:";ci7、n>>sell;switch(sell){case9:DelAll(fam,n);break;case1:InputFam(fam,n);break;case2:OutputFile(fam,n);break;case0:SaveFile(fam,n);break;}}while(sell!=0);break;case2:bt=CreatBTree("f1",fam,n);do{cout<<"1:
5、+;if(ilchild=p->rchild=NULL;strcpy(p->name,fam[i].wife);bt->lchild=p;for(j=0;jrchild=CreatBTree(fam[j].son,fam,n);p=p->rchild;}}return(bt);}图3-1初始化函数流程图3.2功能选择图3-2为功能选择模块函数的流程图,主要提供1:文
6、件2:家谱两个功能模块让用户选择。输入数字1的时候,出现界面1:输入2:输出9:清盘0:存盘返回。返回后输入数字2,出现界面1:找某人的所有儿子2:找某人所有祖先3:找某人所有兄弟。用户根据提示操作。代码如下:voidmain(){BTree*bt;BTree*p,*father;FamTypefam[MaxSize];intn,sel,sell;charxm[NAMEWIDTH];ReadFile(fam,n);do{cout<<"1.文件2:家谱0:退出请选择:";cin>>sel;switch(sel){case1:do{cout<<"1:输入2:输出9:全清0:存盘返回请选择:";ci
7、n>>sell;switch(sell){case9:DelAll(fam,n);break;case1:InputFam(fam,n);break;case2:OutputFile(fam,n);break;case0:SaveFile(fam,n);break;}}while(sell!=0);break;case2:bt=CreatBTree("f1",fam,n);do{cout<<"1:
此文档下载收益归作者所有