Java学习笔记之系统登录实例

Java学习已经有一阵了,咱们也应该真刀真枪干一波试试。我们考虑做一个系统登录认证,就是输入用户名和密码,程序返回是否验证通过的结果。

咱们来分析一下这个程序,首先我们通过界面输入帐号密码,程序接收到这两个参数,然后判断是否验证通过,通过则返回 “XXX,您好!”,不通过则返回“对不起,您的帐号或密码输入有误!”

public class LoginDemo {
    public static void main(String[] args) {
        if(args.length!=2){
            System.out.println("输入参数有误!");
            System.out.println("格式:用户名 密码");
            System.exit(1); // 系统退出
        }
        String name = args[0];
        String password = args[1];
        if(name.equals("zhangsan") && password.equals("sanzhang")){
            System.out.println("您好," + name);
        }else{
            System.out.println("对不起,帐号或密码输入有误!");
        }
    }
}

上面的代码确实可以实现这个功能,但是判断用户名密码是否正确这个环节不应该出现在主程序里,参考下图。
在这里插入图片描述

主程序可以理解为刷卡的这个人,人(主程序)关心的是结果,只关心是否成功,而来做信息判断的是刷卡器,不是人,因此我们应该将这部分判断的功能抽离出来,作为一个单独的功能模块,也就是一个专门完成验证功能的类。另外,有了专门验证的类,我们还需要一个功能,就是执行把门卡放到刷卡器的这一步,也就是传递信息的类。于是,我们重写上面的代码 如下:

class Check{	// 输出判断结果的类
  public boolean validate(String name, String password){
        if(name.equals("zhangsan") && password.equals("sanzhang")){
            return true;
        }else{
            return false;
        }
    }
}

class Operate{  // 调用具体验证的操作类,这个类的作用就是相当于拿卡(获取用户信息)去刷(验证)
    private String info[];  // 接收全部参数
    public Operate(String info[]){
        this.info = info;
    }

    public String login(){
        Check check = new Check();  // 实例化 Check 对象
        this.isExit();              // 判断传入参数是否准确
        String str = null;
        String name = info[0];
        String password = info[1];
        if(check.validate(name, password)){
            str = "您好," + name + ", 欢迎光临!";
        }else{
            str = "对不起,帐号密码错误!";
        }
        return str;
    }

    public void isExit(){
        if(this.info.length!=2){
            System.out.println("输入参数格式不对!");
            System.out.println("格式:用户名 密码");
            System.exit(1); // 系统退出
        }
    }

}

public class LoginDemo {
    public static void main(String[] args) {
        Operate opr = new Operate(args);	// 实例化操作类的对象
        System.out.println(opr.login());	// 
    }
}

猜你喜欢

转载自blog.csdn.net/zuolixiangfisher/article/details/84554322