You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.9 KiB
154 lines
3.9 KiB
package model;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 用户管理类
|
|
* 负责用户注册、登录、密码修改等功能
|
|
*/
|
|
public class UserManager {
|
|
private static final Map<String, UserInfo> users = new HashMap<>();
|
|
private static final Map<String, String> 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;
|
|
}
|
|
}
|
|
} |