模擬使用者登入註冊的小程式(I/O流版)
阿新 • • 發佈:2019-02-03
/** *實體類,該類提供一些使用者名稱和密碼 * */ public class User { private String username; private String password; public User() { super(); } 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 interface UserDao { /** * 這是使用者登入功能 * @param username 需要登入的使用者名稱 * @param password 需要登入的使用者密碼 * @return 返回的是使用者是否成功,true,成功;false,失敗 */ public abstract boolean isLogin(String username,String password) ; /** * 這是使用者註冊功能 * @param user 需要註冊的使用者 */ public abstract void register(User user) ; }
/** * 使用者操作的介面的實現類 * 業務邏輯都在實現(IO流版本) * @author Administrator * */ public class UserDaoImpl implements UserDao { //為了保證載入UserDaoImpl類的建立一個檔案 private static File file = new File("user.txt") ; static { //以後在Java連線資料庫,在工具類定義靜態程式碼塊的 if(file!=null) { try { file.createNewFile() ; } catch (IOException e) { //e.printStackTrace(); System.out.println("建立檔案失敗..."); } } } //登入 @Override public boolean isLogin(String username, String password) { //假設 boolean flag = false ; //使用字元緩衝輸入流讀取user.txt檔案中的內容 BufferedReader br = null ; try { br = new BufferedReader(new FileReader(file)) ; //利用它一次讀取一行 String line = null ; while((line=br.readLine())!=null) { //去使用的字串的分割功能 String[] datas = line.split("=") ; //判斷 if(datas[0].equals(username) && datas[1].equals(password)) { flag = true ; break ; } } } catch (FileNotFoundException e) { //e.printStackTrace(); System.out.println("找不到檔案了.."); } catch (IOException e) { //e.printStackTrace(); System.out.println("登入失敗"); }finally { if(br!=null) { try { br.close(); } catch (IOException e) { //e.printStackTrace(); System.out.println("登入時釋放資源失敗"); } } } return flag ; } //註冊功能 @Override public void register(User user) { //註冊的使用,將使用者的資料寫入到文字檔案中 //自定義的規則:使用者名稱=密碼 //建立字元緩衝輸出流 //BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt")) ; BufferedWriter bw = null ; //bw = new BufferedWriter(new FileWriter(file)) ; try { //自動追加 bw = new BufferedWriter(new FileWriter(file, true)) ; //寫資料 bw.write(user.getUsername()+"="+user.getPassword()); bw.newLine(); bw.flush(); } catch (IOException e) { //e.printStackTrace(); System.out.println("使用者註冊失敗..."); }finally { //釋放資源 if(bw!=null) { try { bw.close(); } catch (IOException e) { //e.printStackTrace(); System.out.println("註冊時釋放的資源失敗了..."); } } } } }
/**
* 使用者登入註冊的測試類
*/
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 choice = sc.nextLine();
// 登入和註冊都會介面實現類中的功能
UserDao ud = new UserDaoImpl();
// 使用switch語句
switch (choice) {
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("恭喜您,登入成功");
//break;//結束swtich語句
System.exit(0);
} else {
// 登入失敗
System.out.println("使用者名稱或者密碼輸入錯誤");
}
break ;
case "2":
// 註冊
System.out.println("---------------------進入註冊介面------------------------");
System.out.println("請輸入使用者名稱:");
String newUserName = sc.nextLine();
System.out.println("請輸入密碼:");
String newPwd = sc.nextLine();
// 將使用者名稱和密碼封裝User物件
User user = new User();
user.setUsername(newUserName);
user.setPassword(newPwd);
// 呼叫註冊功能
ud.register(user);
System.out.println("註冊成功...");
break;
case "3":
// 退出
default:
System.out.println("謝謝使用,下次再來");
System.exit(0);
}
}
}
}