简易小学生算式生成器-----第一次软件工程课作业

一、实现功能:

1、生成长度可变的小学生算式

2、算式以分数为显示单位,当随机生成分母为1时,以整数形式显示,答案也支持整数和分数两种格式。

3、可计算算式结果并检验用户输入答案是否正确,答题结束后显示正确和错误的题数。

二、实现思路:

1、构建类Fraction和Symbol来表示分数和计算符号,具体如下:

简易小学生算式生成器-----第一次软件工程课作业_第1张图片

简易小学生算式生成器-----第一次软件工程课作业_第2张图片

2、自定义抽象父类Element来统一Fraction和Symbol的性质

 

3、自定义类Stack实现栈的功能,用于表达式的中缀转后缀、后缀表达式的计算:

简易小学生算式生成器-----第一次软件工程课作业_第3张图片

4、自定义类device来处理每一次表达式的生成,计算和答案检验

简易小学生算式生成器-----第一次软件工程课作业_第4张图片

5、使用类system来控制输入算式长度和循环生成表达式

三、测试结果

简易小学生算式生成器-----第一次软件工程课作业_第5张图片

 

四、代码已上传github

https://github.com/CuzIBL/Caculation-Trainer.git

五、总结反思

1、做得时候一味追求代码的模块化,设计了太多的类来实现功能,后来感觉这样做其实有点强行追求代码的模块化,反倒把简单的任务做复杂了,这是我需要反思的地方。

2、关于怎么加入括号我想了很多,最后感觉实现起来比较麻烦的一点(并不是不能实现)是如何保证括号的有效性,比如如果随机生成括号,就有可能生成类似(1*3)+2这样的无效括号,需要想办法避免,想了想有点麻烦就没有实现,各位如果有较简便的实现思路请一定告诉我!

3、第一次用git可能传代码有点问题哈,还需要提高!

你可能感兴趣的:(简易小学生算式生成器-----第一次软件工程课作业)