四则运算生成器项目

1.项目链接以及队友博客链接

项目链接:
https://github.com/AmnesiaWu/AutoCal
队友博客链接:

2.预计时间表格

PSP2.1Personal Software Process Stages预估耗时 (分钟)实际耗时(分钟)
Planning计划30
Estimate估计这个任务需要多少时间30
Development开发1930
Analysis需求分析(包括学习新技术)90
Design Spec生成设计文档60
Design Review设计复审(和同事审核设计文档)30
Coding Standard代码规范(为目前的开发制定合适的规范)30
Design具体设计120
Coding具体编码1200
Code Review代码复审60
Test测试(自我测试,修改代码,提交修改)240
Reporting报告190
Test Report测试报告120
Size Measurement计算工作量10
Postmortem & Process Improvement Plan事后总结,并提出过程改进计划60
Total合计2150

3. 解题思路描述

3.1 项目要求

3.1.1 第一阶段
  • 写一个能自动生成小学四则运算题目的命令行“软件”
  • 用-i num实现一次性生成的题目个数
  • 实现对一个最多10个运算符表达式的求值
  • 支持真分数的四则运算
  • 实现判定对错,并最后给出总共对/错数量。
3.1.2 第二阶段
  • 支持乘方运算,命令行参数-m 1为^表示乘方,命令行参数-m 2为**表示乘方。
3.1.3 第三阶段
  • 把程序编程一个Windows上的电脑图形界面程序
  • 增加倒计时功能,每道题必须要20s内完成,否则得0分并开始下一题
  • 增加历史记录功能,把用户做题的成绩记录下来并可以展现历史记录

3.2 思考过程

题目主要有几个难点:

  • 生成不同的表达式
  • 求解表达式
  • 命令行参数的设置
  • 图形界面,倒计时和历史记录
3.2.1 生成表达式

需要生成随机数,随机运算符,随机括号,还要保证表达式的正确性和唯一性。

3.2.2 求解表达式

求解整数表达式将原表达式转化为逆波兰表达式,然后用栈按优先级规则操作即可。问题在于真分数的处理。

3.2.3 图形界面,倒计时,历史记录

图形界面暂时考虑用qt进行实现;倒计时需要多线程;历史记录要么写文件,要么连接数据库,看到时候时间充裕与否。

4. 设计实现过程

4.1 类模块说明

4.1.1 Num类

属性:

  • bool isProperFraction //是否是真分数类型
  • int numerator //分子
  • int denominator //分母

方法:

  • 友元函数运算符重载,加减乘除
  • 随机的实例化操作
4.1.2 ExpressionBuilder类

属性:

  • int num; //生成的题目的数量
  • enum powerMark; //乘方标志

方法:

  • GenerateExp() //给定题目数量,生成表达式
  • BuildExp() //生成一道题
  • PrintExp() //将生成的题写入文件中
  • 实例化
4.1.3 Expression类

属性:

  • String expression; //可打印的表达式
  • 视算法而定求解表达式所需要的数据结构(栈)
  • Num ans; //答案

方法:

  • Solve() //计算表达式
  • Check() //检查答案正误
4.1.4 Main

解析输入参数,调用其他类,实现与用户的交互

4.2 程序执行流程图

Created with Raphaël 2.2.0 开始 main() 输入是否合法 生成表达式 用户交互 判断答案正误(Lazy模式) 结束 错误 yes no
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值