|
|
|
|
@ -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<User> 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 "未知";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|