JAVA-14.2-登录注册案例分析(IO流版)

本文介绍了一个基于IO流的JAVA登录注册案例。与集合版相似,主要改动在于`com.edu.dao.impl`下的`UserDaoImpl`,涉及的包结构包括:`com.edu.domain`(描述类)、`com.edu.dao`(接口)、`com.edu.dao.impl`(接口实现类)、`com.edu.util`(工具类)和`com.edu.test`(测试类)。
摘要由CSDN通过智能技术生成

和之前的登录注册案例分析(集合版)类似,基本思想完全一样(可参见http://blog.csdn.net/qq_30718113/article/details/71120739),无需大的改动,主要修改com.edu.dao.impl下的UserDaoImpl,
java中的分包:
  com.edu.domain — 标准的java描述类
  com.edu.dao – 存放的是接口
  com.edu.dao.impl – 存放的是接口实现类
  com.edu.util – 对对象进行操作的工具类
  com.edu.test – 测试类
代码如下:
①com.edu.domain — 标准的java描述类

package com.edu.domain;

public class User {
    private String userName;
    private String 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;
    }
    public User(String userName, String password) {
        super();
        this.userName = userName;
        this.password = password;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
}

②com.edu.dao – 存放的是接口

package com.edu.dao;

import com.edu.domain.User;

public interface UserDao {
    //定义两个方法,一个登陆,一个注册
    public abstract void regist(User user);

    public abstract boolean isLogin(String userName,String password);
}

③com.edu.dao.impl – 存放的是接口实现类

package com.edu.dao.impl;

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

import com.edu.dao.UserDao;
import com.edu.domain.User;

public class UserDaoImpl implements UserDao{
    private static File file = new File("user.txt");

    //静态代码块:随着类的加载而加载
    static{
        //创建文件
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void regist(User user) {
        try {
            //取出user对象中的用户名和密码,存入user.txt对象
            String info = user.getUserName()+"="+user.getPassword();
            BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));//创建了一个可以追加写入的FileWriter
            //往文件中写入数据
            bw.write(info);
            bw.newLine();
            bw.flush();
            bw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    public boolean isLogin(String userName, String password) {
        /**
         * 1.创建字符高效流对象,关联user.txt
         * 2.一次读取一行
         * 3.将读取到的内容切割
         * 4.和前台传递过来的用户名和密码进行对比,成功则改变flag的标示
         */
        boolean flag = false;
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;
            while ((line = br.readLine())!=null) {
                String[] strings = line.split("=");
                if (userName.equals(strings[0])&&password.equals(strings[1])) {
                    //改变标示
                    flag = true;
                }
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return flag;
    }   
}

④com.edu.test – 测试类

package com.edu.test;

import java.util.Scanner;

import com.edu.dao.impl.UserDaoImpl;
import com.edu.domain.User;

public class Test {
    public static void main(String[] args) {
        UserDaoImpl udi = new UserDaoImpl();

        while (true) {
            System.out.println("-----欢迎来到登陆注册页面------");
            System.out.println("1:注册");
            System.out.println("2:登陆");
            System.out.println("3:退出");


            Scanner sc = new Scanner(System.in);
            String chioce = sc.nextLine();
            switch (chioce) {
            case "1":
                System.out.println("欢迎来到注册页面");
                System.out.println("请输入你的用户名");
                String userName = sc.nextLine();
                System.out.println("请输入你的密码");
                String password = sc.nextLine();
                User user = new User(userName, password);
                udi.regist(user);
                System.out.println("注册成功");
                break;
            case "2":
                System.out.println("欢迎来到登陆页面");
                System.out.println("请输入你的用户名");
                String inputUserName = sc.nextLine();
                System.out.println("请输入你的密码");
                String inputPassword = sc.nextLine();
                boolean login = udi.isLogin(inputUserName, inputPassword);
                if (login) {
                    System.out.println("登陆成功");
                }else {
                    System.out.println("登录失败");
                }
                break;
            case "3":
            default:
                System.exit(0);
                break;
            }
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值