基于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

posted @ 2020-10-12 23:56  半吟  阅读(274)  评论(0编辑  收藏  举报