和之前的登录注册案例分析(集合版)类似,基本思想完全一样(可参见http://blog.csdn.net/qq_30718113/article/details/71120739),无需大的改动,主要修改com.edu.dao.impl下的UserDaoImpl,
java中的分包:
com.edu.domain — 标准的java描述类
com.edu.dao – 存放的是接口
com.edu.dao.impl – 存放的是接口实现类
com.edu.util – 对对象进行操作的工具类
com.edu.test – 测试类
代码如下:
①com.edu.domain — 标准的java描述类
package com.edu.domain;
public class User {
private String userName;
private String password;
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 User(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
}
②com.edu.dao – 存放的是接口
package com.edu.dao;
import com.edu.domain.User;
public interface UserDao {
//定义两个方法,一个登陆,一个注册
public abstract void regist(User user);
public abstract boolean isLogin(String userName,String password);
}
③com.edu.dao.impl – 存放的是接口实现类
package com.edu.dao.impl;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import com.edu.dao.UserDao;
import com.edu.domain.User;
public class UserDaoImpl implements UserDao{
private static File file = new File("user.txt");
//静态代码块:随着类的加载而加载
static{
//创建文件
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void regist(User user) {
try {
//取出user对象中的用户名和密码,存入user.txt对象
String info = user.getUserName()+"="+user.getPassword();
BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));//创建了一个可以追加写入的FileWriter
//往文件中写入数据
bw.write(info);
bw.newLine();
bw.flush();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean isLogin(String userName, String password) {
/**
* 1.创建字符高效流对象,关联user.txt
* 2.一次读取一行
* 3.将读取到的内容切割
* 4.和前台传递过来的用户名和密码进行对比,成功则改变flag的标示
*/
boolean flag = false;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine())!=null) {
String[] strings = line.split("=");
if (userName.equals(strings[0])&&password.equals(strings[1])) {
//改变标示
flag = true;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
}
④com.edu.test – 测试类
package com.edu.test;
import java.util.Scanner;
import com.edu.dao.impl.UserDaoImpl;
import com.edu.domain.User;
public class Test {
public static void main(String[] args) {
UserDaoImpl udi = new UserDaoImpl();
while (true) {
System.out.println("-----欢迎来到登陆注册页面------");
System.out.println("1:注册");
System.out.println("2:登陆");
System.out.println("3:退出");
Scanner sc = new Scanner(System.in);
String chioce = sc.nextLine();
switch (chioce) {
case "1":
System.out.println("欢迎来到注册页面");
System.out.println("请输入你的用户名");
String userName = sc.nextLine();
System.out.println("请输入你的密码");
String password = sc.nextLine();
User user = new User(userName, password);
udi.regist(user);
System.out.println("注册成功");
break;
case "2":
System.out.println("欢迎来到登陆页面");
System.out.println("请输入你的用户名");
String inputUserName = sc.nextLine();
System.out.println("请输入你的密码");
String inputPassword = sc.nextLine();
boolean login = udi.isLogin(inputUserName, inputPassword);
if (login) {
System.out.println("登陆成功");
}else {
System.out.println("登录失败");
}
break;
case "3":
default:
System.exit(0);
break;
}
}
}
}