Java习题_Chp11-14_ *(自定义异常)完成某个计费系统的用户登录和注册模块,要求如下:

Posted shellxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java习题_Chp11-14_ *(自定义异常)完成某个计费系统的用户登录和注册模块,要求如下:相关的知识,希望对你有一定的参考价值。

  1. *(自定义异常)完成某个计费系统的用户登录和注册模块,要求如下:

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 中保存的对象为以下两个:

用户名 密码 真实姓名 电子邮件
admin admin Administrator admin@123.com
Tom cat tomcat tomcat@cat.com

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)编写测试代码。类图如下:


User.java

package chp11_14;

public class User {
    private String username;//用户登陆名
    private String password;//密码
    private String name;//用户真实姓名
    private String email;//电子邮件地址
    //构造方法
    public User(String username, String password, String name, String email) {
        super();
        this.username = username;
        this.password = password;
        this.name = name;
        this.email = email;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    //get|set方法
    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;
    }
    
}

LoginException.java

package chp11_14;
//登陆异常
public class LoginException extends Exception{

    public LoginException(String s) {
        super(s);
        // TODO Auto-generated constructor stub
    }
    public LoginException() {
        // TODO Auto-generated constructor stub
    }

}

RegisterException.java

package chp11_14;
//注册异常
public class RegisterException extends Exception{

    public RegisterException(String s) {
        super(s);
        // TODO Auto-generated constructor stub
    }
    public RegisterException() {
        // TODO Auto-generated constructor stub
    }
}

UserBiz.java

package chp11_14;

public interface UserBiz {
    //用户注册
    void register(String username,String password,String password2,
            String name,String email)throws RegisterException;
    //用户登陆
    void login(String username,String password)throws LoginException;
}

UserBizlmpl.java

package chp11_14;

public class UserBizlmpl implements UserBiz{
    static int index=0;
    static User[] map=new User[10];
    static{
        map[0]=new User("admin", "admin", "Adminstrator", "admin@123.com");
        map[1]=new User("Tom", "cat", "tomcat", "tomcat@cat.com");
        index=2;

    }
    
    
    @Override
    public void register(String username, String password, String password2, String name, String email) throws RegisterException {
        // TODO Auto-generated method stub
        
        if(!password.equals(password2))
            throw new RegisterException("两次密码不一致");
        for(int i = 0;i<map.length;i++){
            if(map[i] ==null)
                break;
            if(map[i].getUsername().equals(username))
                throw new RegisterException("用户名已经存在");
        }
        map[index]=new User(username, password2, name, email);
        index++;
        System.out.println("注册成功");
    }

    @Override
    public void login(String username, String password) throws LoginException {
        // TODO Auto-generated method stub
        boolean flag = false;
        for(int i=0;i<map.length;i++){
            if(map[i]==null)
                break;
            if(map[i].getUsername().equals(username))
                if(!map[i].getPassword().equals(password))
                    throw new LoginException("用户名与密码不匹配");
            if(map[i].getUsername().equals(username))
                flag=true;
            
        }
        if(!flag)
            throw new LoginException("用户名不存在");
        System.out.println("登陆成功");
    }
    
}

UserView.java

package chp11_14;

public interface UserView {
    void login();
    void register();
}

UserViewlmpl.java

package chp11_14;

import java.util.Scanner;

public class UserViewlmpl implements UserView{
    UserBiz ub;
    public void show(){
        ub =new UserBizlmpl();
    }
    @Override
    public void login(){
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username=sc.next();
        System.out.println("请输入密码:");
        String password=sc.next();
        try {
            show();
            ub.login(username, password);
        } catch (LoginException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return ;
        }
    }

    @Override
    public void register(){
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username=sc.next();
        System.out.println("请输入密码:");
        String password=sc.next();
        System.out.println("请再次输入密码:");
        String password2 = sc.next();
        System.out.println("请输入姓名:");
        String name = sc.next();
        System.out.println("请输入邮箱地址");
        String email = sc.next();
        try {
            show();
            ub.register(username, password, password2, name, email);
        } catch (RegisterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return ;
        }

    }
    
}

TestUser.java

package chp11_14;

import java.util.Scanner;

public class TestUser {
    public static void main(String[] args){
        UserViewlmpl uv = new UserViewlmpl();
        do{
            Scanner sc = new Scanner(System.in);
            System.out.println("请选择执行的操作:\\n1、登陆\\n2、注册\\n3 退出");
            int i = sc.nextInt();
            if(i==1)uv.login();
            else if(i==2)uv.register();
            else break;
        }while(true);
    }
}

以上是关于Java习题_Chp11-14_ *(自定义异常)完成某个计费系统的用户登录和注册模块,要求如下:的主要内容,如果未能解决你的问题,请参考以下文章

老王Python-进阶篇4-异常处理1.3(周末习题)

Java -- 异常的捕获及处理 -- 自定义异常类

00086_自定义异常

Java基础练习题9--定义三个整数变量a,b,c 判断能否构成一个三角形 ;如果不能请抛出一个自定义异常

Java中的自定义注解

python__基础 : 异常处理与自定义异常