结对编程(附加作业)
结对成员:金知奂
一、封装成DLL
由于我一开始没有生成DLL,这样对方如果想使用我的模块很不方便。
具体生成DLL步骤如下:
1、在写完Core之后,项目-属性-输出,选择“类库”(如下图)
2、再新建一个工程,并添加引用,把自己写好的dll文件添加进去。通过using DLL名,即可使用。
为了方便对方使用我的dll,我简单写了一个api。
void setting(int numOfQ, int rangeOfNum, int numOfOp, bool haveMulti, bool haveNegative, bool haveDecimal);
参数: numOfQ:生成的问题数目
rangeOfNum:题目中整数的绝对值的范围,同时也是分母绝对值的范围
numOfOp:每个题目中,运算符的数量。
haveMulti:题目中是否含有乘除法。
haveNegative:题目中是否含有负数。
haveDecimal:题目中是否含有分数。
效果:设定题目生成器的参数。
string calc(string s);
参数: s:需要计算的题目。注意格式要求每个数字和括号以及运算符号之间需要有空格。
效果: 计算一道题目,并返回stirng类的计算结果。
void generate();
效果: 在当前目录下生成题目和答案文件。分别叫exercises.txt和answers.txt。
void grade(String A, String Q);
参数: A:答案文件的路径。
Q:题目文件的路径
效果: 读取答案和题目文件,并根据和答案和题目生成分数文件Grade.txt。
我的接口有定义了四个方法,对方的接口有十个方法。
二、自己的界面和测试加上对方的DLL
于是,我在界面程序做了如下的修改:
在生成按钮中:
calc方法我们完全一样,所以计算按钮不需要修改
在评测按钮中:
三、自己的DLL加上对方的界面以及测试
由于对方做了一些我没有的功能,所以使用我的DLL的时候,一些功能无法实现。
比如,对方可以选择生成代码的路径。
所以我在自己的代码上又增加了这个功能来实现。
在测试方面,因为我们都只测试了core的方法,所以测试部分我只要适当删去我没有的方法,并且修改变量的顺序和个数即可。
四、通过增量修改的方式,完成对错误情况的处理
在程序中,我认为有这样几种错误。
1.输入算式的格式不合法
这个问题我用了正则表达式进行处理。如果不符合要求则抛出异常。
2.输入算式在计算中,发现不合法
如果计算中发现不合法,我将返回一个null。返回值为null的算式,被记为无效算式。
3.输入文件路径不合法
直接跑出异常,在界面程序里catch异常。之后给予用户提示。