第三次软件工程作业

组员:李专燕、邓婷

题目:

编写一个百数以内的小学生四则运算系统

 

需求分析:
系统自动出题,并对用户的答案判断对错

 

扩张功能:题目中含有负数,且负数添加括号

 

合作步骤:1、对题目进行分析研究

              2、查找有关的资料

              3、将上次作业模块化,将函数进行封装

              4、修改、调试程序

 

代码实现:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void add();
void sub();
void mul();
void divi();
void print();


#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int count=0;
int right=0;
int wrong=0;

void add()
{
    int a,b,sum,c,flag=1,key;
    do
    {
        srand((unsigned)time(NULL));
        a=rand()%201-100;
        b=rand()%201-100;
        sum=a+b;
        if(a<0&&b>0)
            printf("(%d)+%d=",a,b);
        else if(a>0&&b<0)
            printf("%d+(%d)=",a,b);
        else if(a<0&&b<0)
            printf("(%d)+(%d)=",a,b);
        else
            printf("%d+%d=",a,b);
        do
        {
            scanf("%d",&c);
            if(sum==c)
            {
                printf("回答正确!");
                count++;
                right++;                 
                break;
            }
            else
            {
                printf("回答错误!");
                count++;
                wrong++;
                break;
            }
        }while(1);
        fflush(stdin);
        printf("按任意键继续按'Q'键返回运算方式\n");
        if((key=getchar())=='Q')
            flag=0;
    }while(flag);
}
void sub()
{
    int a,b,sum,c,flag=1,key;
    do
    {
        srand(time(NULL));
        a=rand()%201-100;
        b=rand()%201-100;
        sum=a-b;
        if(a<0&&b>0)
            printf("(%d)-%d=",a,b);
        else if(a>0&&b<0)
            printf("%d-(%d)=",a,b);
        else if(a<0&&b<0)
            printf("(%d)-(%d)=",a,b);
        else
            printf("%d-%d=",a,b);
        do
        {
            scanf("%d",&c);
            if(sum==c)
            {
                printf("回答正确!");
                count++;
                right++;
                break;
            }
            else
            {
                printf("回答错误!");
                count++;
                wrong++;
                break;
            }
        }while(1);
        fflush(stdin);
        printf("按任意键继续按'Q'键返回运算方式\n");
        if((key=getchar())=='Q')
            flag=0;
    }while(flag);
}
void mul()
{
    int a,b,sum,c,flag=1,key;
    do
    {
        srand(time(NULL));
        a=rand()%201-100;
        b=rand()%201-100;
        sum=a*b;
        if(a<0&&b>0)
            printf("(%d)*%d=",a,b);
        else if(a>0&&b<0)
            printf("%d*(%d)=",a,b);
        else if(a<0&&b<0)
            printf("(%d)*(%d)=",a,b);
        else
            printf("%d*%d=",a,b);
        do
        {
            scanf("%d",&c);
            if(sum==c)
            {
                printf("回答正确!");
                count++;
                right++;
                break;
            }
            else
            {
                printf("回答错误!");
                count++;
                wrong++;
                break;
            }
        }while(1);
        fflush(stdin);
        printf("按任意键继续按'Q'键返回运算方式\n");
        if((key=getchar())=='Q')
            flag=0;
    }while(flag);
}
void divi()
{
    int a,b,sum,c,flag=1,key;
    do
    {
        srand(time(NULL));
        a=rand()%201-100;
        b=rand()%201-100;
        sum=a/b;
        if(a<0&&b>0)
            printf("(%d)/%d=",a,b);
        else if(a>0&&b<0)
            printf("%d/(%d)=",a,b);
        else if(a<0&&b<0)
            printf("(%d)/(%d)=",a,b);
        else
            printf("%d/%d=",a,b);
        do
        {
            scanf("%d",&c);
            if(sum==c)
            {
                printf("回答正确!");
                count++;
                right++;
                break;
            }
            else
            {
                printf("回答错误!");
                count++;
                wrong++;
                break;
            }
        }while(1);
        fflush(stdin);
        printf("按任意键继续\n");
        if((key=getchar())=='Q')
            flag=0;
    }while(flag);
}
void print()
{
    printf("共%d道题\n",count);
    printf("正确%d\n",right);
    printf("错误%d\n",wrong);
}


#include<stdio.h>
#include"test.h"

void main()
{
    int key;
    printf("\t\t******欢迎进入小学生四则运算系统******\n");
    printf("1、加法\t\t2、减法\t\t3、乘法\t\t4、除法\t\t5、退出\n");
    do
    {
        scanf("%d",&key);
        switch(key)
        {
        case 1:add();
            break;
        case 2:sub();
            break;
        case 3:mul();
            break;
        case 4:divi();
            break;
        default:print();
            break;
        }
    }while(key!=5);
}


运行程序:

总结:

刚开始连题目都不知是什么意思,什么是封装、什么API接口都不知道,后来研究了很久才把之前的代码进行拆分,程序在封装过程中一直出现错误,也是弄了很久才调试出来。我觉得我们对计算机语言了解比较少,以至于理解题目都有很大的困难。

耗时统计:

                       步骤                                                    耗时                                                    百分比                           
查找资料 5 0.19
需求分析 7 0.30
设计 5 0.19
封装函数 3 0.11
修改、运行程序 7 0.30
posted @ 2015-04-23 15:29  李专燕  阅读(162)  评论(1编辑  收藏  举报