针对“自动出题分类计算展示结果系统”的分析,改进建议与阅读心得

软件工程综合实践专题  第二次作业

   这是来自我的合作对象庞胜(1759229)的一段代码,该系统的作用是随机给出指定数量的四则运算的题目并且答案在0-100的范围中的系统,包括了分为三个类别给出答案,设计了一系列的操作和项,来实现一组完整的基础操作和整个出题给出答案的流程。

 

源代码:

#include<iostream>
#include<time.h>
#include<string>
using namespace std;

int main()
{
    int num;
    int div;
    int x, y, m, i, j, t,s;
    cout << "请输入要定制的题数:" ;
    cin >> num;
    cout << "除数显示:1.显示整数;2.显示余数;3.显示分数"<<endl<<"请选择:";
    cin >> div;
    string *res1 = new string[num];
    string *res2 = new string[num];
    string *res3 = new string[num];
    string *a = new string[num];
    string *b = new string[num];
    srand(time(0));
    for (i = 0; i<num;)
    {
        x = rand() % 100;   //0~99
        y = rand() % 100;
        m = rand() % 4;
        b[i] = to_string(x) + to_string(m) + to_string(y);
        for (j = 0; j < i; j++)
            if (a[j] == b[i])
                break;
        if (j == i) {
            switch (m)
            {
            case 0:
                s = x + y;
                if (s > 0 && s < 100) {
                    cout << x << "+" << y << "=" << "\t";
                    res1[i] = to_string(s);
                    res2[i] = to_string(s);
                    res3[i] = to_string(s);
                    i++;
                }
                break;
            case 1:
                if (x < y)
                {
                    t = x;
                    x = y;
                    y = t;
                }
                cout << x << "-" << y << "=" << "\t";
                res1[i] = to_string(x - y);
                res2[i] = to_string(x - y);
                res3[i] = to_string(x - y);
                i++;
                break;
            case 2:
                s = x * y;
                if (s > 0 && s < 100) {
                    cout << x << "*" << y << "=" << "\t";
                    res1[i] = to_string(s);
                    res2[i] = to_string(s);
                    res3[i] = to_string(s);
                    i++;
                }
                break;
            case 3:
                if (y != 0) {
                    cout << x << "/" << y << "=" << "\t";
                    res1[i] = to_string(x / y);
                    res2[i] = to_string(x / y) + "..." + to_string(x % y);
                    res3[i] = to_string(x) + '/' + to_string(y);
                    i++;
                }
            }
        }

    }
    cout << endl;
    cout << "题目答案为:" << endl;
    switch (div)
    {
    case 1:
        for (i = 0; i < num; i++)
            cout << res1[i] << "\t";
        break;
    case 2:
        for (i = 0; i < num; i++)
            cout << res2[i] << "\t";
        break;
    case 3:
        for (i = 0; i < num; i++)
            cout << res3[i] << "\t";
    default:
        break;
    }
    cout << endl;
    return 0;
}

 

 

程序测试运行截图:

 

 

 

 

 

 

 

一、编程风格

 

  首先对于代码提供出的代码规则来看,对于此代码的编程者有着一定的编程风格,在程序的前面我们可以看到这是一个c++的程序代码,但是在int main()中我们很容易看到,在对变量定义的时候,编程者习惯使用c语言的定义风格,所有变量放在最前面一次全部定义初始化,而不是在使用时在开始定义,在定义风格上来看,除了特殊的几个变量采用了英文的定义方式,其他的单变量全局变量在定义时候并没有规则而是随机的单词用来定义,在后期的使用中可能对于代码阅读者来说就有一点的前后文联系困难不太利于代码的阅读,当变量达到一定的长度和数量时候,这种命名方式就是的编程者出现记忆混乱的风险很容易出现代码错误。

在另外一个方面我们看到,编程者在编写需要阅读分享的程序代码时,整个代码段只出现了一个程序注释,在我们的程序编写中无论是为了自己的阅读以及他人的使用我们建议是做到4-5行代码一注释,在面对重要部分或者重要功能时也要添加注释。

 

 

二、功能实现

 

  首先在我们运行代码的时候,弹出了CMD框并且出现文字内容“请输入要定制的题数:”然后我们随机输入一个100又弹出一个提示内容,“除数的显示:1.显示整数,2.显示余数,3.显示分数” 我们选择输入1后出现了100道四则运算,并且在下面的随即显示了对应题目的答案,面对除法运算的的答案以我们选择的整数形式显示。随后我们分别测试了三组数子以及分别对应的三个选项,在规则提示中基本实现了我们需要的功能。

 

三、系统不足

 

1.异常处理

  在使用该系统的过程中发现。改系统少了对异常操作的处理提示机制,只有简单的错误输入的判断但是并没有给出合适的处理方式或者提示。例如在我们打开软件后输入数字为负数时,第二部的选择依然可以进行,没有第一步的选择,在完成第二部的选择后程序弹出,并未有任何提示,如果对于没有使用意识或者错误操作的用户来说就是一种误解和不足的地方。

 

2.提示输入语言

  在使用的操作中,我们发现提示语句过于简单,例如“输入要定制的题数”“除数显示” 等字眼,对于用户来说或者不熟悉的使用者来说很难理解需要输入的内容,所以在人机交互方面出现了不必要的困难,使得程序变得繁杂费时,不能够做到高效快速的解决问题的目的。

 

3.输入输出

  输入时候没有结束符号不适合多项的输入,也没有循环的输入机制代码,使得程序单次运行,需要充分开关,在输出的时候,排版不够美观,当题目过多的时候答案和题目对应就出现了困难

 

4.功能缺陷

  程序在输入完选择项目后就随即展示出所有题目和答案,这并不符合实际的操作和使用,在实际中是先给出题目,老师操控后给出答案。

 

四、改进建议

 

1.异常处理

 

对于一个完整的程序来说需要考虑到用户和程序员的不同操作角度和熟知度的问题,所以我们需要在程序中添加对用户输入值的判断条件,在不符合判断的时候我们需要对其进行错误提示,给出提示后并且要求用户重新深入,两次输入值都应该做到这样的操作

 

 

2.提示语言

 

提示语言应该做到简洁明了并且能使得用户一眼看出来所需要输入的内容改为“请输入需要的四则运算的数目”,“请选择需要输出的除法的答案类型:1.整数类型,2.分数类型,3.小数类型”

 

3.输出输入

 

在输入位置加入循环语句,以结束符作为结束标志,实现多个组的运算输出做到程序高效率运行

 

4.功能缺陷

 

在输入中加入语句进行多一次选择,展示完题目之后进行用户的一次互动有用户输入特殊标识符合来激活答案输入语句的输出,做到用户使用体验的最优化

五、阅读心得

 

首先,在创建一个新的系统或产品时,进行详细的需求分析以确定顾客的需要是十分必要的。这能让我们分析和寻求新系统的解决方法来确定新系统的目的、范围、定义和功能。

 

其次,在编程过程中我们应该遵守编程规范以方便他人的阅读及日后对软件的维护等。

最重要的就是我们的程序需要不同的测试并且有用户来测试使用并且改进才能完善程序,对于程序员和使用者有一个不可避免的专业认同的问题,所以在程序的创建之前一定要对使用用户的日常使用进行交流和定义,只有这样才能够使得系统功能更简洁高效的完成用户的目的。

 

 

小组成员:庞胜(1759229)

 

posted @ 2019-03-19 19:30  杨梓轩  阅读(284)  评论(0编辑  收藏  举报