編寫一個系統(登錄、注冊、驗證用戶名密碼和驗證碼、覆蓋存儲用戶)


編寫一個系統

開始方法呈現開始菜單
登陸
注冊
退出

編寫賬號類(存儲正確的用戶名和密碼)
用戶名
密碼


要求:
選擇登陸后輸入用戶名密碼 並進行驗證(編寫驗證方法),驗證成功后進入主菜單界面

主菜單界面:
幸運抽獎(需要完成功能)
購物結算
商品陳列
真情回饋
注銷用戶

驗證錯誤或者菜單選擇錯誤可以給出提示並允許繼續操作(比如用戶名輸錯,重新輸入,菜單輸錯也可以重新輸入,主菜單輸錯應返回主菜單界面)

注冊要求:輸入注冊的用戶名和密碼和驗證碼(4位數字驗證碼),如果賬戶存在則不能注冊,如果不存在將注冊的信息寫入賬號類(目前的實現將導致將原用戶名和密碼覆蓋),注冊成功退回開始菜單,可以使用注冊的賬戶進行登錄

注銷用戶:返回起始菜單,可以繼續進行登錄或注冊的操作

賬戶類:用於存儲密碼,不是用集合存儲的,所以每次注冊只能進行覆蓋

/**
 * 賬戶類
 * 用於存儲系統的用戶名和密碼
 */
public class Account {
    //用戶名和密碼
    String userName = "admin";
    String password = "000";
}

購物系統:封裝了系統的所有業務邏輯

/**
 * 購物系統
 * 封裝了系統的所有業務邏輯
 */
public class ShoppingSystem {
    //鍵盤掃描器
    Scanner sc;
    //賬戶對象
    Account account;
    //隨機數生成對象
    Random random;
    //是否中獎的標識
    boolean flag;

     /**
     * 對系統進行初始化
     * 初始化就是在系統運行前,將一些必要的數據進行初始
     */
    public void init(){
        sc = new Scanner(System.in);
        //初始化賬戶
        account = new Account();
        //初始化隨機數生成對象
        random = new Random();
    }

     /**
     * 開啟系統
     */
    public void start(){
        //呈現開始菜單
        System.out.println("1. 登錄");
        System.out.println("2. 注冊");
        System.out.println("3. 退出");
        System.out.println("請選擇:");
        int chooice = sc.nextInt();
        //根據選項調用對應的功能
        switch(chooice){
            //1. 調用登錄方法
            case 1:
                login();
                break;
            //2. 調用注冊方法
            case 2:
                regist();
                break;
            case 3:
                System.out.println("退出了系統");
                //退出正在運行的程序
                //System.exit(0);
                break;
        }

    }

     /**
     * 登錄方法
     */
    public void login(){
        //輸入用戶名和密碼
        System.out.println("請輸入用戶名:");
        String userName = sc.next();
        System.out.println("請輸入密碼:");
        String password = sc.next();
        //驗證賬戶:傳入用戶名和密碼
        if(validate(userName, password)){
       //如果正確,進入主菜單 mainMenu(); }
else{ System.out.println("用戶名或密碼錯誤!"); login(); } /** * 驗證用戶名的方法(注冊中也會用到用戶名是否存在,所以單獨抽離成一個方法) * @param userName * @return */ public boolean validateName(String userName){ if(userName.equals(account.userName)){ return true; } return false; } /** * 驗證賬戶 * @param userName * @param password * @return */ public boolean validate(String userName, String password){
     //先調用驗證用戶名的方法
if(validateName(userName)){
       //如果用戶名正確,進一步驗證密碼是否正確
if(password.equals(account.password)){ return true; } } return false; } /** * 注冊方法 */ public void regist(){ //輸入用戶名和密碼 System.out.println("請輸入用戶名:"); String userName = sc.next(); System.out.println("請輸入密碼:"); String password = sc.next(); //生成驗證碼 String code = createValidateCode(); System.out.println("請輸入驗證碼:【"+code+"】"); String inputCode = sc.next(); //判斷驗證碼 if(!inputCode.equals(code)){ System.out.println("驗證碼輸入錯誤!"); //遞歸注冊 regist(); return; } //對用戶名和密碼進行驗證 if(validateName(userName)){ //如果驗證失敗,重新輸入,遞歸注冊方法 System.out.println("用戶名已經被注冊!"); regist(); } else{ //如果驗證成功,將注冊的用戶名和密碼寫入賬戶對象 account.userName = userName; account.password = password; //進入起始菜單 start(); } /** * 生成驗證碼 * @return */ public String createValidateCode(){ String code = "";
     //循環生成4位驗證碼
for(int i = 1; i <= 4; i++){ int n = random.nextInt(10); code+=n; } return code; } /** * 主菜單展現方法 */ public void mainMenu(){ //展現主菜單選項 System.out.println("1. 幸運抽獎"); System.out.println("2. 購物結算"); System.out.println("3. 商品陳列"); System.out.println("4. 真情回饋"); System.out.println("5. 注銷賬戶"); System.out.println("請選擇:"); int chooice = sc.nextInt(); //用戶輸入選項 //對選項進行判斷,根據選項調用對應的方法 switch(chooice){ //1. 調用幸運抽獎方法 case 1: luckyGuess(); break; case 2: case 3: case 4: System.out.println("功能正在完善中……"); break; //5. 調用注銷方法 case 5: loginOff(); } } /** * 抽獎方法 */ public void luckyGuess(){
     //防止多次進行抽獎
if(flag){ System.out.println("您已抽過獎了!系統將直接跳轉回主菜單"); mainMenu(); return; } //修改抽獎的標識 flag = true; //生成中獎的數 int target = random.nextInt(10); System.out.println("按任意鍵進行抽獎"); sc.next(); int luckNumber = random.nextInt(10); //判斷是否中獎 if(luckNumber == target){ System.out.println("恭喜你中了大獎!獎勵GeekHome課程一部!"); } else{ System.out.println("很遺憾,沒有中獎,請再接再厲!"); } //無論是否中獎都應回到主菜單 mainMenu(); } /** * 注銷用戶方法 */ public void loginOff(){ //返回起始菜單 start(); } }

啟動購物系統的APP

public class SystemApp {
    public static void main(String[] args) {
        //創建系統
        ShoppingSystem sys = new ShoppingSystem();
        //對系統進行初始化
        sys.init();
        //啟動系統
        sys.start();
    }
} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM