资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
湖南科技大学数据结构课程设计(报告)第 1 页 1数 据 结 构 课程设计报告家谱树管理系统学生姓名: 张 朝 政 学 号: 0807020218 年级专业: 08 级信息与计算科学班 级: 信计二班 指导老师: 李英龙老师 学 院:数学与计算科学学院 同组成员:夏 鑫 杨贵生 左 斌起止时间:2010.6.212010.6.27目 录湖南科技大学数据结构课程设计(报告)第 2 页 21 前言 .32 课程设计的相关说明 .32.1 课程设计的要求 .32.2 课程设计的需求分析 .32.3 课程设计的实验环境 .43 家谱树管理系统的概要分析 .44 家谱树管理系统的详细分析 .84.1 函数调用的关系图 .84.2 系统运行主界面 .94.3 各主要功能的函数实现 .105 系统各功能的调试分析(附有运行截图) .195.1 文件操作模块 .195.11 新建家谱 .205.12 打开家谱 .205.13 保存家谱 .205.2 家谱操作模块 .215.21 删除某人 .215.22 增加孩子 .225.23 两人关系与某代信息 .225.24 姓名查找 .225.25 个人修改 .235.3 调试小结 .236 心得体会 .246.1.个人感想及不足之处 .247 参考文献 .25附录 .26家谱树管理系统湖南科技大学数据结构课程设计(报告)第 3 页 3张 朝 政(湖南科技大学 信息与计算科学专业 0807020218)前 言本次课程设计任务是通过编写一个简单的家谱树管理系统 ,进一步学习用 MFC 开发简单的管理系统。采用 Visual C+ 6.0 软件为主要开发工具,更进一步了解系统开发的需求分析、层次设计、数据结构分析、编码测试、模块组装与整体调试的全过程,加深对树状数据结构的理解与 MFC 环境的使用,以便逐步熟悉大型程序设计的方法,养成良好的编程习惯。本系统主要完成对家谱的相关操作和家谱人员信息的管理,包括打开家谱、新建家谱、保存家谱和家谱人员的姓名查找、生日查找、某代信息查找、增加孩子、两人关系、信息修改、信息删除等。系统的核心是利用对话框的连接和文本处理来存储和修改家谱管理系统的信息联系,其中的每一个动作都可能影响到其它的功能。2 课程设计的相关说明 2.1 课程设计的要求题目:家谱树管理系统1).建立至少 30 个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。2).对界面的要求是:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。2.2 课程设计的需求分析 1). 输入文件以存放最初家谱中各成员的信息。 成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)湖南科技大学数据结构课程设计(报告)第 4 页 42). 实现数据的存盘和读盘。3). 以图形方式显示家谱。(利用树形控件)4). 显示第 n 代所有人的信息。5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息) 。6). 按照出生日期查询成员名单。7). 输入两人姓名,确定其关系。8). 某成员添加孩子。9). 删除某成员(若其还有后代,则一并删除) 。10).修改某成员信息。11).按出生日期对家谱中所有人排序。2.3 课程设计的实验环境开发工具: Visual C+运行环境:Windows 9x、Windows NT/2000、Windows XP3 家谱树管理系统的概要分析1、抽象数据类型兄弟孩子树的定义如下:ADT CSNode数据对象: person 是兄弟孩子树中的每一个节点,T 是整个树的统一体数据关系: R1=person ,person |person ,person 表示 person1ii1ii和 person 之间有血缘关系1ii基本操作:CSNode *CreatTree(fstream &outfile);初始条件:已经打开了文本文件 PersonInfo.txt操作结果:创建一个兄弟孩子树 T,并把从文件中的数据送到树中,关闭文件。湖南科技大学数据结构课程设计(报告)第 5 页 5void CreatParent_step(CSNode *parent);初始条件:兄弟孩子树 T 已经存在操作结果:对所有的孩子节点添加指向父亲的指针void InOrderTraverse(CSNode *T);初始条件:兄弟孩子树 T 已经存在操作结果:对 T 进行中序遍历。bool Today_Brithday(CSNode *T);初始条件:兄弟孩子树 T 已经存在操作结果:根据计算机系统的时间判断几天是否有人过生日,并显示他们的名字。bool (int n,CSNode *T,LinkQueue &Q);初始条件:兄弟孩子树 T 已经存在,队列 Q 也已经存在操作结果:用队列 Q 返回第 N 代人的所有信息void Link_Info(LinkQueue Q);初始条件:队列 Q 中是第 N 代人的所有信息操作结果:显示队列中所有人的信息。CSNode *DetectMember_Name(CSNode *T,char name);初始条件:兄弟孩子树 T 已经存在操作结果:根据输入的姓名进行查找,如找到则返回该节点的指针。CSNode *DetectMember_BornDate(CSNode *T,Date date);初始条件:兄弟孩子树 T 已经存在操作结果:根据输入的出生日期进行查找,如找到则返回该节点的指针。void OutputOneInfo(CSNode *T);初始条件:采集到一个节点 T操作结果:显示这一个节点的所有信息。void Output_Name_Relation(CSNode *T);初始条件:采集到一个节点 T湖南科技大学数据结构课程设计(报告)第 6 页 6操作结果:显示这一个节点的父亲和孩子的所有信息。void Delete_Member(CSNode *T,char name);初始条件:兄弟孩子树 T 已经存在操作结果:根据输入的姓名进行查找,如找到则删除该节点和他所有的孩子节点。void Edit_Member_Info(CSNode *T,char name);初始条件:兄弟孩子树 T 已经存在操作结果:根据输入的姓名进行查找,如找到则根据用户要求修改相应的信息。bool Add_New_Child(CSNode *T);初始条件:兄弟孩子树 T 已经存在操作结果:根据输入的姓名进行查找,如找到则在他的孩子树中添加新的孩子节点。void InOrderInfile(CSNode *T,fstream &infile);初始条件:兄弟孩子树 T 已经存在,且已经打开了文本文 PersonInfo.txt操作结果:把现在的数据读入文件中,关闭文件。bool Generation(CSNode *T,CSNode *child);初始条件:兄弟孩子树 T 已经存在操作结果:判断 child 是否是 T 的后代,如果是返回 true,否则返回 false。Void Output_Two_Member_Realtionship(CSNode*T,char name1,char name2);初始条件:兄弟孩子树 T 已经存在操作结果:根据已经输入的两个姓名进行查找和判断,确定他们的关系。void InOrderIn(CSNode *T,CSNode S,int &num);初始条件:兄弟孩子树 T 已经存在操作结果:对 T 进行中序遍历,并且把每一个节点信息送到数组 S 中,num 为 S中成员个数。void LineChars(CSNode S,int num);初始条件:节点数组 S 已经存在湖南科技大学数据结构课程设计(报告)第 7 页 7操作结果:对数组的节点信息按照出生日期进行排序,采用的是基数排序ADT CSNode2、抽象数据类型队列的定义如下:ADT LinkQueue数据对象:D=ei| i=1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号