数据结构(二叉树)家谱管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学与计算机学院

课程设计说明书

课程名称: 数据结构与算法课程设计

课程代码:

题目: 二叉树生成家谱

年级/专业/班:

学生姓名:

学号:

开始时间: 2015 年 12 月 09 日

完成时间: 2015 年 12 月 29 日

课程设计成绩:

指导教师签名:年月日目录(小三黑体,居中)

1 需求分析 (6)

1.1任务与分析 (6)

1.2测试数据 (6)

2 概要设计 (7)

2.1 ADT描述 (7)

2.2程序模块结构 (8)

2.3各功能模块 (9)

3 详细设计 (10)

3.1结构体定义 (10)

3.2 初始化 (11)

3.3 插入操作 (13)

3.4 查询操作 (15)

4 调试分析 (18)

5 用户使用说明 (18)

6 测试结果 (18)

结论 (23)

附录 (24)

参考文献 (25)

随着计算机科学技术、计算机产业的迅速发展,计算机的应用普及也在以惊人的速度发展,计算机应用已经深入到人类社会的各个领域。

计算机的应用早已不限于科学计算,而更多地应用在信息处理方面。

计算机可以存储的数据对象不再是纯粹的数值,而扩展到了字符、声

音、图像、表格等各种各样的信息。对于信息的处理也不再是单纯的

计算,而是一些如信息存储、信息检索等非数值的计算。那么,现实

世界的各种数据信息怎样才能够存储到计算机的内存之中,对存入计

算机的数据信息怎样进行科学处理,这涉及计算机科学的信息表示和

算法设计问题。为解决现实世界中某个复杂问题,总是希望设计一个

高效适用的程序。这就需要解决怎样合理地组织数据、建立合适的数

据结构,怎样设计适用的算法,以提高程序执行的时间效率和空间效

率。“数据结构”就是在此背景下逐步形成、发展起来的。

在各种高级语言程序设计的基本训练中,解决某一实际问题的步骤一般是:分析实际问题;确定数学模型;编写程序;反复调试程序直

至得到正确结果。所谓数学模型一般指具体的数学公式、方程式等,如牛顿迭代法解方程,各种级数的计算等。这属于数值计算的一类问

题。而现实生活中,更多的是非数值计算问题,如手机中的通讯录,人们对它的操作主要是查找、增加、删除或者修改电话记录。再如,人们经常在互联网上查阅各种新闻,或查阅电子地图,人们可以在某

城区地图上查找自己所需的街道或店铺,其操作主要是搜索和查询。

下面再来分析几个典型实例,它们的主要特点是:不同实例的数据元

素之间存在不同的关系;对数据信息的处理主要有插入、删除、排序、

检索等。

关键词:网络化;计算机;对策;二叉树

课程设计的目的:通过本项课程设计,培养学生独立思考、综合运用所学有关相应知识的能力,使学生巩固《数据结构》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关;为了培养学生综合运用所学知识、独立分析和解决实际问题的能力,培养创意识和创新能力,使学生获得科学研究的基础训练。为后续各门计算机课程的学习和毕业设计打下坚实基础。同时,可以利用这次机会来检验自己的c/c++/数据结构水平,提高自己的写作水平,锻炼自己的动手能力。

而此次课程设计的意义在于:增强自己的动手能力,熟悉和掌握二叉树各种遍历的算法,以及递归在遍历二叉树中的应用,增强自己的调试程序和测试程序的能力。

1 需求分析

1.1任务与分析

1.建立输入文件以存放最刜家谱中各成员的信息。

2.成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在

否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。

3.能对修改后的家谱存盘以备以后使用。

4.能从文件中读出已有的家谱,形成树状关系。

5.家谱建立好之后,以图形方式显示出来。

6.显示第n 代所有人的信息。

7.按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。

8.按照出生日期查询成员名单。

9.输入两人姓名,确定其关系。

10.给某人添加孩子。

11.删除某人(若其还有后代,则一并删除)。

12.修改某人信息。

13.用括号法输出家谱成员信息

1.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

5 徐廷国 m 1972-9-2 2 木玛 1 此人心的很

善良 0 10000

6 徐光勇 m 1989-1-2

7 3 Nomarry 2 此人很牛逼

0 10000

7 徐光超 m 1992-9-5 3 Nomarry 2 此人亦很牛

逼 0 10000

2 概要设计

2.1 ADT描述

1.ADT Person{

数据对象:D={Pj | Pj={姓名、出生日期、婚否、地址、健在否(如过世,还应有其死亡日期)},j=0,1,2,…… n,其中n>=0}

数据关系:R={} 基本操作:无。

}ADT Person

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.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.修改某人信息。 3.增加某人孩子。

4.删除某人。 5.通过某人查找其双亲、孩子、兄弟。

相关文档
最新文档