20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

结对伙伴

  • 学号 :20172307
  • 姓名 :黄宇瑭
  • 伙伴第一周博客地址:

需求分析

功能要求

1.自动生成题目

  • 可独立使用(能实现自己编写测试类单独生成题目的功能)
  • 可生成不同等级题目,类似于:

    1级题目:2 + 5 =;
    10 - 5 =
    之类的两个数,一个运算符的题目

2.题目运算(判题)

  • 可独立使用
  • 实现中缀表达式转为后缀表达式并计算
  • 判断用户答题正误,并输出正确结果

3.支持真分数

  • 可独立使用
  • 实现分数算式的计算

3.题目去重(扩展需求,加分项)

  • 可独立使用
  • 实现对自动生成表达式的去重:如下

    若生成:2 + 5 =;
    5 + 2 =
    为同一题目

    对需求的理解

    1.要有一个生成随机题目的类,题目中的数可能分数,也可能是整数。 2.要有一个将中缀表达式转化为后缀表达式的类
    3.要有一个计算后缀表达式的类
    4.要有一个判断题目的类
    5.将以上类进行组合写出产品代码

    后续拓展的可能性

    具体的题目去重思路还没有产生,问题应该不大。

    设计思路

  • NML类图
  • 思路:
    要有一个能够生成随机最简分数的类,并将它运用到生成随机题目的类中去,同时生成的题目中数字和运算符之间要有一个空格符,方便在转换为后缀表达式的时候使用栈。最后要实现交互,即让客户回答问题,然后系统判断是否正确并告诉客户。

    相关过程截图

  • 生成随机最简分数的类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;
    }
}
  • 生成相应个数表达式的类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]+"\n";
        return a;
    }
}

  • 测试类CreateTest运行截图

遇到的困难及解决方法

  • 刚开始编写用于生成整数类型的题目的类时出现逻辑错误,导致运行测试类时出现越界。
  • 错误代码截图如下:
  • 测试类运行结果如下:
  • 改过后的代码截图如下:
  • 错因分析:错误代码中红圈标记的区域便是错误所在,该语句创建了一个空数组,与本意创建一个存放num个String型表达式的数组相违背。从而出现越界的现象。而改过之后的代码中是在构造函数中对数组进行了实例化,也就达到目的了。

对结对的小伙伴做出评价

结对小伙伴黄宇瑭童鞋的优点就是能够很认真的倾听我的一些想法,同时能够对我的想法提出自己的补充建议,而且他非常的耐心,乐于助人,在我敲代码敲累了的时候他会主动帮我接力。缺点的话可能就是在编写代码的时候对自己的要求不够严苛,有时会出现一些输入错误。整体上来说,与黄宇瑭童鞋的结对学习甚是愉快,希望在接下来的结对编程项目中再接再厉,共同进步!!

PSP时间统计

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 70
Estimate 估计这个任务需要多少时间 30 30
Development 开发 600
Analysis 需求分析 (包括学习新技术) 120 180
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 20
Design UML 设计项目UML类图 60 90
Coding 具体编码 180
Code Review 代码复审 180
Test 测试(自我测试,修改代码,提交修改) 120
Size Measurement 计算工作量(实际时间 30
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划
合计 1410

原文地址:https://www.cnblogs.com/zhaoxiaohai/p/8976043.html

时间: 2024-11-08 08:53:44

20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结的相关文章

20172320『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

结对伙伴 学号:20172317 20172327 姓名:蒋子行 马瑞蕃 伙伴第一周博客地址: 担任角色:驾驶员:蒋子行 副驾驶员:李闻洲 马瑞蕃 需求分析 自动生成四则运算题目 支持整数,真分数 支持多运算符和括号的使用 能判断正误并统计正确率 题目不能重复 设计思路 UML类图 生成3个不同难度的题目的类 创建一个生成真分数的类 实现中缀表达式转为后缀表达式 计算自动生成的题目用后缀表达式运算 创建测试类 部分代码截图 生成题目的类 难度一 难度二 难度三 生成分数的类 PSP时间统计: P

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

20172315『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

相关过程截图 中缀转后缀及后缀计算测试截图 题目生成截图 计算正确率截图 关键代码解释 将中缀表达式转换为后缀表达式并对后缀表达式进行计算 import java.util.Stack; import java.util.regex.Pattern; public class StringToArithmetic { public StringToArithmetic() { } // 将中缀表达式字符串计算得到结果 public static double stringToArithmetic

20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有自己的想法并且能够把这个想法具体的实践出来,只是在编程的过程中和同学交流不够,总是在最后不行了才发现问题,很容易造成前功尽弃,希望在编程过程中多沟通,减少不必要的时间精力的浪费. 小组结对编程照片 项目中自己负责的部分 我负责的是两个部分,分别是: 1.利用栈将中缀表达式转后缀表达式: 2.对后缀表

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 组内成员 20172327 马瑞蕃 20172320 李闻洲 20172317 蒋子行 需求分析 自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 不同等级的题目应该指的是不同难度的题目,意味着题目的复杂程度随着等级的上升而上升 题目运算(判题) 可独立使用 实现中缀表达式转为后缀表达式并计算 自动生成的题目要先转为后缀表达式,并计算这个后缀表达式 判断用户答题正误,并输出正

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决方法 写出项目中自己负责的部分 个人贡献度划分(按百分比给小组各成员划分贡献度,各成员贡献之和为100%) 对结对的小伙伴做出评价给出小伙伴博客链接(重点指出需要改进的地方) 给出项目的码云链接 给出小组结对编程照片 博客内容中如需展示团队的共同成果,请进行说明 如有参考或引用的设计.实现,请进行说

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算第三周总结

相关测试过程截图 测试了由中缀表达式转后缀表达式的Junit测试,分别进行了整数的和分数的,测试成功截图 由于生成问题和计算问题中,问题都是随机产生的,暂时不会进行Junit测试,故没有进行,但应是正确的,我们使用了驱动类去进行测试,结果也产生的符合格式. 小组各个成员信息 20172302侯泽洋 20172308周亚杰 测试过程中遇到的困难及解决方法 测试过程中一开始我进行的测试是始终是失败: 后来才发现一个assertEquals其实是只能对应一个实例化的类的对象,一旦是指向两个就会抛出异常

2017-2018-2 20172302 『Java程序设计』课程 结对编程练习_四则运算

1.结对对象 20172308周亚杰 2.本周内容 需求分析 (1).自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目,类似于: 1级题目:2 + 5 = .10 - 5 = 之类的两个数,一个运算符的题目 (2).题目运算(判题) 可独立使用,实现中缀表达式转为后缀表达式并计算;判断用户答题正误,并输出正确结果 (3).支持真分数 可独立使用,实现分数算式的计算 (4).题目去重(扩展需求,加分项) 可独立使用,实现对自动生成表达式的去重:如下若生成:2