项目成员:林剑峰3117004621 陆君健3117004624
一、Github项目地址
https://github.com/luk66666/Formula-generator
二、PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
20 |
20 |
· Estimate |
· 估计这个任务需要多少时间 |
20 |
20 |
Development |
开发 |
1090 |
1260 |
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
60 |
· Design Spec |
· 生成设计文档 |
50 |
40 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
30 |
30 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
40 |
30 |
· Design |
· 具体设计 |
60 |
60 |
· Coding |
· 具体编码 |
720 |
900 |
· Code Review |
· 代码复审 |
60 |
60 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
100 |
80 |
Reporting |
报告 |
130 |
150 |
· Test Report |
· 测试报告 |
60 |
60 |
· Size Measurement |
· 计算工作量 |
30 |
40 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
40 |
50 |
合计 |
1240 |
1430 |
三、设计实现过程
代码总共分为5大类:1、Mark类(分数) 2、Generate类(生成表达式)3、Calculator类(计算)
4、IO类 5、MyApp类(主类)
(1)、Mark类定义了针对分数运算的加减乘除方法,同时还有分数输出形式(Markprint())、分数计算分析
(analyse)以及分数计算方法的调用函数(Markcalculate)。
计算时先经过Analyse方法,然后将在Analyse方法里面调用Markcalculate方法,同时也在Markcalculate方法
里面调用分数的加减乘除方法。
(2)、Generate类 定义了一个setNum方法,用来存放用户输入的计算范围的最大值,
然后还有一个generation方法用来生成表达式
(3)、Calculator类 定义了一个calculate的方法,在calculate方法里面调用了removeSpace方法,将字符串
中的空格去掉,同时还调用了isStandard和compare方法,一个用来判断表达式是否标准,一个用来比较当前运算符与栈顶元素运算符的优先级。
同时还写了一个getResult方法。
(4)IO类 创建了setOutBufferedWriter、CreateFile、WriteToFile还有CloseOutBufferedWriter的方法
(5)MyApp类 在main方法中调用其他四个类的方法,来实现表达式的生成以及文件的建立。
四、代码说明
将输入的字符串进行分析,用contains的方法判断字符串中是加减乘除哪种运算,然后用split方法将字符串中
的运算符号除掉,再接着调用Markcalculate方法(后面0、1、2、3就是对应加减乘除四种运算),在Markcalculate
里面调用Mark类中的加减乘除方法。
用来生成表达式,在用户所输入的数字范围里面生成所需要的表达式,同时用for循环确保表达式的长度。
用栈来存放数字和符号
比较当前运算符和栈顶元素运算符之间的优先级
五、测试运行
1)用命令行运行的主界面,生成1道题,数值范围1以内,
生成10道题,数值范围10以内,
生成10000道题,数值范围100以内,
六、项目小结
这次结对项目,让我们对合作开发有了更深的认识。两个人的想法总是比一个人的想法更全面,结伴项目让我们有了更多的沟通和思想上的碰撞,在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,得到能力上的互补,不像个人项目般枯燥乏味。特别是当一方出现问题时,另一个可以协助解决,大大地提高了效率。同时我们互相监督,保持热情,不容易偷懒。