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.
pairedProject/src/main/java/com/ybw/mathapp/entity/User.java

134 lines
2.9 KiB

package com.ybw.mathapp.entity;
/**
* 用户实体类,表示系统中的用户信息。
*
* <p>该类包含用户的基本信息,如用户名、密码和学习级别。
* 用户级别可以是小学、初中或高中。
*
* @author 杨博文
* @version 1.0
* @since 2025
*/
public class User {
/**
* 用户名,不可修改。
*/
private final String name;
/**
* 邮箱,不可修改。
*/
private final String email;
/**
* 用户密码,不可修改。
*/
private final String password;
/**
* 用户当前的学习级别,可以修改。
*/
private String level;
/**
* 构造一个新的用户对象。
*
* @param name 用户名,不能为空
* @param email 邮箱,不能为空
* @param password 用户密码,不能为空
* @throws IllegalArgumentException 如果 name、email 或 password 为 null 或空字符串
*/
public User(String name, String email, String password) {
if (name == null || name.trim().isEmpty()) {
throw new IllegalArgumentException("用户名不能为空");
}
if (email == null || email.trim().isEmpty()) {
throw new IllegalArgumentException("邮箱不能为空");
}
if (password == null || password.trim().isEmpty()) {
throw new IllegalArgumentException("密码不能为空");
}
this.name = name;
this.email = email;
this.password = password;
}
/**
* 从字符串创建用户对象。
*
* <p>字符串格式应为 "name,email,password"。
*
* @param line 包含用户信息的字符串
* @return 解析成功的用户对象,如果解析失败则返回 null
*/
public static User fromString(String line) {
if (line == null || line.trim().isEmpty()) {
return null;
}
String[] parts = line.split(",", 3); // 最多分割成3部分
if (parts.length == 3) {
return new User(parts[0].trim(), parts[1].trim(), parts[2].trim());
}
return null;
}
/**
* 获取用户名。
*
* @return 用户名
*/
public String getName() {
return name;
}
/**
* 获取用户密码。
*
* @return 用户密码
*/
public String getPassword() {
return password;
}
/**
* 获取用户当前的学习级别。
*
* @return 用户学习级别
*/
public String getLevel() {
return level;
}
/**
* 设置用户的学习级别。
*
* @param newLevel 新的学习级别,支持"小学"、"初中"、"高中"
*/
public void setLevel(String newLevel) {
level = newLevel;
}
/**
* 获取用户邮箱。
*
* @return 用户邮箱
*/
public String getEmail() {
return email;
}
/**
* 返回用户信息的字符串表示。
*
* <p>格式为 "name,email,password"。
*
* @return 包含用户名、邮箱和密码的字符串
*/
@Override
public String toString() {
return name + "," + email + "," + password;
}
}