结对项目

发布时间 2023-09-20 20:37:44作者: 今天的风真耀眼呢

汪高乐 3121005310
陈紫嫣 3221005327
github地址

1 题目:

实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)。

2 说明:

自然数:0, 1, 2, …。

  • 真分数:1/2, 1/3, 2/3, 1/4, 1’1/2, …。
  • 运算符:+, −, ×, ÷。
  • 括号:(, )。
  • 等号:=。
  • 分隔符:空格(用于四则运算符和等号前后)。
  • 算术表达式:
    e = n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e),

其中e, e1和e2为表达式,n为自然数或真分数。

  • 四则运算题目:e = ,其中e为算术表达式。

3 代码逻辑:

  • 在MyFormulaMaker生成Build和Check的对象,在输入界面输入生成算式与校对答案选项。
  • 输入生成算式个数后通过调用build对象中的build()方法,通过调用FormFormula类的构造方式生成对应算式。将生成的算式写入Exercises.txt文件中。
  • 选择校对答案选项后通过读取Answers.txt中的答案与标准答案进行对比后统计出正确率以及正确题目的序号。
  • 项目各类调用关系以及关键函数调用关系图如下:

4 代码效果展示:

主界面:

  • 测试案例中生成10个算式,题目中的数值不大于10。

生成算式如下:

结果校验如下:

Answers.txt内容如下:

Exercises.txt内容如下:

生成一万条算式的测试结果如下:

性能分析图如下:


  • 可以看出此次项目中对于内存的占用情况,由于生成算式的函数中涉及到诸多char的引用,以及生成StirngBuffer类对String的调用所以项目中内存消耗最多的是对字符类的调用。
  • 而cpu的负载情况则在生成100000条算式的时候达到了cpu负载的高值,而在后续的检查答案中cpu负载并没有出现峰值可知在此次项目中对cpu负载最大的部分为生成算式的部分。

关键代码如下:

  • 随机出算式中的运算符

  • 随机出算式中的数字,将小数转化为分数

  • 将运算符与数字进行拼接

5 PSP表格:

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

6 总结

在此次结对项目中深刻的感受到了团队协作的各项好处,在项目筹备阶段各种思路的完善以及碰撞对后来项目的完成起到了极大的帮助。主要体现在以下的一些体验:
1 协作与沟通:良好的沟通是合作项目成功的关键。项目中需要和队友紧密合作,共同讨论和决策,避免假设对方的意图或期望,而是积极交流并明确沟通。在锻炼了团队协作和沟通的能力,学会倾听和尊重队友的意见,并在最终的决策过程达成共识。
2 角色分工:在项目中,可以根据队友的技能和兴趣进行角色分工,例如算法实现、错误处理、结果展示等。充分发挥每个人的优势,合理分配任务,提高项目的效率和质量。
3 问题解决与学习:在项目实现过程中,会遇到各种问题和挑战。与队友一起解决问题,避免情绪化的争论,共同寻找解决方案,互相学习和成长。这也是一个学习新知识和技能的机会。
4 团队凝聚力:通过共同努力一起完成一个项目,可以增强团队的凝聚力和归属感。互相支持和鼓励,共同追求目标,为彼此的成就感到骄傲。
5 成果展示与分享:在完成这次项目之后,在其他同学寻求帮助之时,可以展示和分享自己的成果。这不仅是彼此努力的认可。也是向他人展示自己的能力和成就感到自豪。
总的来说,与队友一起完成项目是一个宝贵的机会,可以锻炼团队合作能力、解决问题的能力,并且从中获得成就感和学习经验。同时,与队友共同努力的过程也是一段难忘的合作经历,能够建立深厚的友谊和信任。