欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

【JavaSE练习】项目_项目_模拟用户登陆注册功能(IO完成),javaseio

来源: javaer 分享于  点击 30869 次 点评:48

【JavaSE练习】项目_项目_模拟用户登陆注册功能(IO完成),javaseio


需求:模拟用户登录注册--------集合进行完成

在前面,我们用集合完成了这个项目,那集合和IO有何区别呢?

我们共创建了以下几个类

User-----UserDao-----UserDaoImpl----UserTest

其实区别就在于UserDaoImpl类中,注册和登录的功能

集合中:是将信息传入到集合

IO中:是将信息传入到文本文件,那么每次运行就可以不用注册,可以直接输入

因此:

项目的分析思路在此就不详细介绍(具体参考集合篇)

其他代码也不详细介绍(只给出原码)

在此只要详细介绍UserDaoImple

在此给出集合实现的链接:http://blog.csdn.net/wpf719971425/article/details/76695500

User

/**
 * 这是用户的基本描述类
 * 
 * @author Wolf
 * @version V1.0
 */
public class User {
	private String username;
	private String password;

	public User() {
		super();
	}

	public User(String username, String password) {
		super();
		this.username = username;
		this.password = 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;
	}

}
UserDao

import com.xxxx.user.User;

/**
 * 这是用户的操作接口
 * 
 * @author Wolf
 * @version V1.0
 */
public interface UserDao {

	/**
	 * 这是用户登录功能
	 * 
	 * @param username
	 *            用户名
	 * @param password
	 *            密码
	 * @return 返回的是用户登录是否成功
	 */
	public abstract boolean isLogic(String username, String password);

	/**
	 * 这是用户注册功能
	 * 
	 * @param user
	 *            注册了用户信息
	 */
	public abstract void regist(User user);
}
UserDaoImpl(重点)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import com.xxxx.user.User;

/**
 * 这是用户操作的具体实现类(IO实现)
 * 
 * @author Wolf
 * @version V1.0
 */
public class UserDaoImpl implements UserDao {

	// 封装一个文件,不让外界看到,防止逻辑错误:private static
	private static File file = new File("user.txt");

	// 静态代码块,保证user.txt文件存在
	static {
		try {
			file.createNewFile();
		} catch (IOException e) {
			System.out.println("创建文件失败!");
		}
	}

	/**
	 * 用户登录功能
	 * @return 
	 */
	@Override
	public boolean isLogic(String username, String password) {
		// 创建字符缓冲输入流对象
		BufferedReader br = null;
		
		// 创建对象
		try {
			br = new BufferedReader(new FileReader(file));
			// 一行一行读
			String line = null;
			while ((line = br.readLine()) != null) {
				// 判断line = "用户名" + "=" + "密码"
				String[] datas = line.split("=");
				if (datas[0].equals(username) && datas[1].equals(password)) {
					return true;
				}
			}
		} catch (FileNotFoundException e) {
			System.out.println("用户登录找不到文件信息!");
		} catch (IOException e) {
			System.out.println("登录失败!");
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				System.out.println("用户登录释放资源失败!");
			}
		}
		return false;
	}

	/**
	 * 用户注册功能:用户注册的时候,定义一种规则:用户名=密码
	 */
	@Override
	public void regist(User user) {
		// 创建字符缓冲输出流对象
		BufferedWriter bw = null;
		// 创建字符缓冲输入流对象
		BufferedReader br = null;

		// 创建对象
		try {
			// 实现追加写入,保证重新加载账户不被覆盖
			bw = new BufferedWriter(new FileWriter(file, true));
			br = new BufferedReader(new FileReader(file));
			// 读取信息,判断账户是否存在
			// 一行一行读
			String line = null;
			while ((line = br.readLine()) != null) {
				String[] datas = line.split("=");
				// 判断用户名是否重复
				if (datas[0].equals(user.getUsername())) {
					System.out.println("对不起!账户已存在!注册失败!");
					break;
				} else {
					// 写数据
					bw.write(user.getUsername() + "=" + user.getPassword());
					bw.newLine();
					bw.flush();
				}
			}
		} catch (IOException e) {
			System.out.println("注册失败!");
		} finally {
			try {
				br.close();
				bw.close();
			} catch (IOException e) {
				System.out.println("用户注册释放资源失败!");
			}
		}
	}

}
UserTest

import java.util.Scanner;

import com.xxxx.dao.UserDao;
import com.xxxx.dao.UserDaoImpl;
import com.xxxx.user.User;

/**
 * 用户测试类
 * 
 * @author Wolf
 * @version V1.0
 */
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);
			System.out.println("请选择操作:");
			String choice = sc.next();

			// 创建对象
			UserDao ud = new UserDaoImpl();

			switch (choice) {
			case "1":
				System.out.println("*************登陆界面*************");
				System.out.println("请输入用户名:");
				String username = sc.next();
				System.out.println("请输入密码");
				String password = sc.next();

				// 调用登陆功能
				boolean logic = ud.isLogic(username, password);
				// 判断
				if (logic) {
					/*
					 * 这个位置可以调用一些功能,比如猜数字游戏,上一章的录入学生成绩 
					 * 也可以将之前的《模拟银行账户功能》系统插入进来
					 * 下面就简单的写一些操作测试一下,具体的功能自行测试
					 */
					System.out.println("登陆成功!欢迎来到召唤师峡谷!");
					System.out.println("********************************");

					System.out.println("是否开始游戏?y/n");
					while (true) {
						String s = sc.next();
						if (s.equalsIgnoreCase("y")) {
							System.out.println("********************************");
							System.out.println("敌军还有30秒到达战场!");
							System.out.println("碾碎他们!");
							System.out.println("Victroy");
							System.out.println("********************************");
							System.out.println("是否开始下一局?y/n");
						} else {
							break;
						}
					}
					System.out.println("********************************");
					System.out.println("谢谢!再见");
					System.exit(0);
				} else {
					System.out.println("********************************");
					System.out.println("帐号或密码错误!登录失败");
				}
				break;
			case "2":
				System.out.println("*************注册界面*************");
				System.out.println("请输入用户名:");
				String newUsername = sc.next();
				System.out.println("请输入密码:");
				String newPassword = sc.next();
				
				// 将用户信息封装到User中
				User user = new User(newUsername, newPassword);
				
				// 调用注册功能
				ud.regist(user);
				break;
				
			case "3":
			default:
				System.out.println("谢谢!再见");
				System.exit(0);
			}

		}
	}
}

运行完成刷新一下



部分结果(大部分结果图参考之前那篇)

就加了一个判断用户名是否存在功能


重新运行程序可以不用在注册,直接登录注册过的用户名即可




相关文章

    暂无相关文章

用户点评