实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
来源:互联网 发布:js table.rows 编辑:程序博客网 时间:2024/06/07 22:34
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
【清歌遏流云 + 《软件工程(C编码实践篇)》MOOC课程作业 http://mooc.study.163.com/course/USTC-1000002006 】
一、实验目的
为了加深理解熟悉链表模块化操作,使用链表来实现菜单小程序;
用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作;
使用时注意把链表模块的接口设计得足够通用,并且原有的功能保持不变;
在我们的menu程序中集成通用的Linktable模块;
理解并实现接口规范,巩固模块化设计思想。
二、实验要求
通过孟老师课堂视频了解到:
我们实验的评审对象主要是代码;
报告中要简述实验的思路和过程;
引用实验中自己添加或修改的部分关键代码;
至少有一张实验关键代码截图,至少有一张实验运行结果截图;
将自己在实验中遇到疑惑和困难,以及自己的处理方法,实验心得等写入实验报告;
实验报告的最后做一个简要的实验总结;
将实验报告的URL提交到网易云课堂MOOC平台,编辑成一个链接可以直接点击打开。
三、实验流程
按照孟老师视频中的建议:需要编写linktable.c、menu.c和linktable.h三个分离的源文件,从而实现逻辑分离和代码可重用的功能。
首先,我们先查看homework目录(本人该课程作业目录)下文件分布情况,接着在homework下新建lab4目录,并进入该目录编写代码:
接着,我们使用vim编辑linktable.c、linktable.h和menu_prog.c三个源文件,如下所示:
基本函数的实现文件linktable.c
头文件定义linktable.h
主程序menu_prog.c
编写代码完成后,编译(在这里编译要用 -lm链接动态库 因为函数实现里面用到math.h里的函数),并执行:
可以看到程序正常运行,并且结果符合预期。
将该目录下三个源文件和一个可执行文件添加到本地git仓库里面:
接着把本地仓库上传的文件推送到github上:
上传成功,可以看到github网站上正确显示了:
四、实验总结
本菜单小程序从最初的1.0版本到现在的2.5版本,功能是没有改变的,但是架构发生了翻天覆地的变化。在变化的过程中,根据孟老师的建议我不停地践行高内聚低耦合的设计原则,在面向过程的设计中引入了一些面向对象的设计原则,包括接口隔离和开放封闭原则等。经历了这几次实验的内容,加深了我对模块化设计的理解,在今后的实践过程中,我会不断应用所练习过的这些设计原则。
五、程序代码
本人github
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 文章标题 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验报告四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 软件工程(C编码实践篇)”实验报告 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- “软件工程(C编码实践篇)”实验报告【实验四:用可重用的链表模块来实现命令行菜单小程序V2.5】
- [高级软件工程实验]用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验四:用可重用的链表模块来实现命令行菜单小程序
- 用可重用的链表模块来实现命令行菜单小程序V2.5
- 用可重用的链表模块来实现命令行菜单小程序V2.5
- HTML页面优化
- Inside Buffer Optimizing for Slow Motion Video in iOS
- 李飞飞访谈:AI以人为本——之笔者见
- Scala Option(选项)
- java设计模式(精通系列)-factory
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- linux笔记( 更新中)
- XListView在activity中HttpURLConnection请求数据
- 为什么H5游戏多以轻度休闲游戏为主?
- CMake常见指令总结,修改的更加容易理解
- [RK3288][Android6.0] 音频输入接口Mic In和Line In
- Ios应用名国际化
- java 使用 comet4j 主动向客户端推送信息 简单例子
- spring boot 读取配置文件(application.yml)中的属性值