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

结对对象

  • 学号:20162301
  • 姓名:张师瑜
  • 担当角色:主驾驶员(我们结对编程的过程中没有绝对的驾驶员领航员的划分,先将任务进行分配,给出基本框架以后一起进行修改和完善,基本能在面对面交流时解决问题。)

需求分析

  • 实现一个命令行程序,要求:

    • 自动生成小学四则运算题目(加、减、乘、除)
    • 支持整数
    • 支持多运算符(比如生成包含100个运算符的题目)
    • 支持真分数
    • 统计正确率
  • 本周:体现设计模式和面对对象原则、支持多运算符计算、支持多语言。

设计思路

微信图片_20170521142153.jpg

实现过程中的关键代码解释

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;
    }
  • 在数字和运算符之间加入空格。

测试方法

微信图片_20170521142200.jpg

运行过程截图

微信图片_20170521142147.jpg

代码托管

对结对伙伴的评价

这次结对编程非常感激这位大佬,能够在很多地方帮助我,客观的说,她在这次作业上花的时间比我多得多。
学得很认真,碰到看不懂的代码,问的很积极,能够指出我的代码中存在的问题还有一些不规范的地方。
感激!

感想

这周终于完成了四则运算的结对编程,这周最主要的工作就是对代码的解耦和、功能细分。但是在具体操作的过程中,感觉代码的耦合性还是很强,其实表达式部分可以加入泛型的特性,然后继承,不过最后还是没加,让整体缺了一些逻辑性。不过不管怎么说,这个任务还是完成了,最后的成果还是比较让人满意的,包括压力测试的结果也比较理想,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 |

posted @ 2017-05-21 17:44  20162308马平川  阅读(186)  评论(2编辑  收藏  举报