1. 程式人生 > >模擬使用者登入註冊的小程式(I/O流版)

模擬使用者登入註冊的小程式(I/O流版)

/**
 *實體類,該類提供一些使用者名稱和密碼 
 *
 */
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);

			}
		}

	}
}