数据结构课程设计报告(用二叉树实现家谱管理系统)

数据结构课程设计报告(用二叉树实现家谱管理系统)

ID:12175504

大小:108.00 KB

页数:13页

时间:2018-07-16

数据结构课程设计报告(用二叉树实现家谱管理系统)_第1页
数据结构课程设计报告(用二叉树实现家谱管理系统)_第2页
数据结构课程设计报告(用二叉树实现家谱管理系统)_第3页
数据结构课程设计报告(用二叉树实现家谱管理系统)_第4页
数据结构课程设计报告(用二叉树实现家谱管理系统)_第5页
资源描述:

《数据结构课程设计报告(用二叉树实现家谱管理系统)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构课程设计题目:用二叉树实现家谱管理系统姓名:郭志超学号:031010151554042完成日期:2005.7.3一、需求分析²建立输入文件以存放最初家谱中各成员的信息。²成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。²能对修改后的家谱存盘以备以后使用。²能从文件中读出已有的家谱,形成树状关系。²家谱建立好之后,以图形方式显示出来。²显示第n代所有人的信息。²按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。²按照出生日期查询成员名单。²输入两人姓名,确定其关系。²某人添加孩子。²删除某人(若其还有后代

2、,则一并删除)。²修改某人信息。²按出生日期对家谱中所有人排序。²打开一家谱时,若家谱中某人的生日在打开家谱的那一天,应给出提示。二、概要设计采用二叉树进行家谱的管理、树形控件及列表控件进行家谱的显示。程序涉及以下三种类型,但基本操作均在“家谱”类型中。1.定义“个人信息”类型:ADTPerson{数据对象:D={Pj

3、Pj={姓名、出生日期、婚否、地址、健在否(如过世,还应有其死亡日期)},j=0,1,2,⋯⋯n,其中n>=0}数据关系:R={}基本操作:无。}ADTPerson2.定义“家谱类型文件”类型ADTFamilytreeFile{数据对象:D={Aj

4、Aj属于Person,j=

5、1,2,3⋯⋯,n其中n>=1}数据关系:D中每个对象用换行符隔开,R={

6、Aj属于D,j=1,3,⋯⋯,n其中n>=1,String属于字符串类型,为Aj父亲姓名(若String=-1,Aj无父亲,若String=Aj的姓名,表示家谱文件结束)}基本操作:1.打开家谱类型文件,并建立兄弟、孩子二叉树。2.从内存中读取兄弟、孩子二叉树,并建立家谱类型文件。}ADTFamilytreeFlie3.定义“家谱”类型ADTFamilytree{数据对象:D={Aj

7、Aj属于Person,j=1,2,3,⋯⋯,n其中n>=0}数据关系:V={

8、Aj-1,Aj属

9、于D,j=2,3,⋯⋯n其中n>=2,且Aj-1与Aj为祖先与后代关系(parent)、后代与祖先关系(child)、兄弟之间关系(sibling)}基本操作:1.显示某人信息。2.修改某人信息。3.增加某人孩子。4.删除某人。5.通过某人查找其双亲、孩子、兄弟。}ADTFamilytree三、详细设计1.定义“个人信息”类型:structInfo{//一个人的有关信息在内存中的存储结构charname[MAX_CHARNUM];//姓名Datebirthday;//出生日期intmarry;//婚否charaddr[MAX_CHARNUM];//住址intlive;//健在否Datedea

10、thday;//死亡日期};2.定义“家谱类型文件”类型{//一个人的有关信息在磁盘文件中存储结构charname[MAX_CHARNUM];//姓名intbirthday.year;//出生年份intbirthday.month;//出生月份intbirthday.day;//出生日期intmarry;//婚否charaddr[MAX_CHARNUM];//住址intlive;//健在否intdeathday.year;//死亡年份intdeathday.month;//死亡月份intdeathday.day;//死亡日期charfathername;//父亲名字};3.定义“家谱”类型s

11、tructPersonNode{//一个人的信息和与其他人关系的存储结构Infoinfo;//自己的信息PersonNode*parent;//指向父亲的指针PersonNode*child;//指向孩子的指针PersonNode*sibling;//指向兄弟的指针}*Person;4.用结构Date存储日期structDate{//年、月、日存储结构intyear;//年intmonth;//月intday;//日};5.用结构QuickSortNode存储快速排序数组值(为快速排序而设)structQuickSortNode{//为以出生日期大小快速排序建立的存储结构Datebirthd

12、ay;//出生日期Persononeself;//指向自己的指针};6.根据家谱的特点,采用孩子-兄弟的二叉树链表表示法(链表的基本单位为以结构PersonNode表示的结点),各种操作以COperationFamilytree类来实现。以下是CoperationFamilytree类包含的数据成员及基本操作classCOperationFamilytree{public:COperationFamilytr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。