|
|
|
@ -1,7 +1,11 @@
|
|
|
|
|
import java.util.Scanner;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 系统界面
|
|
|
|
|
*/
|
|
|
|
|
public class ExamSystem {
|
|
|
|
|
private final Scanner scanner = new Scanner(System.in);
|
|
|
|
|
|
|
|
|
|
public Users login() {
|
|
|
|
|
Users users = null;
|
|
|
|
|
while (users == null) {
|
|
|
|
@ -22,42 +26,57 @@ public class ExamSystem {
|
|
|
|
|
public void generateProblems(Users users) {
|
|
|
|
|
while (true) {
|
|
|
|
|
String input = scanner.nextLine().trim();
|
|
|
|
|
if (input.equals("-1")) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (input.equals("-1")) break;
|
|
|
|
|
|
|
|
|
|
ProblemsGenerator generator = switch (users.getType()) {
|
|
|
|
|
case "小学" -> new PrimaryProblem();
|
|
|
|
|
case "初中" -> new JuniorProblem();
|
|
|
|
|
case "高中" -> new SeniorProblem();
|
|
|
|
|
default -> null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (input.startsWith("切换为")) {
|
|
|
|
|
String target = input.replace("切换为", "");
|
|
|
|
|
if (target.equals("小学") || target.equals("初中") || target.equals("高中")) {
|
|
|
|
|
users = new Users(users.getName(), users.getPassword(), target);
|
|
|
|
|
System.out.print("系统提示:准备生成" + users.getType()
|
|
|
|
|
+ "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):");
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("请输入小学、初中和高中三个选项中的一个");
|
|
|
|
|
}
|
|
|
|
|
Users newUsers = handleSwitchType(input, users);
|
|
|
|
|
if (newUsers != null) {
|
|
|
|
|
users = newUsers;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
int num = Integer.parseInt(input);
|
|
|
|
|
if (num >= 10 && num <= 30 && generator != null) {
|
|
|
|
|
Generator.generate(users, num, generator);
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("请输入 10-30 之间的数字");
|
|
|
|
|
}
|
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
|
System.out.println("请输入小学、初中和高中三个选项中的一个");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
System.out.print("准备生成" + users.getType()
|
|
|
|
|
ProblemsGenerator generator = getGenerator(users.getType());
|
|
|
|
|
handleGenerate(input, users, generator);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ProblemsGenerator getGenerator(String type) {
|
|
|
|
|
return switch (type) {
|
|
|
|
|
case "小学" -> new PrimaryProblem();
|
|
|
|
|
case "初中" -> new JuniorProblem();
|
|
|
|
|
case "高中" -> new SeniorProblem();
|
|
|
|
|
default -> null;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Users handleSwitchType(String input, Users users) {
|
|
|
|
|
if (!input.startsWith("切换为")) return null;
|
|
|
|
|
|
|
|
|
|
String target = input.replace("切换为", "");
|
|
|
|
|
if (target.equals("小学") || target.equals("初中") || target.equals("高中")) {
|
|
|
|
|
Users newUsers = new Users(users.getName(), users.getPassword(), target);
|
|
|
|
|
System.out.print("系统提示:准备生成" + newUsers.getType()
|
|
|
|
|
+ "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):");
|
|
|
|
|
return newUsers;
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("请输入小学、初中和高中三个选项中的一个");
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void handleGenerate(String input, Users users, ProblemsGenerator generator) {
|
|
|
|
|
try {
|
|
|
|
|
int num = Integer.parseInt(input);
|
|
|
|
|
if (num >= 10 && num <= 30 && generator != null) {
|
|
|
|
|
Generator.generate(users, num, generator);
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("请输入 10-30 之间的数字");
|
|
|
|
|
}
|
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
|
System.out.println("请输入小学、初中和高中三个选项中的一个");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
System.out.print("准备生成" + users.getType()
|
|
|
|
|
+ "数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|