这个作业属于哪个课程 | 结对项目 |
---|---|
这个作业要求在哪里 | 结对项目 |
这个作业的目标 | 合作完成一个自动生成小学四则运算题目的命令行程序 |
** |
结对组合成员介绍
结对组合成员姓名 | 学号 | GitHub项目地址 |
---|---|---|
苏清仪 | 3222004337 | GitHub项目地址 |
张易欣 | 3222004811 | GitHub项目地址 |
** | ||
** |
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 200 | 200 |
Analysis | 需求分析 (包括学习新技术) | 80 | 100 |
Design Spec | 生成设计文档 | 30 | 10 |
Design Review | 设计复审 | 20 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 60 | 60 |
Coding | 具体编码 | 100 | 100 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 80 | 300 |
Reporting | 报告 | 50 | 60 |
Test Repor | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 20 |
合计 | 760 | 990 | |
** |
开发环境
- 开发语言:Java
- 编译器:IDEA 2022.1
效能分析
设计实现过程
代码说明
generateExercises函数代码如下
private static void generateExercises() {
Random rand = new Random();
while (generatedExercises.size() < numberOfExercises) {
String exercise = generateRandomExpression(rand);
if (!generatedExercises.contains(exercise)) {
generatedExercises.add(exercise);
double answer = evaluateExpression(exercise);
answers.add(String.valueOf(answer));
}
}
}
generateExercises函数生成题目集合和答案集合,调用了generateRandomExpression函数生成随机题目,调用了evaluateExpression函数计算题目生成答案
generateRandomExpression函数代码如下
private static String generateRandomExpression(Random rand) {
String operator = OPERATORS[rand.nextInt(OPERATORS.length)];
String leftOperand;
String rightOperand;
if (operator.equals("-")) {
// 对于减法,确保左操作数 >= 右操作数,保证结果不为负数
leftOperand = rand.nextBoolean() ? generateNaturalNumber(rand) : generateProperFraction(rand);
do {
rightOperand = rand.nextBoolean() ? generateNaturalNumber(rand) : generateProperFraction(rand);
} while (parseOperand(leftOperand) < parseOperand(rightOperand));
} else {
leftOperand = rand.nextBoolean() ? generateNaturalNumber(rand) : generateProperFraction(rand);
rightOperand = rand.nextBoolean() ? generateNaturalNumber(rand) : generateProperFraction(rand);
}
return leftOperand + " " + operator + " " + rightOperand;
}
generateRandomExpression函数生成随机题目,调用了generateNaturalNumber函数生成随机自然数和generateProperFraction函数生成随机真分数
evaluateExpression函数代码如下
private static double evaluateExpression(String expression) {
String[] tokens = expression.split(" ");
double leftOperand = parseOperand(tokens[0]);
double rightOperand = parseOperand(tokens[2]);
String operator = tokens[1];
switch (operator) {
case "+":
return leftOperand + rightOperand;
case "-":
return leftOperand - rightOperand;
case "*":
return leftOperand * rightOperand;
case "/":
return leftOperand / rightOperand;
default:
throw new IllegalArgumentException("Unknown operator: " + operator);
}
}
evaluateExpression函数计算题目