结对作业
这个作业属于哪个课程 | 软工4班 |
---|---|
这个给作业要求在哪里 | 作业的要求 |
姓名:党威龙
学号:3122004474
姓名:陈焕豪
学号:3122004472
GitHub地址链接
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 46 |
-Estimate | -估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 500 | 524 |
-Analysis | -需求分析 (包括学习新技术) | 100 | 156 |
-Design Spec | -生成设计文档 | 20 | 15 |
-Design Review | -设计复审 | 10 | 10 |
-Coding Standard | -代码规范 (为目前的开发制定合适的规范) | 5 | 5 |
-Design | -具体设计 | 60 | 55 |
-Coding | -具体编码 | 150 | 140 |
-Code Review | -代码复审 | 20 | 20 |
-Test | -测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | 30 | 30 |
-Test Repor | -测试报告 | 15 | 15 |
-Size Measurement | -计算工作量 | 10 | 15 |
-Postmortem & Process Improvement Plan | -事后总结, 并提出过程改进计划 | 10 | 10 |
All | 合计 | 1020 | 1081 |
测试运行
范例1
范例2
范例3
范例4
范例5
代码说明
- main(String[] args): 主函数,程序的入口。从用户处获取题目数量和范围,然后生成题目及答案并写入文件。
点击查看代码
public static void main(String[] args) {`
int numberOfExercises = getNumberOfExercisesFromUser(); // 从用户输入获取题目数量
int range = getRangeFromUser(); // 从用户输入获取范围
// 获取文件夹路径
String directory = "C:\\Users\\Administrator\\IdeaProjects\\_4ze_timu_shengcheng\\ceshiyongli"; // 修改为你想要存储文件的路径
// 获取文件名
String exerciseFileName = "Exercises";
String answerFileName = "Answers";
int fileIndex = 1;
String exerciseFile;
String answerFile;
do {
exerciseFile = directory + File.separator + exerciseFileName + fileIndex + ".txt";
answerFile = directory + File.separator + answerFileName + fileIndex + ".txt";
fileIndex++;
} while (fileExists(exerciseFile) || fileExists(answerFile));
// 生成题目并写入文件
generateExercisesAndAnswers(numberOfExercises, range, exerciseFile, answerFile);
System.out.println("Exercises and answers generated successfully.");
}
- getNumberOfExercisesFromUser(): 从用户处获取题目数量。
点击查看代码
private static int getNumberOfExercisesFromUser() {
System.out.println("Enter the number of exercises:");
return scanner.nextInt();
}
- getRangeFromUser(): 从用户处获取题目范围。
点击查看代码
private static int getRangeFromUser() {
System.out.println("Enter the range:");
return scanner.nextInt();
}
- generateExercisesAndAnswers(): 根据给定的数量和范围,生成指定数量的四则运算题目并写入文件中,并同时生成答案并写入另一个文件中。
点击查看代码
private static void generateExercisesAndAnswers(int numberOfExercises, int range, String exerciseFileName, String answerFileName) {
try (PrintWriter exerciseWriter = new PrintWriter(new FileWriter(exerciseFileName));
PrintWriter answerWriter = new PrintWriter(new FileWriter(answerFileName))) {
for (int i = 1; i <= numberOfExercises; i++) {
String expression = generateExpression(range);
String answer = calculateAnswer(expression);
exerciseWriter.println("四则运算题目" + i + ": " + expression);
answerWriter.println("答案" + i + ": " + answer);
}
} catch (IOException e) {
e.printStackTrace();
}
}
- generateExpression(int range): 根据指定的范围生成一个四则运算表达式,其中包含两个操作数和一个操作符。
点击查看代码
private static String generateExpression(int range) {
int num1 = RANDOM.nextInt(range) + 1;
int num2 = RANDOM.nextInt(range) + 1;
char operator = OPERATORS[RANDOM.nextInt(OPERATORS.length)];
// 避免产生负数
if (operator == '-' && num1 < num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
// 避免产生除不尽的情况
if (operator == '÷') {
num2 = RANDOM.nextInt(Math.min(range, num1 - 1)) + 1;
}
return num1 + " " + operator + " " + num2;
}
- calculateAnswer(String expression): 根据给定的四则运算表达式计算出其结果。
点击查看代码
private static String calculateAnswer(String expression) {
String[] tokens = expression.split(" ");
int num1 = Integer.parseInt(tokens[0]);
int num2 = Integer.parseInt(tokens[2]);
char operator = tokens[1].charAt(0);
int result = 0;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '×':
result = num1 * num2;
break;
case '÷':
result = num1 / num2;
break;
}
return String.valueOf(result);
}
- fileExists(String filePath): 检查给定路径的文件是否存在
点击查看代码
private static boolean fileExists(String filePath) {
File file = new File(filePath);
return file.exists();
}
项目小结
第一次做此类型的合作项目,面临前所未有的挑战,但也收获颇多,很多方面存在不足,希望吸取这次受到的教训,下次要做的更好