2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算
组内成员
- 20172327 马瑞蕃
- 20172320 李闻洲
- 20172317 蒋子行
需求分析
- 自动生成题目
- 可独立使用(能实现自己编写测试类单独生成题目的功能)
- 可生成不同等级题目
- 不同等级的题目应该指的是不同难度的题目,意味着题目的复杂程度随着等级的上升而上升
- 题目运算(判题)
- 可独立使用
- 实现中缀表达式转为后缀表达式并计算
- 自动生成的题目要先转为后缀表达式,并计算这个后缀表达式
- 判断用户答题正误,并输出正确结果
- 应该要对用户的答案支持分数形式的输入
- 支持真分数
- 可独立使用
- 实现分数算式的计算
- 生成的题目里可以有真分数的出现,用户的答案输入也要支持分数的输入
- 题目去重(扩展需求,加分项)
- 可独立使用
- 实现对自动生成表达式的去重
设计思路(大致)
如何实现随机生成题目
首先生成的是中缀表达式的题目,然后每一级的题目都会在复杂程度上有变化。
比如一级题目就是最简单的两个操作数和一个运算符类型的:x#y(#代表随机的一个运算符)
二级题目就是三个操作数加两个运算符,并且还有可能会生成真分数作为操作数:x#y#z;生成真分数的条件由一个随机数是否满足某个条件决定
三级题目类似二级题目,但是加上了括号,不过为了防止随机生成括号会导致诸如“)1+2(”之类的问题,括号的位置是固定的:(x#y)#z;后期也许会试试随机生成不同的固定位置的括号
如何实现题目运算
利用栈来实现将中缀表达式转为后缀表达式,然后再用后缀表达式来计算出值
- 此处遇到的尚未解决的问题:
- 用后缀表达式来计算出结果的时候有可能会出现一个问题,根据老师给的方法,可能会出现遇“/”号退栈计算结果是一个小数,这个小数再入栈估计会出现问题
如何实现“支持真分数”
支持真分数有两个情况:题目中出现真分数,和支持用户的输入是真分数
对于题目中出现真分数:
- 因为“/”会混淆,不知道究竟是分数的那一横还是除号,因此一个打算是把分数用括号括起来作为一个整体来处理,比如(1/2)就是分数二分之一,而1/2就是一除以二。不过另外一种处理方式是用上下俩点中间一横的那个符号作为除号,而“/”就作为分数的那一横,以此来区分开来,不过尚未最终决定
- 真分数的生成就是书上例7.4的RationalNumber类改编而来的
对于答案兼容真分数的使用:
- 首先由于可能会有13/2之类的情况出现,所以这里说是答案兼容分数的使用更好一些
- 暂时的思路是在输入那地方做手脚,可能要用StringTokenizer来先判断你的输入是否是分数表达式,若为是,则计算此分数表达式(也许有更简单的方法)
相关过程截图
由于还没有完全弄好,所以这些代码在后期可能会有巨大的变化,所以仅供参考
UML图
嗯,很乱,反正后面会改
对队里其他人的评价
我觉得OK
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | |
---|---|---|---|---|
Planning | 计划 | 60 | 60 | |
Estimate | 估计这个任务需要多少时间 | 100 | 100 | |
Development | 开发 | 800 | ||
Analysis | 需求分析 (包括学习新技术) | 100 | ||
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | ||
Design UML | 设计项目UML类图 | 50 | ||
Coding | 具体编码 | 30 | ||
Code Review | 代码复审 | 50 | ||
Test | 测试(自我测试,修改代码,提交修改) | 30 | ||
Size Measurement | 计算工作量(实际时间 ) | 30 | ||
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | ||
合计 | 1240 |
本周总结
这周过去了,思路依旧不清晰,遇到了很多棘手的问题
我可能不太适合做编程这一行的,学不了学不了
原文地址:https://www.cnblogs.com/Chiang-B/p/8977865.html
时间: 2024-11-08 16:31:41