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.
119 lines
2.7 KiB
119 lines
2.7 KiB
package model;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 用户管理类
|
|
* 负责用户注册、登录、密码修改等功能
|
|
*/
|
|
public class UserManager {
|
|
private static final Map<String, UserInfo> users = new HashMap<>();
|
|
|
|
/**
|
|
* 用户注册
|
|
*
|
|
* @param email 用户邮箱
|
|
* @param password 密码
|
|
* @param grade 年级类型
|
|
* @return 注册是否成功
|
|
*/
|
|
public boolean register(String email, String password, Grade grade) {
|
|
if (users.containsKey(email)) {
|
|
return false;
|
|
}
|
|
users.put(email, new UserInfo(password, grade));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 用户登录
|
|
*
|
|
* @param email 用户邮箱
|
|
* @param password 密码
|
|
* @return 年级类型,登录失败返回null
|
|
*/
|
|
public Grade login(String email, String password) {
|
|
UserInfo user = users.get(email);
|
|
if (user == null || !user.getPassword().equals(password)) {
|
|
return null;
|
|
}
|
|
return user.getGrade();
|
|
}
|
|
|
|
/**
|
|
* 检查用户是否存在
|
|
*
|
|
* @param email 用户邮箱
|
|
* @return 用户是否存在
|
|
*/
|
|
public boolean userExists(String email) {
|
|
return users.containsKey(email);
|
|
}
|
|
|
|
/**
|
|
* 修改密码
|
|
*
|
|
* @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;
|
|
}
|
|
|
|
/**
|
|
* 内部类:用户信息
|
|
*/
|
|
private static class UserInfo {
|
|
private String password;
|
|
private final Grade gradeType;
|
|
|
|
/**
|
|
* 构造用户信息
|
|
*
|
|
* @param password 密码
|
|
* @param gradeType 年级类型
|
|
*/
|
|
public UserInfo(String password, Grade gradeType) {
|
|
//this.email = email;
|
|
this.password = password;
|
|
this.gradeType = gradeType;
|
|
}
|
|
|
|
/**
|
|
* 获取密码
|
|
*
|
|
* @return 密码
|
|
*/
|
|
public String getPassword() {
|
|
return password;
|
|
}
|
|
|
|
/**
|
|
* 设置密码
|
|
*
|
|
* @param password 新密码
|
|
*/
|
|
public void setPassword(String password) {
|
|
this.password = password;
|
|
}
|
|
|
|
/**
|
|
* 获取年级类型
|
|
*
|
|
* @return 年级类型
|
|
*/
|
|
public Grade getGrade() {
|
|
return gradeType;
|
|
}
|
|
}
|
|
}
|