软件课程设计报告二叉树的查找.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件课程设计报告二叉树的查找

华中科技大学 软件课程设计报告 课程设计题目:二叉树的查找 院(系):光电子科学与工程学院 专业班:光电1001 学号:U 姓名:谭天弈 目录 1.软件设计 2 1.1 系统分析 2 1.1.1需求分析 2 1.1.2函数及文件分析 2 1.2系统设计 2 1.2.1系统模块设计 2 代码模块化 2 功能模块化 4 流程模块化 6 1.2.2函数设计 6 1.2.3系统流程设计 7 主函数流程设计 7 create_btree流程设计 10 search_btree流程设计 11 print_btree流程设计 12 1.2.4用户界面设计 12 1.2.5容错性设计 13 2.软件测试 14 2.1调试过程 14 2.2测试用例及运行结果 14 3.任务的其他要求 3.1源代码的注释 21 3.2源代码的运行结果 23 3.3设计心得与体会 24 4.参考文献 24 附录:二叉树综合应用程序源码 25 1软件设计 1.1系统分析 1.1.1需求分析 本二叉树综合应用程序集合了大部分二叉树的相关功能。主要包含了二叉树的建立,二叉树的检索,二叉树的遍历,二叉树的打印,以及计算二叉树的相关参数,删除二叉树的部分节点等功能。 本着用户友好的原则,每一项功能都设计了相应的菜单,并且每一个功能在主函数中都对应了一个循环,方便客户使用,而不是调试程序时使用的流水线式的运行过程。二叉树可以键盘输入,也可以使用内置的二叉树进行测试。 主函数中每一级菜单和每一个功能菜单都是用一个while(1)循环包裹起来的,具有很强的独立性。并且把一些小的功能做成相应的函数,以缩短代码。并且每一个函数都相对独立,其中void deltree(struct tree *r)和struct tree *binary_search(struct tree *point,char node,char *postion)设计了程序接口,方便其它子函数调用。并且在发现bug时便于更改。做到,可持续,有余地。 1.1.2函数及文件分析 为了尽量的缩短main()函数,把能设计成子函数的功能都设计成了子函数。包括常用的显示和分割线都写成了re1()和re2()函数。由于每个大的功能子函数都只调用了一次,所以不考虑进行文件设计。 子函数被分成了3个部分,第一部分为题目中给出的3个函数,具备了建立,打印,检索3个基本功能。第二部分为功能部分,主要是4种遍历,求各种特征参数,以及用凹表,括号法打印二叉树,和两种删除(删除方法暂时不太承受)。第三个部分为用户函数,除了re1,re2和err这三个常用函数,其它全部用c_开头。为了保证屏幕的整洁,在每一个菜单函数的前面都加上了一个清屏函数。 理论上,在子函数也复杂,主函数调用不可能简单的完成,例如对create_btree的调用,需要在main中进行循环和递归。所以应当设计业务子函数,让主函数可以直接调用。但考虑到实际是大多数子函数可以在主函数中直接得出结果,并且在re1,re2,err三个函数的帮助下就可以很友好地显示。再加上一旦设计了业务子函数,就会使整个调用过程更加复杂,每一个业务子函数都要调用其它子函数。故不设计业务函数,少数不能在主函数中直接运行得出结果的子函数,类似create_btree的处理。 系统函数的调用,主要调用的c中的函数,混杂了少数的c++函数如new函数等,所以在编译运行时需要一些头文件如iostream.h,如若编译器不具备这些头函数可能导致程序不能运行。所以如果用c语言运行请将new改成malloc函数。 1.2 系统设计 1.2.1系统模块设计 代码模块化 将代码分成几个区域来书写不同的内容,第一个区域为代码的头部,包括了头文件和该程序的核心“结构体”。 第二个部分,为函数声明,包括了两个全局变量,并说明函数功能: 第三部分为主函数部分,包含了主要循环过程,和容错性设计: 第四部分为功能子函数的定义,都用编号标好,并加上简单注释,方便后期修改和调用,如: 第五部分为界面子函数的定义,如: 功能模块化 模块1:二叉树的建立 模块2:二叉树相关操作的功能选择 模块3:遍历 模块4:求参数 模块5:删除节点 流程模块化 通过嵌套循环的方法进行,因为需要用到break进行返回,故不使用switch语句,直接在if中进行循环,如图: 1.2.2函数设计 对每一个功能设计一个子函数,如输入函数create_btree,括号法输入函数create_btree2,层次遍历函数levelorder,求结点个数函数nodenum,等。并且对每一个菜单项设计了一个子函数如主菜单c_first_menu,遍历菜单c_order_menu。常用输出函数re1,re2,报错函数err等。 子函数表: struct t

文档评论(0)

feixiang2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档