结对项目
个人项目
| 作业所属课程 | 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

主要流程:

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

浙公网安备 33010602011771号