1. 程式人生 > >《java入門第一季》模擬使用者登陸註冊案例集合版

《java入門第一季》模擬使用者登陸註冊案例集合版

需求:校驗使用者名稱和密碼,登陸成功後玩猜數字小遊戲。

在這裡先寫集合版、後面還有IO版、資料庫版。

一、猜數字小遊戲類:

猜數字小遊戲的程式碼見部落格:http://blog.csdn.net/qq_32059827/article/details/51355259

二、登陸註冊介面。

package cn.itcast.dao;

import cn.itcast.pojo.User;



/**
 * 這是針對使用者進行操作的介面
 * 
 * @author 112
 * @version V1.0
 * 
 */
public interface UserDao {
	/**
	 * 這是使用者登入功能
	 * 
	 * @param username
	 *            使用者名稱
	 * @param password
	 *            密碼
	 * @return 返回登入是否成功
	 */
	public abstract boolean isLogin(String username, String password);

	/**
	 * 這是使用者註冊功能
	 * 
	 * @param user
	 *            要註冊的使用者資訊,因為使用者註冊的資訊除了註冊必須的使用者名稱和密碼,還有很多。所以接收一個封裝好的使用者物件,物件裡包括所有資訊去呼叫即可。
	 */
	public abstract void regist(User user);
}

三、登陸註冊介面實現類。
package cn.itcast.dao.impl;

import java.util.ArrayList;

import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;

/**
 * 這是使用者操作的具體實現類(集合版)
 * 
 * @author 112
 * @version V1.0
 * 
 */
public class UserDaoImpl implements UserDao {
	// 為了讓多個方法能夠使用同一個集合,就把集合定義為成員變數
	// 為了不讓外人看到,用private
	// 為了讓多個物件共享同一個成員變數(static),用static
	private static ArrayList<User> array = new ArrayList<User>();

	@Override
	public boolean isLogin(String username, String password) {
		// 遍歷集合,獲取每一個(註冊過)的使用者,並判斷該使用者的使用者名稱和密碼是否和傳遞過來的(登陸輸入的)匹配
		boolean flag = false;

		for (User u2 : array) {
			if (u2.getUsername().equals(username)
					&& u2.getPassword().equals(password)) {
				flag = true;
				break;
			}
		}

		return flag;
	}

	@Override
	public void regist(User user) {
		// 把使用者資訊儲存集合
		// ArrayList<User> array = new ArrayList<User>();
		array.add(user);
	}
}

四、使用者javabean
package cn.itcast.pojo;

/**
 * 這是使用者基本描述類
 * 
 * @author 112
 * @version V1.0
 * 
 */
public class User {
	// 使用者名稱
	private String username;
	// 密碼
	private String password;

	public User() {
	}

	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;
	}
}

四、使用者登陸註冊業務邏輯:
package cn.itcast.test;

import java.util.Scanner;

import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoImpl;
import cn.itcast.game.GuessNumber;
import cn.itcast.pojo.User;

/**
 * 使用者測試類
 * 
 * @author 112
 * @version V1.0
 * 
 *          新增加了兩個小問題 A:多個物件共享同一個成員變數,用靜態
 *          B:迴圈裡面如果有switch,並且在switch裡面有break,那麼結束的不是迴圈,而是switch語句
 * 
 */
public class UserTest {
	public static void main(String[] args) {
		// 為了能夠回來
		while (true) {
			// 歡迎介面,給出選擇項
			System.out.println("--------------歡迎光臨--------------");
			System.out.println("1 登入");
			System.out.println("2 註冊");
			System.out.println("3 退出");
			System.out.println("請輸入你的選擇:");
			// 鍵盤錄入選擇,根據選擇做不同的操作
			Scanner sc = new Scanner(System.in);
			// 為了後面的錄入資訊的方便,我所有的資料錄入全部用字元接收
			String choiceString = sc.nextLine();

			// switch語句的多個地方要使用,我就定義到外面
			UserDao ud = new UserDaoImpl();//多型

			// 經過簡單的思考,我選擇了switch
			switch (choiceString) {
			case "1":
				// 登入介面,請輸入使用者名稱和密碼
				System.out.println("--------------登入介面--------------");
				System.out.println("請輸入使用者名稱:");
				String username = sc.nextLine();
				System.out.println("請輸入密碼:");
				String password = sc.nextLine();

				// 呼叫登入功能
				// UserDao ud = new UserDaomImpl();

				boolean flag = ud.isLogin(username, password);
				if (flag) {
					System.out.println("登入成功,可以開始玩遊戲了");

					System.out.println("你玩嗎?y/n");
					while (true) {
						String resultString = sc.nextLine();
						if (resultString.equalsIgnoreCase("y")) {
							// 玩遊戲
							GuessNumber.start();
							System.out.println("你還玩嗎?y/n");
						} else {
							break;
						}
					}
					System.out.println("謝謝使用,歡迎下次再來");
					System.exit(0);//終止程式
					// break; //這裡寫break,結束的是switch
				} else {
					System.out.println("使用者名稱或者密碼有誤,登入失敗");
				}
				break;//跳出case "1",結束switch語句
			case "2":
				// 歡迎介面,請輸入使用者名稱和密碼
				System.out.println("--------------註冊介面--------------");
				System.out.println("請輸入使用者名稱:");
				String newUsername = sc.nextLine();
				System.out.println("請輸入密碼:");
				String newPassword = sc.nextLine();

				// 把使用者名稱和密碼封裝到一個物件中
				User user = new User();
				user.setUsername(newUsername);
				user.setPassword(newPassword);

				// 呼叫註冊功能
				// 多型
				// UserDao ud = new UserDaoImpl();
				// 具體類使用
				// UserDaoImpl udi = new UserDaoImpl();

				ud.regist(user);
				System.out.println("註冊成功");
				break;//跳出case "2"和switch語句
			case "3":
			default:
				System.out.println("謝謝使用,歡迎下次再來");
				System.exit(0);
				break;//跳出default ,有無都可以。
			}
		}
	}
}


趕快複製程式碼,到eclipse中跑一跑吧~