文章目录
题目
(自定义异常)完成某个计费系统的用户登录和注册模块,要求如下: 1) 创建一个 User 类,包括:用户登录名(username)、密码(password)、用户真实姓名(name)、电子邮件地址(email)属性和相应的构造方法及 set/get 方法。
2) 创建两个自定义异常类,一个 LoginException,表示登录异常。一个 RegisterException, 表示注册异常。自定义的两个异常,都要求有一个接受字符串类型参数的构造方法。
3) 创建一个 UserBiz 接口,该接口中定义两个方法:
void register(String username, String password, String password2, String name, String email) throws RegisterException //用户注册 void login(String username, String password) throws LoginException //用户登录
其中 register 方法接受两个 password 参数,原因是:在用户注册时,需要输入两遍 password,只有两次输入的 password 一致,才允许注册。
4) 创建 UserBiz 接口的实现类。其中
为该实现类创建一个属性,该属性为一个 Map,用来保存已注册的用户信息。 Map 的键为用户登录名,值为登录名对应的 User 对象。初始情况下,Map 中保存的对象为以下两个:

register 方法在以下两种情况下抛出异常:
1) username 在 Map 中已存在
2) 两次输入的 password 不一致
login 方法在以下两种情况下抛出异常:
1) username 不存在
2) username 和 password 不匹配
5) 创建一个 UserView 接口,该接口中定义两个方法: void login();
void register();
6) 创建 UserView 接口的实现类。
该实现类的 login 方法中,利用命令行,让用户输入用户名和密码,之后调用
UserBiz 中的 login 方法。部分代码如下:
void login(){
System.out.println(“请输入用户名:”); String username = /读入用户名…/; System.out.println(“请输入密码”); String password = /读入密码/;
//调用 UserBiz 中的 login 方法
}
该类的 register 方法采用类似的方法,让用户输入注册时需要的信息,然后调用
UserBiz 中的 register 方法。 注意:
1、 密码应该让用户输入两遍。
2、 UserViewImpl 中应当有一个 UserBiz 类型的属性 7) 编写测试代码。 类图如下:

分析
HashMap底层原理:数组加链表
User类
/**
* 用户类(-表示private)
* -username:String 用户登录名
* -password:String 密码
* -name:String 用户真实姓名
* -email:String 电子邮件地址
*/
public class User {
//用户登录名 密码 用户真实姓名 电子邮件地址
private String username;
private String password;
private String name;
private String email;
//无参构造
public User() {
}
//有参构造
public User(String username, String password, String name, String email) {
this.username = username;
this.password = password;
this.name = name;
this.email = email;
}
//Getter&Setter
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
//重写toString方法
@Override
public String toString() {
return "用户{" +
"用户名='" + username +

最低0.47元/天 解锁文章





