/**
*实体类,该类提供一些用户名和密码
*
*/
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);
}
}
}
}