结对项目进度1

小组成员:

王森   13070018

李经纬 13070019

 

 

我们基本上是在一起编程的,遇到问题可以一起讨论,比自己做思路更加开阔一些。我们在上次作业的基础上,修改了结构上的问题,模块化不清楚,都写在了一个类里。

这次我们将它模块化,更利于以后的拓展与修改。

 

已完成内容:

王森:

  • 以原来程序作为基础进行改进,功能分离,增强封装性

       在原来的程序中,Calculator类内部进行了所有的工作,输入、计算、打印等等,在新的程序中,使用Calc类替换该类,只保留计算部分。Calc主要有两个共有函数作为接口,一个是setExp(String exp),一个是getResult(Fraction &result),第一个是给这个模块传入要计算的表达式,第二个是得到计算结果。

   新的核心模块Calc增加的成员变量和方法如下:

 1 class Calc
 2 {
 3 private:
 4     string exp;
 5     int max_opNum, min_numVal, max_numVal;
 6 public:
 7     void setExp(string exp);
 8     void Setting(int max_opNum, int min_numVal, int max_numVal);
 9     int getResult(Fraction &result);
10 }

李经纬:

  • 定义异常

       在核心模块中找到各种可能出现错误的地方,返回不同的整形值。将计算结果通过函数参数的位置进行返回。

       异常数字所对应的描述为:

       -1 除数为0

       -2 算式格式错误

       -3 运算符数量超限

       -4 数值范围超限

       -5 未知字符

  • 编写测试模块

       测试模块的功能是来测试核心模块的,在本题中就是测试一个输入式子和参数获得结果和捕获异常。

  测试模块主要代码:

 1 Test::Test()
 2 {
 3     while (true)
 4     {
 5         cout << "请输入表达式:" << endl;
 6         //cin >> exp;
 7         char getExp[128];
 8         cin.getline(getExp, 128);
 9         exp.assign(getExp);
10 
11         Calc c;
12         c.setExp(exp);
13         c.Setting(2, -1000, 1000);
14         Fraction result;
15         int e;
16         if (!(e = c.getResult(result)))
17         {
18             cout << result << endl;
19         }
20         else
21         {
22             cout << "捕获异常,异常码为:" << e << endl;
23         }
24     }
25 }

测试异常如下:

posted @ 2016-03-30 18:47  BJUT李经纬  阅读(155)  评论(0)    收藏  举报