四则运算题目生成程序

a.需求分析

看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习、练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序

从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

    1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    2. 运算符为 +, −, ×, ÷
    3. 并且要求能处理用户的输入,并判断对错,打分统计正确率。
    4. 要求能处理用户输入的真分数, 如 1/2, 5/12 等
    5. 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
      Myapp.exe -n 10


b.功能设计

  • 基本功能 :生成表达式,运算结果,对比答案及题目重复查找

c.设计实现

MathStart  控制台的输入输出,将表达式写入文件,引用需要使用的类,将表达式的key存放入hashtable判重

Express     生成表达式,运算结果,判断表达式是否不符合要求,生成表达式的key。

Operator   运算符优先级定义,为Express运算结果提供帮助。

AnswerLogin   对比答案是否正确,可匹配小数,正整数,分数,带分数,若不是以上则输入失效,要求重新输入。
d.代码说明

num,oper随机生成。

括号一定在数字的左右两边,按左括号,数字,右括号,运算符的顺序加入表达式;

tranExp是将表达式转为后缀表达式,方便计算。

运算的过程代码短,行数多,简述一下,就是将后缀表达式中,取数字放入a数组中,遇到运算符取a中两个数,结果放回a中。像栈一样先进后出。

在后缀表达式中遇到‘+’或‘*’时,判断前面两个数值大小,将小的数放到前面。生成一个String的key。

缺陷,只能判断符号两边是数字的,不能判断符号边是表达式的如:(1+2)+(1/2)与(1/2)+(1+2)。

以上判定答案输入,根据正则表达式验证输入是否符合要求,符合则设置inputErr=false。当输入是小数时得到他的精度。分数精度为0.

当是分数时判断是否分母大于分子,不能再约分,分子分母不能为零。

最后进入Login,判定答案是否正确。


e.测试运行

 

6 repeat 9 即第7与第10重复。后面更改一下。

 psp

PSP2.1Personal Software Process StagesTime Senior StudentTime
Planning计划2020
Estimate估计这个任务需要多少时间55
Development开发40004000
Analysis需求分析 (包括学习新技术)2010
Design Spec生成设计文档5010
Design Review设计复审21
Coding Standard代码规范11
Design具体设计2030
Coding具体编码45004700
Code Review代码复审108
Test测试(自我测试,修改代码,提交修改)50120
Reporting报告60120
 测试报告2445
 计算工作量35
 并提出过程改进计划810

代码仓库地址:https://coding.net/u/lxdapp/p/opertor/git

转载于:https://www.cnblogs.com/lxdapp/p/7562281.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值