结对编程项目-四则运算-第二周总结
结对对象
- 学号:20162301
- 姓名:张师瑜
- 担当角色:主驾驶员(我们结对编程的过程中没有绝对的驾驶员领航员的划分,先将任务进行分配,给出基本框架以后一起进行修改和完善,基本能在面对面交流时解决问题。)
需求分析
-
实现一个命令行程序,要求:
- 自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
-
本周:体现设计模式和面对对象原则、支持多运算符计算、支持多语言。
设计思路
实现过程中的关键代码解释
MultiLanguage类中的关键代码:
HashMap<String,Integer> lanList = new HashMap<String,Integer>();
lanList.put("EN",0);
lanList.put("ZH_CN",1);
lanList.put("ZH_HK",2);
- 声明哈希表并使三种语言对应数组的0、1、2位。
Scanner sc = new Scanner(System.in);
language = sc.nextLine();
this.option = lanList.get(language);
- 输入相应的EN/ZH_CN/ZH_HK,选择语言。
IntegerExpression类中的关键代码
public IntegerExpression(int itemNum){
this.itemNum = itemNum;
if(itemNum<2)this.itemNum=2;
else {
for(int i =0;i < itemNum;i++){
num.add(initItem());
if(i>=1){if(op.get(i-1)=="/"){
num.set(i-1,num.get(i)*((int)(Math.random()*4+2)));
op.add("+");
}
else op.add(initOp());
}
else op.add(initOp());
}
}
}
- 自动生成整数类型的多项表达式,并且强制表达式至少有两个数之间进行计算。防止结算是的混乱,除号/只允许出现一次。
public String toString(){
String s = "";
for(int i=0;i<itemNum - 1;i++){
s += num.get(i) + " ";
s += op.get(i) + " ";
}
s += num.get(itemNum-1);
return s;
}
- 在数字和运算符之间加入空格。
测试方法
运行过程截图
代码托管
对结对伙伴的评价
这次结对编程非常感激这位大佬,能够在很多地方帮助我,客观的说,她在这次作业上花的时间比我多得多。
学得很认真,碰到看不懂的代码,问的很积极,能够指出我的代码中存在的问题还有一些不规范的地方。
感激!
感想
这周终于完成了四则运算的结对编程,这周最主要的工作就是对代码的解耦和、功能细分。但是在具体操作的过程中,感觉代码的耦合性还是很强,其实表达式部分可以加入泛型的特性,然后继承,不过最后还是没加,让整体缺了一些逻辑性。不过不管怎么说,这个任务还是完成了,最后的成果还是比较让人满意的,包括压力测试的结果也比较理想,10000个运算符能在1秒左右输出。
PSP
| PSP2.1| Personal Software Process Stages|预估耗时(小时)|实际耗时(小时)|
--- | :----------------😐:----------------😐:---------------: |:-----😐
| Planning | 计划 | 0.5 | 1 |
| Estimate | · 估计这个任务需要多少时间 | 0.5 | 1 |
|Development | 开发 | 12 | 12.5 |
| · Analysis | ·需求分析 (包括学习新技术) | 1.5 | 1 |
|· Design Spec | ·生成设计文档 | 0.5 | 0.5 |
|Design Review | ·设计复审 (和同事审核设计文档) | 1 | 0.5 |
|· Coding Standard | ·代码规范 (为目前的开发制定合适的规范) | 1 | 0.5 |
|· Design | · 具体设计 | 2 | 3 |
|· Coding | · 具体编码 | 2 | 4 |
|· Code Review | · 代码复审 | 2 | 1 |
|· Test | · 测试(自我测试,修改代码,提交修改) | 2 | 2 |
|Reporting | 报告 | 2.5 | 4 |
|· Test Report | · 测试报告 | 1 | 2 |
|· Size Measurement | · 计算工作量 | 0.5| 0.5|
| · Postmortem & Process Improvement Plan | ·事后总结, 并提出过程改进计划 | 1 | 1.5 |
| |合计 |15 |17.5 |