【JavaSE练习】项目_项目_模拟用户登陆注册功能(IO完成),javaseio
分享于 点击 30869 次 点评:48
【JavaSE练习】项目_项目_模拟用户登陆注册功能(IO完成),javaseio
需求:模拟用户登录注册--------集合进行完成
在前面,我们用集合完成了这个项目,那集合和IO有何区别呢?
我们共创建了以下几个类
User-----UserDao-----UserDaoImpl----UserTest
其实区别就在于UserDaoImpl类中,注册和登录的功能
集合中:是将信息传入到集合
IO中:是将信息传入到文本文件,那么每次运行就可以不用注册,可以直接输入
因此:
项目的分析思路在此就不详细介绍(具体参考集合篇)
其他代码也不详细介绍(只给出原码)
在此只要详细介绍UserDaoImple
在此给出集合实现的链接:http://blog.csdn.net/wpf719971425/article/details/76695500
User
UserDao/** * 这是用户的基本描述类 * * @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; } }
UserDaoImpl(重点)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); }
UserTestimport 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("用户注册释放资源失败!"); } } } }
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); } } } }
运行完成刷新一下
部分结果(大部分结果图参考之前那篇)
就加了一个判断用户名是否存在功能
重新运行程序可以不用在注册,直接登录注册过的用户名即可
相关文章
- 暂无相关文章
用户点评