结对对象
20172312 彭霖
20172315 胡智韬
20172318 陆大岳(组长)
-
需求分析
以结对小组形式编写代码,实现以下功能:
1.自动生成题目
可独立使用(能实现自己编写测试类单独生成题目的功能)
可生成不同等级题目,类似于:
1级题目:2 + 5 =
10 - 5 =
分析:使用Random生成随机数构成算式以及符号以及if语句形成两个等级。 - 题目运算(判题)
可独立使用
实现中缀表达式转为后缀表达式并计算
分析:运用了两个栈进行计算,第一个将中缀转换为后缀,第二个计算后缀(第二个我个人是通过百度查找get的) - 支持真分数
可独立使用
实现分数算式的计算
分析:运用第四周的Rationalnumber类修改增加各种与整数的运算,目前我们只实现了独立使用,还没有将分数的计算编入主要的main程序里。 -
题目去重(扩展需求,加分项)
可独立使用
实现对自动生成表达式的去重:如下
若生成:2 + 5 =
5 + 2 =
为同一题目。
分析: 加分项而且有些困难,所以本周暂未进行。代码规范
使用IDEA自带的首行缩进,较为方便便于运用(即为3个空格的缩进)。
设计思路
- 生成随机运算式和不同等级: 题目需要生成。首先用方法Random生成了运算数,在定义一个随机数,随机抽取运算符,并且使用了循环,通过确定循环次数来确定题目等级。
目前总共分为两个等级(后面有了括号以及分数之后会增加等级)
第一个等级:一个运算符
第二个等级:两个运算符 - 题目运算:总共使用了两个栈,一个用来储存符号,一个用来储存数字。通过出栈,进栈的方式来进行将运算式由中缀表达式转为后缀表达式。
- 支持真分数:使用了第五章的RationalNumber类,并使用随机数来生成分子分母,但是我们并没有讨论是否是真分数,因为在后面的题目生成中估计到会产生许多的假分数,于是没有进行真假分数的处理。
-
生成括号:感觉目前我们连分数都还没有搞清,所以括号处在搁置状态,下周将补上。
UML图
问题统计
-
问题1:计算正确率的时候出现了全对正确率为1,错一道即为全部错误。
-
问题1解决方案:后来发现是错用了除号和取余号。
-
-
小组成员评价
-
20172315 胡智韬
-
编写中缀转后缀以及计算的部分(脏活累活,辛苦了QwQ)
- 20172318 陆大岳
- 编写main类统筹规划(最容易出错的地方,不容易QwQ)
-
相关过程截图
PSP时间统计
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 55 | 75 |
Estimate | 估计这个任务需要多少时间 | 3 | 5 |
Development | 开发 | 2400 | 3000 |
Analysis | 需求分析 (包括学习新技术) | 300 | 360 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 15 |
Design UML | 设计项目UML类图 | 60 | 120 |
Coding | 具体编码 | 2000 | 2400 |
Code Review | 代码复审 | 30 | 40 |
Test | 测试(自我测试,修改代码,提交修改) | 240 | 300 |
Size Measurement | 计算工作量(实际时间 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 5153 | 6380 |
其他
表示这个是真的难,不仅仅是工作量的巨大,更是各种方法直接的数据类型转换等不协调出现问题,我们组由于其本上个人每个类遇到瓶颈的时候都会求助组员,所以我们组的很多数据类型都非常的统一协调。但是巨大的工作量以及各种细节问题让我们难以应付,导致