1. 程式人生 > >Java學習筆記之系統登入例項

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()); // } }