zoukankan      html  css  js  c++  java
  • 结对作业1

    结对作业1

    学号1:211606317 林泽宇
    学号2:211606388 尹海川

    • 这次把上一次的一、二年级作业优化完善了下,三年级的暂时还出不来完整的符合要求的...有时候输出还有问题...

    一、预估与实际

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划
    • Estimate • 估计这个任务需要多少时间 7000 8640
    Development 开发
    • Analysis • 需求分析 (包括学习新技术) 700 720
    • Design Spec • 生成设计文档 300 400
    • Design Review • 设计复审 60 60
    • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 120 120
    • Design • 具体设计 360 520
    • Coding • 具体编码 300 340
    • Code Review • 代码复审 160 180
    • Test • 测试(自我测试,修改代码,提交修改) 120 120
    Reporting 报告
    • Test Repor • 测试报告 240 240
    • Size Measurement • 计算工作量 120 120
    • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 60 60
    合计 2880

    二、需求分析

    我通过上网查阅百度的方式了解到,小学三年级四则混合运算有如下的几个特点:(包括作业细化要求)

    • 运算符在2~4个(进一步细化要求:至少两个不同的运算符)
    • 可以加括号进行优先级运算
    • 减法运算的结果不能为负数
    • 除法运算除数不为零,不能有余数,必须要能整除
    • 先乘除后加减,有括号的括号内的先运算

    经过分析,我认为,这个程序应当:

    • 使用的数字0~100,不包括得数
    • 需要能进行混合运算,并且至少存在两个不同的运算符,也就是最少需要三个数参与运算
    • 需要随机在加法或减法运算处加括号
    • 计算结果遵循先乘除后加减,有括号的括号内先算

    三、设计

    1. 设计思路

    • 设计三年级的函数gradeThree
    • 在判断年级的函数judgeGrade内添加运行gradeThree的情况

    2. 实现方案

    • 先添加一个三年级的函数gradeThree
    • 在判断年级的函数judgeGrade内加入当n = 3时,运行gradeThree
    • 把"+","-","×","÷"存入字符串数组:sigh
    • 生成三个0~100随机数
    • 利用random函数+sigh数组随机获取两个运算符
    • 生成题号和题目
    • 按顺序判断第一个运算符号和第二个运算符号 遵循先乘除后加减原则,将预算结果存入answer变量中
    • 输出题目 题目+答案
    • 更改输入方式为 -n 100 -grade 3
    • !!!括号的方法暂时只有一点点想法,运用到代码里好像实现不了,所以还没写进去...!!!

    四、编码

    请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程

    1. 调试日志

    • 输出到文本的时候遇到了问题,使用System.setOut(ps); 可以输出到out.txt文本中,但是不能输出的到命令窗口中;使用System.out.println(ps); 则相反

    • 目前正在看学习视频和查阅资料,暂时还没找到比较好的解决方法

    • 用一个中间变量temp交换n和grade的值后,输入 -n -grade 可以正常运行,输入 -grade -n 则无法正常运行,解决办法:查阅资料后,发现要用args[x].equals(“xxx”)才能判断是否符合情况,结论是:基础知识还是不扎实啊啊啊!

    • 当 grade = 3 时,程序无法正常运行,解决办法也还没找到...

    • 随机添加括号的方法和优先级的想法,运用到代码里好像实现不了,现在还是找办法解决,看视频,查资料!!!

    • 逆波兰式 还是不怎么明白...

    2. 关键代码

    public static void gradeThree(int n) {
    	// TODO Auto-generated method stub
    	str = new String[n];
    	String s[] = {"+","-","×","÷"}; 
    	//生成题目
    	for (int i = 1; i <= n; i++) {
    		//生成四个0~100的随机数
    		int num1 = (int)(Math.random()*100+1);
    		int num2 = (int)(Math.random()*100+1);
    		int num3 = (int)(Math.random()*100+1);
    

    // int num4 = (int)(Math.random()*100+1);

    		//生成随机运算符号
    		String sigh[] = null;
    		for (int j = 0; j < 2; j++) {
    			int sighNum = (int)(Math.random()*4);
    			sigh[j] = s[sighNum];
    		}
    		//生成题序和题目
    		System.out.println("("+ i +") " + num1 + sigh[0] + num2 + sigh[1] + num3 );
    		
    		int answer = 0;
    		//第一个运算符号**************************************************************
    		//先乘除
    		if(sigh[0] == s[2] || sigh[0] == s[3]) {
    			if(sigh[0] == s[2]) {//乘
    				answer = num1*num2;
    			}
    			else {//除
    				answer = num1/num2;
    			}
    		}
    		//后加减
    		if(sigh[0] == s[0] || sigh[0] == s[1]) {
    			if(sigh[0] == s[2]) {//加
    				answer = num1+num2;
    			}
    			else {//减
    				answer = num1-num2; 
    			}
    		}
    		//第二个运算符号**************************************************************
    		//先乘除
    		if(sigh[1] == s[2] || sigh[1] == s[3]) {
    			if(sigh[1] == s[2]) {//乘
    				answer = answer*num3;
    			}
    			else {//除
    				answer = answer/num3;
    			}
    		}
    		//后加减
    		if(sigh[1] == s[0] || sigh[1] == s[1]) {
    			if(sigh[1] == s[2]) {//加
    				answer = answer+num3;
    			}
    			else {//减
    				answer = answer-num3;
    			}
    		}
    		str[i-1] = ("("+ i +") " + num1 + sigh[0] + num2 + sigh[1] + num3 + "=" + answer);
    		//*************************************************************************
    	}
    	System.out.println();
    	//输出答案
    	for(String a:str)
    		System.out.println(a);
    	//输出日期和学号姓名
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
    	System.out.println();
    	System.out.println("211606317 林泽宇  &  211606388 尹海川  " +sdf.format(new Date()));
    }//gradeThree
    

    3. 代码规范

    请给出本次实验使用的代码规范:

    • 能简化则简化
    • 注释要简单明了,增加代码可读性
    • 做好缩进和利用空行分隔

    并人工检查代码是否符合规范

    五、测试

    • 测试两种输入方式
    • 测试三个年段都能运行
    • 测试多次,看会不会出现特殊情况
    • ...

    六、总结

    请总结过程中的教训和经验,思考

    • 这次作业,花了一部分时间把上一次作业的一二年级的代码优化完善了,然后三年级的代码还有待改进,很多复杂的情况没考虑到,代码也觉得有点繁琐复杂,觉得可以再优化
    • 写代码前要先构思一遍,可以现在文档中先写伪代码,先写出整体框架,再去细化,一定一定要先构思,不要边写边想
    • 要考虑到各种情况,针对各种情况改写代码
    • 要跟结对的成员多沟通,每个人的想法不一样,可以讨论看看谁的想法更好,或者一起讨论有没有更好的实现方式
    • 平时要多去看视频巩固一下基础知识,这两次作业大部分时间还是花在学习、巩固新旧知识上,反而打代码的时间变少了,希望以后情况能互换
  • 相关阅读:
    封装成帧、帧定界、帧同步、透明传输(字符计数法、字符串的首尾填充法、零比特填充的首尾标志法、违规编码法)
    计算机网络之数据链路层的基本概念和功能概述
    物理层设备(中继器、集线器)
    计算机网络之传输介质(双绞线、同轴电缆、光纤、无线电缆、微波、激光、红外线)
    计算机网络之编码与调制
    0953. Verifying an Alien Dictionary (E)
    1704. Determine if String Halves Are Alike (E)
    1551. Minimum Operations to Make Array Equal (M)
    0775. Global and Local Inversions (M)
    0622. Design Circular Queue (M)
  • 原文地址:https://www.cnblogs.com/Lin-zy/p/9650302.html
Copyright © 2011-2022 走看看