结对项目

个人项目

作业所属课程 https://edu.cnblogs.com/campus/gdgy/Networkengineering1834
作业要求 https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11148
这个作业的目标 队友之间相互协作,实现一个自动生成小学四则运算题目的命令行程序

一、github仓库

团队成员:吴奕琛 3118005338 谢中冰 3118005341
主页地址

二、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 50
· Estimate · 估计这个任务需要多少时间 30 10
Development 开发 610 640
· Analysis · 需求分析 (包括学习新技术) 120 160
· Design Spec · 生成设计文档 30 15
· Design Review · 设计复审 20 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 10
· Design · 具体设计 30 40
· Coding · 具体编码 240 300
· Code Review · 代码复审 10 10
· Test · 测试(自我测试,修改代码,提交修改) 30 30
Reporting 报告 60 60
· Test Repor · 测试报告 40 40
· Size Measurement · 计算工作量 30 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40 20
· 合计 700 700

三、核心算法

逆波兰表达式:

首先通过二叉树储存四则运算式子,如下图:

后缀表达式又叫做逆波兰式。它是由相应的语法树的后序遍历的结果得到的。上图的后缀表达式为:A B C D - * + E F * -

例如后缀表达式3 4 + 5 × 6 -的计算
1.从左至右扫描,将3和4压入堆栈;
2.遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素,注意与前缀表达式做比较),计算出3+4的值,得7,再将7入栈;
3.将5入栈;
4.接下来是×运算符,因此弹出5和7,计算出7×5=35,将35入栈;
5.将6入栈;
6.最后是-运算符,计算出35-6的值,即29,由此得出最终结果。

四、效能分析

五、单元测试

10000道题目生成

通过命令行输出10道题目,并且数字小于10

左:题目 中:答案 右:结果统计

六、工程文件

PS:improve是改进版解决了问题1-9,main是原版解决了问题1-8,所有的类和函数都装在了一个文件内

生成四则运算式子的类


使用逆波兰表达式计算的类


具体算法同上文。

存储表达式用的Stack

主要流程:

七、工作总结

这次是一次团队合作,我们两个之前从来都没有进行过类似的任务,都是各干各的。这次任务一开始,我们先去查找资料,先确定这个问题的解决方向就是通过逆波兰表达式去做,然后分工合作,一个人主要负责学习逆波兰表达式,另一个人主要负责算术式子的生成。其中磕磕绊绊,还算顺利,应该还要归功于我们一开始方向就定的正确,没有走上什么歪路,并且分配任务也很明确。这次任务也是初尝团队合作,最大的感受就是一定要分工明确,确定好方向很重要,可以少走很多弯路。

posted @ 2020-10-12 21:54  Tonispock  阅读(119)  评论(0)    收藏  举报