/*
*需求:用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("请输入正确的用户名和密码!");
}
}
}