Java用IO流制作一个简单的用户登陆注册程序

用户操作的接口类

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);
}

用户操作的接口的实现类

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;

public class UserDaoImpl implements UserDao {

    // 为保证user.txt在加载类之前已经被创建了,将创建文件写成静态的
    private static File file = new File("user.txt");

    static {
        if (file != null) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                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) {
            System.out.println("找不到文件");
        } catch (IOException e) {
            System.out.println("登录失败");
        } finally {
            if (br != null) {
                try {
                    // 释放资源
                    br.close();
                } catch (IOException e) {
                    System.out.println("登录时释放资源失败");
                }
            }
        }
        return flag;

    }

    // 注册功能
    @Override
    public void register(User user) {
        // 定义的规则:用户名=密码
        // 创建字符缓冲输出流
        BufferedWriter bw = null;
        try {
            // 在文件末尾自动追加
            bw = new BufferedWriter(new FileWriter(file, true));
            // 写数据
            bw.write(user.getUsername() + "=" + user.getPassword());
            bw.newLine();
            bw.flush();
        } catch (IOException e) {
            System.out.println("用户注册失败...");
        } finally {
            // 释放资源
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    System.out.println("注册时释放的资源失败");
                }
            }
        }
    }

}

用户实体类

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;
    }

}

用户登录注册的测试类

import java.util.Scanner;

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 退出");

            // 创建键盘录入对象
            @SuppressWarnings("resource")
            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("恭喜您,登录成功");
                    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":
                System.out.println("谢谢使用,下次再来");
                System.exit(0);
            default:
                System.out.println("输入有误请重试");
                break;
            }
        }

    }
}

测试结果

请输入您的选择:
1 登录
2 注册
3 退出
a
输入有误请重试
请输入您的选择:
1 登录
2 注册
3 退出
2
注册:
请输入用户名:
aaa
请输入密码:
sss
注册成功...
请输入您的选择:
1 登录
2 注册
3 退出
1
登陆:
请输入用户名:
aaa
请输入密码:
sss
恭喜您,登录成功

这里写图片描述

猜你喜欢

转载自blog.csdn.net/liuchonghua/article/details/80585444