作业3

成员 左栋立3123004294 / 蔡梓欣3123004209
仓库链接 https://github.com/A-comb-C/RJGC
这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13326
这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序

PSP表

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 40
· Estimate · 估计这个任务需要多少时间 3 1
Development 开发 120 140
· Analysis · 需求分析 (包括学习新技术) 5 5
· Design Spec · 生成设计文档 10 5
· Design Review · 设计复审 5 3
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 3 1
· Design · 具体设计 60 50
· Coding · 具体编码 20 15
· Code Review · 代码复审 5 5
· Test · 测试(自我测试,修改代码,提交修改) 20 10
Reporting 报告 5 5
· Test Repor · 测试报告 5 5
· Size Measurement · 计算工作量 3 1
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 15 15
· 合计 329 341

代码结构

├── myapp.py        # 主程序文件
├── README.md       # 项目说明文档
├── Exercises.txt   # 生成的题目文件
├── Answers.txt     # 生成的答案文件
├── Grade.txt       # 评测结果

运行方法

1. 生成题目

运行以下命令生成题目和答案文件:

python myapp.py -n <题目数量> -r <数值范围>

示例:

python myapp.py -n 10 -r 10

上述命令将生成 10 道数值范围在 0 到 9 之间的题目。

2. 评测答案

运行以下命令对比 Exercises.txtAnswers.txt,生成评分结果:

python myapp.py -e Exercises.txt -a Answers.txt

代码核心逻辑

  1. 生成题目

    • 随机生成自然数和真分数。
    • 使用递归方式生成符合规则的算术表达式。
    • 确保运算过程中不会出现负数。
    • 题目去重处理,避免生成等价题目。
  2. 计算答案

    • 解析算术表达式。
    • 计算分数加减乘除,确保格式正确。
    • 采用 fractions.Fraction 处理真分数,避免浮点数误差。
  3. 评测答案

    • 读取 Exercises.txtAnswers.txt
    • 逐行比对计算结果,记录正确与错误题目。
    • 生成 Grade.txt,格式清晰,方便查看。

测试运行



项目小结

(1)结对编程的优势
在本次结对编程中,我们深刻体会到了团队协作的优势:

思维碰撞:两个人可以提供不同的视角,发现单人开发时容易忽略的问题。
代码质量提升:在代码审查(Code Review)过程中,相互指出潜在的错误,提高代码规范性。
效率提升:任务分工后,开发速度加快,比如一个人专注 数据结构设计,另一个人专注 算法实现,提高开发效率。
(2)我们在结对中的角色分工
在实际开发过程中,我们采用了 Driver & Navigator 角色切换模式:

Driver(驾驶员) 负责编写代码,实现具体逻辑。
Navigator(领航员) 负责思考全局设计,检查代码质量,并及时提出优化建议。
我们的具体分工如下:

A 负责 Fraction、Expression、ExerciseGenerate 的核心设计,确保数据结构合理性。
B 负责 calculator 计算逻辑的实现与优化,并完成 main.cpp 入口逻辑。
这种分工让我们在开发过程中 高效合作,同时也增强了代码的一致性。

posted @ 2025-03-14 20:22  Berluga  阅读(53)  评论(0)    收藏  举报