- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 《特种设备重大事故隐患判定准则》GB45067-2024培训.pptx VIP
- 小学美术教学案例的生成式AI智能创作与艺术教育创新实践教学研究课题报告.docx
- 100T汽车吊操作手册.pdf VIP
- 入户供热维修操作技能培训.pptx VIP
- 《浏阳河随想》古典吉他独奏谱.pdf VIP
- 2024新教材七上道德与法治早背晚默.docx VIP
- 最新特种玻璃精品课件.ppt VIP
- 九上道德与法治39天早背晚默.pdf VIP
- 初中英语新人教版七年级上册全册单词默写练习(附参考答案)(2024秋).pdf VIP
- 70篇短文记完初中1600核心词汇143页 【单词批注版】【高清精美排版】.doc VIP
文档评论(0)