随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

思路:

首先是键盘的输入,然后是字符的匹配加上基本的逻辑判断。

代码实现:

首先是接口规范:

public interface IUserMessage {    // 规范设置用户信息的类
    public boolean setMessage();
}
public interface IMnu {     // 规范菜单接口
    public void reInput();
}

然后是用户类:

public class UserMessage {
    private String UserName;
    private String UserPassword;

    public UserMessage() {
    }

    public UserMessage(String userName, String userPassword) {
        UserName = userName;
        UserPassword = userPassword;
    }

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String userName) {
        UserName = userName;
    }

    public String getUserPassword() {
        return UserPassword;
    }

    public void setUserPassword(String userPassword) {
        UserPassword = userPassword;
    }

    @Override
    public String toString() {
        return "| UserName='" + UserName + "' |\t" +
                "| UserPassword='" + UserPassword + "' |";
    }

    public boolean setMessage() {
        return false;
    }
}

然后是输入用户信息类:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SetUserMessage extends UserMessage implements IUserMessage {
    private BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));  // 键盘输入

    public boolean setMessage(){    // 输入用户名
        try {
            System.out.print("请输入用户名:");
            String userName = this.buf.readLine();
            System.out.print("请输入密码:");
            String userPassword = this.buf.readLine();
            if (!"".equals(userName) && !"".equals(userPassword)) { // 如果用户名和密码不为空则设置用户名和密码
                super.setUserName(userName);
                super.setUserPassword(userPassword);
                return true;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
}

然后是进行用户名和密码匹配的处理类:

public class CheckUserMessage implements IUserMessage {
    private UserMessage userMessage = new SetUserMessage();     // 上转型,这样既可以调用userMessage类的get获取用户名和密码,又可以使用SetUserMessage类的方法

    private boolean checkMessage() {       // 检查用户名或密码是否匹配
        if ("cdulm".equals(this.userMessage.getUserName()) && "123456".equals((this.userMessage.getUserPassword()))) {  // 用户名和密码匹配
            System.out.println("用户名和密码正确!");
            return true;
        } else {    // 简略输出不匹配项
            System.out.println("用户名或密码错误!!");
            return false;
        }
    }
/*
* 下面是将每种情况列出
* */
    //        if ("cdulm".equals(this.userMessage.getUserName()) && !"123456".equals((this.userMessage.getUserPassword()))) {  // 密码匹配
//            System.out.println("用户名正确!密码错误!");
//            return false;
//        }
//        if (!"cdulm".equals(this.userMessage.getUserName()) && "123456".equals((this.userMessage.getUserPassword()))){
//            System.out.println("密码正确!用户名错误!");
//            return false;
//        }
//        if (!"cdulm".equals(this.userMessage.getUserName()) && !"123456".equals((this.userMessage.getUserPassword()))){
//            System.out.println("用户名或密码都错了!!");
//            return false;
//        }
//        return false;
//    }
//
    @Override
    public boolean setMessage() {
        if (this.userMessage.setMessage()) {    // 如果输入完成
            return this.checkMessage();    // 开始检查
        } else {    // 输入的信息为空
            System.out.println("\n用户名和密码为空!!请输入信息!");
        }
        return false;
    }
}

然后是循环输入类:

public class Menu implements IMnu{
    public void reInput() {
        boolean flag = false;
        int inputCount = 0;
        while (!flag) {
            flag = new CheckUserMessage().setMessage();     // 返回
            if (flag) {
                break;
            }else if (inputCount >= 2){ // 输入三次后
                System.out.println("\n已经输错了三次!账户锁定!");
                break;
            } else {    // 当用户名或密码输入错误
                System.out.println("\n请重新输入用户名和密码:");
                inputCount ++;
            }
        }
    }
}

最后是工厂类和main:

public class Factory {
    public static IMnu getIntance(){
        return new Menu();
    }
}
public class MAIn {
    public static void main(String[] args){
        Factory.getIntance().reInput();
        System.out.println("-------------------------------------");
    }
}

输出结果:

 

 

 

 

以上就是用户登录信息输入的简单案例;

 

posted on 2022-02-26 18:06  时间完全不够用啊  阅读(280)  评论(0编辑  收藏  举报