20165214 第一次结队编程项目——四则运算第二周
需求分析
本周的结队编程想要实现一个四则运算系统,它可以自动生成n个计算题(本周不包括分数),其中n由我们输入。每输出一道题目,运行程序的人需要输入相应的答案,直到最后一道题做完。最后,统计正确率。然后,在这个基础上可以进行相应的功能扩展,比如语言支。
设计思路
我需要在上周的基础上对程序进行补充。在题目的生成上,应该再加上括号、÷、/
本周达成:
①能够随机生成n道题目,n由我们输入,最大长度可直接在程序里面修改;
②支持真分数运算;
③能够计算正确率并且按照百分比形式输出,取到小数点后一位。
④支持简体中文、繁体中文、英语;
⑤能够选择参与运算的数字的最大值;
下周的目标(扩展需求):
④能够查重到一定程度;
真分数(题目生成/题目运算判题)
运行截图:
码云链接
其中关键代码的解释我们注释在代码中,码云里有体现~
JUnit测试
为了实现JUnit测试,把原本程序的随机生成算式给改成手动输入算式判定结果
UML图
这次画UML图使用了
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 120 | 100 |
· Estimate | · 估计这个任务需要多少时间 | 600 | 580 |
Development | 开发 | 60 | 60 |
· Analysis | · 需求分析 (包括学习新技术) | 5 | 5 |
· Design Spec | · 生成设计文档 | 30 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 40 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 60 |
· Design | · 具体设计 | 30 | 35 |
· Coding | · 具体编码 | 120 | 120 |
· Code Review | · 代码复审 | 10 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 100 |
Reporting | 报告 | 30 | 40 |
· Test Report | · 测试报告 | 10 | 5 |
· Size Measurement | · 计算工作量 | 20 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 10 |
合计 | 1235 | 1145 |
遇到的困难与解决方法
在编程时遇到的一些关于类的方法的问题我都用API解决了,这里总结一下其他的问题~
- 问题一:在随机生成题目时,会出现单个数字字符但是有括号的现象,如"(1)",这时候我想用正则表达式,使用String类的repalceAll()方法来覆盖这种情况。但是,我发现要用正则表达式来匹配"([0-9]+)"老是失败,程序直接把引号里面的字符串作为匹配的对象,而没有发挥[]和+的作用。
- 问题一解决方案:在不断地摸索之下,我忽然想到,会不会是因为在正则表达式内使用括号需要用转义符号来表示呢?于是我尝试着在括号的前面加上了\,如图:
然后发现成功了。
- 问题二:问题二刚好就是我为什么要把除法也给归到第二周的分数的原因。设想一下,如果产生一个算式
2%3+1
(这里%是除号),那么得到的结果也是分数,即这个算式跟2/3+1
是一样的。 - 问题二解决方案:所以我把除法也给归到下一周的内容上去了。
- 问题三:本周内容有一点不足就是没有加括号,加括号得考虑到很多因素(因为括号不能生成在算式两边,不能生成单边括号,还需要优先进行运算)
- 问题三解决方案:我已经对于括号的应用有思路了,下周我会开始尝试,一定要尽力弄出括号。
点评伙伴
本周的合作是基于上周的基础上的。随着合作的次数增加,我和队友的配合也越来越好了,因此结队编程的效率有了不少提升,关键的一点是现在两个人如果意见上有什么不统一也比较敢于发表出来,这样很有利于我们的思考。
这次我的队友表现也很好~能和我共同学习一起进步~希望今后能够一直合作下去。
结队编程照片:
原文地址:https://www.cnblogs.com/zhuwenyuan/p/8909465.html
时间: 2024-08-14 00:28:48