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,未覆盖的为条件判断
三.测试运行
-
命令行中运行程序
-
结果输入至文件中
异常处理
- 传入题目为空
- 输入参数错误
项目总结
通过紧密合作,我们两人完成了此次结对项目
-
项目分工
- 刘升嘉:编写题目生成以及题目查重部份的程序
- 谭艺豪:编写题目计算以及答案对比部份的程序
-
项目收获
- 更加清楚地认识到了团队协作的具体过程
- 明白了在完成团队项目时,要积极沟通,了解对方进度,共同讨论该如何实现整个程序
- 在个人编写遇到问题时,可以询问对方建议,合作完成整个项目