简易家谱系统解析.doc

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编 号: 学 号: 课 程 设 计 教 学 院 计算机学院 课程名称 数据结构课程设计 题 目 简易家谱系统 专 业 计算机科学与技术 班 级 2015专升本 姓 名 xxx 同组人员 Xxx 指导教师 xxx 2015 年 12 月 29 日 目 录 一 概述 2 1. 课程设计的目的 2 2. 课程设计的要求 2 二 总体方案设计 3 三 详细设计 4 3. 数据节点定义 4 4. 存储节点定义 4 5. 统计总人数 4 6. 统计从事某一职业的总人数 7 四 程序的调试与运行结果说明 8 五 课程设计总结 11 参考文献 13 一 概述 课程设计的目的 1.理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养综合运用所学知识独立完成课题的能力。 3.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 课程设计的要求 设计要求:输入家族成员情况,建立树结构,统计家族成员人数,能查询家族成员辈份情况。 系统功能: 1. 输入、修改与删除家谱信息功能 2. 查询功能: 1)某家谱成员的所有子孙的集合 2)某家谱成员的所有祖先的集合 3)某家谱成员的所有同辈成员的集合 4)求某家谱成员的所有上一辈成员的集合 5) 统计族谱人数 6)统计某一职业人数 二 总体方案设计 1.简单家谱系统整体设计思路 此次课程设计的整体思路是采用树型结构存储采用遍历算法来统计族谱中的人数与从事某一职业的人数。 树型结构采用三个指针域,父指针 兄弟指针 第一个孩子指针构成,方便查找和快速查找到树形结构的任何一个一层的某一个节点。极大的优化了遍历算法的时间复杂度 统计人数采用层序遍历算法遍历每一层的每一个节点,每找到一个节点计数器加一,直到找到最后一个节点。 统计职业同样采用层序遍历算法,每次与数组中已经存在的职业进行比较。如果没有则保存有则继续查找下一个节点,直到找到最后一个节点。 程序所有数据保存在内存中,断电丢失。由于时间原因没有做太多优化, 开始设计方案是使用hash表也改成了数组检测重复。因为构建hash表的时间原因放弃了很多优秀的设计 简单家谱系统的主要特点及功能 本系统的主要特点是算法简洁,易于阅读,用户交互界面良好。 主要实现功能: 1. 输入、修改与删除家谱信息功能 2. 查询功能: 1)某家谱成员的所有子孙的集合 2)某家谱成员的所有祖先的集合 3)某家谱成员的所有同辈成员的集合 4)求某家谱成员的所有上一辈成员的集合 5) 统计族谱人数 6)统计某一职业人数 三 详细设计 总体流程图总人数 程序的具体功能是统计族谱的人,采用的数据结构树型结构,利广度优先算法统计每一层的的个数相加得到总人数根节点开始int count(Tree* tree){ int result = 0; QUEUE* que = QUEUEinit(M); Node* head = tree; QUEUEenqueue(que,head); while(QUEUEempty(que) == 0){ Node* deque; QUEUEdequeue(que,deque); result ++; deque = deque-firstChild; while(deque){ QUEUEenqueue(que,deque); deque = deque-nextSibling; } } return result; } 统计族谱中从事某一职业的人数程序的具体功能是统计族谱人,void statistical(Tree* tree){ printf(请输入要查找的职业\r\n); char *post = (char *)util_malloc(M); scanf(%s,post); int result = 0; QUEUE* que = QUEUEinit(M); Node* head = tree; QUEUEenqueue(que,head); while(QUEUEempty(que) == 0){ Node* deque; QUEUEdequeue(que,deque); if (strcmp(post,deque-item-post) == 0) { result++; } deque = deque-firstChild; while(deque){

文档评论(0)

三沙市的姑娘 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档