/*
*需求:用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("請輸入正確的用戶名和密碼!");
}
}
}
