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

来源:互联网 发布:topsurv软件 编辑:程序博客网 时间:2024/05/16 19:02

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

在前面,我们用集合完成了这个项目,那集合和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 staticprivate static File file = new File("user.txt");// 静态代码块,保证user.txt文件存在static {try {file.createNewFile();} catch (IOException e) {System.out.println("创建文件失败!");}}/** * 用户登录功能 * @return  */@Overridepublic 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;}/** * 用户注册功能:用户注册的时候,定义一种规则:用户名=密码 */@Overridepublic 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);}}}}

运行完成刷新一下



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

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


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




阅读全文
1 0
原创粉丝点击