/*
 建立帳號及密碼的陣列,用while迴圈比對輸入的帳號密碼是否正確
驗証碼用亂數產出,如果其中一項錯誤則跳回啟始登入介面
 */
package hw_24;

class Login {//登入系統的類別
    //  帳號的陣列

    public String account[] = {"aaa", "bbb", "ccc"};
    public String password[] = {"111", "222", "333"};

    public int A[] = new int[8];
    public int i;

    // 輸入介面
    public void key_in() {
        String key_id = "";
        String key_pw = "";
        String key_code = "";
        String msg = "";

        boolean flag = true;

        while (flag) {

            System.out.println("請輸入帳號:");
            java.util.Scanner s = new java.util.Scanner(System.in);
            key_id = s.next();

            System.out.println("請輸入密碼:");
            java.util.Scanner s2 = new java.util.Scanner(System.in);
            key_pw = s2.next();

            // 秀出驗證碼
            show_code();
            // 輸入驗證碼
            System.out.println("請輸入驗證碼:");
            java.util.Scanner s3 = new java.util.Scanner(System.in);
            key_code = s3.next();

            // 呼叫 check(    )
            switch (check(key_id, key_pw, key_code)) {
                case 1:
                    msg = "登入成功";
                    break;
                case 2:
                    msg = "帳號錯誤";
                    break;
                case 3:
                    msg = "密碼錯誤";
                    break;
                case 4:
                    msg = "驗證碼錯誤";
                    break;
                default:
                    msg = "系統異常";
                    break;
            }
            System.out.println(msg);
        }
    }

    public void show_code() {
        System.out.print("驗證碼為:");
        //      驗證碼
        for (i = 0; i < 8; i++) {
            if (i < 3) {                                           //前 3 放數字
                A[i] = (int) ((Math.random() * 10) + 48);
            } else if (i < 6) {                                           // 中間 3 位放大寫英文
                A[i] = (int) (((Math.random() * 26) + 65));
            } else {                                           // 後 2 位放小寫英文
                A[i] = ((int) ((Math.random() * 26) + 97));
            }

            System.out.print((char) A[i]);
        }

        System.out.println();
    }

    // 驗證登入資料
    public int check(String id, String pw, String code) {
        int op = 0;
        //  檢查如果正確傳回 1
        //  帳號錯傳回 2
        //  密碼錯傳回 3
        //  驗證碼錯傳回4
        for (i = 0; i < account.length; i++) {
            String code_t = "";
            for (int j = 0; j < 8; j++) {
                code_t += (char) A[j];
            }
            if (id.equals(account[i]) && pw.equals(password[i]) && code.equals(code_t)) {
                op = 1;
                return op;
            } else if (id.equals(account[i])) {
                if (pw.equals(password[i])) {
                    op = 4;
                    return op;
                } else {
                    op = 3;
                    return op;
                }
            } else {
                op = 2;
                return op;
            }
        }
        return op;
    }
}

public class Hw_24 {

    public static void main(String[] args) {
        // 建立一個系統登入的物件
        Login s_login = new Login();
        // 開啟系統
        s_login.key_in();
    }

}

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 mingyilai 的頭像
    mingyilai

    mingyilai的部落格

    mingyilai 發表在 痞客邦 留言(0) 人氣()