/*
*需求:用io流來實現用戶注冊和登錄功能
*
*分析:
* 1.需要的類和接口
* A.用戶實體類:UserEntity
* B.用戶功能接口:UserDao
* C.用戶功能接口實現類:UserDaoImlp
* D.用戶功能測試類:UserTest注冊測試類,UserTest2登錄測試類
* 2.類和接口的成員
* A.用戶實體類:UserEntity
* a.成員變量
* (1)姓名:private String name
* (2)密碼:private String password
* b.構造方法
* (1)無參:public UserEntity()
* (2)有參:public UserEntity(String name, String password)
* c.成員方法
* (1)設值方法 set()
* (2)取值訪求get()
*
* B.用戶功能接口:UserDao
* a.成員方法
* (1)用戶注冊方法:public void registerUser(UserEntity user)
* (2)用戶登錄方法:public boolean isLoginUser(String name,String password);
* C.用戶功能接口實現類:UserDaoImlp
* a.成員方法
* (1)用戶注冊方法:public void registerUser(UserEntity user)
* (2)用戶登錄方法:public boolean isLoginUser(String name,String password);
* D.用戶功能測試類:
* a.UserTest注冊測試類,
* 調用注冊方法:registerUser(UserEntity user)
* b.UserTest2登錄測試類
* 調用登錄方法:isLoginUser(String name,String password)
* 3.類和類,類和接口之間的關系
* A.用戶實體類:UserEntity,提供實體對象
* B.用戶功能接口:UserDao,提供對UserEntity操作方法的接口
* C.用戶功能接口實現類:UserDaoImlp,實現接口功能
* D.用戶功能測試類:UserTest注冊測試類,UserTest2登錄測試類,測試用戶功能
* 4.分包
* A.用戶實體類:UserEntity:com.ma.entity.UserEntity
* B.用戶功能接口:UserDao:com.ma.dao.UserDao
* C.用戶功能接口實現類:UserDaoImlp:com.ma.dao.impl.UserDaoImlp
* D.用戶功能測試類:UserTest注冊測試類,UserTest2登錄測試類:
* com.ma.test.UserTest
* com.ma.test.UserTest2
*/
A.用戶實體類:UserEntity
package com.ma.entity; /** * 用戶實體類 * @author ma * */ public class UserEntity { //屬性 //姓名 private String name; //密碼 private String password; //構造方法 public UserEntity() { super(); } public UserEntity(String name, String password) { super(); this.name = name; this.password = password; } //成員方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
B.用戶功能接口:UserDao
package com.ma.dao; import com.ma.entity.UserEntity; /** * 用戶功能接口 * @author ma * */ public interface UserDao { /** * 用戶注冊方法 * @param user 用戶對象 */ public void registerUser(UserEntity user); /** * 用戶登錄方法 * @param name 用戶名 * @param password 用戶密碼 * @return 成功返回true,否則返回false */ public boolean isLoginUser(String name,String password); }
C.用戶功能接口實現類:UserDaoImlp
package com.ma.dao.impl; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import com.ma.dao.UserDao; import com.ma.entity.UserEntity; /** * 用戶功能接口實現類 * @author ma * */ public class UserDaoImple implements UserDao{ private static final File file = new File("user_informtion/userinfo.txt"); @Override public void registerUser(UserEntity user) { //初始化輸出流 BufferedWriter bw = null; //用戶信息 不能為空 if(user != null){ try { //實例化輸出流 bw = new BufferedWriter( new FileWriter(file,true)); //寫入數據 bw.write(user.getName()+"=>"+user.getPassword()); //創建新行 bw.newLine(); //刷新數據 bw.flush(); } catch (IOException e) { //注冊失敗信息 System.out.println("注冊失敗:"+e.getMessage()); }finally{ try { bw.close(); } catch (IOException e) { System.out.println("關閉BufferedWriter輸出流異常:"+e.getMessage()); } } }else{ //注冊失敗信息 System.out.println("注冊失敗:用戶信息不能為空"); } } @Override public boolean isLoginUser(String name, String password) { boolean flag = false; //初始化BufferedReader BufferedReader br = null; if(!name.equals("") && !password.equals("")){ try { br = new BufferedReader(new FileReader(file)); String str = null; //循環判斷 while((str = br.readLine()) != null){ String[] data = str.split("=>"); if(data[0].equals(name)&&data[1].equals(password)){ flag = true; break; } } } catch (FileNotFoundException e) { System.out.println("登錄異常:"+e.getMessage()); } catch (IOException e) { System.out.println("登錄異常:"+e.getMessage()); }finally{ try { br.close(); } catch (IOException e) { System.out.println("關閉BufferedReader輸入流異常:"+e.getMessage()); } } }else{ System.out.println("用戶名和密碼不能為空"); } return flag; } }
D.1用戶功能測試類:UserTest注冊測試類,
package com.ma.test; import com.ma.dao.UserDao; import com.ma.dao.impl.UserDaoImple; import com.ma.entity.UserEntity; /** * 注冊測試類 * @author ma * */ public class UserTest { public static void main(String[] args) { //向文件中寫入數據 UserDao ud = new UserDaoImple(); UserEntity user1 = new UserEntity("李四", "123456"); UserEntity user2 = new UserEntity("張三", "abc123"); ud.registerUser(user1); ud.registerUser(user2); } }
D.2用戶功能測試類:UserTest2登錄測試類
package com.ma.test; import com.ma.dao.UserDao; import com.ma.dao.impl.UserDaoImple; import com.ma.entity.UserEntity; /** * 登錄測試類 * @author ma * */ public class UserTest2 { public static void main(String[] args) { //向文件中寫入數據 UserDao ud = new UserDaoImple(); String name = "李四"; String password = "123456"; boolean islogin = ud.isLoginUser(name, password); if(islogin){ System.out.println("登錄成功!"); }else{ System.out.println("請輸入正確的用戶名和密碼!"); } } }