20172305 结对编程项目-四则运算 第一周 阶段总结

20172305 结对编程项目-四则运算 第一周 阶段总结

结对编程的好丽友

  • 20172323 王禹涵:中缀转后缀
  • 20172314 方艺雯:后缀表达式的计算
  • 20172305 谭鑫:中缀表达式的输出

需求分析

  • 1.能随机生成由使用者确定的任意多道四则运算题目

  • 2.题目的难度等级可以选择,也可以选择不做混合运算。

  • 3.题目运算实现中缀表达式转为后缀表达式并计算。

  • 4.可以判断正误,并计算正确率。

  • 5.支持真分数的运算。

设计思路

无栈(方艺雯)

  • 首先要确定生成题目的数量,可以用一个循环,使用Scanner,循环次数由用户输入的数确定。
    • 算式的产生
    • 写一个类实现整数的四则运算:定义两个整数numerator和denominator,利用 int nextInt(4) 方法随机输出0123四个整数,分别代表进行加减乘除运算,然后根据随机输出实现的的运算符进行numerator和denominator的加减乘除运算。
    • 再写一个类实现分数的四则运算:利用书上的第七章RationalNumber和RationalTester类可以实现。
    • 还需要判断正误的操作,并输出成绩和正确率。再写一个类,将运算结果与用户输入的值比较,用if-else语句输出“正确”或“错误”并利用“x++”统计正确题目个数,与题目总数相除即得正确率。
    • 这种方法只是最开始的简单构思,并没有实现要求的所有功能,比如“实现中缀表达式转为后缀表达式并计算”,在老师讲完有关栈的知识后进一步构思。

有栈(方艺雯)

  • 产生式子:首先,让用户选择题目的难度等级,分别对应不同数量的数字进行运算,确定随机产生的整数的个数,定义两个整数numerator和denominator代表分子和分母。分数的产生利用书上第七章RationalNumber类和RationalTest类(也可以单独调用该方法只进行分式的计算),然后调用函数StringTokenizer将分数作为一个String型的,然后同时调用产生分数和整数混合,然后用一个hasMoreTokens方法遍历所有的数,遇到String型的提出,遇到整数型的则将其作为分子,分母为1,然后将这些数存入设立的栈1中(全为分数),然后另外设立一个栈2,利用 int nextInt(4) 方法随机输出0123四个整数(产生的数量为栈1 中数字数量减一),分别代表加减乘除运算符,将数存入栈中,然后先读取栈1的一个数字,然后读取栈2的一个运算符,然后继续读取栈1的,直到读取完所有的数。然后再将这些数输出,此时这些数都是String型的分数,返回出来字符串再用next循环,一个一个分开,分数在中缀转后缀时,2/3为一个整体,转成后缀,声称出来又是一串,分开后next出来一个分数,创建一个对象自定义以/为分隔符分开。得出结果,利用RationalNumber类的reduce和gcd方法化简,结果为真分数的话会保留分数形式,假分数的话结果为整数。
  • 判断正误:将用户输入的数字与计算机的结果比较,输出正误。如果答案是分数,分别比较分子分母来判断。
  • 统计正确率:用一个循环,当判断正误时为正确时,正确题数加一,最后总数与题目数相除可得。

UML类图(谭鑫)

遇到的困难及解决办法

  • UML类图的编写

  • 解决办法:UML类图算是编写程序的一个蓝图吧,这部分是大家商讨后,有我进行实现的,最开始没有用到栈的问题很好想,所以UML类图的编写也很简单,产生出我们组的UML类图1.0版,但是通过分析和用到栈的问题,我们又产生出一个UML类图2.0版,很不成熟,在编写产生算数式子的类的同时,进行了第三次的修改,产生出UML类图3.0版

  • 输出式子的问题

  • 解决办法:我们最先讨论的以问题是进行运算符和数字的交替进行,通过输入题目量进行在发那个发里面自动生成题目,但是在编写的过程中,我们觉得可以是题目量在产品代码中进行重复,每个题目等级下面进行产生一个式子的循环即可。通过对一个算数式子的分析,一个式子里面扣除等号,数字始终要比运算符多一个,所以,我们可以通过一个数配一个字符的方式进行循环,最后添加一个数以及等号就完成式子的整串输出了。

  • 分式的问题

  • 解决办法:对于分式,我刚开始的想法现在想想,如果那样做的话,最后肯定会被扣分的,我想分式的表示形式和两个整数的除法一样,所以在输出式子的时候,我们完全可以忽略分式的问题了。在偷偷看到别的组做的问题的时候,他们的除号用“÷”表示,所以分式的问题还得考虑。这样的话就可以很清晰的分出是整数的运算和分式的运算,同时可以进行两者的混合运算了。

结对评价

  • 王禹涵:王禹涵负责的是PSP表格的制定、代码的规范性、以及最重要的对我提出的想法进行边界性的分析,算是找不足吧!由于他负责编写的是中缀转后缀的问题,感觉比较难,所以在之前就没有有太大的任务,能够转换为后缀的大问题解决就行。
  • 方艺雯:方艺雯负责的是需求分析,就是把我们脑中想法进行编写输出,同时也负责运算后缀表达式的计算,对我们的不成条理的问题进行串接,感觉也比较难。
  • 两位同学都很给力,一直熬夜进行程序的构思,以及理解我先编出的输出式子的代码,和两位同学进行合作编写,是自己的荣幸,一起找出问题,一起解决问题。

PSP(王禹涵)

PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
Planning 计划 1 1
Estimate 估计这个任务需要多少时间 20
Development 开发 2 10
Analysis 需求分析 (包括学习新技术) 2 2
Design Spec 生成设计文档 1 1
Design Review 设计复审 (和同事审核设计文档) 0.5 2
Coding Standard 代码规范 (为目前的开发制定合适的规范) 0.5 0.5
Design 具体设计 2
Coding 具体编码 2
Code Review 代码复审 1
Test 测试(自我测试,修改代码,提交修改) 1
Reporting 报告 2
Test Report 测试报告 2
Size Measurement 计算工作量 1
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 1
posted @ 2018-05-01 20:23  三金哥  阅读(241)  评论(3编辑  收藏  举报