- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT 26 摘 要 在本次家谱课程设计中采用二叉树来表示家谱关系,由于在家谱中每个家族成员的子女不止一个,而双亲只有一个,所以采用二叉树结构来描述家族成员之间的关系。在家谱课程设计中还用到单链表,在设计中要将二叉树存储在文件中,最终要读取文件中的记录,要将文件中的数据还原到内存中组成二叉树结构,而文件中元素与元素之间的结构是线性,而且直接对文件中的数据操作很不方便,所以将文件中的元素存储在单链表中,再对单链表操作还原成内存中的二叉树。 在对家谱的文件操作中,为了还原家谱方便,采用按层遍历的顺序保存二叉树中各结点的信息,在层次遍历中,使用队列来实现二叉树的层次遍历。 本家谱主要包括两个模块,第一个是文件操作功能模块,此模块实现了家谱记录输入、读取存盘记录、清除家谱存盘记录、添加成员、存盘 、修改家谱成员信息、删除家谱成员等七大功能;第二个是家谱操作功能模块,实现了查找某人记录、查找某人的孩子、查找某人的祖先、用括号表示法输出家谱、用凹入表示法输出家谱等六大功能。 关键词: Binarytnode save search addRecord del change clear 本程序功能框架图 家谱管理系统 家谱管理系统 家谱操作功能文件操作功能 家谱操作功能 文件操作功能 用凹入表示法输出家谱用括号表示法输出家谱查找某人的祖先查找某人的孩子查找某人记录删除家谱成员修改家谱成员信息存盘清除家谱存盘记录读取存盘记录家谱记录输入添加成员 用凹入表示法输出家谱 用括号表示法输出家谱 查找某人的祖先 查找某人的孩子 查找某人记录 删除家谱成员 修改家谱成员信息 存盘 清除家谱存盘记录 读取存盘记录 家谱记录输入 添加成员 项目总体设计 1.1 需求分析 (1) 文件操作功能:记录输入、记录输出、清除全部文件记录和将家谱记录存盘。初始化:用户可输入一个家族的族谱,输入完成之后可保存在文件中。在其后的操作中,可从文件里读取族谱信息、增加新的家族成员、修改已有的家族成员、删除已存在的家族成员、可清除所有的家族成员信息。操作完成之后可保存在文件中。 (2) 家谱操作功能:用括号表示法和凹入法输出家谱二叉树,并能查找某人的配偶、所有孩子、所有祖先、兄弟等功能。 1.2系统功能模块设计: 一.问题描述 本课程设计的主要问题是选择一种数据结构来描述家谱中家族成员之间的关系,在此数据结构上加之一些操作,选用特定的算法来实现家谱操作的功能和文件操作的功能。 二.基本要求 设计要求:编写一个程序,采用一棵二叉树表示一个家谱关系。 具体要求: (1) 文件操作功能:记录输入、记录输出、清除全部文件记录和将家谱记录存盘。 (2) 家谱操作功能:用括号表示法和凹入法输出家谱二叉树,并能查找某人所有的儿子,查找某人的所有祖先。 三.概要设计 1.数据结构的设计 在家谱课程设计中采用二叉树来表示家谱关系,由于在家谱中每个家族成员的子女不止一个,而双亲只有一个,所以采用二叉树结构来描述家族成员之间的关系。在家谱课程设计中还用到单链表,在设计中要将二叉树存储在文件中,最终要读取文件中的记录,要将文件中的数据还原到内存中组成二叉树结构,而文件中元素与元素之间的结构是线性,而且直接对文件中的数据操作很不方便,所以将文件中的元素存储在单链表中,再对单链表操作还原成内存中的二叉树。 在对家谱的文件操作中,为了还原家谱方便,采用按层遍历的顺序保存二叉树中各结点的信息,在层次遍历中,使用队列来实现二叉树的层次遍历。 2.算法的设计 本设计从总体上主要分2个模块,分别是家谱操作模块和文件操作模块。 家谱操作模块: 1)Binarytnode* Binarytree::bulid(Binarytnode* p,int num); //输入家谱,形参p为二叉树根结点的地址,形参num为结点的编号,建立二叉树并返回这棵二叉树的根结点的地址。 算法:首先先建立一个二叉树结点,提示用户输入该结点的姓名,将 用户输入的姓名写入到该结点的成员变量name中,将形参num写入到该结点的成员变量number中,将双亲结点的地址赋给结点的成员变量的双亲指针,提示用户是否有左孩子,若有左孩子则递归调用通过形参将双亲结点的地址传递过去,递归调用返回的地址赋给它的双亲结点的左孩子指针,右孩子的建立同理可得,通过递归来建立整棵二叉树。 2)Binarytnode* Binarytree::searchRecord(string name); //形参name要查找的姓名,按姓名查找某人记录,若找到记录则返回该节点的地址
有哪些信誉好的足球投注网站
文档评论(0)