结对项目
结对项目
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11148 |
| 这个作业的目标 | 学习使用PSP表格、学习测试规范、实现一个自动生成小学四则运算题目的命令行程序 |
结对CP
| 姓名 | 学号 | GitHub仓库地址 |
| ---- | ---- | ---- | ---- | ---- |
| 甘炜妮 | 3218005308 | https://github.com/Adorkble/AdorkableWN |
| 莫景茹 | 3218005310 | https://github.com/hippo657 |
PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 20 | 20 |
| · Estimate | · 估计这个任务需要多少时间 | 20 | 20 |
| Development | 开发 | 520 | 620 |
| · Analysis | · 需求分析 (包括学习新技术) | 60 | 60 |
| · Design Spec | · 生成设计文档 | 30 | 30 |
| · Design Review | · 设计复审 | 30 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
| · Design | · 具体设计 | 30 | 50 |
| · Coding | · 具体编码 | 240 | 300 |
| · Code Review | · 代码复审 | 60 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 40 | 60 |
| Reporting | 报告 | 60 | 60 |
| · Test Report | · 测试报告 | 30 | 30 |
| · Size Measurement | · 计算工作量 | 10 | 10 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 20 |
| Total | · 合计 | 600 | 700 |
性能分析
1、各数据类型占用内存

2、CPU占用频率

3、消耗最大的函数

设计与实现过程
1、工程结构

2、算法原理
随机生成四个数值组成两个分数——>对分数进行约分——>判断分数是否为假分数并将假分数化为带分数——>随机生成运算式——>判断该运算式是否重复——>重复则重新生成——>将题目写入文件Exercises.txt——>写出题目并将答案写入文件Answers. txt——>读入一个学生答案文件与文件Answers. txt对比判断对错并将评判结果输出到文件Grade. txt
3、程序流程图
- 类图
![]()
其中类ProductHomework封装的ReductionFraction()以及expression()方法具体如下:
- ReductionFraction()方法:对分数进行约分

- expression()方法:判断是否为假分数并将假分数化为带分数

- 流程图
- ProductExercise:生成题目并把题目写出到目录下Exercises.txt

- Readfile:将标准答案与学生答案对比并生成Grade.txt

- CheckRepetition:判断程序一次运行生成的题目是否重复

4、运行结果
- 生成题目

- 标准答案

- 学生答案

- 得分情况

- 程序能支持10000道题目的生成

关键代码





测试运行
1、命令行测试
- ProductHomework.jar

- Comparation.jar

2、单元测试
- ProductHomework类单元测试

- Comparation类单元测试

3、测试覆盖率





异常处理说明
- 输入参数错误(参数格式错误)

项目小结
- 每道题目只实现了单个运算符。
- 查重原理:简单地建立一个存放题库的容器,判断生成的题目是否存在该容器里,若是则将该题目和该题目中的两个数值左右位置变换后的运算式同时存放到该容器中,反之则重新生成题目。
- Java、数据结构基础不扎实导致交流学习过程比较吃力。
- 一开始分工的不明确导致浪费了很多不必要的时间,两人磨合花费的时间也比较多,并且开发过程中两人有很多的观点看法等都不一致,讨论花费的时间也比较多。
- 要明确分工合作,多交流、多分享自己的观点看法等,或许在分享交流的时候可以收获不一样的惊喜。在这次结对项目中通过代码的形式来进行人与人之间的交流,提高了团队协作能力和交流沟通的能力,同时促使自身的编程能力不断提高。希望以后通过学习可以实现多个运算符混合的运算式的生成以及实现运算式的查重功能。


浙公网安备 33010602011771号