这个作业属于哪个课程 | 结对项目 |
---|---|
这个作业要求在哪里 | 结对项目 |
这个作业的目标 | 合作完成一个自动生成小学四则运算题目的命令行程序 |
结对组合成员介绍
结对组合成员姓名 | 学号 | 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函数计算题目