结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)

结对编程四则运算第三周-挑战出题

设计思路

  • 1.关于题目等级类的设计(Arithmetic类):
  • 题目类的设计中我们确定了四个等级的题目,分别是一级20(过程量)以内加减法,二级20(过程量)以内乘除法,三级20(过程量)以内加减乘除混合运算,并且实现括号的随机插入,四级题目实现分数的加减乘除。

  • 在该类中调用了RationalNumber类,即分数基本内容。重新添加了一个fraction方法,让其随机输出真分数。
  • 2.关于中缀表达式转后缀表达式的设计(Convert类):

  • 首先,我们要清楚为什么要把中缀表达式转换为后缀表达式。
  • 其实是为了计算机更好的计算。如果按照正常的运算顺序,计算机无法判断1+2*3优先计算哪个。所以,我们必须人为地进行优先级排序,把1+2*3转换为123*+这样计算机就懂了原来先做乘法哦。
  • 那么,如何实现中缀表达式转换为后缀表达式呢?
  • 大致的思路是这样。我们要定义一个字符串和一个栈。因为我们最后输出的东西——后缀表达式,是一个字符串。根据刚刚的例子123*+。我们应该能够发现,当我们判断一个中缀表达式的时候,应该把数字直接划入字符串,符号入栈,然后再依次弹出。
  • 通过StringTokenizer类把字符串进行分割。
  • 之后,要比较栈里面符号优先级的顺序。把后入栈的符号和栈内的符号进行比较。如果后入的优先级高,那么就入栈;反之,则弹出栈内的符号后入栈。

    • 3.关于后缀表达式求值的设计(Comparision类):
    • 首先,我都把数字转化为Rationalnumber类型。整数就是分母为1的分数。
    • 然后,通过switch语句,来分别调用Rationalnumber类的+-*/方法。
    • 4.关于面向用户输出的设计(ArithmeticTest类):
    • 首先因为是和用户交互的类,所以引入了Scanner类。
    • 其次再让用户选择其想要做的题目等级数和想要做的题目数,最后在每一次结束后询问用户是否想继续做题。
    • 在实现过程中运用了swithch语句来高效定位,用which语句来创造循环来问用户还想不想继续做题;
    • 运用新的convert类对象和Comparision类对象去计算随机生成的题目答案并对比用户输入的答案,提示用户正确与否,然后导入两个DecimalFormat类NumberFormat类,计算正确率并格式化输出。
    • 最后写入文件的实现也是在该类中完成的,实现了将随机生成的题目和用户输入的答案写入到文件。
    • 5.关于括号添加的设计和遇到的困难和解决:
    • 有关括号的内容我(小组成员段志轩)一开始想用ascii码和循环进行,具体步骤是先利用循环和charAt方法,找到符号的索引并存在数组里。然后通过随机数通过索引随机调用数组中的符号,然后在利用索引根据符号的相对位置插入前后括号。但是后来在运行时发现在处理两位数的时候会有错误。于是否掉了这个方案进行表示,但是后来在实际运行时发现不行。
    • 于是后来改变了思路。就是在生成的计算式中的空格中做一些处理。生成计算式时在空格中设置一个随机数调用事先创建的数组。数组中只有两个元素。一个是空格,另一个就是带括号的两个随机数加和。
    • 6.关于分数的设计实现理念:
    • 通过StringTokenizer类把a/b/分开。分别判断整数(分母为1)和分数的时候。

扩展需求

  • 关于将题目写入文件:
    • 首先用java.io包中的FileWriter类创建一个叫xieru的对象,然后在定义两个ArrayList类;
    • 然后在每一个case子句中将随机生成的题目添加到列表里面,然后再用ArrayList类的get方法找到具体对应的题目和用户输入答案,用for循环一个一个的写进去。
    • 在for循环里面将两个数组按照制表符写入文件,可以排列整齐清晰。
    • 关于从文件中读题:创建了一个新类ReadAndJudge想从我之前写好的文件中读题目再设计一个数组传入Convert类去将中缀表达式变成后缀表达式,然后再去计算后缀表达式,再将文件里的用户输入的答案读出,与计算结果比较,再输出正确与否和正确率最后将正确答案和正确率写入文件。
    • 嗯,想的极其美好,但是因为想美观,写入的一串随机长度题目因为能力的限制,尝试了好久(Substring方法、存数组方法)都无法成功取出随机长度的题目,还没解决。
  • 其中遇到的问题:遇到的问题就是最后阻挡的那个问题最严重的,其中还有只能写入用户的一个等级运行的问题,通过调试和修改达到了目的,但是忘记了错误截图。

项目的UML类图

❀❀❀我们的UML类图:※
1332971-20180515231447121-809274111.png

相关测试过程截图

1332971-20180519194505696-719940470.png

1332971-20180515235330812-1612706009.jpg

1332971-20180515235342697-1170740226.jpg

1332971-20180519194525994-1011775236.png

1332971-20180519194536920-373693814.png

编写代码遇到的困难和解决办法

这周我们的错题都没有截图,具体的也记不大清,困难大概让我总结一下:如果需要具体的话可以去我们三个人前几周的博客去看。谢谢谢谢Thanks♪(・ω・)ノ

  • 1.符号类型在输出中一直相同,数字在输出中也一直相同。
  • 2.分数不能输出,在循环中实例化数组但没有实例化对象,因此无法调用个人faction方法。
  • 3.在将中缀表达式变后缀表达式的过程中,不知道怎样把前一个类中生成的表达式用进来。
  • 4.双等号错误。
  • 5.“问题九”不变错误。
  • 6.中缀变后缀中StringTokenizer类比String.toCharArray类好用的问题,分数不方便分割。
  • 7.用ASCII码判断随机输入括号进阶到一位数到瓶颈期。
  • 8.用户不知所措,哭死在不贴心的程序员面前。

项目的码云链接

码云链接

小组各个成员信息

  • 1.20172301郭恺同学:驾驶员 善于编程 善于理解 推动整体发展进度 帮助组员理清思路 做为编程过程的指引的领导
  • 2.20172304段志轩同学:驾驶员 善于创新 善于思考 解决局部难点困点 提供可行方案和需求路径 作为编程过程中的优秀首席工作者
  • 3.20172328李馨雨同学:领航员 善于提问 善于督促 督促时间有效分配 检查程序部分错误 并思考动手完善 作为后勤做的特别好的老阿姨

给出小组最终贡献度划分(按百分比给小组各成员划分贡献度,各成员贡献之和为100%)

姓名郭恺段志轩李馨雨
学号201723012017230420172328
贡献率(%)38%32%30%

小组各成员项目感想

  • 20172301(郭恺):总体来说难度适中,因为毕竟人多力量大,思路的碰撞可以产生很多有趣的想法,让我受益匪浅。一定程度上,锻炼了自己多角度思考问题的能力。我觉得,这个在程序设计上是十分必要的。并且,如何精简程序也是一门学问,我觉得我们应该还需要拓展自己的知识。
  • 20172304(段志轩):总的来说这次是我们第一次进行的独立编程,虽然很辛苦,但是感觉到了自身的编码功力得到了很大的提高,学习java不能纸上谈兵,还需要真刀真枪的实干。纸上得来终觉浅,绝知此事要躬行。
    这正是我们结对小组的真实写照。而且,在此次编程中,我确实感受到了结对编程的好处与实际的效果,团结就是力量,希望下次还有结对编程的机会。
  • 20172328(李馨雨):在刚接到项目的时候感觉特别复杂,但是随着一点点剖析分解成一个个模块,一点点的去解决,发现要考虑的问题更加具化,当然,遇到的问题很多,感觉这种项目对编程能力真的很有提高。不过在编程方面,还是很佩服我们小组的其他两位成员,思路比我清晰,速度比我快。我比较适合找问题,去测试,做一些简单细致的工作。学习了中缀转后缀和后缀表达式的求值,虽然代码实现是队友实现的,但是也是学习了新知。

给出小组结对编程照片

1332971-20180515231804038-62894801.jpg

学习过程中在微信群中热烈的讨论和留下的两张手稿

1332971-20180516002042209-1113572025.jpg
1332971-20180516002053002-255314172.jpg
1332971-20180516002111203-1655540026.jpg
1332971-20180516002207972-1057871853.jpg
1332971-20180516002153366-1539045900.jpg

PSP时间规划

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划6065
Estimate估计这个任务需要多少时间32
Development开发20003000
Analysis需求分析 (包括学习新技术)350300
Coding Standard代码规范 (为目前的开发制定合适的规范)6010
Design UML设计项目UML类图6060
Coding具体编码15002000
Code Review代码复审3030
Test测试(自我测试,修改代码,提交修改)300300
Size Measurement计算工作量(实际时间 )22
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划3010
合计43955229

转载于:https://www.cnblogs.com/LXY462283007/p/9043683.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值