文章标题 实验三:内部模块化的命令行菜单小程序V2.0
2017-10-03 21:33
363 查看
【rainingsunning + 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006 】
版本库地址https://github.com/blackcatting/Test.git
在版本库根目录下新创建一个目录lab3完成实验。
1、实验要求(参照视频中的具体实验过程)
注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储
要求:1)遵守代码风格规范,参考借鉴代码设计规范的一些方法;2)代码的业务逻辑和数据存储使用不同的源文件实现,即应该有2个.c和一个.h作为接口文件。
2、实验步骤
新建lab3
进入menu.c 、linklist.c和 linklist.h 中写代码
linklist.h的代码截图(menu.c和linklist.c代码过长,以文本形式展示)
编译代码、执行可执行程序以及运行结果
上传到库
3、代码
menu.c的代码:
linklist.c 的代码:
4、实验总结
代码编译过程中出现一些错误,很多是大意导致的问题,终端中会提示错误在代码段中的具体位置以及是何种错误,这可以帮助较快的解决问题。
通过本次实验,将一段冗长的代码段,分割精简形成几个模块,使代码更加清楚明了,也为后续的修改工作,提供很大的便利,从中可以体会到内部模块化的优点,为今后书写代码带来了一个很好的方法,并且有利于形成一个很好的框架。
版本库地址https://github.com/blackcatting/Test.git
在版本库根目录下新创建一个目录lab3完成实验。
1、实验要求(参照视频中的具体实验过程)
注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储
要求:1)遵守代码风格规范,参考借鉴代码设计规范的一些方法;2)代码的业务逻辑和数据存储使用不同的源文件实现,即应该有2个.c和一个.h作为接口文件。
2、实验步骤
新建lab3
进入menu.c 、linklist.c和 linklist.h 中写代码
linklist.h的代码截图(menu.c和linklist.c代码过长,以文本形式展示)
编译代码、执行可执行程序以及运行结果
上传到库
3、代码
menu.c的代码:
#include <stdio.h> #include <stdlib.h> #include "linklist.h" int Help(); #define CMD_MAX_LEN 128 #define DESC_LEN 1024 #define CMD_NUM 10 /* menu program */ static tDataNode head[]= { {"help","this is help cmd!",Help,&head[1]}, {"version","menu program v1.0",NULL,NULL} }; int main() { /* cmd line begins */ while(1) { char cmd[CMD_MAX_LEN]; printf("Input a cmd number : "); scanf("%s",cmd); tDataNode *p = FindCmd(head,cmd); if( p == NULL) { printf("this is a wrong cmd!\n "); continue; } printf("%s -%s\n",p->cmd,p->desc); if(p->handler != NULL) { p->handler(); } } } int Help() { ShowAllCmd(head); return 0; }
linklist.c 的代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "linklist.h" tDataNode* FindCmd(tDataNode * head,char * cmd) { if(head == NULL||cmd == NULL) { return NULL; } tDataNode *p = head; while(p != NULL) { if(strcmp(p->cmd, cmd) == 0) { return p; } p = p->next; } return NULL; } int ShowAllCmd(tDataNode * head) { printf("Menu List:\n"); tDataNode *p=head; while(p != NULL) { printf("%s - %s\n",p->cmd,p->desc); p = p->next; } return 0; }
4、实验总结
代码编译过程中出现一些错误,很多是大意导致的问题,终端中会提示错误在代码段中的具体位置以及是何种错误,这可以帮助较快的解决问题。
通过本次实验,将一段冗长的代码段,分割精简形成几个模块,使代码更加清楚明了,也为后续的修改工作,提供很大的便利,从中可以体会到内部模块化的优点,为今后书写代码带来了一个很好的方法,并且有利于形成一个很好的框架。
相关文章推荐
- 实验三:内部模块化的命令行菜单小程序V2.0
- 实验报告三:内部模块化的命令行菜单小程序V2.0
- 实验三:内部模块化的命令行菜单小程序V2.0
- 实验三:内部模块化的命令行菜单小程序V2.0
- 实验三:内部模块化的命令行菜单小程序V2.0
- 实验报告三:内部模块化的命令行菜单小程序V2.0
- [高级软件工程实验]内部模块化的命令行菜单小程序V2.0
- 实验三:内部模块化的命令行菜单小程序V2.0
- 实验三:内部模块化的命令行菜单小程序V2.0
- “软件工程(C编码实践篇)”实验报告【实验三:内部模块化的命令行菜单小程序V2.0】
- 文章标题 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 内部模块化的命令行菜单小程序
- 软件工程(C编码实践篇) 实验三:内部模块化的命令行菜单
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 软件工程(C编码实践篇)”实验报告 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 命令行菜单小程序v2.0
- 实验二:命令行菜单小程序V1.0
- 实验报告五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验二:命令行菜单小程序V1.0
- 实验二:命令行菜单小程序V1.0【实验楼系列shiyanlou.com】