import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Login { private static final String USER_FILE = "users.txt"; private static List users = new ArrayList<>(); public void Main() { initializeUserFile(); load(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("\n---------登录系统---------"); System.out.println("请输入用户名和密码(用空格隔开): "); String input = scanner.nextLine().trim(); if (input.equalsIgnoreCase("q")) { System.out.println("\n已退出!"); break; } String[] NandP = input.split(" "); if (NandP.length != 2) { System.out.println("请输入正确的用户名和密码!"); continue; } String username = NandP[0]; String password = NandP[1]; User user = Prove(username, password); if (user != null) { Success(user, scanner); } else { System.out.println("请输入正确的用户名和密码!"); } } scanner.close(); } private static void initializeUserFile() { File file = new File(USER_FILE); if (!file.exists()) { try (PrintWriter writer = new PrintWriter(new FileWriter(file))) { writer.println("张三1 123 primary\r\n" + "张三2 123 primary\r\n" + "张三3 123 primary\r\n" + "李四1 123 junior\r\n" + "李四2 123 junior\r\n" + "李四3 123 junior\r\n" + "王五1 123 senior\r\n" + "王五2 123 senior\r\n" + "王五3 123 senior"); writer.close(); System.out.println("已创建users.txt"); } catch (IOException e) { System.out.println("创建用户文件失败: " + e.getMessage()); } } } private static void load() { users.clear(); try (BufferedReader reader = new BufferedReader(new FileReader(USER_FILE))) { String line; while ((line = reader.readLine()) != null) { line = line.trim(); if (!line.isEmpty()) { String[] parts = line.split(" "); if (parts.length == 3) { users.add(new User(parts[0], parts[1], parts[2])); } } } reader.close(); System.out.println("Loading..."); } catch (IOException e) { System.out.println("出错!" + e.getMessage()); } } private static User Prove(String username, String password) { for (User user : users) { if (user.getUsername().equals(username) && user.getPassword().equals(password)) { return user; } } return null; } private static void Success(User user, Scanner scanner) { String role = getRole(user.getRole()); System.out.println("\n登录成功!\n" + user.getUsername() + " [" + role + "]"); QuestionManager questionManager = new QuestionManager(user.getUsername(), user.getRole()); while (true) { System.out.println("\n输入 -1 退出登录,输入 q 退出程序,输入\"切换为XX\"切换难度(XX为小学、初中、高中)"); System.out.println("准备生成[" + questionManager.getCurrentRoleChinese() + "]数学题目,请输入生成题目数量(10~30):"); String input = scanner.nextLine().trim(); if (input.equals("-1")) { System.out.println("返回登录界面..."); break; } else if (input.equalsIgnoreCase("q")) { System.out.println("\n已退出!"); System.exit(0); } else if (input.startsWith("切换为")) { Switch(questionManager, input); } else { try { int count = Integer.parseInt(input); if (count >= 10 && count <= 30) { questionManager.generateQuestions(count); } else if (count == -1) { System.out.println("返回登录界面..."); break; } else { System.out.println("题目数量应在10~30之间!"); } } catch (NumberFormatException e) { System.out.println("请输入有效的数字(10~30)或指定命令!"); } } } } private static void Switch(QuestionManager questionManager, String input) { String newRole = input.substring(3).trim(); switch (newRole) { case "小学": questionManager.setRole("primary"); System.out.println("已切换为小学难度"); break; case "初中": questionManager.setRole("junior"); System.out.println("已切换为初中难度"); break; case "高中": questionManager.setRole("senior"); System.out.println("已切换为高中难度"); break; default: System.out.println("请输入小学、初中和高中三个选项中的一个"); } } private static String getRole(String role) { switch (role) { case "primary": return "小学"; case "junior": return "初中"; case "senior": return "高中"; default: return "未知"; } } }