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.
Partner_Project/src/model/UserManager.java

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;
}
}
}