结对项目
结对项目
班级 | 19网34 |
---|---|
作业要求 | 作业要求 |
作业目标 | 实现一个自动生成小学四则运算题目的命令行程序,可以控制生成题目的个数和题目中数值的范围,以及支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计。 |
陈浩芝3119005364
郑耿松3119005396
Github地址
一. PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 810 | 770 |
Estimate | 估计这个任务需要多少时间 | ||
Development | 开发 | ||
Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | ||
Design Review | 设计复审 (和同事审核设计文档) | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 40 | 20 |
Design | 具体设计 | 60 | 40 |
Coding | 具体编码 | 360 | 420 |
Code Review | 代码复审 | 120 | 80 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 50 |
Reporting | 报告 | 30 | 40 |
Test Report | 测试报告 | ||
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 10 |
合计 | 810 | 770 |
二.设计
主要的类
1.ExerciseCreate类用于输入参数,其中args[0],args[1]为两个参数。
2.Exercise类的exercise()方法用于生成题目文档和答案文档,被ExerciseCreate类调用。
3.ExerciseCheck类用于校对答案,其中args[0],args[1]为两个参数。
流程图如下:
三.代码设计
1.这一块代码实现了生成一道题目的过程,其中hash存储以往的式子,若生成重复的算式则重新生成。
2.运用数学知识,整数可以看做分子为1的分数,将所有算数都当成分数计算,于是通过对符号的分类可以得到一个最终为分数的答案,此代码块可算出答案的分子与分母,再通过一个约分方法yuefen()得到最终的答案。
3.通过readline()方法读取两个文件的每一行,通过replaceAll()方法去掉空格后进行比较,将正确和错误的题目序号分别存储到两个list数组,就可以输出正确题目和错误题目了。
四.测试
输出10000道题目
校对题目答案
五.性能分析
六.项目总结
陈浩芝:通过本次结对项目的练习我体会到有同伴的好处,当有地方不懂时可以互相沟通解决。本次项目我负责算式出题这一块,一开始在网上找资料,发现了一个外部包可以直接算出字符串的算式,兴冲冲的就用了,结果发现算出来的结果只有整数部分,不能表示为分数,只能重新思考,最后我想到整数可以看做分子为1的分数,只要将每个数都看成分数就容易求解了。最后不断改进,形成了一个尚且可行的项目。
郑耿松:这次我负责的是答案校对这一部分内容,在找到文档每一行是一个答案的特点后,我通过readline()这个方法读取exercisefile.txt和answer.txt的每一行进行比较,这样就能找出exercisefile.txt中哪些题目答案正确,哪些错误了。