博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程网络15结对编程1——四则运算优化
阅读量:6860 次
发布时间:2019-06-26

本文共 4705 字,大约阅读时间需要 15 分钟。

1.链接

  • 学号:201521123076 博客链接:http://www.cnblogs.com/slickghost/p/8645842.html
  • 学号:201521123078 博客链接:http://www.cnblogs.com/onetruck/p/8641053.html
  • 结对编程码云项目链接:https://gitee.com/534160110/Arithmetic

2.改进现有代码

  • 所选择的博客地址:http://www.cnblogs.com/shizhuangde
  • 源代码:https://coding.net/u/lhl1212/p/work2/git

一、分析初始代码

类图

1108041-20180325152737911-970165912.png

覆盖率统计

1109904-20180325182351521-418469675.png

1109904-20180325182401375-1636939776.png
1109904-20180325182408865-1781716390.png
1109904-20180325182416820-821585217.png

单元测试

1109904-20180325182433601-8832287.png

1109904-20180325182440309-1214806482.png
1109904-20180325182445404-731947879.png

所发现的不足之处

  • 类没有注释,减少易读性
  • 源程序中使用驼峰命名法,但是一些方法的命名有缺陷,如Fraction类中的creatfraction(),应改为createFraction()
  • 不能让用户选择题目的数量
  • 没有统计正确率
  • 只有两个数之间的运算

二、功能改进与扩展

  • 为每个类增加注释,修改不恰当的命名

    1108041-20180325191227070-574446791.png

  • 重构Calculator类,增加calc()方法

    //Class Calculator       public static String calc(String op,Fraction a,Fraction b){           switch (op) {              case "+":                  System.out.println("+");                  return add(a,b);              case "-":                  return sub(a,b);              case "×":                  return mul(a,b);              case "÷":                  return div(a,b);              default :                  return null;              }       }
  • 扩展了三位数之间的运算

    public static String createRandomOp(){     String operator = null;     Random random = new Random();     switch (random.nextInt(4)) {     case 0:         operator = "+";          break;     case 1:         operator = "-";         break;     case 2:         operator = "×";         break;     case 3:         operator = "÷";         break;     }     return operator; }    public class Createformula { public static int testNum = 5;  private String[] result = new String[testNum];  private String[] number_1 = new String[testNum];  private String[] number_2 = new String[testNum]; private String[] number_3 = new String[testNum]; private String[] operator1 = new String[testNum];  private String[] operator2 = new String[testNum];  private ArrayList
    scoresList = new ArrayList
    (); private BufferedWriter writer; public Createformula() { } public void createTest() { Random random = new Random(); Fraction f1 = new Fraction(); Fraction f2 = new Fraction(); Fraction f3 = new Fraction(); for (int i = 0; i < testNum; i++) { f1.creatfraction(); f2.creatfraction(); f3.creatfraction(); number_1[i] = f1.getFraction(); number_2[i] = f2.getFraction(); number_3[i] = f3.getFraction(); operator1[i] = createRandomOp(); operator2[i] = createRandomOp(); Fraction temp = new Fraction(); //put the result of f1f2 if(operator1[i].equals("+")||operator1[i].equals("-") ){ temp.setFraction(Calculator.calc(operator2[i],f2,f3)); temp.convertResult(); result[i] = Calculator.calc(operator1[i],f1,temp); } else{ temp.setFraction(Calculator.calc(operator1[i],f1,f2)); temp.convertResult(); result[i] = Calculator.calc(operator2[i],temp,f3); } } } //Class Fraction public void convertResult(){ if(fraction != null){ if(fraction.contains("/")){ String str[] = fraction.split("/"); this.numerator = Integer.parseInt(str[0]); this.denominator = Integer.parseInt(str[1]); } else{ this.numerator = Integer.parseInt(fraction); this.denominator = 1; } } else System.out.println("fraction null"); }
  • 增加用户选择题目数量功能

    //Class Background  public void setFormulaNum() {      String str;       str = JOptionPane.showInputDialog("请输入题目数量");       this.formulaNum = Integer.parseInt(str);  }
  • 增加正确率统计功能

    //Class Background  public void actionPerformed(ActionEvent e) {          btnExit.addMouseListener(new MouseAdapter() {              @Override              public void mouseClicked(MouseEvent arg0) {                  // TODO Auto-generated method stub                  System.exit(0);              }          });          btnSubmit.addMouseListener(new MouseAdapter() {              @Override              public void mouseClicked(MouseEvent arg0) {                  // TODO Auto-generated method stub                  isEnd=!isEnd;                   for (int i = 0; i < formulaNum; i++) {                      answers[i]=tfdAnswer[i].getText();                    }                  wrong= background.checkAnswer(answers);                  String s=null;                  if(wrong.length==0)                      s=tips.get(5);                  else{                      s=tips.get(6)+"\n";                      String standardAnswer[]=new String[formulaNum];                      standardAnswer=background.getStandardAnswer();                      questions = background.getQuestions();                      for(int i=0;i
  • 运行结果截图:

    1108041-20180325200005469-2034796864.png

1108041-20180325191901380-1490461885.png

1108041-20180325195944261-1631308362.png

1108041-20180325200215624-1359953856.png

3.两人合作

一、编码规范

  • 1.使用驼峰命名法
  • 2.缩进:tab
  • 3.类的开头注释

二、结对照片

1108041-20180325202251078-1785208388.png

1108041-20180401201028534-816832584.png

三、码云提交记录

1108041-20180325201025239-1078400084.png

四、心得体会

结对编程确实能够带来1+1>2的效果,两个人互相讨论后各司其职,其中遇到问题互相帮助。

转载于:https://www.cnblogs.com/slickghost/p/8645842.html

你可能感兴趣的文章
Flutter Web - 目标全平台开发的Flutter再下一城!
查看>>
RAID-10 阵列的创建(软)
查看>>
小白学爬虫-批量部署Splash负载集群
查看>>
dubbo源码分析-服务端发布流程-笔记
查看>>
小菜鸡进阶之路-First week
查看>>
linux 安装 node
查看>>
“不劳而获”的数字货币真的存在么?
查看>>
k8s拾遗 - Secret
查看>>
Android SparseArray 原理解析
查看>>
PHP类的定义
查看>>
Composer 中国镜像地址配置
查看>>
20165324 前四周总结反思
查看>>
H5在js中向指定的元素添加样式
查看>>
本地通知,UILocalNotification
查看>>
分页---总结
查看>>
前端开发的历史和趋势(转摘阮一峰)
查看>>
Ubuntu 削减非 LTS 支持周期
查看>>
_实用的cms企业后台管理模板
查看>>
菜鸟看Redis(一)
查看>>
matplotlib.pyplot.plot()参数详解
查看>>