package model; import java.util.HashMap; import java.util.Map; /** * 用户管理类 * 负责用户注册、登录、密码修改等功能 */ public class UserManager { private static final Map users = new HashMap<>(); private static final Map usernameToEmail = new HashMap<>(); // 用于检查用户名唯一性 /** * 用户注册 * * @param email 用户邮箱 * @param password 密码 * @param gradeType 年级类型 * @param username 用户名 * @return 注册是否成功 */ public boolean register(String email, String password, GradeType gradeType, String username) { if (users.containsKey(email) || usernameToEmail.containsKey(username)) { return false; } users.put(email, new UserInfo(email, password, gradeType, username)); usernameToEmail.put(username, email); return true; } /** * 用户登录 * * @param email 用户邮箱 * @param password 密码 * @return 用户信息对象,登录失败返回null */ public UserInfo login(String email, String password) { UserInfo user = users.get(email); if (user == null || !user.getPassword().equals(password)) { return null; } return user; } /** * 检查用户是否存在 * * @param email 用户邮箱 * @return 用户是否存在 */ public boolean userExists(String email) { return users.containsKey(email); } /** * 检查用户名是否存在 * * @param username 用户名 * @return 用户名是否存在 */ public boolean usernameExists(String username) { return usernameToEmail.containsKey(username); } /** * 修改密码 * * @param email 用户邮箱 * @param oldPassword 原密码 * @param newPassword 新密码 * @return 修改是否成功 */ public boolean changePassword(String email, String oldPassword, String newPassword) { UserInfo user = users.get(email); if (user == null || !user.getPassword().equals(oldPassword)) { return false; } user.setPassword(newPassword); return true; } /** * 内部类:用户信息 */ public static class UserInfo { private final String email; private String password; private final GradeType gradeType; private final String username; /** * 构造用户信息 * * @param email 邮箱 * @param password 密码 * @param gradeType 年级类型 * @param username 用户名 */ public UserInfo(String email, String password, GradeType gradeType, String username) { this.email = email; this.password = password; this.gradeType = gradeType; this.username = username; } /** * 获取邮箱 * * @return 邮箱 */ public String getEmail() { return email; } /** * 获取密码 * * @return 密码 */ public String getPassword() { return password; } /** * 设置密码 * * @param password 新密码 */ public void setPassword(String password) { this.password = password; } /** * 获取年级类型 * * @return 年级类型 */ public GradeType getGradeType() { return gradeType; } /** * 获取用户名 * * @return 用户名 */ public String getUsername() { return username; } } }