模拟用户登录注册的小程序(I/O流版)

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

			}
		}

	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值