欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-06 16:32:52
1.public interface UserDao {// 注册方法public abstract void regist(String username,String password);// 登录方法public abstract boolean login(String username,String password);}2.public class UserUaoImpl implements UserDao {// static:静态代码块只能访问静态...

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