4 #5

Merged
hnu202326010307 merged 1 commits from develop into main 4 days ago

@ -1,14 +1,12 @@
package src;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class App {
private static final Scanner scanner = new Scanner(System.in);
private static final Map<String, User> users = User.getPresetUsers();
private static final FileManager fileManager = new FileManager();
private static final FileManager FILE_MANAGER = new FileManager();
private static QuestionGenerator currentGenerator;
private static String currentUsername;
@ -38,21 +36,19 @@ public class App {
System.out.println("当前选择为 " + userType + " 出题");
// 加载已存在的题目用于查重
Set<String> existingQuestions = fileManager.loadExistingQuestions(currentUsername);
Set<String> existingQuestions = FILE_MANAGER.loadExistingQuestions(currentUsername);
for (String question : existingQuestions) {
currentGenerator.addToGenerated(question);
}
// 主循环
boolean stayLoggedIn = true;
while (stayLoggedIn) {
while (true) {
System.out.println("\n准备生成 " + currentGenerator.getCurrentType()
+ " 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录");
String input = scanner.nextLine().trim();
if (input.equals("-1")) {
stayLoggedIn = false;
System.out.println("退出当前用户...");
break;
}
@ -81,7 +77,7 @@ public class App {
private static User login() {
while (true) {
System.out.println("\n请输入用户名和密码用空格隔开");
System.out.println("如果需要注册新用户,请输入'register'");
System.out.println("如果需要注册新用户,请输入'注册'");
System.out.println("如果需要退出程序,请输入'-1'");
String input = scanner.nextLine();
String[] credentials = input.split("\\s+");
@ -92,7 +88,7 @@ public class App {
}
// 处理注册请求
if (credentials[0].equalsIgnoreCase("register")) {
if (credentials[0].equalsIgnoreCase("注册")) {
handleRegistration();
continue;
}
@ -226,7 +222,7 @@ public class App {
}
// 重新加载已存在的题目用于查重
Set<String> existingQuestions = fileManager.loadExistingQuestions(currentUsername);
Set<String> existingQuestions = FILE_MANAGER.loadExistingQuestions(currentUsername);
for (String question : existingQuestions) {
currentGenerator.addToGenerated(question);
}
@ -246,7 +242,7 @@ public class App {
}
try {
fileManager.saveQuestions(currentUsername, questions);
FILE_MANAGER.saveQuestions(currentUsername, questions);
System.out.println("题目生成完成!");
} catch (Exception e) {
System.out.println("保存文件时出错: " + e.getMessage());

@ -77,7 +77,7 @@ public class FileManager {
StringBuilder questionBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
if (line.trim().isEmpty()) {
if (questionBuilder.length() > 0) {
if (!questionBuilder.isEmpty()) {
// 移除题号
String question = questionBuilder.toString().replaceAll("^\\d+\\.\\s*", "");
existingQuestions.add(question.trim());
@ -88,7 +88,7 @@ public class FileManager {
}
}
// 处理最后一个题目
if (questionBuilder.length() > 0) {
if (!questionBuilder.isEmpty()) {
String question = questionBuilder.toString().replaceAll("^\\d+\\.\\s*", "");
existingQuestions.add(question.trim());
}

@ -23,7 +23,7 @@ public class HighSchoolGenerator extends QuestionGenerator {
private String generateSingleQuestion() {
int operatorCount = generateOperatorCount();
StringBuilder questionBuilder = new StringBuilder();
boolean hasTrigFunction = false;
boolean hasTrigFunction;
// 生成第一个操作数或三角函数
hasTrigFunction = processFirstOperandOrTrig(questionBuilder);

@ -23,7 +23,7 @@ public class MiddleSchoolGenerator extends QuestionGenerator {
private String generateSingleQuestion() {
int operatorCount = generateOperatorCount();
StringBuilder questionBuilder = new StringBuilder();
boolean hasAdvancedOperator = false;
boolean hasAdvancedOperator;
// 生成第一个操作数
int firstOperand = generateOperand();

@ -21,11 +21,11 @@ public abstract class QuestionGenerator {
// 生成操作符数量
protected int generateOperatorCount() {
return random.nextInt(5) + 1; // 1-5个操作符
return random.nextInt(5); // 1-5个操作符
}
protected int generateOperatorCount_one() {
return random.nextInt(4) + 2; // 2-5个操作符
return random.nextInt(4) + 1; // 2-5个操作符
}
// 检查题目是否重复
@ -45,10 +45,4 @@ public abstract class QuestionGenerator {
public String getCurrentType() {
return currentType;
}
// // 设置当前类型
// public void setCurrentType(String type) {
// this.currentType = type;
// this.generatedQuestions.clear(); // 切换类型时清空已生成题目
// }
}
Loading…
Cancel
Save