分析: A:有哪些類呢?用戶類 測試類 B:每個類有哪些東西呢? 用戶類: 成員變數:用戶名,密碼 構造方法:無參構造成員方法:getXxx()/setXxx() 登錄,註冊 假如用戶類的內容比較對,將來維護起來就比較麻煩,為了更清晰的分類,我們就把用戶又劃分成了兩類 用戶基本描述類 成員變數:用戶 ...
分析:
A:有哪些類呢?
用戶類
測試類
B:每個類有哪些東西呢?
用戶類:
成員變數:用戶名,密碼
構造方法:無參構造
成員方法:getXxx()/setXxx()
登錄,註冊
假如用戶類的內容比較對,將來維護起來就比較麻煩,為了更清晰的分類,我們就把用戶又劃分成了兩類
用戶基本描述類
成員變數:用戶名,密碼
構造方法:無參構造
成員方法:getXxx()/setXxx()
用戶操作類
登錄,註冊
測試類:
main方法。
C:類與類之間的關係是什麼呢?
在測試類中創建用戶操作類和用戶基本描述類的對象,並使用其功能。
分包:
A:功能劃分
B:模塊劃分
C:先按模塊劃分,再按功能劃分
今天我們選擇按照功能劃分:
用戶基本描述類包 cn.itcast.pojo
用戶操作介面 cn.itcast.dao
用戶操作類包 cn.itcast.dao.impl---實現介面類
今天是集合實現,過幾天是IO實現,再過幾天是GUI實現,就業班我們就是資料庫實現
用戶測試類 cn.itcast.test
用戶基本描述類
1 package YongHuMaoShuLei; 2 /** 3 * 這是用戶基本描述類 4 * 5 * @author Spring 6 * @version V1.0 7 * 8 * 描述內容: 9 * 成員變數: 用戶名,登錄密碼 10 * 構造方法:選擇無參 11 * 成員方法:setXxx和getXxx 12 * */ 13 14 public class User { 15 private String username; 16 private String password; 17 18 public User(){} 19 20 public String getUsername() { 21 return username; 22 } 23 24 public void setUsername(String username) { 25 this.username = username; 26 } 27 28 public String getPassworld() { 29 return password; 30 } 31 32 public void setPassworld(String passworld) { 33 this.password = passworld; 34 } 35 }
用戶操作介面
1 package JiKouGongNengLei; 2 3 import YongHuMaoShuLei.User; 4 5 /** 6 * 根據用戶實現功能的介面 7 * @author Spring 8 * @version 1.0 9 * 10 * */ 11 12 public interface UserDao { 13 /** 14 * 這是用戶登錄功能 15 * 16 * @param username 17 * 用戶名 18 * @param password 19 * 密碼 20 * @return 返回登錄是否成功 21 */ 22 public abstract boolean show(String Username,String password); 23 /** 24 * 這是用戶註冊功能 25 * 26 * @param user 27 * 要註冊的用戶信息--此時參數----是用戶類基本描述類類對象 28 */ 29 public abstract void show1(User user); 30 /** 31 * 這是猜數游戲功能 32 */ 33 public abstract void show2(); 34 35 36 37 }
用戶實現介面類--操作包
package ShiXianJiKouLei; import JiKouGongNengLei.UserDao; import YongHuMaoShuLei.User; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; /** * 這是用戶操作的介面功能的具體實現類(集合版) * * @author Spring * @version V1.0 * */ public class UserDemoimpl implements UserDao { //為了登錄功能進行用戶名和登錄密碼的校驗 // 為了讓多個方法能夠使用同一個集合,就把集合定義為成員變數 // 為了不讓外人看到,用private // 為了讓多個對象共用同一個成員變數,用static //static變數也稱作靜態變數,靜態變數和非靜態變數的區別是: // 靜態變數被所有的對象所共用,在記憶體中只有一個副本,它當且僅當在類初次載入時會被初始化。 // 而非靜態變數是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。 private static ArrayList<User> A= new ArrayList<User>(); //登錄校驗 public boolean show(String username,String password){ boolean flag = false; //對集合中的數據進行遍歷 //遍歷其用戶用和登錄密碼是否和傳遞過來的參數相等---使用增強否進行遍歷 for(User m : A){ //遍歷得到User中的m對象---其m對象調用其獲取方法getXxx來獲取集合中的註冊的用戶和密碼信息 //此時註冊信息中的用戶和密碼信息進行比較String類型採用equals方法進行 if (m.getUsername().equals(username)&& m.getPassworld().equals(password)){ flag =true; break; } } return flag;//返回的是flag變數的boolean值 } //註冊實現 public void show1(User user){ //把基本描述用戶信息添加到集合 //創建集合對象 // ArrayList<User> A= new ArrayList<User>(); //向集合中添加信息 A.add(user); } //猜數游戲 public void show2(){ //提示用戶進行猜數游戲 System.out.println("--------"+"歡迎來到猜數小游戲"+"-----------"); //隨機產生一個生成數 int suijishu = (int) (Math.random()*100)+1; System.out.println(suijishu); //創建鍵盤輸入對象 Scanner sc = new Scanner(System.in); //進行迴圈判斷猜數猜數游戲--給出三次猜數機會--並提示用戶還剩多少次機會 for(int x=0;x<3;x++){ //給出用戶提示 System.out.println("請你輸入你所猜的數"); //定義鍵盤輸入對象的類型 int aa = sc.nextInt(); //給出初始的次數 int count = 2; if (aa==suijishu){ System.out.println("恭喜你猜對了,本輪游戲結束"); break; }else if(aa>suijishu){ System.out.println("你猜的數有點大"); if(count-x==0){ System.out.println("游戲結束"); break; }else{ System.out.println("你還有"+(count-x)+"次機會"); } }else if(aa<suijishu){ System.out.println("你猜的數有點小"); if(count-x==0){ System.out.println("游戲結束"); break; }else{ System.out.println("你還有"+(count-x)+"次機會"); } } } } }
測試類
package CeShiLei; import JiKouGongNengLei.UserDao; import ShiXianJiKouLei.UserDemoimpl; import YongHuMaoShuLei.User; import com.sun.jmx.snmp.SnmpInt; import java.util.Scanner; public class Usertest { public static void main(String[] args) { //創建鍵盤輸入對象 Scanner sc = new Scanner(System.in); while (true) { //首先給出一個選擇界面---提供用戶進行選擇 System.out.println("----------" + "歡迎光臨" + "------------"); System.out.println("1:註冊"); System.out.println("2:登錄"); System.out.println("3:退出"); System.out.println("---------------------"); System.out.println("請你輸入您的選擇"); //規定鍵盤輸入對象的類型是String類型 String xuanze = sc.nextLine(); //對UserDao創建對象---利用多態、----對UserDemoimpol中的集合使用其靜態變數static //static修飾的變數被所有對象所共用 //switch語句中有多個地方要使用,我們就定義到外邊 UserDao gongneng = new UserDemoimpl(); //對給出的頁面進行選項進行選擇 switch (xuanze) { case "1": //註冊界面 System.out.println("----------" + "歡迎來到註冊界面" + "------------"); System.out.println("註冊用戶名:"); String newusername = sc.nextLine(); System.out.println("註冊密碼:"); String newpassword = sc.nextLine(); //創建User對象---利用對象將數據傳遞給User中的成員變數 User jiben = new User(); jiben.setUsername(newusername); jiben.setPassworld(newpassword); //利用UserDemoimpl實現介面類---將User對象中的信息添加到集合中 //利於集合中的數據與登錄數據進行比較 //利用上面創建的UserDao gongneng = new UserDemoimpl();向集合添加數據 gongneng.show1(jiben); //數據添加完畢顯示註冊成功 System.out.println("註冊成功"); break; case "2": //登錄界面 System.out.println("----------" + "歡迎來到登錄界面" + "------------"); System.out.println("登錄用戶名:"); String username = sc.nextLine(); System.out.println("登錄密碼:"); String password = sc.nextLine(); //對輸入的用戶名和密碼進行比較 //調用其UserDemoimpl中的show方法來進行對集合中存在的註冊信息進行比較 //比較其註冊用戶名,密碼是否和輸入這輸入的一樣 //UserDao gongneng = new UserDemoimpl();--多態 //方法返回值為boolean boolean AA = gongneng.show(username,password); //如果Boolean值是true的則執行迴圈體內的語句否則執行else{} if(AA){ System.out.println("恭喜你,登錄成功"); System.out.println("你是否要玩猜數游戲--y繼續--n退出"); while(true) { String tt = sc.nextLine(); //equalsIgnoreCase不區分大小寫 if (tt.equalsIgnoreCase("y")) { gongneng.show2(); System.out.println("你還玩嗎?y/繼續--n/退出"); } else if (tt.equalsIgnoreCase("n")) { System.exit(0); } } }else{ System.out.println("用戶名或者密碼錯誤"); System.out.println("請你再次輸入"); } break; case "3": default: System.out.println("歡迎您的使用,再見"); //強制結束此程式的運行--此語句執行後後面的語句不再被執行 System.exit(0); } } } }