结对项目

项目成员:3117004631 魏建雄

                3117004623 卢悦盛

一 、Github项目地址:https://github.com/Yueson-Lu/Myapp1.0

二、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划 30 30
· Estimate · 估计这个任务需要多少时间 30  30
Development 开发  1150  1420
· Analysis · 需求分析   60  60
· Design Spec · 生成设计文档  60  70
· Design Review · 设计复审   60  50
· Coding Standard · 代码规范  50  60
· Design · 具体设计  90  100
· Coding · 具体编码(包含第一次错误的代码设计)  720  960
· Code Review · 代码复审  50  60
· Test · 测试(自我测试,修改代码,提交修改)  60  60
Reporting 报告  120  160
· Test Report · 测试报告  60  90
· Size Measurement · 计算工作量  30  30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划  30  40
合计    1300  1710

、设计实现过程

        浏览结对项目之后,我们对问题进行需求分析,主要解决题目生成、结果计算、题目判重以及文件处理4个问题。因为最多出现三个运算符,也就是实现四元运算,我们枚举出二元运算、三元运算以及四元运算,然后随机生成运算式。因为乘法、除法的优先级高于加减法,我们打算运用枚举的方式将所有的运算可能枚举出来,就不用考虑优先级运算,程序只需要匹配枚举的运算情况,然后调用方法,进行运算就能得出结果。因为不能直接对分数进行运算,我们打算程序随机生成double型参数,然后进行四则运算,然后将double转化成分数输出,但由于分数转小数会有精度的缺失(例如1/3只能转化为0.33),而且0.33转化不了1/3。题目判重我们越想越复杂,我们打算先暴力解决,运用结果判重,如果结果相同就舍去,看项目后续完成情况,再进行修改完善。我们已经解决了大部分问题,可是我们不能分数形式的题目与结果的输出,以项目要求不符,所以我们打算重新编程,一开始就生成分数,用分数去进行四则运算。

       我们打算随机生成参数与运算符生成字符串完成题目的生成。难点在于操作符的运算,我们发现了中缀转后缀的方法解析算术表达式,由于后缀表达式的运算符在两个操作数的后面,那么计算机在解析后缀表达式的时候,只需要从左向右扫描,也就是只需要向前扫描,而不用回头扫描,遇到运算符就将运算符放在前面两个操作符的中间,一直运算到最右边的运算符,那么就得出运算结果了。因为运算数可能包含的类型有整数和分数,那么就有三种运算的形式:整数和整数运算,分数和整数运算,分数和分数运算。为了方便运算,将整数也转化为分数,整数作为分子,分母设为1,这样就能将三类运算化为一类。

、 代码说明

1.从控制台传入生成题目和生成范围的参数

 

2.文件生成的方式,固定生成位置为D盘

题目和答案的名称由myapp类调用传入参数

 3.符号的生成使用了随机生成,1-4个数字平均分到加减乘除四个符号

4.处理统一分母的时候使用了辗转相除法

5.使用栈的方法处理符号的判断

 

、测试运行

1.生成100道题目:

 2.生成10000题:

、项目小结

1.第一次尝试两个人一起进行程序开发,一起进行需求分析、算法设计,发现会比一个人独自进行更为快捷有效。在遇到困难时,一起想办法解决,互相勉励,共同进步。

2.本次结对项目,我们在第一次需求分析、设计复审时,并没有那么细致,没有考虑好实现基本运算后操作数的转换,导致编程时才发现小数转分数存在问题,增加了工作量,减低了效率,浪费了很多时间。在今后的编程前,应该更加细致地做好需求分析以及算法复审,一切准备好之后,再进行具体编程,这样能够增加编程效率,节省时间。

3.由于前期浪费了挺多时间,导致我们并没有完成答案文件的校对,还有一些地方还能进行完善,例如进行图形界面的设计。

原文地址:https://www.cnblogs.com/twistww/p/11681691.html