• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
SlickGhost
博客园    首页    新随笔    联系   管理    订阅  订阅

软件工程网络15结对编程1——四则运算优化

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

一、分析初始代码

类图

覆盖率统计




单元测试



所发现的不足之处

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

二、功能改进与扩展

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

  • 重构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<wrong.length;i++){
    s=s+questions[new Integer(wrong[i])-1]+standardAnswer[new Integer(wrong[i])-1];
    s=s+"\n\n\n";
    }
    s = s + tips.get(7)+
    String.valueOf(background.getRightAnswer()*100/background.testNum) +"%";
    }

    JOptionPane.showMessageDialog(null, s, "错题",JOptionPane.PLAIN_MESSAGE);;
    }

    });

  • 运行结果截图:

3.两人合作

一、编码规范

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

二、结对照片

三、码云提交记录

四、心得体会

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

posted @ 2018-03-25 18:28  SlickGhost  阅读(319)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3