Java實現--登入和註冊案例(把使用者資訊存進集合)

yangruxi發表於2017-05-04

登入和註冊案例的分析
我們在完成一個需求時,需要物件導向,我們必須找到能完成某個功能的類,接著呼叫裡面的方法來完成它。而這些類我們要進行分包,在不同包下實現,Java中的分包:
com.edu.domain — 標準的Java描述類
com.edu.dao — 存放的是介面
com.edu.daoimpl — 存放的是介面的實現類
com.edu.util — 對物件進行操作的工具類
com.edu.test — 測試類

登入和註冊案例用到的類
使用者類:
成員變數:使用者名稱,密碼
成員方法:登入,註冊功能

測試類:
main

登入和註冊案例中用到的類的詳細分解
(1)使用者類(User):使用者名稱,密碼,郵箱,電話號碼等等各種註冊時會用到的東西。我們在實現這個登入和註冊案例的時候只需要使用者名稱和密碼就夠了。這是一個標準Java描述類。

package com.edu.domain;

public class User {
    private String userName;
    private String passWord;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    public User(String userName, String passWord) {
        super();
        this.userName = userName;
        this.passWord = passWord;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }


}

(2)我們需要定義一個介面(UserDao)來定義註冊和登入功能。介面就是對類的功能的一種擴充套件,它的本質是用來定義規則的。

package com.edu.dao;

import com.edu.domain.User;

public interface UserDao {
    //這個介面保證兩個功能

        //註冊
        public abstract void regist(User user);
        //登入
        public abstract boolean isLogin(String userName,String passWord);

}

(3)使用者操作類(UserDaoImpl),也就是之前定義的介面UserDao的實現類。

package com.edu.dao.impl;

import java.util.ArrayList;

import com.edu.dao.UserDao;
import com.edu.domain.User;

public class UserDaoImpl implements UserDao{

    //建立一個集合,定義為公有的
    static ArrayList<User> users=new ArrayList<User>();
    //註冊方法:把使用者資訊存放到集合中
    @Override
    public void regist(User user) {
        // TODO Auto-generated method stub
        users.add(user);

    }

    //登入功能:校驗使用者名稱和密碼是否正確,正確返回true,否則返回false
    @Override
    public boolean isLogin(String userName, String passWord) {
        // TODO Auto-generated method stub
        boolean flag = false;
        for (User user : users) {
            if(userName.equals(user.getUserName())&&passWord.equals(user.getPassWord())){
                flag = true;
                break;
            }
        }
        return flag;
    }

}

(4)在使用者完成註冊登入後,我們可以實現某種功能了,例如:猜數字小遊戲。再建一個遊戲類(GuessNumber)。

package com.edu.game;

import java.util.Scanner;

public class GuessNumber {
    public static void playGame() {
        //獲取一個一到一百之間的隨機數
        int random = (int) (Math.random()*100+1);

        //建立鍵盤錄入物件,獲取鍵盤錄入資料
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入所猜測的數字:");
        int number = sc.nextInt();

        //建立while死迴圈
        while (true) {
            if (number>random) {
                System.out.println("大了,請重新輸入:");
                number = sc.nextInt();
            }
            if (number<random) {
                System.out.println("小了,請重新輸入:");
                number=sc.nextInt();
            }
            if (number==random) {
                System.out.println("恭喜你答對了!");
                break;
            }
        }

    }

}

(5)測試類(Test)。

package com.edu.test;

import java.util.Scanner;

import com.edu.dao.impl.UserDaoImpl;
import com.edu.domain.User;
import com.edu.game.GuessNumber;

public class Test {
    public static void main(String[] args) {
        while(true){
        //首先給出提示
        System.out.println("歡迎進入註冊登入介面:");
        System.out.println("1.註冊");
        System.out.println("2.登入");
        System.out.println("3.退出");

        //建立一個使用者操作類
        UserDaoImpl udi = new UserDaoImpl();

        //建立鍵盤錄入物件,並獲取鍵盤錄入資料
        Scanner sc = new Scanner(System.in);
        String choice = sc.nextLine();

        //利用switch迴圈來判斷
        switch (choice) {
        case "1":
            System.out.println("歡迎來到註冊介面!");
            System.out.println("請輸入使用者名稱:");
            String userName = sc.nextLine();
            System.out.println("請輸入密碼:");
            String passWord = sc.nextLine();
            //把使用者名稱和密碼封裝成一個使用者類物件
            User user = new User(userName,passWord);
            //通過使用者操作類物件呼叫註冊方法
            udi.regist(user);
            System.out.println("註冊成功!");
            break;
        case "2":
            System.out.println("歡迎來到登入介面!");
            System.out.println("請輸入使用者名稱:");
            String inputUserName = sc.nextLine();
            System.out.println("請輸入密碼:");
            String inputPassWord = sc.nextLine();
            //通過使用者操作類物件呼叫登入方法
            boolean flag = udi.isLogin(inputUserName,inputPassWord);
            if (flag) {
                System.out.println("登入成功,玩遊戲吧!");
                GuessNumber.playGame();
            }else{
                System.out.println("登入失敗!");
            }   
            break;
        case "3":
        default:
            //對於3或者其他數字的選擇,都直接退出系統
            System.exit(0);
            break;
        }

    }
    }
}

執行結果
註冊和登入的執行結果:
這裡寫圖片描述
猜數字遊戲結束後退出系統:
這裡寫圖片描述

相關文章