1、 项目名称:项目名称: 家谱系统的设计与实现家谱系统的设计与实现 学生姓名:学生姓名: 学学 号:号: 班班 级:级: 指导教师:指导教师: 2011 年年 12 月月 23 日日 目目 录录 1 系统需求分析 1 1.1 问题分析 1 1.2 任务意义 1 2 设数据结构设计及用法说明 . 2 3 详细设计和编码 . 3 3.1 初始化 3 3.2 功能选择 4 3.3 信息输入 7 3.4 信息输出 7 3.5 信息存盘 8 3.6 信息清盘 9 3.7 信息查询 10 4 实验结果 13 4.1 菜单函数功能测试 13 4.2 输入功能函数测试 13 4.3 输出功能函数测试 13 4.
2、4 清盘功能函数测试 13 4.5 存盘功能函数测试 14 4.6 查询功能函数测试 15 致谢 17 参考文献 18 附录:源代码 19 武汉长江工商学院- 1 1 系统需求分析系统需求分析 1.1 1.1 问题分析问题分析 从课程设计的题目要求可以知道,我需要设计一个对数据输入,输出,储存,查找的多 功能软件,我选择用二叉树来保存家族的基本信息,包括姓名及它们的关系,但是由于家族 信息很巨大而且关系很复杂所以采用二叉树来储存它们的信息及输出它们的关系。 并且具有 保存文件的功能,以便下次直接使用先前存入的信息。 1.2 1.2 任务意义任务意义 家谱的功能是查询家族每个人的信息,并且输出它
3、们的信息,还要具有查询输出功能。 这样复习了一下查询。插入。删除函数的应用。并复习了上学期 c 语言的文件储存及调用功 能,子函数和递归调用功能,熟练运用这些函数。 2 2 系统系统数据结构设计及用法说明数据结构设计及用法说明 采用文件保存信息, 并且从文件中输出原先保存的信息, 用结构体 fnode 来储存家族的 信息,采用递归的方法从 fam 中创建一个空二叉树,然后初始化二叉树。采用 InputFam 函 数添加信息,OutputFam 函数输出信息,DelAll 函数删除家族的全部记录,SaveFile 函数 保存添加的信息,FindNode 函数查找节点。 图 2 数据存储结构图 相
4、应的存储结构代码为: typedef struct fnode char fatherNAMEWIDTH; char wifeNAMEWIDTH; char sonNAMEWIDTH; char brotherNAMEWIDTH; FamType; typedef struct tnode 文件 1:输入 输入父亲、母亲和儿子的姓名 0:存盘返回 char nameNAMEWIDTH; struct tnode *lchild,*rchild; BTree; 3 3 详细设计和编码详细设计和编码 3.13.1 初始化初始化 图 3-1 为初始化函数的流程图, 主要是对二叉树中数据域置空, 对二叉树中的数据进行 初始化。 代码如下: BTree *CreatBTree(char *root,FamType fam,int n) /从 fam 中(含 n 个记录)递归 创建一棵二叉树 int i=0,j; BTree *bt,*p; bt=(BTree *)malloc(sizeof(BTree); /创建父亲结点 strcpy(bt-name,root); bt-lchild=bt-rchild=NULL; while(irchild=NULL; strcpy(p-name,fami.wife); bt-lchild