数据结构(二叉树)家谱管理系统.pdf
《数据结构(二叉树)家谱管理系统.pdf》由会员分享,可在线阅读,更多相关《数据结构(二叉树)家谱管理系统.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 数学与计算机学院 课程设计说明书 课 程 名 称:数据结构与算法课程设计 课 程 代 码:题 目:二叉树生成家谱 年级/专业/班:学 生 姓 名:学 号:开 始 时 间:2015 年 12 月 09 日 完 成 时 间:2015 年 12 月 29 日 课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名:年 月 日 目 录(小三黑体,居中)欢迎下载 3 1 需求分析.6 1.1 任务与分析.6 1.2 测试数据.6 2 概要设计.7 2.1 ADT描述.7 2.2 程序模块结构.8 2.3
2、各功能模块.9 3 详细设计.10 3.1 结构体定义.10 3.2 初始化.11 3.3 插入操作.13 3.4 查询操作.15 4 调试分析.18 5 用户使用说明.18 6 测试结果.18 结 论.23 附 录.24 参考文献.25 欢迎下载 4 摘 要 随着计算机科学技术、计算机产业的迅速发展,计算机的应用普及也在以惊人的速度发展,计算机应用已经深入到人类社会的各个领域。计算机的应用早已不限于科学计算,而更多地应用在信息处理方面。计算机可以存储的数据对象不再是纯粹的数值,而扩展到了字符、声音、图像、表格等各种各样的信息。对于信息的处理也不再是单纯的计算,而是一些如信息存储、信息检索等非
3、数值的计算。那么,现实世界的各种数据信息怎样才能够存储到计算机的内存之中,对存入计算机的数据信息怎样进行科学处理,这涉及计算机科学的信息表示和算法设计问题。为解决现实世界中某个复杂问题,总是希望设计一个高效适用的程序。这就需要解决怎样合理地组织数据、建立合适的数据结构,怎样设计适用的算法,以提高程序执行的时间效率和空间效率。“数据结构”就是在此背景下逐步形成、发展起来的。在各种高级语言程序设计的基本训练中,解决某一实际问题的步骤一般是:分析实际问题;确定数学模型;编写程序;反复调试程序直至得到正确结果。所谓数学模型一般指具体的数学公式、方程式等,如牛顿迭代法解方程,各种级数的计算等。这属于数值
4、计算的一类问题。而现实生活中,更多的是非数值计算问题,如手机中的通讯录,人们对它的操作主要是查找、增加、删除或者修改电话记录。再如,人们经常在互联网上查阅各种新闻,或查阅电子地图,人们可以在某城区地图上查找自己所需的街道或店铺,其操作主要是搜索和查询。下面再来分析几个典型实例,它们的主要特点是:不同实例的数据元素之间存在不同的关系;对数据信息的处理主要有插入、删除、排序、检索等。关键词:网络化;计算机;对策;二叉树 欢迎下载 5 引 言 课程设计的目的:通过本项课程设计,培养学生独立思考、综合运用所学有关相应知识的能力,使学生巩固数据结构课程学习的内容,掌握工程软件设计的基本方法,强化上机动手
5、编程能力,闯过理论与实践相结合的难关;为了培养学生综合运用所学知识、独立分析和解决实际问题的能力,培养创意识和创新能力,使学生获得科学研究的基础训练。为后续各门计算机课程的学习和毕业设计打下坚实基础。同时,可以利用这次机会来检验自己的 c/c+/数据结构水平,提高自己的写作水平,锻炼自己的动手能力。而此次课程设计的意义在于:增强自己的动手能力,熟悉和掌握二叉树各种遍历的算法,以及递归在遍历二叉树中的应用,增强自己的调试程序和测试程序的能力。欢迎下载 6 1 需求分析 1.1 任务与分析 1.建立输入文件以存放最刜家谱中各成员的信息。2.成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、
6、健在否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。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
7、-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 欢迎下载 7 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.1 ADT 描述 1.ADT Person 数据对象:D=Pj|Pj=姓名、出生日期、婚
8、否、地址、健在否(如过世,还应有其死亡日 期),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 从内存中读取兄弟、孩子二叉树,并建立家谱类型文件。A
9、DT 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 通过某人查找其双亲、孩子、兄弟。欢迎下载 8 ADT Familytree 2.2 程序模块结构 2.2.1 结构体定义 struct People /定义结构体 Peopl
10、e int num;char name20;char sex;char borndate15;int generation;char matename20;int parent;char infor100;LinkList child;;struct Node /定义结构体 Node int a;struct Node*next;;struct LinkList /定义链表 NodePoint La;;struct Tree /定义树 PeoplePoint Tr;int Length;int TREE_INIT_SIZE;;欢迎下载 9 2.3 各功能模块 void InitTree(Tre
11、e&TR);/在树已定义的情况下,初始化树 TR LinkList InitLinkList(void);/在什么都没有的情况下,初始化一个带头结点的链表并返回链表L void AddLinkList(LinkList p);/对带头结点的链表pl,添加一个节点为m 的节点在表头 void CreatFamilyTree(Tree&TR);/在什么都没有的情况下,创建一个家谱 TR。并返回 TR void PrintPeople(PeoplePoint p);/已知某节点的指针 p,输出 people p 的相关信息 void PrintLinkList(LinkList p);/已知链表 p
12、,输出链表 p 中的信息 int CompareNum(PeoplePoint p,int num);/已知某节点的指针 p 和一个编号num,比较 p 的 num 和 num,如果相等返回 1,否则返回 0 int CompareName(PeoplePoint p,char a);/已知某节点的指针 p 和一个姓名a,比较 p 的 name,如果两者相等返回 1,否则返回 0 void TraveTreePrint(Tree TR);/已知树 TR,按规定输出节点信息,根据编号、姓名、孩子输出 void AddPeople(Tree&TR);/已知树 TR,当有人出生时,添加一个节点 新建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉 家谱 管理 系统
限制150内