选题:项目2 - 四则运算题目生成
参见 My Github:https://github.com/1773262526/Software-Foundation/tree/master/doublework
一、PSP表格
Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
计划 | 30 | 30 |
估计这个任务需要多少时间 | ||
开发 | 120 | 60 |
需求分析(包括学习新技术) | 150 | 180 |
生成设计文档 | 120 | 120 |
设计复审(和同事审核设计文档) | 60 | 60 |
代码规范 | 60 | 30 |
具体设计 | 90 | 90 |
具体编码 | 1440 | 1200 |
代码复审 | 120 | 180 |
测试 | 300 | 600 |
报告 | 120 | 180 |
测试报告 | 90 | 120 |
计算工作量 | 30 | 30 |
事后总结,并提出过程改进计划 | 45 | 30 |
合计 | 2775 | 2910 |
二、改进历程
- 最初选定这个题目,首先是因为对于求解算式,可以使用python中z3约束求解器,实现以简洁的代码,迅速实现对算式的求解。
- 经过同学的建议,我们放弃了使用python的第三方库,转而使用C++自行构造类和相关函数,使用栈完成对算式的解析和计算。
- 最初我们计划全部采用浮点数进行运算,最后通过遍历分子分母,找到最接近的解,确定最终结果。
- 最终抛弃了近似计算法,而是新建了分时fraction类,实现了对分数运算的符号重载,能够直接进行分数类型数据之间、和整数的直接运算。最后直接得到结果的分子分母。
三、学习感悟
- 这是第一次采用C++类的方法解决问题,之前一直都是使用STL库,调用各种函数,通过这次实践,我们都进一步熟悉了C++中类的使用方法,体验了面向对象编程的“对象”的含义。
- 在最初的计划中,我打算使用python进行算式的求解,python编译成exe程序之后,在C++中实现调用外部exe,而z3库对Windows系统的支持不是很完善,所以一直在linux下进行测试。
- 对linux基本操作有了一定的了解。
- 学习了使用system函数实现C++调用外部exe程序并得到返回值。