数据结构二叉树家谱管理系统
数学与计算机学院 课程设计说明书 课 程 名 称:数据结构与算法课程设计 课 程 代 码: 题目:二叉树生成家谱 年级/专业/班: 学 生 姓 名: 学号: 开 始 时 间: 2015 2015年 12 12 月 09 09日 完 成 时 间: 2015 2015年 12 12 月 29 29日 课程设计成绩: 学习态度及平技术水平与实 时成绩(30)际能力(20) 创新(5) 说明书(计算书、图纸、总 分 分析报告)撰写质量(45) (100) 指导教师签名:年月日 目录 (小三黑体,居中) 二叉树生成家谱 1 1 需求分析需求分析 6 6 1。1 任务与分析6 1。2 测试数据6 2 2 概要设计概要设计 7 7 2.1 ADT 描述7 2。2 程序模块结构8 2。3各功能模块.9 3 3 详细设计详细设计 1010 3。1 结构体定义10 3。2 初始化.11 3.3 插入操作.13 3.4 查询操作15 4 4 调试分析调试分析 1818 5 5 用户使用说明用户使用说明 1818 6 6 测试结果测试结果 1818 结结论论 2323 附附录录 2424 参考文献参考文献 2525 3 3 / 2424 二叉树生成家谱 摘摘要要 随着计算机科学技术、计算机产业的迅速发展 ,计算机的应用普及 也在以惊人的速度发展,计算机应用已经深入到人类社会的各个领 域。计算机的应用早已不限于科学计算,而更多地应用在信息处理方 面。 计算机可以存储的数据对象不再是纯粹的数值, 而扩展到了字符、 声音、图像、表格等各种各样的信息。对于信息的处理也不再是单纯 的计算,而是一些如信息存储、信息检索等非数值的计算。那么,现 实世界的各种数据信息怎样才能够存储到计算机的内存之中 ,对存入 计算机的数据信息怎样进行科学处理,这涉及计算机科学的信息表示 和算法设计问题。为解决现实世界中某个复杂问题 ,总是希望设计一 个高效适用的程序.这就需要解决怎样合理地组织数据、建立合适的 数据结构,怎样设计适用的算法,以提高程序执行的时间效率和空间 效率.“数据结构“就是在此背景下逐步形成、发展起来的。 在各种高级语言程序设计的基本训练中, 解决某一实际问题的步骤 一般是:分析实际问题;确定数学模型;编写程序;反复调试程序直 至得到正确结果.所谓数学模型一般指具体的数学公式、方程式等, 如牛顿迭代法解方程,各种级数的计算等。这属于数值计算的一类问 题。而现实生活中,更多的是非数值计算问题,如手机中的通讯录, 人们对它的操作主要是查找、增加、删除或者修改电话记录。再如 , 人们经常在互联网上查阅各种新闻,或查阅电子地图 ,人们可以在某 城区地图上查找自己所需的街道或店铺,其操作主要是搜索和查询。 下面再来分析几个典型实例,它们的主要特点是 :不同实例的数据元 素之间存在不同的关系; 对数据信息的处理主要有插入、删除、排序、 检索等。 关键词关键词: :网络化;计算机;对策;二叉树 4 4 / 2424 二叉树生成家谱 引言 课程设计的目的:通过本项课程设计,培养学生独立思考、综合运用所学有 关相应知识的能力,使学生巩固《数据结构》课程学习的内容,掌握工程软件设 计的基本方法,强化上机动手编程能力, 闯过理论与实践相结合的难关;为了培 养学生综合运用所学知识、独立分析和解决实际问题的能力,培养创意识和创新 能力,使学生获得科学研究的基础训练。为后续各门计算机课程的学习和毕业设 计打下坚实基础。同时,可以利用这次机会来检验自己的c/c++/数据结构水平, 提高自己的写作水平,锻炼自己的动手能力. 而此次课程设计的意义在于:增强自己的动手能力,熟悉和掌握二叉树各种遍历 的算法,以及递归在遍历二叉树中的应用,增强自己的调试程序和测试程序的能 力. 5 5 / 2424 二叉树生成家谱 1 1 需求分析需求分析 1 1。。1 1 任务与分析任务与分析 1。建立输入文件以存放最刜家谱中各成员的信息. 2.成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在 否、死亡日期(若其已死亡) 也可附加其它信息、但不是必需的。 3。能对修改后的家谱存盘以备以后使用。 4。能从文件中读出已有的家谱,形成树状关系。 5.家谱建立好之后,以图形方式显示出来. 6。显示第 n 代所有人的信息. 7.按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息) 。 8。按照出生日期查询成员名单。 9.输入两人姓名,确定其关系. 10.给某人添加孩子。 11.删除某人(若其还有后代,则一并删除). 12.修改某人信息。 13。用括号法输出家谱成员信息 1.21.2 测试数据测试数据 1徐朝嬴 m 1938-1—20 1彭代芳 0此人相当的 热心 0 2 3 4 5 10000 2徐廷文 m 1964-8-3 2李太群 1此人相当有 责任心 0 6 7 10000 3徐素华 w 1966—4-6 2李奉光 1此人很好 0 10000 4徐军华 m 1969-7-8 2曲舞 1此人很有正 义感 0 10000 6 6 / 2424 二叉树生成家谱 5徐廷国 m 1972—9-2 2木玛 1此人心的很 善良 0 10000 6徐光勇 m 1989-1—27 3 Nomarry 2此人很牛逼 0 10000 7徐光超 m 1992—9—5 3 Nomarry 2此人亦很 牛逼 0 10000 2 2 概要设计概要设计 2 2。。1 ADT1 ADT 描述描述 1 1。。ADT Person{ 数据对象:D={Pj | Pj={姓名、出生日期、婚否、地址、健在否(如过 世,还应有其死亡日 期) },j=0,1,2,…… n,其中 n=0} 数据关系:R={} 基本操作: 无。 }ADT Person 2 2。。ADT FamilytreeFile{ 数据对象:D={Aj | Aj 属于 Person,j=1,2,3,……,n 其中 n〉=1} 数据关系: D 中每个对象用换行符隔开, R= {| Aj 属于 D, j=1,2, 3, ……, n 其中 n=1,String 属于字符串类型,为 Aj 父亲姓名(若String=-1,Aj 无 父亲,若 String=Aj 的姓名,表示家谱文件结束) } 基本操作: 1. 打开家谱类型文件,并建立兄弟、孩子二叉树. 2. 从内存 中读取兄弟、孩子二叉树,并建立家谱类型文件。 } ADT FamilytreeFlie 3 3。。ADT Familytree{ 数据对象:D={Aj | Aj 属于 Person,j=1,2,3,……,n 其中 n〉=0} 数据关系:V={| Aj—1,Aj 属于 D,j=2,3,……, n 其中 n〉=2,且 Aj—1 与 Aj 为祖先与 后 代关系(parent) 、后代与祖先关系(child) 、兄弟之间关 系(sibling) } 基本操作: 1.显示某人信息. 2