2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算

Posted chiang-b

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算相关的知识,希望对你有一定的参考价值。

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

本周总结

这周过去了,思路依旧不清晰,遇到了很多棘手的问题
我可能不太适合做编程这一行的,学不了学不了













以上是关于2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算

2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算第三周总结

20172301 2017-2018-2 《程序设计与数据结构》课堂测试修改报告

2017-2018-2 1723《程序设计与数据结构》预备作业 03 总结

2017-2018-2 1723《程序设计与数据结构》第五周作业 总结