/**
*
* 用戶信息類,描述了用戶的信息
* */
public class User {
/**
* 成員變量
*
* */
private String username ;
private String password;
public User() {
super();
}
public User(String username, String password) {
super();
this.username = username;
this.password = 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 class UserDaoImpl implements UserDao {
private static ArrayList<User> array = new ArrayList<User>() ;
//登陸
@Override
public boolean isLogin(String username, String password) {
//註冊完畢,才能登陸:用戶都在集合中,需要遍歷集合,遍歷集合之前,還需要創建ArrayList
// ArrayList<User> array = new ArrayList<User>() ;
//定義一個標記
boolean flag = false ;
//遍歷集合
for(User u : array){
//需要判斷:如果u.getuserName == 本身的用戶名 並且密碼一致,就認爲登陸成功
//獲取到每一個用戶信息
if(u.getUsername().equals(username) && u.getPassword().equals(password)){
//修改標記
flag = true ;
break ;
}
}
return flag ;
}
//註冊
@Override
public void regist(User user) {
//創建集合對象:(一般情況:沒有告訴是用什麼集合:默認是:ArrayList)
// ArrayList<User> array = new ArrayList<User>() ;
array.add(user) ;
}
}
/**
* 用戶的操作接口,裏面提供兩個功能:登陸,註冊
* */
public interface UserDao {
/**
* 用戶登陸功能
* @param username
* 用戶名
* @param password
* 用戶密碼
* @return
* 返回值表示的意思用戶登陸是否成功
*
* */
public abstract boolean isLogin(String username,String password) ;
/**
*
* 用戶註冊功能
* @param user
* 需要註冊的用戶
* */
public abstract void regist(User user) ;
}
/**
* 猜數字小遊戲
* */
public class GuessNumberGame {
//構造方法私有
private GuessNumberGame(){
}
//靜態方法
public static void start(){
//產生一個隨機數
int number = (int) (Math.random()*100 +1) ;
//定義統計變量:
int count = 0 ;
//爲了多次循環
while(true){
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
System.out.println("請輸入一個數字:");
int guessNumber =sc.nextInt() ;
//統計變量++
count ++ ;
//判斷
if(guessNumber > number){
System.out.println("你要猜的數據:"+guessNumber +"大了");
}else if(guessNumber<number){
System.out.println("你要猜的數據:"+guessNumber+"小了了");
}else{
System.out.println("恭喜您,"+count+"次猜中了");
break ;
}
}
}
}
/**
* 登陸註冊案例的測試類
* */
public class UserTest {
public static void main(String[] args) {
//爲了能夠回來,寫一個while循環
while(true){
//給出選擇界面,歡迎界面
System.out.println("----------------------------歡迎光臨----------------------------------");
System.out.println("1 登陸");
System.out.println("2 註冊");
System.out.println("3 退出");
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in) ;
//爲了讓同一個對象調用不同的功能:登陸和註冊,將該對象定義swtich語句的外面
UserDao ud = new UserDaoImpl() ;
//錄入並接收數據
System.out.println("請輸入您的選擇:");
String choiceString = sc.nextLine() ;
//,swtich語句後面的表達式用String
switch(choiceString){
case"1" :
//登陸界面
System.out.println("--------------------登陸界面-----------------------------");
System.out.println("請輸入用戶名:");
String username = sc.nextLine() ;
System.out.println("請輸入密碼:");
String password = sc.nextLine() ;
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")){
//開始玩遊戲了
GuessNumberGame.start() ;
System.out.println("還玩嗎?y/n");
}else{
break ;
}
}
System.out.println("謝謝使用,歡迎下次再來....");
//如果一個while循環中嵌套了switch語句,那麼break只表示結束swtich語句,並不能結束掉while循環
//結束while循環,應該使用System裏面exit(0);終止Jvm
System.exit(0) ;
}else{
System.out.println("用戶名或者密碼輸入錯誤,請重新登陸");
}
break ;
case "2":
//註冊界面
System.out.println("--------------------註冊界面-----------------------------");
System.out.println("請輸入用戶名:");
String newUserName = sc.nextLine() ;
System.out.println("請輸入密碼:");
String newPassword = sc.nextLine() ;
//將用戶信息封裝到User中
User user = new User() ;
user.setUsername(newUserName) ;
user.setPassword(newPassword) ;
ud.regist(user) ;
System.out.println("註冊成功");
break ;
case "3" :
default :
System.out.println("謝謝使用,下次再來!");
System.exit(0) ;
break ;
}
}
}
}
思考:在登錄註冊測試類中,當while語句中含有switch語句時,break語句只能跳出switch語句,應該使用System.in跳出整個程序.