diff --git a/src/Login.java b/src/Login.java new file mode 100644 index 0000000..54dd768 --- /dev/null +++ b/src/Login.java @@ -0,0 +1,133 @@ +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() { + 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 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 "未知"; + } + } + +}