网站大量收购独家精品文档,联系QQ:2885784924

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

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

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计报告(用二叉树实现家谱管理系统)[精品]

数据结构课程设计 题目:用二叉树实现家谱管理系统 姓名:郭志超 学号:031010151554042 完成日期:2005.7.3 一、需求分析 ??建立输入文件以存放最初家谱中各成员的信息。 ??成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡) 也可附加其它信息、但不是必需的。 ??能对修改后的家谱存盘以备以后使用。 ??能从文件中读出已有的家谱,形成树状关系。 ??家谱建立好之后,以图形方式显示出来。 ??显示第n 代所有人的信息。 ??按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 ??按照出生日期查询成员名单。 ??输入两人姓名,确定其关系。 ??某人添加孩子。 ??删除某人(若其还有后代,则一并删除)。 ??修改某人信息。 ??按出生日期对家谱中所有人排序。 ??打开一家谱时,若家谱中某人的生日在打开家谱的那一天,应给出提示。 二、概要设计 采用二叉树进行家谱的管理、树形控件及列表控件进行家谱的显示。程序涉及以下三种类 型,但基本操作均在“家谱”类型中。 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,String | Aj 属于D,j=1,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 | Aj-1,Aj 属于D,j=2,3,??n 其中n=2,且Aj-1 与Aj 为祖先与 后 代关系(parent)、后代与祖先关系(child)、兄弟之间关系(sibling)} 基本操作: 1. 显示某人信息。 2. 修改某人信息。 3. 增加某人孩子。 4. 删除某人。 5. 通过某人查找其双亲、孩子、兄弟。 }ADT Familytree 三、详细设计 1.定义“个人信息”类型: struct Info{ //一个人的有关信息在内存中的存储结构 char name[MAX_CHARNUM]; //姓名 Date birthday; //出生日期 int marry; //婚否 char addr[MAX_CHARNUM]; //住址 int live; //健在否 Date deathday; //死亡日期 }; 2.定义“家谱类型文件”类型 { //一个人的有关信息在磁盘文件中存储结构 char name[MAX_CHARNUM]; //姓名 int birthday.year; //出生年份 int birthday.month; //出生月份 int birthday.day; //出生日期 int marry; //婚否 char addr[MAX_CHARNUM]; //住址 int live; //健在否 int deathday.year; //死亡年份 int deathday.month; //死亡月份 int deathday.day; //死亡日期 char fathername; //父亲名字 }; 3.定义“家谱”类型 struct PersonNode{ //一个人的信息和与其他人关系的存储 结构 Info info; //自己的信息 PersonNode* parent; //指向父亲的指针 PersonNode* child; //指向孩子的指针 PersonNode* sibling; //指向兄弟的指针 }*Person; 4. 用结构Date 存储日期 struct Date{ //年、月、日存储结构 int year; //年 int month; //月 int day; //日 }; 5.用结构QuickSortNode 存储快速排序数组值(为快速排序而设) struct QuickSortNode{ //为以出生日期大小快速排序建立的存储结构 Date birthday;

文档评论(0)

bodkd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档