数据结构家谱管理系统

上传人:hs****ma 文档编号:476919976 上传时间:2024-01-25 格式:DOCX 页数:28 大小:374.26KB
返回 下载 相关 举报
数据结构家谱管理系统_第1页
第1页 / 共28页
数据结构家谱管理系统_第2页
第2页 / 共28页
数据结构家谱管理系统_第3页
第3页 / 共28页
数据结构家谱管理系统_第4页
第4页 / 共28页
数据结构家谱管理系统_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《数据结构家谱管理系统》由会员分享,可在线阅读,更多相关《数据结构家谱管理系统(28页珍藏版)》请在金锄头文库上搜索。

1、数学与计算机学院课程设计说明书课程名称:数据结构与算法课程设计课程代码:题 目:二叉树生成家谱 年级/专业/班:学生姓名:学 号:开始时间:2015年12月09日完成时间:2015年12月29日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、 分析报告)撰写质量(45)总分(100)指导教师签名:年 月 日目录(小三黑体,居中)1需求分析61.1任务与分析61.2测试数据62概要设计72.1 ADT 描述72.2程序模块结构82.3各功能模块93详细设计103.1结构体定义103.2初始化113.3插入操作133.4查询操作154调试分析185

2、用户使用说明186测试结果18结论23附录24参考文献25摘要随着计算机科学技术、计算机产业的迅速发展,计算机的应用普及 也在以惊人的速度发展,计算机应用已经深入到人类社会的各个领域。 计算机的应用早已不限于科学计算,而更多地应用在信息处理方面。 计算机可以存储的数据对象不再是纯粹的数值,而扩展到了字符、声 音、图像、表格等各种各样的信息。对于信息的处理也不再是单纯的 计算,而是一些如信息存储、信息检索等非数值的计算。那么,现实 世界的各种数据信息怎样才能够存储到计算机的内存之中,对存入计 算机的数据信息怎样进行科学处理,这涉及计算机科学的信息表示和 算法设计问题。为解决现实世界中某个复杂问题

3、,总是希望设计一个 高效适用的程序。这就需要解决怎样合理地组织数据、建立合适的数 据结构,怎样设计适用的算法,以提高程序执行的时间效率和空间效 率。“数据结构”就是在此背景下逐步形成、发展起来的。在各种高级语言程序设计的基本训练中,解决某一实际问题的步骤 一般是:分析实际问题;确定数学模型;编写程序;反复调试程序直 至得到正确结果。所谓数学模型一般指具体的数学公式、方程式等, 如牛顿迭代法解方程,各种级数的计算等。这属于数值计算的一类问 题。而现实生活中,更多的是非数值计算问题,如手机中的通讯录, 人们对它的操作主要是查找、增加、删除或者修改电话记录。再如, 人们经常在互联网上查阅各种新闻,或

4、查阅电子地图,人们可以在某 城区地图上查找自己所需的街道或店铺,其操作主要是搜索和查询。 下面再来分析几个典型实例,它们的主要特点是:不同实例的数据元 素之间存在不同的关系;对数据信息的处理主要有插入、删除、排序、 检索等。关键词:网络化;计算机;对策;二叉树引言课程设计的目的:通过本项课程设计,培养学生独立思考、综合运用所学有 关相应知识的能力,使学生巩固数据结构课程学习的内容,掌握工程软件设 计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关;为了培 养学生综合运用所学知识、独立分析和解决实际问题的能力,培养创意识和创新 能力,使学生获得科学研究的基础训练。为后续各门计算机课程

5、的学习和毕业设 计打下坚实基础。同时,可以利用这次机会来检验自己的c/c+/数据结构水平, 提高自己的写作水平,锻炼自己的动手能力。而此次课程设计的意义在于:增强自己的动手能力,熟悉和掌握二叉树各种遍历 的算法,以及递归在遍历二叉树中的应用,增强自己的调试程序和测试程序的能 力。1需求分析1.1任务与分析1. 建立输入文件以存放最制家谱中各成员的信息。2. 成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在 否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。3. 能对修改后的家谱存盘以备以后使用。4. 能从文件中读出已有的家谱,形成树状关系。5. 家谱建立好之后,以图形方式

6、显示出来。6. 显示第n代所有人的信息。7. 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息。8. 按照出生日期查询成员名单。9. 输入两人姓名,确定其关系。10. 给某人添加孩子。11. 删除某人(若其还有后代,则一并删除)。12. 修改某人信息。13. 用括号法输出家谱成员信息1.2测试数据1徐朝嬴m1938-1-201彭代芳0此人相当的热心0234 5100002徐廷文m1964-8-32李太群1此人相当有责任心067100003徐素华w1966-4-62李奉光1此人很好0100004徐军华m1969-7-82曲舞1此人很有正义感0100005徐廷国m1972-9-22木玛1此

7、人心的很善良0100006徐光勇m1989-1-273Nomarry2此人很牛逼0100007徐光超m1992-9-53Nomarry2此人亦很牛逼0100002概要设计2.1 ADT描述1.ADT Person(数据对象:D=Pj | Pj=姓名、出生日期、婚否、地址、健在否(如过世, 还应有其死亡日期),j=0,1,2,n,其中n=0数据关系:R=基本操作:无。ADT Person2ADT FamilytreeFile(数据对象:D=(Aj | Aj 属于 Person,j=1,2,3,,n 其中 n=1数据关系:D中每个对象用换行符隔开,R= | Aj属于D,j=1,2, 3,n 其中n

8、=1,String属于字符串类型,为Aj父亲姓名(若String=-1,Aj无父亲, 若String二Aj的姓名,表示家谱文件结束)基本操作:1.打开家谱类型文件,并建立兄弟、孩子二叉树。2.从内 存中读取兄弟、孩子二叉树,并建立家谱类型文件。ADT FamilytreeFlie3gADT 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.显

9、示某人信息。2.修改某人信息。3.增加某人孩子。4.删除某人。5.通过某人查找其双亲、孩子、兄弟。7 / 24ADT Familytree2.2程序模块结构2.2.1结构体定义struct People定义结构体 People(int num;char name20;char sex;char borndate15;int generation;char matename20;int parent;char infor100;LinkList child;;struct Node(int a;struct Node * next;;struct LinkList(NodePoint La;;/

10、定义结构体Node定义链表struct Tree(PeoplePoint Tr;int Length;int TREE_INIT_SIZE;;/定义树2.3各功能模块void InitTree(Tree &TR);/在树己定义的情况下,初始化树TRLinkList InitLinkList(void); 在什么都没有的情况下,初始化一个带头结 点的链表并返回链表Lvoid AddLinkList(LinkList p); 对带头结点的链表pl,添加一个节点为m的 节点在表头void CreatFamilyTree(Tree &TR); 在什么都没有的情况下,创建一个家谱TR。 并返回TRvoi

11、d PrintPeople(PeoplePoint p); / 已知某节点的指针 p,输出 people p 的 相关信息void PrintLinkList(LinkList p); /已知链表p,输出链表p中的信息int CompareNum(PeoplePoint p,int num); /已知某节点的指针 p 和一个编号num,比较p的num和num,如果相等返回1,否则返回0int CompareName(PeoplePoint p,char a);/已知某节点的指针 p 和一个姓名 a,比较p的name,如果两者相等返回1,否则返回0void TraveTreePrint(Tree

12、 TR); 已知树TR,按规定输出节点信息,根据编号、 姓名、孩子输出void AddPeople(Tree &TR); /已知树TR,当有人出生时,添加一个节点void MarryChange(Tree TR,char name20); /已知树 TR 和一个人的姓名 name, 因为结婚需要改变节点中的配偶一栏void Open(Tree &TR);/打开保存家谱信息的文件void Save(Tree TR);/保存家谱信息到指定文件void PrintTree(Tree TR); /输出家谱中所有成员的信息3详细设计3.1结构体定义struct People(int num;char n

13、ame20;char sex;char borndate15;int generation;char matename20;int parent;char infor100;LinkList child;;struct(int a;struct;struct(NodePoint La;;定义结构体PeopleNodeNode * next;LinkList/定义结构体Node定义链表/定义树struct Tree(PeoplePoint Tr;int Length;int TREE_INIT_SIZE;;3. 2初始化void InitTree(Tree &TR)/在树己定义的情况下,初始化树TR(People peopINIT_SIZE;TR.Tr二peop;TR.Length=0;TR.TREE_INIT_SIZE=INIT_SIZE;LinkList InitLinkList(void)/在什么都没有的情况下,初始化一个带头结点 的链表并返回链表L(LinkList L;NodePoint Head;Head=(NodePoint)malloc(sizeof(Node);Head-a=0;Head-next=NULL;L.La=Head;return (L);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号