《java入門第一季》模擬使用者登陸註冊案例集合版
阿新 • • 發佈:2019-01-11
需求:校驗使用者名稱和密碼,登陸成功後玩猜數字小遊戲。
在這裡先寫集合版、後面還有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中跑一跑吧~