基于Python自动生成小学四则运算题目的命令行程序(软工第二次作业)
基于Python自动生成小学四则运算题目的命令行程序
目录
Part one 作业地址、Github链接与成员情况
| 这个作业属于哪个课程 | 软件工程 |
|---|---|
| 作业要求 | 结对编程 |
| 作业目标 | 熟悉结对编程的流程和工作方式,实现一个自动生成小学四则运算题目的命令行程序 |
| GitHub链接 | GitHub地址 |
| 成员情况 | 3118005392 张天 3118005401 曾广宁 |
Part two PSP表格
| *PSP2.1* | *Personal Software Process Stages* | *预估耗时(分钟)* | *实际耗时(分钟)* |
|---|---|---|---|
| Planning | 计划 | 40 | 40 |
| · Estimate | · 估计这个任务需要多少时间 | 40 | 40 |
| Development | 开发 | 660 | 800 |
| · Analysis | · 需求分析 (包括学习新技术) | 150 | 200 |
| · Design Spec | · 生成设计文档 | 50 | 50 |
| · Design Review | · 设计复审 (和同事审核设计文档) | 40 | 50 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 100 | 150 |
| · Design | · 具体设计 | 50 | 60 |
| · Coding | · 具体编码 | 210 | 200 |
| · Code Review | · 代码复审 | 30 | 40 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 50 |
| Reporting | 报告 | 90 | 120 |
| · Test Report | · 测试报告 | 30 | 40 |
| · Size Measurement | · 计算工作量 | 30 | 40 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 40 |
| 合计 | 790 | 960 |
Part three 计算模块接口的设计与实现过程
整体程序流程图

算法思想介绍
1.Calculate:用于实现加减乘除运算,以及数字大小的比较

2.Dofrac:用于检查答案,随机创建分数,求最大公约数,生成算式并求得计算结果

3.Fraction:用于生成分数与分数化简,转化为近似的分数,判断结果是否为带分数,不是带分数则化为带分数

4.Generator:主类,生成主界面

Part four 效能分析与代码优化
效能分析

时间分配分析:由于上述代码中调用库函数较多,所以在输出以及运算输入的时候花费的时间较长。

效能分析:由上图可以得知,因为调用库函数较多,算法运行的比较慢,导致结果计算时间过长。
代码优化
由上述的效能分析图可以得知,代码调用库函数较多导致运行的速度过慢,主要在于三个方面:random生成随机数,运算符号的生成,以及运算结果的生成,因此我们查询资料,可以利用二叉树进行优化,以下是我们的优化代码:

括号运算优化
添加括号进行运算时,需要考虑到里面的算式是否会重复,具体代码实现如下:

Part five 实现过程&关键代码
关键函数
清空上一次的数据

生成算式

写入题目到txt文档中

写入答案到txt文档中

Part six 测试运行
测试一分析
写入测试的题目以及最大数值


测试题目的结果以及错误题目分析

测试二分析
写入测试的题目以及最大数值


测试题目的结果以及错误题目分析

Part seven 项目小结
两个人在一起探讨比一个人独自研究要快很多,效率会提高很多,有时候一个人自己看不到的问题,另一个人可以比较清晰地看出来并及时地提醒指出,有什么不懂的地方就可以找百度和书本。两个人从没有头绪开始,慢慢地找到了解决问题的正确方向,这个看起来很简单的项目,对于首次尝试结对编程的我们来说,是个不小的挑战,这也证明了我们的水平还有待提高。
Part eight 参考文献
1.二叉树计算四则运算表达式 https://blog.csdn.net/benweizhu/article/details/7730473
2.Python 简单实现数学四则运算 https://blog.csdn.net/sinat_38682860/article/details/98105092
3.python 根据运算符实现四则运算 https://blog.csdn.net/zachzhan_g/article/details/81784827

浙公网安备 33010602011771号