Dice_X

导航

 

211606320刘佳&211506332熊哲琛

一、预估与实际

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

二、需求分析

我通过网络搜索的方式了解到,小学一、二、三年级数学有如下的几个特点:

-小学一年级:

-小学二年级:

-小学三年级:

经过分析,我认为,这个程序应当:
-拥有难度切换功能
-有肉眼可见的随机性
-输出答案方便对照
-易于维护修补bug,针对不足之处日后改进

三、设计

  1. 设计思路
    说明你如何设计这个程序

比如:
-这次程序要求相比上次程序变成了多位数四则运算,所以考虑乘除法优先级法则需要输出括号
-因此我们把程序分为了三大块,一块是出题的,一块是输出文件,最后一块是计算结果的。
-但是出题这一块代码块里还有要判断是否有符号,写入文件里有创建和写入数据。
-最后上面提到的考虑到乘除法优先级法则运算,计算运算块里运用了逆波兰表达式
-能进行不同年级题目不同难度级别题目输出到TXT文件

2. 实现方案

写出具体实现的步骤

比如:
-我们先讨论了基于上次程序需要修改的部分,列出需要增加的功能块,和需要修改变量的块
-着重研究了逆波兰表达式,参考了许多csdn大神博客
-开始整合代码,写出大致框架
-测试,输入各种极限数据来检验程序逻辑性功能
-Debug
-Done

四、编码

请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
-这次程序的难点主要体现在四元运算,并且乘除括号是随机的,并且要跟随严格的逻辑功能。
-除数不能为0,也不能为负数,在随机数上要严格限制符号。

  1. 调试日志

-当时没有将集合初始化,导致输出溢出报错

  1. 关键代码
``` private static void calculate() { for (int i = 0; i < RPN.size(); i++) { if (!isNumber(RPN.get(i))) { //需要讲前面两个数字进行运算,从新排序 try { double newTmp = eval(RPN.get(i), RPN.get(i - 2), RPN.get(i - 1)); RPN.remove(i); RPN.remove(i - 1); RPN.remove(i - 2); RPN.add(i - 2, newTmp + ""); if (RPN.size() == 1) { // System.out.println(RPN.get(0)); sum1=Double.parseDouble(RPN.get(0)); return; } } catch (Exception e) { // TODO: handle exception sum1=Double.NEGATIVE_INFINITY; return; } break; } } calculate();

}

</font>

3. 代码规范
请给出本次实验使用的代码规范:
-使用Tab键缩进,不手动空格
-按功能注释,每个功能回车一行进行注释
-并人工检查代码是否符合规范

##五、测试
|Input       | Output           |  Result   |
 |------------- |-------------| --------|
| "-n","10","-grade","1"    | P1  | BINGO |
| "-n","20","-grade","2"      | P2     |   BINGO |
| "-n","30","-grade","3"     |    P3 | BINGO |

P1:![](https://img2018.cnblogs.com/blog/1472457/201809/1472457-20180918235316745-87338050.png)


P2:![](https://img2018.cnblogs.com/blog/1472457/201809/1472457-20180918235320959-1111666645.png)


P3:![](https://img2018.cnblogs.com/blog/1472457/201809/1472457-20180918235325132-1678170103.png)



##六、总结
<font color=#0099ff size=12 face="黑体">

本次作业我们还是按照第一次作业的模式来进行设计的(先出题目再算结果)
难的是在于如何随机出现括号,以及对字符串题目的计算
逆波兰算法我们是借鉴他人这是我们的这次作业一大遗憾
看到同学们都全力以赴的完成这次作业,再回顾我自己花了一点时间草草的解决实在惭愧

</font>
加油

![](https://img2018.cnblogs.com/blog/1472272/201809/1472272-20180919103119987-219720059.jpg)
posted on 2018-09-19 01:01  Dice_X  阅读(143)  评论(1编辑  收藏  举报