| 所属课程 | 软件工程导论 |
|---|---|
| 作业要求 | 个人项目 |
| 作业目标 | 熟悉结对编程、完成小学四则运算题目的自动生成 |
小组成员
| 姓名 | 班级 | 学号 |
|---|---|---|
| 林劲辰 | 计科2班 | 3121004707 |
| 许庆阳 | 计科2班 | 3121004931 |
Github链接: https://github.com/HsuQingYoung/PeerWork
项目要求
1、实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)
2、程序应能支持一万道题目的生成。
3、使用 n 参数控制生成题目的个数,使用 r 参数控制题目中数值(自然数、真分数和真分数分母)的范围
4、不能出现负数,假分数,每题运算符不能超过3个
5、生成的题目存入执行程序的当前目录下的Exercises.txt文件,在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件
6、程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,统计结果输出到文件Grade.txt
1.PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 20 | 30 |
| Estimate | 估计这个任务需要多少时间 | 10 | 10 |
| Development | 开发 | 200 | 250 |
| Analysis | 需求分析 (包括学习新技术) | 80 | 80 |
| Design Spec | 生成设计文档 | 40 | 50 |
| Design Review | 设计复审 | 20 | 30 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
| Design | 具体设计 | 60 | 60 |
| Coding | 具体编码 | 150 | 180 |
| Code Review | 代码复审 | 20 | 30 |
| Test | 测试(自我测试,修改代码,提交修改) | 90 | 110 |
| Reporting | 报告 | 80 | 50 |
| Test Repor | 测试报告 | 20 | 40 |
| Size Measurement | 计算工作量 | 20 | 20 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 30 |
| 合计 | 900 | 1000 |
2.模块接口设计
2.1流程图

2.2类
| 类名 | 作用 |
|---|---|
| main | 主函数 |
| BuildFormula | 随机生成式子 |
| checkAnswer | 对照答案 |
| FileOperation | 文件相关 |
| Fraction | 表示分数 |
| GetResultFromArray | 转换分数 |
2.3函数
| 函数名 | 功能 | 归属的类 |
|---|---|---|
| generate | 随机生成公式,如果有减法,则判定减数和被减数的大小,确保计算的子过程不出现负数 | BuildFormula类 |
| addBrackets | 符合条件的话随机生成括号 | BuildFormula类 |
| check | 讲用户输入的答案与正确答案比较,正确则在后面打勾,否则打叉 | checkAnswer类 |
| writeFormulaIntoTxt | 讲生成的公式写入文件 | FileOperation类 |
| writeAnswerIntoTxt | 讲每条公式对应的答案写入文件 | FileOperation类 |
| createFraction | 根据分子分母构建分数 | Fraction类 |
| add | 分数的加操作 | Fraction类 |
| sub | 分数的减操作 | Fraction类 |
| mul | 分数的乘操作 | Fraction类 |
| div | 分数的除法操作 | Fraction类 |
| toString | 分数转换为字符串 | Fraction类 |
| calculateStringArray | 根据字符串数组中的公式将其转换为分数并计算其结果 | GetResultFromArray类 |
3代码性能分析


4单元测试展示
4.1测试代码
生成测试
点击查看代码
public class TestMain {
public static void main(String[] args) {//测试生成公式和答案
//-n 10 -r 10
int range=10;
int count=10;
BuildFormula bf=new BuildFormula(range,count);
bf.generate();
}
}
答案测试
点击查看代码
public class TestCheckAnswer {//测试校对答案
public static void main(String[] args) {
checkAnswer ca=new checkAnswer();
try {
ca.check();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.2测试结果
式子生成:

答案生成:

测试结果:成功生成式子,并且结果正确,没有出现问题。
4.3测试覆盖率
