四则运算生成器MathX需求分析
作者:互联网
需求分析
主要功能:
1.输入参数:
1.1题目个数,int
1.2数值范围,int
1.3是否带括号,boolean
*考虑到输入数据不合需求
2.功能函数:
2.1题目生成,getEquations
2.2检查重复,check
2.3计算结果,compute
2.4答案检查,correct
3.用户需求:
3.1面向2、3、4年级,对计算练习有需求的学生。
3.2只出现正数,类型只有整数或分数。并且实用性考虑,只出现真分数。
*对于带括号的情况,考虑到实用性以及运算符的有效意义,会有题目不带括号。
开发模式
增量模型
功能模块化编写,互相依赖性不高,所以添加或删减升级功能对程序整体功能影响成本很低。增量模型也为后期软件随用户需求更新功能提供了便利。
功能设计
1.题目生成:
Equations
使用随机数在范围内生成数据并且生成符号,然后将数据和符号组合在一起就生成了一个随机的式子,其中运算符的个数也是随机生成的。
2.检查重复:
Check
通过栈和逆波兰的知识,将中缀表达式转化为后缀表达式,然后通过我们的算法再对此时的式子进行处理,就使得式子变得具有一致的、我们指定的规则,这样就便于对重复的式子进行筛选计算结果:
3.答案检查:
Correct
扫描文档,调用Check
梳理总结
对以上分析以及涉及的其他方面的考虑,总结如下:
本程序的预期用户是小学年级对计算练习有需求的学生,所以本次团队软件的要求全部是基于小学知识和要求进行设计的,在我们目前已知的需求并结合我们曾经的小学时期经验,本程序所涉及的数据全部都是非负数,并且综合不同年级的需求和进阶要求,程序所出题目只包括整数和分数,并且分数不包括假分数。考虑到对小学生运算能力的促进,我们还为同学们设计了添加括号。
针对不同年级同学所学知识的不同,用户可以根据自主要求输入所要生成的题目数量和所出题目中数值的最大值和最小值,并且选择是否包含括号。
题目个数所采用的是int类型,数据上下限采用的也是int类型。本项目根据所要达到的需求主要编写了四个关键的核心类:题目生成Equations、检查重复Check、计算结果ComputeRPN(通过逆波兰式(RPN)计算)、答案检查Correct。
题目生成是根据用户输入的参数进行生成的,首先读取题目的数量,再读取数据范围,然后使用随机数在范围内生成数据并且生成符号,然后将数据和符号组合在一起就生成了一个随机的式子,其中运算符的个数也是随机生成的。然后根据用户输入的是否包含括号,再选择运行添加括号的方法。
出完的题目将提前进行检测除法是否会生成假分数,从源头避免了答案假分数的生成,出完的式子会先进行查重再进行计算,这样既方便了对式子的运算,也防止运算过后发现是重复的式子而造成时间和内存的浪费。此处的查重是先将式子进行转化,通过栈和逆波兰的知识,将中缀表达式转化为后缀表达式,然后通过我们的算法再对此时的式子进行处理,就使得式子变得具有一致的、我们指定的规则,这样就便于对重复的式子进行筛选并且按照后缀表达式进行运算。
此时本次项目的主要任务已经基本结束,目前只剩下对答案的检查和将题目以及答案传入进文件,这其中的事情我就不再进行赘述。
项目中所采用的知识包括数据结构中栈和表的使用、逆波兰式子的转换、文件的输入输出等,使用了已学知识和自学的课外知识,结合一些思考将本次项目的代码完成。小学生初步接触算术题,需要进行一定数量的练习,使用本软件就不用家长老师为学生们出题,也减少了购买课外题目的开销,并且对我们的编程能力进行了一定的锻炼,还有自学精神和团队配合能力,可以说是一举多得。
后期的单元测试根据可能出现的情况进行了测试,并且将功能进行完善,例如可以由用户提供一份题目并且提供一份答案,本软件将题目进行读取就可以判断答案的正误并且输出所出题目中重复的问题。此次代码基本满足题目需求,并且代码块完整独立,可以根据不同的需求进行添加功能,只要添加额外的功能代码块即可,可以不断的更新。
标签:题目,四则运算,生成器,生成,括号,MathX,并且,进行,式子 来源: https://www.cnblogs.com/Derek-cpp/p/15368018.html