结对项目:用Python实现自动生成小学四则运算题目的程序
Python实现四则运算程序
| 软件工程 | 计科21级1.2班 |
|---|---|
| 作业要求 | https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016 |
| 作业目标 | 完成结对项目:四则运算 ; 熟悉团队协作的方法和模式 |
github链接:https://github.com/howdnb/howdnb
项目成员信息
| 姓名 | 学号 |
|---|---|
| 刘升嘉 | 3121004833 |
| 谭艺豪 | 3121004837 |
PSP表格
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 45 | 60 |
| · Estimate | · 估计这个任务需要多少时间 | 1385 | 1620 |
| Development | 开发 | 240 | 210 |
| · Analysis | · 需求分析 (包括学习新技术) | 400 | 300 |
| · Design Spec | · 生成设计文档 | 30 | 50 |
| · Design Review | · 设计复审 | 15 | 10 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
| · Design | · 具体设计 | 200 | 300 |
| · Coding | · 具体编码 | 300 | 500 |
| · Code Review | · 代码复审 | 20 | 10 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 100 |
| Reporting | 报告 | 30 | 20 |
| · Test Repor | · 测试报告 | 40 | 10 |
| · Size Measurement | · 计算工作量 | 10 | 30 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 5 | 10 |
| Total | 总计 | 1385 | 1620 |
程序实现
一.具体设计

-
程序流程图
-总体可分为三个功能:生成题目、计算结果、文件读写
![]()
-
生成题目:
(1)随机生成题目,包括运算符、数字等
(2)随机生成括号插入题目中
(3)检查重复题目,将其去除 -
计算结果:
(1)将中缀表达式转为后缀表达式
(2)使用后缀表达式进行计算,同时过滤掉不符合要求的题目 -
文件读写:
(1)将用户输入结果写入文件
(2)将题目与计算结果写入文件
(3)读出用户输入结果与计算结果并进行比对,将比对结果写入至文件
代码说明
-
使用此函数随机生成算式中数字与符号,包括整数与分数(处理为真分数)
![]()
-
随机生成括号插入
![]()
-
检查重复算式
![]()
![]()
-
使用此函数将中缀表达式转换为后缀表达式,提高计算效率

- 通过分割flag将带分数转换为假分数,并使用Fraction库使得分数间可直接进行计算

- 使用re库结合正则表达式将答案从文件中提取出来,并将两者进行比对,得出结果

二.性能分析
- 通过观察主函数各行代码热力值可发现,函数calculate()所占时间最多

- 观察calculate()函数各行代码热力值可发现,主要是在输入答案时耗时较多,并不影响程序进程

-
代码检查
-
通过pycharm自带工具进行检查发现,程序仅存在拼写问题,对程序运行并无影响

-
代码覆盖率
-
使用coverage库生成coverage report,未覆盖的为条件判断

三.测试运行
-
命令行中运行程序
![]()
-
结果输入至文件中

异常处理
- 传入题目为空

- 输入参数错误

项目总结
通过紧密合作,我们两人完成了此次结对项目
-
项目分工
- 刘升嘉:编写题目生成以及题目查重部份的程序
- 谭艺豪:编写题目计算以及答案对比部份的程序
-
项目收获
- 更加清楚地认识到了团队协作的具体过程
- 明白了在完成团队项目时,要积极沟通,了解对方进度,共同讨论该如何实现整个程序
- 在个人编写遇到问题时,可以询问对方建议,合作完成整个项目






浙公网安备 33010602011771号