20175324结对项目——四则运算 整体性总结
需求分析
实现一个命令行程序,要求:
- 1、自动生成小学四则运算题目(加、减、乘、除)
- 2、生成题目去重
- 3、支持多运算符(比如生成包含100个运算符的题目)
- 4、支持真分数
- 5、统计正确率
- 6、处理生成题目并输出到文件,生成题目后从文件读入并判题
- 7、多语言支持
从题目要求可知,我们需要实现以下几个功能:
- 可通过输入设置语言
- 随机生成四则运算题目,通过循环使得生成的题目的计算过程不含负数且不重复,并可通过输入控制生成的题目数目以及数值的范围
- 能将生成的题目输出到文件,并从文件中获取题目实现自动计算从而判断回答是否正确
- 能将计算的结果转化为分数(如真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。)
- 能计算通过统计正确的题数来计算正确率
随机生成题目
- 从题目要求和实际情况得知生成题目的运算符多于一个少于三个。当运算符数目为1时不需要出现括号,当运算符数目为2时可以有0或1个括号,当运算符数目为3时可以有0到2个括号。于是我们使用随机数来控制括号和运算符的个数,然后再添加算式内的运算符和随机数
多种语言的支持
我通过变量i和j控制需要输出提示语句的位置,并设置变量m选择语言,变量cha控制同一循环中的不同输出,变量time记录主方法中的循环次数从而改变输出的提示语句的位置,if-else语句将对应的不同位置的提示语句进行输出
主类中实现文件操作、生成题目的合法性检验及去重、判断用户的回答是否正确以及调用Produce、Language以及Sort类
当生成的题目中的任意两个数的计算结果为复数时,该题目不合法。将所有生成的题目的字符串去除括号并调用Sort类的对象排序后放入数组中,如果数组中有相同的字符串且两算式计算结果相同则将重复的题目重新生成。