From fee2ec55d565cddeb4617692dfb23549368bc837 Mon Sep 17 00:00:00 2001 From: hnu202326010305 <1405671544@qq.com> Date: Sun, 28 Sep 2025 00:56:12 +0800 Subject: [PATCH] Update ExamSystem.java --- src/ExamSystem.java | 81 ++++++++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 31 deletions(-) diff --git a/src/ExamSystem.java b/src/ExamSystem.java index f307a25..c87489a 100644 --- a/src/ExamSystem.java +++ b/src/ExamSystem.java @@ -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将退出当前用户,重新登录):"); + } + }