zoukankan      html  css  js  c++  java
  • 结对编程项目-四则运算-第二周总结

    结对对象

    • 学号: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
  • 相关阅读:
    JS DOM基础
    JS 部分常见循环、分支、嵌套练习
    记一些让footer始终位于网页底部的方法
    JS 实现banner图的滚动和选择效果
    JS 部分基础内容总结
    Flex弹性布局基础教程
    My SQL数据库的安装与配置
    网页共用头部和尾部的部分方法
    Unity3d入门 关于unity工具的熟悉
    Unity3d学习 制作地形
  • 原文地址:https://www.cnblogs.com/pingch/p/6884945.html
Copyright © 2011-2022 走看看