您的位置:首页 > 编程语言

结对编程项目-四则运算-第二周总结

2017-05-21 17:44 441 查看

结对对象

学号: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.1Personal Software Process Stages预估耗时(小时)实际耗时(小时)
Planning计划0.51
Estimate· 估计这个任务需要多少时间0.51
Development开发1212.5
· Analysis·需求分析 (包括学习新技术)1.51
· Design Spec·生成设计文档0.50.5
Design Review·设计复审 (和同事审核设计文档)10.5
· Coding Standard·代码规范 (为目前的开发制定合适的规范)10.5
· Design· 具体设计23
· Coding· 具体编码24
· Code Review· 代码复审21
· Test· 测试(自我测试,修改代码,提交修改)22
Reporting报告2.54
· Test Report· 测试报告12
· Size Measurement· 计算工作量0.50.5
· Postmortem & Process Improvement Plan·事后总结, 并提出过程改进计划11.5
合计1517.5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: