软件工程(C编码实践篇) 第三次作业实验报告

网易云课堂昵称:sa17225159
《软件工程(C编码实践篇)》MOOC课程作业 http://mooc.study.163.com/course/USTC-1000002006

实验三:内部模块化的命令行菜单小程序V2.0

实验要求

  • 注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储
  • 要求:1)遵守代码风格规范,参考借鉴代码设计规范的一些方法;2)代码的业务逻辑和数据存储使用不同的源文件实现,即应该有2个.c和一个.h作为接口文件。

实验内容

  • 模块化 软件工程(C编码实践篇) 第二次作业实验报告 中的命令行菜单小程序。将程序抽象出数据层和逻辑层。
  • 通过设计简单的命令行菜单细小程序,了解并掌握程序内部模块化设计的思想,实现菜单数据存储与菜单业务逻辑的分离.
  • 用一个静态链表来存储可变化的菜单命令及其对应函数,在主函数中实菜单命令逻辑

实验过程

1.建立远程仓库,并下载到本地,远程仓库地址:https://github.com/libaoquan95/seClass_lab3.git

git clone https://github.com/libaoquan95/seClass_lab3.git

这里写图片描述
2.进入版本库并创建 menu.c linklist.h linklist.c 文件
进入本地库
这里写图片描述
创建menu.c
这里写图片描述
创建linklist.h linklist.c
这里写图片描述
3.拆分源程序,分离出菜单业务逻辑和菜单数据存储
在一个头文件中定义链表数据结构及其操作原型,并在相应源文件中实现其操作
然后在主函数源文件中实现菜单命令。
3.1 linklist.h

#ifndef LINHLIST_H
#define LINHLIST_H

// struct of command list
typedef struct DataNode
{
    char * cmd;
    char * desc;
    int (*handler)();
    struct DataNode *next;
}tDataNode;

// find a command
tDataNode * FindCmd(tDataNode *head, char *cmd);

// print all command and it's information
int ShowAllCmd(tDataNode *head);

#endif

3.2 linklist.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "linklist.h"

/**
 * find a command
 * @param head of command list, command
 *
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值