• 网络四则运算结对编程


    一、结对信息

    项目组合 郭炜埕 201521123064 郑晓丽 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、程序运行
    输入习题数,有选择语言的功能
    简体中文
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325133213321-242584653.png)d
    繁体中文
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325133456180-939777441.png)
    英文
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325134804968-852022730.png)
    
    开始
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325133550585-585393349.png)
    进入运算界面,开始计时
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325134531868-1362324261.png)
    
    输入答案
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325134607765-1839027844.png)
    
    ##5、测试
    (1)、对原先的代码进行的代码覆盖率的测试
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325152800510-319708184.png)
    
     (2)、对改进后的代码进行单元测试(主要测试算法)
    测试代码:
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325153101444-431916334.png)
    测试结果:
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325153211391-1913689059.png)
    (3)、对改进后的代码进行覆盖率测试
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325155608412-2087370827.png)
    解读:类似与于Arithmetic里面switch语句部分执行,选择性语句
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325163730755-720453098.png)
    或者检测异常,如果没有异常,里面的语句便不会执行
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325163936819-80896710.png)
    诸如此类的会降低覆盖率
    
    ##6、PSP表格
    PSP2.1  | 个人开发流程 | 预估耗费时间(分钟)| 实际耗费时间(分钟)
    - | :-: | -: 
    Planning 	| 计划 | 18	 | 16
    · Estimate | 明确需求和其他相关因素,估计每个阶段的时间成本 | 10 | 8
    · Analysis	| 需求分析 (包括学习新技术) | 6 | 10
    · Design Review | 设计复审 | 4	| 6
    · Coding Standard | 代码规范 | 5 | 5
    · Design | 具体设计 | 20 | 30
    · Coding | 具体编码	| 36 | 21
    · Code Review	 | 代码复审 | 7 | 9
    · Test | 测试(自我测试,修改代码,提交修改)| 22 | 33
    · | 并提出过程改进计划 | 10 | 10
    ##7、码云提交记录
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325170057848-1457953136.png)
    
    ##8、小结感受
    我们的功能还待完善,在输入答案栏需要输入一位小数,如果答案是无限不循环小数,还没法实现保留几位小数的功能。两个人结对编程相当于合作,
    要互相了解,并完成自己的任务。在团队中认识到自己的不足,也能看到队友身上的优点。继续努力学习
    
    附上图片
    ![](https://images2018.cnblogs.com/blog/1109952/201803/1109952-20180325175552142-1279854880.png)
  • 相关阅读:
    cogs 908 校园网
    植保___农药基础知识
    底层终端-.c文件之间的调用
    指针复习
    电子工程世界
    电机与维修
    航拍部分
    系统集成与维修
    关于大型架构数据库和web一步一步优化草案
    服务器安装git,如何以秘钥方式提交
  • 原文地址:https://www.cnblogs.com/zxl3066/p/8643902.html
Copyright © 2020-2023  润新知