结对项目
作业信息
课程信息
- 这个作业属于哪个课程:计科22级12班
- 作业要求链接:作业要求
- 代码链接 :https://github.com/Rawven/Software-Work2
作业目标
完成结对项目,合作实现自动生成小学四则运算题目的功能,了解软件开发流程。
学生信息
| 姓名 | 学号 | GitHub 地址 | 
|---|---|---|
| 刘家辉 | 3122004443 | Rawven | 
| 吴硕 | 3122004452 | qicizaijian | 
一. PSP表格
| PSP2.1 | 预估耗时(分钟) | 实际耗时(分钟) | 
|---|---|---|
| Planning | 10 | 15 | 
| Estimate | 50 | 60 | 
| Development | 180 | 210 | 
| Analysis | 15 | 20 | 
| Design Spec | 40 | 40 | 
| Design Review | 30 | 30 | 
| Coding Standard | 10 | 10 | 
| Design | 25 | 20 | 
| Coding | 120 | 100 | 
| Code Review | 40 | 30 | 
| Test | 20 | 30 | 
| Reporting | 50 | 60 | 
| Test Report | 30 | 25 | 
| Size Measurement | 10 | 10 | 
| Postmortem & Process Improvement Plan | 30 | 30 | 
| 合计 | 660 | 690 | 
二. 效能分析
生成结果


性能概览

三. 具体设计

- ExerciseGenerator类:用于题目生成
 设计思路
 唯一性管理:使用 Set 来存储已生成的练习题,确保题目不重复,提升用户体验。
 随机性:通过 Random 生成随机数和运算符,使得每次生成的题目都具有新颖性,增加练习的趣味性。
 文件输出:设计文件写入功能以便于保存和分享生成的练习,符合用户的实际需求。
 分离逻辑:将练习题生成和评估逻辑分开,便于未来的维护和扩展(例如可以更换评估方法而不影响题目生成)。
- ExpressionEvaluator类:用于运算式解析并计算答案
 设计思路
 单一职责原则:该类专注于表达式的解析和计算,符合单一职责原则,使得代码更易于维护和理解。
 使用栈结构:栈能够有效处理运算符和操作数的优先级,有助于实现逆波兰表示法(RPN)计算,确保正确的运算顺序。
 分离标记化与计算:通过 tokenize 方法将表达式分解为标记,使得计算逻辑清晰且易于调试。这种分离使得未来可能的扩展(例如支持更多操作符)变得简单。
- AnswerEvaluator类:用于题目与答案比较并产出报告
 设计思路
 集中评估:将答案评估逻辑集中在一个类中,便于管理和扩展(例如未来可以添加更多的评估标准)。
 错误跟踪:采用列表存储正确和错误的题目索引,帮助用户快速识别需要改进的地方,提升学习效果。
 文件管理:通过读取和写入文件,将评估结果持久化,便于随时查看和分析成绩。
- Starter类:启动类
- Util类:工具类
四. 测试运行
用例运行正常


五. 项目小结
第一次通过结对编程的方式与他人合作完成一个项目,大家一起提供各自的思路并进行思路验证,最后达成了一个折中的方案,也算是圆满完成。
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号