Java IO流案例:使用IO流的形式完成简单的登录注册功能

2022-08-07

1. 分析:

  • 定义一个接口:一个注册方法,一个登录方法
  • 接口实现类:代码实现具体的方法
  • 测试类:完成注册登录功能

2. UserDao接口

public interface UserDao {
	
	// 注册方法
	public abstract void regist(String username,String password);
	
	// 登录方法
	public abstract boolean login(String username,String password);
}

3. UserUaoImpl实现类

public class UserUaoImpl implements UserDao {
	
	// static:静态代码块只能访问静态变量
	private static File f = null;
	
	// 定义静态代码块:随着类的加载即可创建文件(用于存储用户名和密码数据)
	static {
		f = new File("user.txt");
		if (!f.exists()) {
			try {
				f.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
		
	// 重写注册方法
	@Override
	public void regist(String username, String password) {
		try {
		    // 创建字符输出缓冲流,用于注册数据的写入
			BufferedWriter bw = new BufferedWriter(new FileWriter(f));
			// 将用户名和密码以连接符拼接,便于登录时信息的验证
			bw.write(username + "=" + password); 
			bw.newLine();
			bw.flush();
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	// 重写登录方法
	@Override
	public boolean login(String username, String password) {
			try {
				// 创建字符输入缓冲流,用于登录数据的读出
				BufferedReader br = new BufferedReader(new FileReader(f));
				String str = br.readLine();
				// 将读出来的数据按照连接符进行分割,用于区分用户名和密码信息
				String[] split = str.split("=");
				if (username.equals(split[0]) && password.equals(split[1])) {
					return true;
				}
				br.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		
		return false;
	}

}

4. UserTest测试类

public class UserTest {
	public static void main(String[] args) {
		// 创建接口实现类对象
		UserUaoImpl impl = new UserUaoImpl();
		// 键盘录入:IO流的形式
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		while(true) {
			System.out.println("------------欢迎使用本平台------------");
			System.out.println("1.注册");
			System.out.println("2.登录");
			System.out.println("3.退出");
			System.out.println("请输入您要选择的业务编号:");
			try {
				String line = br.readLine();
				// 根据业务编号进行程序选择
				switch(line) {
				case "1":
					System.out.println("请输入您要注册的账户:");
					String name = br.readLine();
					System.out.println("请输入您要注册的密码:");
					String password = br.readLine();
					impl.regist(name, password);
					System.out.println("恭喜您,注册成功!");
					break;
				case "2":
					System.out.println("请输入您要登录的账户:");
					String name2 = br.readLine();
					System.out.println("请输入您要登录的密码:");
					String password2 = br.readLine();
					boolean login = impl.login(name2, password2);
					if (login) {
						System.out.println("登录成功!");
						// JVM退出,程序结束
						System.exit(0);
					} else {
						System.out.println("您输入的账户或密码有误!");
					}
					break;
				case "3":
					System.exit(0);
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
}

本文地址:https://blog.csdn.net/Acybee/article/details/107268239