zoukankan      html  css  js  c++  java
  • 20172307 结对编程项目-四则运算 第一周 阶段总结

    20172307 结对编程项目-四则运算 第一周 阶段总结

    结对对象

    1. 学号:20172311
    2. 姓名:赵晓海
    3. 伙伴第一周博客地址:(http://www.cnblogs.com/zhaoxiaohai/p/8976043.html)
    4. 担任角色:(1)驾驶员:赵晓海
      (2)副驾驶:黄宇瑭

    需求分析

    • 生成四则运算的题目,实现题目的分级和分个数。
    • 实现中缀表达式转化成后缀表达式,并计算题目结果,同时与用户输录的答案进行比较。
    • 运算题目中实现真分数的运算。
    • 扩展需求:实现题目的去重。

    设计思路

    1.UML类图:

    2.思路

    • 生成一个生成题目的类,以字符串的形式输出。实现题目的分级,个数通过while,for循环来解决。
    • 中缀转后缀参照老师的PPT,使用栈的方式来实现。
    • 真分数的实现参照书本中的例题RationalNumber来实现。
    • 题目的去重目前还没有思路。

    相关过程截图

    生成一个最简分数类的Fraction:

        public class Fraction {
           int numerator, denominator;
    
        public Fraction() {
           numerator= (int) (Math.random()*51);
           denominator= (int) (Math.random()*51);
           if(denominator==0)
               denominator=1;
           reduce();
     }
    
        public void reduce() {
            if (numerator != 0) {
                int common = gcd(Math.abs(numerator), denominator);
    
                numerator = numerator / common;
                denominator = denominator / common;
            }
        }
    
        private int gcd(int num1, int num2) {
            while (num1 != num2)
                if (num1 > num2)
                    num1 = num1 - num2;
                else
                    num2 = num2 - num1;
    
            return num1;
        }
        public String getFraction()
        {
            String result;
            if(numerator==0)
                result="0";
            else
                if(denominator==1)
                    result=numerator+"";
            else
                result=numerator+"/"+denominator;
            return result;
        }
    }
    

    2.生成一个Create类来生成题目:

    
    public class Create {
        String[]Arraylist;
        int num,rate;
        public Create(int num ,int rate)
        {
            this.num=num;
            this.rate=rate;
            Arraylist=new String[num];
        }
        public String questionRate(int a)
        {
            String express="";
            String[]OC={"+","-","×","÷"};
    
            for (int c=0;c<a;c++) {
                Fraction b = new Fraction();
                String d=b.getFraction();
                String e=OC[(int) (Math.random() * 4)];
                while (d=="0"&&e=="÷") {
                    Fraction f=new Fraction();
                    d = f.getFraction();
    
                }
                express +=d+" "+e+ " ";
            }
    
            Fraction c=new Fraction();
            String e=c.getFraction();
            while (express.charAt(4*rate-1)=='÷'&&e=="0")
            {
                Fraction d=new Fraction();
                e=d.getFraction();
            }
    
            express+=e+" "+"=";
            return express;
        }
        public  void QuestionNum(){
            Create F=new Create(num,rate);
            for(int a=0;a<num;a++)
                Arraylist[a]=F.questionRate(rate);
        }
    
        public String[] getArraylist() {
            return Arraylist;
        }
        public String getArraylist2(int a)
        {
            String b;
            b=Arraylist[a];
            return b;
        }
    
        public String toString() {
            String a="";
            for (int b=0;b<num;b++)
                a+=Arraylist[b]+"
    ";
            return a;
        }
    }
    

    3.CreatTest类的运行截图

    遇到的困难及解决过程

    • 在运行CreateTest时显示存放String类型的数组越界

    提示错误处:

    • 解决过程
      和结对伙伴赵晓海同学连续看了好几遍但依然没有看出错误,最后在班主任王老师的指导下明白了问题出在我们在声明那个数组时,没有给他明确的大小,而是用了一个变量,导致数组大小只有1。
      之前代码截图:

    更改后代码截图:

    对结对伙伴的评价

    在这次结对活动中晓海同学是领航员的角色,代码的构想由他来完成,他出的力比我多的多。希望在后面几周的合作中我能帮到他更多吧。

    PSP时间统计

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 60 70
    Estimate 估计这个任务需要多少时间 30 30
    Development 开发 600 700
    Analysis 需求分析 (包括学习新技术) 120 180
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 20
    Design UML 设计项目UML类图 60 90
    Coding 具体编码 180 210
    Code Review 代码复审 180 120
    Test 测试(自我测试,修改代码,提交修改) 120 120
    Size Measurement 计算工作量(实际时间 30 20
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 60
    合计 1440 1620
  • 相关阅读:
    二叉树的最大距离
    MS CRM 2011 RibbonExport Utility下载以及实用说明
    MS CRM 2011中的解决方案——使用
    MS CRM 2011的自定义与开发(5)——关系编辑器
    MS CRM 2011 RC中的新特性(5)——定期约会
    MS CRM2011中的事件脚本——入门
    MS CRM 2011 汇总更新 3
    MS CRM 4中模拟PartyList字段的方法
    MS CRM 2011的自定义与开发(4)——属性编辑器
    MS CRM 2011中的解决方案Solution_简介
  • 原文地址:https://www.cnblogs.com/20172307hyt/p/8975967.html
Copyright © 2011-2022 走看看