结对项目

作业信息

课程信息

作业目标

完成结对项目,合作实现自动生成小学四则运算题目的功能,了解软件开发流程。

学生信息

姓名 学号 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

二. 效能分析

生成结果


性能概览

性能概览


三. 具体设计

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

四. 测试运行

用例运行正常


五. 项目小结

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

posted @ 2024-09-22 22:43  Rawven  阅读(20)  评论(0编辑  收藏  举报