2016012035+小学四则运算练习软件项目报告
代码仓库地址:https://git.coding.net/yachuan22/four.git
一、需求分析
(1)需求:设计编写一个程序适用于小学生的四则运算练习的出题软件
(2)分析:
·设计约束:
①采用Java语言编程设计软件
②软件所出练习题在运算过程中没有负数与非整数的出现
③运算数字限制在0~100之间,运算符在3至5个之间,且每道练习题至少要包含两个运算符
·功能性需求:
①程序可接收一个输入参数n,然后随机产生n道加减乘除(分别用+、-、*、/运算符来表示)练习题
②练习题生成后,将学号与生成的n道练习题及其对应的正确的答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致
二、功能设计
·基本功能:
①实现100以内正数的四则混合运算,运算符在3至5个之间,且每道练习题至少要包含两种运算符
②每道练习题在运算过程中没有负数与非整数的出现
③练习题生成后,将学号与生成的n道练习题及其对应的正确的答案输出到文件“result.txt”中
·扩展功能(未实现)
①支持有括号运算,包括出题与求解正确的答案,算式中存在的括号必须大于两个,且不得超过运算符的个数
②支持真分数的加减运算,且能支持运算时分数的自动化简,运算过程与结果都需为真分数
三、设计实现
①生成四则运算表达式→判断第一个运算符是什么→判断第二个运算符是什么→进行计算
②若运算符号为减号→判断该运算符前面的数是否大于该运算符后面的数→是,则进行计算;否,则表达式个数加一,计算下一个表达式
③若运算符号为除号→判断该运算符前面的数能否被后面的数整除,且除数不为零→是,则进行计算;否,则表达式个数加一,计算下一个表达式
④若运算符号为加号或减号,这里不做过多阐述
⑤判断加减乘除各级运算符的优先级
四、算法详解
①生成随机数与随机运算符
②以第一个运算符“/”为例
五、测试运行
由于时间有限,我还暂未查出我的代码哪里出现疏漏,所以现在的运行结果与预想还是存在很大的偏差
六、总结
对于前期落下太多的我来说,这个软件程序设计项目,超出了我能力范围太多,但也总不能就这样放弃这次的作业。重拾起《Java语言程序设计》这本书,不断地上网查相关知识点,也去观摩了各位大佬的“超级”代码···对于这次作业也有了自己的一点理解和思路,之后便自己一点一点的把代码敲出来,在这过程中不断出错不断修改,并且只做出运算式只包含三个算数和两个运算符的,而且最后做出的运行结果与预想还是存在较大的偏差。虽然有点气馁,但是把自己所想的敲出来还是有一点点的满足的。
七、PSP展示
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 15 | 13 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 15 | 13 |
Development | 开发 | 360 | 588 |
Analysis | 需求分析(包括学习新技术) | 30 | 43 |
Design Spec | 生成设计文档 | 30 | 38 |
Design Review | 设计复审(和同事审核设计文档) | 10 | 8 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 15 | 16 |
Design | 具体设计 | 30 | 45 |
Coding | 具体编码 | 200 | 370 |
Code Review | 代码复审 | 30 | 55 |
Test | 测试(自我测试,修改代码,提交修改) | 15 | 13 |
Reporting | 报告 | 120 | 135 |
Test Report | 测试报告 | 45 | 60 |
Size Measurement | 计算工作量 | 35 | 30 |
Postmortem&Process Improvement Plan | 事后总结,并提出过程改进计划 | 40 | 45 |