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

结对伙伴

  • 学号 :20172307

  • 姓名 :黄宇瑭

  • 伙伴第一周博客地址: http://www.cnblogs.com/20172307hyt/p/8975967.html

需求分析

功能要求

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;elsenum2 = num2 - num1;return num1;}public String getFraction(){String result;if(numerator==0)result="0";elseif(denominator==1)result=numerator+"";elseresult=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 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

转载于:https://www.cnblogs.com/zhaoxiaohai/p/8976043.html

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

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

    一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  2. 20175208『Java程序设计』课程 结对编程练习_四则运算

    20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...

  3. java安装 1723_2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段...

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...

  4. 2017-2018-2 165X 『Java程序设计』课程 助教总结

    2017-2018-2 165X 『Java程序设计』课程 助教总结 本学期完成的助教工作主要包括: 编写300道左右测试题,用于蓝墨云课下测试: 发布博客三篇:<2017-2018-2 165 ...

  5. 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)

    20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...

  6. 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算

    20165236 2017-2018-2 <Java程序设计>结对编程练习_四则运算 结对小组:叶佺.郭金涛 一.需求分析: 1.能随机生成n道四则运算题目,n由使用者输入: 2.支持多种 ...

  7. 20172316 结对编程-四则运算 第一周 阶段总结

    20172316 结对编程-四则运算 第一周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 ...

  8. java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第二周:整体性总结)...

    #结对对象与其博客链接 20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10697238.html #需求分析 (一)功能需求 1.自动生成题目( ...

  9. java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)...

    结对对象与其博客链接 需求分析 (一)功能需求 1.自动生成题目(本周已完成) 可生成包含不同运算符个数的题目 2.题目运算(判题)(这周先做了真分数,运算和后缀计算打算下周做) 实现中缀表达式转为后 ...

最新文章

  1. c++中虚函数和纯虚函数定义
  2. 计算机考研专业课资料,计算机考研专业课资料.doc
  3. python 隐马尔可夫链
  4. 2021牛客暑期多校训练营1 H-Hash Function(数学+FFT)
  5. vue 通信、传值的多种方式(超详细)
  6. ktv数据表设计 1216
  7. linux cp -w,对Linux的cp命令的思考
  8. sstv解码_SSTV通联活动:ISS国际空间站2020年1月30日和1月31日
  9. 7-21 九宫格输入法 (15 point(s))
  10. 【气动学】基于matlab气动力导弹姿态控制【含Matlab源码 969期】
  11. MSP430 MSP430单片机软件开发集成环境CCS
  12. nodejs EADDRINUSE API拒绝访问
  13. 实验室信息化建设助力医药研发
  14. 32位java8,jdk8下载,解压版
  15. NetApp存储常用检查命令
  16. 【Cortex-M0】11串口控制器
  17. A-PDF All to MP3 Converter 2.0.0 (.wav) Buffer Overflow Exploit 分析
  18. HSL、RGB颜色转换
  19. mx250是什么_MX250和150有什么区别 MX250和MX150区别对比介绍
  20. 博士第一年,要把这些计算机基础课程学好(附教程)

热门文章

  1. 转--发布js支持Firefox的加入收藏代码
  2. MySQL高性能优化规范建议
  3. TensorFlow精选Github开源项目
  4. 小波变换在语音信号处理的应用
  5. windows mysql 开启日志功能_Windows下开启mysql日志功能
  6. 001_SpringBoot入门
  7. 004_Gson树模型
  8. 070_获取日期方法
  9. 085_html5服务器发送事件
  10. android webview静态方法,android – 将静态HTML加载到Webview中