码迷,mamicode.com
首页 > 其他好文 > 详细

网络四则运算结对编程

时间:2018-03-25 19:26:08      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ons   sub   了解   planning   简体中文   答案   des   程序   pre   

一、结对信息

项目组合 郭炜埕 201521123065 郑晓丽 201521123066
项目地址 (https://gitee.com/vicheng/four_operations/tree/master)

二、结对编程

1、需求分析

原来的代码只实现简单的两位数之间的加减乘除,而我们为需要改进其功能,实现了三位数的计算,并加了括号

技术分享图片
改进后界面:
技术分享图片
改进前类图:
技术分享图片
改进后类图:
技术分享图片

2、程序设计

技术分享图片

3、代码展示

关键代码展示:
···
double g(double a, double b, String m) {

    double v = 0;
    switch (m) {
    case "+":
        v = a + b;
        break;
    case "-":
        v = a - b;
        break;
    case "×":
        v = a * b;
        break;
    case "÷":
        v = a / b;
        break;
    }
    return v;

}


private  List<Object> trans(String s) {
    Stack<Character> op = new Stack<Character>();

    ArrayList<Object> list = new ArrayList<Object>();
    Pattern P = Pattern.compile("[0-9]+(\\.[0-9]+)?"); // 正则表达式来处理带小数点的数字
    int i = 0;

    while (i < s.length()) {
        char c = s.charAt(i);
        if (c >= ‘0‘ && c <= ‘9‘) {
            String s1 = s.substring(i);
            Matcher m = P.matcher(s1);
            if (m.find()) { // 取匹配到的第一个数字
                s1 = m.group();

                list.add(s1);
            }
            i = i + s1.length();
            continue;
        } else if (c == ‘(‘) {
            op.push(c);
        } else if (c == ‘)‘) {
            char p = op.pop();
            while (p != ‘(‘) {
                list.add(p);
                p = op.pop();
            }
        } else if (c == ‘+‘ || c == ‘-‘) {
            while (!op.isEmpty()
                    && (op.peek() == ‘+‘ || op.peek() == ‘-‘ || op.peek() == ‘ב || op.peek() == ‘÷‘)) {

                list.add(op.pop());
            }
            op.push(c);
        } else if (c == ‘ב || c == ‘÷‘) {
            while (!op.isEmpty() && (op.peek() == ‘ב || op.peek() == ‘÷‘)) {
                list.add(op.pop());
            }
            op.push(c);
        }
        i++;
    }

    while (!op.isEmpty()) {
        list.add(op.pop());
    }
    return list;
}

}
```

4、程序运行

输入习题数,有选择语言的功能
简体中文
技术分享图片d
繁体中文
技术分享图片
英文
技术分享图片

开始
技术分享图片
进入运算界面,开始计时
技术分享图片

输入答案
技术分享图片

5、测试

(1)、对原先的代码进行的代码覆盖率的测试
技术分享图片

(2)、对改进后的代码进行单元测试(主要测试算法)
测试代码:
技术分享图片
测试结果:
技术分享图片
(3)、对改进后的代码进行覆盖率测试
技术分享图片
解读:类似与于Arithmetic里面switch语句部分执行,选择性语句
技术分享图片
或者检测异常,如果没有异常,里面的语句便不会执行
技术分享图片
诸如此类的会降低覆盖率

6、PSP表格

PSP2.1 个人开发流程 预估耗费时间(分钟)
Planning 计划 18
· Estimate 明确需求和其他相关因素,估计每个阶段的时间成本 10
· Analysis 需求分析 (包括学习新技术) 6
· Design Review 设计复审 4
· Coding Standard 代码规范 5
· Design 具体设计 20
· Coding 具体编码 36
· Code Review 代码复审 7
· Test 测试(自我测试,修改代码,提交修改) 22
· 并提出过程改进计划 10

7、码云提交记录

技术分享图片

8、小结感受

我们的功能还待完善,在输入答案栏需要输入一位小数,如果答案是无限不循环小数,还没法实现保留几位小数的功能。两个人结对编程相当于合作,
要互相了解,并完成自己的任务。在团队中认识到自己的不足,也能看到队友身上的优点。继续努力学习

附上图片
技术分享图片

网络四则运算结对编程

标签:ons   sub   了解   planning   简体中文   答案   des   程序   pre   

原文地址:https://www.cnblogs.com/zxl3066/p/8643902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!