软件工程第二次实验

一、实验要求

1、代码风格规范:

  • 代码风格的原则:简明、易读、无二义性;
  • 缩进、命名、注释等代码编排的风格规范;
  • 《构建之法》4.1代码规范
  • 高质量C++/C编程指南(林锐)

2、具体要求(参照视频中的具体实验过程):

  • 实现一个命令行的菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,实现的命令个数不少于8个;
  • 类似ftp的help目录或者bash的help目录;
  • 程序循环、接收用户的命令,如help、others等命令;
  • 可以广泛通用的命令行菜单子系统组件,可方便地定制而嵌入到其他系统;

二、实验过程

1、更改vimrc设置

set tabstop=4
set cindent
set hlsearch
 
 

2、打开实验目录,新建并打开文件夹lab2

cd documents/code
mkdir lab2
cd lab2

3、新建menu.c文件并进入vim编辑器

vi menu.c

4、进行c语言编程,完成命令行的菜单小程序,完整代码如下

#include <stdio.h>
#include <stdlib.h>
void help();
void caonima();
void hello();
void bigger();
void add();
void sub();
void multi();
void divi();
int main()
{
    char cmd[256];
    while (1)
    {
        scanf ("%s", cmd);
        if (strcmp(cmd, "help") == 0)
        {
            help();
        }
        else if (strcmp(cmd, "caonima") == 0)
        {
            caonima();
        }
        else if (strcmp(cmd, "hello") == 0)
        {
            hello();
        }
        else if (strcmp(cmd, "bigger") == 0)
        {
            bigger();
        }
        else if (strcmp(cmd, "add") == 0)
        {
            add();
        }
        else if (strcmp(cmd, "sub") == 0)
        {
            sub();
        }
        else if (strcmp(cmd, "multi") == 0)
        {
            multi();
        }
        else if (strcmp(cmd, "div") == 0)
        {
            divi();
        }
        else
        {
            printf("Error Command!\n\n");
            help();
        }

    }

    return 0;
}
void help()
{
    printf("+--------+---------------------------------+\n");
    printf("+ name   + desciption                      +\n");
    printf("+--------+---------------------------------+\n");
    printf("+ help   + cmd tips                        +\n");
    printf("+ caonima+ exit cmd                        +\n");
    printf("+ hello  + welcome                         +\n");
    printf("+ bigger + bigger of two numbers           +\n");
    printf("+ add    + addition of two numbers         +\n");
    printf("+ sub    + subtraction of two numbers      +\n");
    printf("+ multi  + multiplication of two numbers   +\n");
    printf("+ div    + division of two numbers         +\n");
    printf("+--------+---------------------------------+\n");
}
void caonima()
{
    exit(0);
}
void hello()
{
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Hi~My name is li xueyu!\n");
    printf("Thank you for use my cmd program!\n");
}
void bigger()
{
    double num1,num2,bigger;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Bigger!\nplease input two numbers:");
    scanf("%lf %lf",&num1,&num2);
    bigger = num1 > num2 ? num1 : num2;
    printf("%lf is bigger than the other\n",bigger);
}
void add()
{
    double num1,num2,add;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Addition!\nplease input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    add = num1 + num2;
    printf("%lf + %lf = %lf \n",num1, num2, add);
}
void sub()
{
    double num1,num2,sub;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Subtraction!\n please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    sub = num1 - num2;
    printf("%lf - %lf = %lf\n",num1, num2, sub);
}
void multi()
{
    double num1,num2,multi;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Multiplcation!\n please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    multi = num1 * num2;
    printf("%lf * %lf = %lf\n",num1, num2, multi);
}
void divi()
{
    double num1,num2,div;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Division!\n please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    if (num2 == 0)
    {
        printf("Error:divisor can not be zero!\n");
    }
    else
    {
        div = num1 / num2;
        printf("%lf / %lf = %lf\n",num1, num2, div);
    }
}

5、程序代码部分截图








6、程序演示过程





感谢孟老师的指导,课程来自 ykt1504834575963+ 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006 】


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值