IO流作业——7月3日

IO流作业——7月3日

一、作业要求

1.利用Java基础IO流的知识,完成对文档的操作。
2.利用IO流完成用户注册、用户登录、修改密码和注销账户的操作
3.创建两个包,一个dao包,一个servlet包。dao包下面创建UserDao类实现基本功能,sevlet包下面创建UserServlet类调用UserDao的方法

二、代码展示

1、UserDao类

①、用户注册
    //用户的注册
    public static boolean userRegister(String username,String psw){
        //创建字符输入流对象
        FileReader fr = null;
        //创建字符输出流对象
        FileWriter fw = null;
        //创建字符缓冲输入流对象
        BufferedReader br = null;
        //创建字符缓冲流输出流对象
        BufferedWriter bw = null;
        //判断username和密码是否已经存在
        boolean isNameExits = false;
        boolean isPswExits = false;
        //判断是否已经有一个账户被注册
        boolean isUserRegister = false;
        //判断是否注册成功
        boolean isRegisterExcessful = false;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            fr = new FileReader(path);
            fw = new FileWriter(path,true);
            br = new BufferedReader(fr);
            bw = new BufferedWriter(fw);
            //临时变量,存储文档的每行内容
            String temp = "";
            //获取第一行用户名
            while((temp = br.readLine()) != null){
                if(temp!=null){
                    isUserRegister = true;
                }
                //判断用户名和密码是否已经存在
                if(temp.equals("username="+username)){
                    isNameExits = true;
                }
            }
            //如果文档为空且用户名不存在,则注册用户名和密码
            if(isNameExits == false && isUserRegister == false){
                //注册用户名和密码
                bw.write("username="+username);
                bw.newLine();
                bw.write("password="+psw);
                bw.flush();
                isRegisterExcessful = true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(br != null){
                    br.close();
                }
                if(fw != null){
                    fw.close();
                }
                if(fr != null){
                    fr.close();
                }
                if(bw != null){
                    bw.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        //如果用户名已经存在,返回false
        if(isNameExits){
            return false;
        }
        return isRegisterExcessful;
    }
②、用户登陆
    //用户登录
    public static boolean userLogin(String username,String psw){
        //创建一个随机访问流对象
        RandomAccessFile raf = null;
        //判断用户名和密码是否与文档内容一致
        boolean isNameTrue = false;
        boolean isPswtrue = false;
        //判断是否登录成功
        boolean rst = false;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            raf = new RandomAccessFile(path,"r");
            String temp = "";
            while((temp = raf.readLine())!=null){
                if(temp.equals("username="+username)){
                    isNameTrue = true;
                }
                if(temp.equals("password="+psw)){
                    isPswtrue = true;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(raf!=null){
                    raf.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        //如果用户名和密码都正确,则登录成功
        if(isNameTrue && isPswtrue){
            rst = true;
        }
        return rst;
    }
③、修改密码
    //修改密码
    public static boolean changePsw(String oldPsw,String newPsw){
        //创建一个随机访问流对象
        RandomAccessFile raf = null;
        //创建一个字符输出流
        FileWriter fw = null;
        //判断传入的原密码和文档的原密码是否一致
        boolean isOldPswTrue = false;
        //判断密码是否修改成功
        Boolean isChangePswExcessful = false;
        try{
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            raf = new RandomAccessFile(path,"r");
            //获取文档中的第一行内容
            String firstRow = raf.readLine();
            String temp = "";
            while((temp = raf.readLine())!=null){
                if(temp.equals("password="+oldPsw)){
                   isOldPswTrue = true;
                }
            }
            //如果传入的原密码和文档的原密码一致,则修改新密码
            if(isOldPswTrue){
                fw = new FileWriter(path);
                fw.write(firstRow);
                fw.write("\r\n");
                fw.write("password="+newPsw);
                fw.flush();
                isChangePswExcessful = true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(raf != null){
                    raf.close();
                }
                if(fw != null){
                    fw.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return isChangePswExcessful;
    }
④、注销用户
    //注销用户
    public static boolean withdraw(){
        FileReader fr = null;
        FileWriter fw = null;
        boolean isWithdrawExcessful = false;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            fr = new FileReader(path);
            int temp = 0;
            if((temp = fr.read())!=-1){
                //清空文件内容,因为FileWrite默认是覆盖内容的
                fw = new FileWriter(path);
                isWithdrawExcessful = true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(fr != null){
                    fr.close();
                }
                if(fw != null){
                    fw.close();
                }
            }catch (Exception e){

            }
        }
        return isWithdrawExcessful;
    }

整体代码

package dao;

import com.sun.xml.internal.ws.runtime.config.TubelineFeatureReader;
import javafx.concurrent.Worker;

import java.io.*;
import java.security.cert.TrustAnchor;
import java.util.HashMap;
import java.util.Scanner;

/**
 * @author liJin
 * @create 2022-07-04 10:03
 */
//UserDao:定义操作持久性数据的类,用于读写数据库或文档
//对文档操作获取和修改用户名、密码等操作

public class UserDao {

    //用户的注册
    public static boolean userRegister(String username,String psw){
        //创建字符输入流对象
        FileReader fr = null;
        //创建字符输出流对象
        FileWriter fw = null;
        //创建字符缓冲输入流对象
        BufferedReader br = null;
        //创建字符缓冲流输出流对象
        BufferedWriter bw = null;
        //判断username和密码是否已经存在
        boolean isNameExits = false;
        boolean isPswExits = false;
        //判断是否已经有一个账户被注册
        boolean isUserRegister = false;
        //判断是否注册成功
        boolean isRegisterExcessful = false;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            fr = new FileReader(path);
            fw = new FileWriter(path,true);
            br = new BufferedReader(fr);
            bw = new BufferedWriter(fw);
            //临时变量,存储文档的每行内容
            String temp = "";
            //获取第一行用户名
            while((temp = br.readLine()) != null){
                if(temp!=null){
                    isUserRegister = true;
                }
                //判断用户名和密码是否已经存在
                if(temp.equals("username="+username)){
                    isNameExits = true;
                }
            }
            //如果文档为空且用户名不存在,则注册用户名和密码
            if(isNameExits == false && isUserRegister == false){
                //注册用户名和密码
                bw.write("username="+username);
                bw.newLine();
                bw.write("password="+psw);
                bw.flush();
                isRegisterExcessful = true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(br != null){
                    br.close();
                }
                if(fw != null){
                    fw.close();
                }
                if(fr != null){
                    fr.close();
                }
                if(bw != null){
                    bw.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        //如果用户名已经存在,返回false
        if(isNameExits){
            return false;
        }
        return isRegisterExcessful;
    }

    //用户登录
    public static boolean userLogin(String username,String psw){
        //创建一个随机访问流对象
        RandomAccessFile raf = null;
        //判断用户名和密码是否与文档内容一致
        boolean isNameTrue = false;
        boolean isPswtrue = false;
        //判断是否登录成功
        boolean rst = false;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            raf = new RandomAccessFile(path,"r");
            String temp = "";
            while((temp = raf.readLine())!=null){
                if(temp.equals("username="+username)){
                    isNameTrue = true;
                }
                if(temp.equals("password="+psw)){
                    isPswtrue = true;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(raf!=null){
                    raf.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        //如果用户名和密码都正确,则登录成功
        if(isNameTrue && isPswtrue){
            rst = true;
        }
        return rst;
    }

    //修改密码
    public static boolean changePsw(String oldPsw,String newPsw){
        //创建一个随机访问流对象
        RandomAccessFile raf = null;
        //创建一个字符输出流
        FileWriter fw = null;
        //判断传入的原密码和文档的原密码是否一致
        boolean isOldPswTrue = false;
        //判断密码是否修改成功
        Boolean isChangePswExcessful = false;
        try{
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            raf = new RandomAccessFile(path,"r");
            //获取文档中的第一行内容
            String firstRow = raf.readLine();
            String temp = "";
            while((temp = raf.readLine())!=null){
                if(temp.equals("password="+oldPsw)){
                   isOldPswTrue = true;
                }
            }
            //如果传入的原密码和文档的原密码一致,则修改新密码
            if(isOldPswTrue){
                fw = new FileWriter(path);
                fw.write(firstRow);
                fw.write("\r\n");
                fw.write("password="+newPsw);
                fw.flush();
                isChangePswExcessful = true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(raf != null){
                    raf.close();
                }
                if(fw != null){
                    fw.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return isChangePswExcessful;
    }

    //注销用户
    public static boolean withdraw(){
        FileReader fr = null;
        FileWriter fw = null;
        boolean isWithdrawExcessful = false;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            fr = new FileReader(path);
            int temp = 0;
            if((temp = fr.read())!=-1){
                //清空文件内容,因为FileWrite默认是覆盖内容的
                fw = new FileWriter(path);
                isWithdrawExcessful = true;
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(fr != null){
                    fr.close();
                }
                if(fw != null){
                    fw.close();
                }
            }catch (Exception e){

            }
        }
        return isWithdrawExcessful;
    }

    //输出文件内容
    public static void printInformation(){
        //创建一个随机访问流对象
        RandomAccessFile raf = null;
        try {
            String path = "D:\\AdevelopTools\\IdealWorkspace\\workspace_TDSoftwareSchoolTeam\\com.tdiohomew.Java\\user.txt";
            raf = new RandomAccessFile(path,"r");
            String temp = "";
            while ((temp = raf.readLine())!=null){
                System.out.println(temp);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(raf!=null){
                    raf.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

2、UserServlet类

①、主函数
    public static void main(String[] args) {
        UserServlet test = new UserServlet();
        test.enterMainMenu();
    }
②、菜单功能
    //菜单功能
    public void enterMainMenu() {
        boolean loopFlag = true;
        char key = 0;

        do {
            if (key != '1') {
            }
            System.out.print("1-用户注册  2-用户登录  3-修改密码 4-注销 5-退出  请选择(1-5):");
            key = readMenuSelection();
            System.out.println();
            switch (key) {
                case '1':
                    register();
                    break;
                case '2':
                    login();
                    break;
                case '3':
                    changePsw();
                    break;
                case '4':
                    withdraw();
                    break;
                case '5':
                    System.out.print("确认是否退出(Y/N):");
                    char yn = readConfirmSelection();
                    if (yn == 'Y')
                        loopFlag = false;
                    break;
            }
        } while (loopFlag);
    }
③、用户注册
    //用户注册
    public void register(){
        System.out.println("****************************************************************");
        String username = "";
        String password = "";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入注册用户名:");
        username = scanner.nextLine();
        System.out.println("请输入注册的密码");
        password = scanner.nextLine();
        if(UserDao.userRegister(username,password)){
            System.out.println("注册成功");
        }else{
            System.out.println("注册失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }
④、用户登录
    //用户登录
    public void login(){
        System.out.println("****************************************************************");
        String username = "";
        String password = "";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        username = scanner.nextLine();
        System.out.println("请输入的密码");
        password = scanner.nextLine();
        if(UserDao.userLogin(username,password)){
            System.out.println("登陆成功");
        }else{
            System.out.println("登陆失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }
⑤、修改密码
   //修改密码
    public void changePsw(){
        System.out.println("****************************************************************");
        String oldPsw = "";
        String newPsw1 = "";
        String newPsw2 = "";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入旧密码:");
        oldPsw = scanner.nextLine();
        System.out.println("请输入的新密码");
        newPsw1 = scanner.nextLine();
        System.out.println("请再次输入的新密码");
        newPsw2 = scanner.nextLine();
        if(newPsw1.equals(newPsw2)){
            if(UserDao.changePsw(oldPsw,newPsw2)){
                System.out.println("修改密码成功");
            }else{
                System.out.println("修改密码失败");
            }
        }else{
            System.out.println("两次新密码不相同!修改密码失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }
⑥、注销用户
    //注销用户
    public void withdraw(){
        System.out.println("****************************************************************");
        if(UserDao.withdraw()){
            System.out.println("注销成功");
        }else{
            System.out.println("注销失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }
⑦、获取键盘输入内容
    //获取键盘输入的内容
    private static String readKeyBoard(int limit, boolean blankReturn) {
        Scanner scanner = new Scanner(System.in);
        String line = "";
        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            if (line.length() == 0) {
                if (blankReturn) return line;
                else continue;
            }
            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }
        return line;
    }
⑧、主菜单数字1-5选择
    //主菜单数字1-5选择
    public static char readMenuSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4' && c != '5') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }
⑨、退出程序的确认,是否退出程序
    //退出程序的确认,是否退出程序
    public static char readConfirmSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false).toUpperCase();
            c = str.charAt(0);
            if (c == 'Y' || c == 'N') {
                break;
            } else {
                System.out.print("选择错误,请重新输入:");
            }
        }
        return c;
    }

整体代码

package servlet;

import dao.UserDao;

import java.util.Scanner;

/**
 * @author liJin
 * @create 2022-07-04 10:03
 */
public class UserServlet {
    public static void main(String[] args) {
        UserServlet test = new UserServlet();
        test.enterMainMenu();
    }

    //主菜单
    public void enterMainMenu() {
        boolean loopFlag = true;
        char key = 0;

        do {
            if (key != '1') {
            }
            System.out.print("1-用户注册  2-用户登录  3-修改密码 4-注销 5-退出  请选择(1-5):");
            key = readMenuSelection();
            System.out.println();
            switch (key) {
                case '1':
                    register();
                    break;
                case '2':
                    login();
                    break;
                case '3':
                    changePsw();
                    break;
                case '4':
                    withdraw();
                    break;
                case '5':
                    System.out.print("确认是否退出(Y/N):");
                    char yn = readConfirmSelection();
                    if (yn == 'Y')
                        loopFlag = false;
                    break;
            }
        } while (loopFlag);
    }
    //用户注册
    public void register(){
        System.out.println("****************************************************************");
        String username = "";
        String password = "";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入注册用户名:");
        username = scanner.nextLine();
        System.out.println("请输入注册的密码");
        password = scanner.nextLine();
        if(UserDao.userRegister(username,password)){
            System.out.println("注册成功");
        }else{
            System.out.println("注册失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }

    //用户登录
    public void login(){
        System.out.println("****************************************************************");
        String username = "";
        String password = "";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        username = scanner.nextLine();
        System.out.println("请输入的密码");
        password = scanner.nextLine();
        if(UserDao.userLogin(username,password)){
            System.out.println("登陆成功");
        }else{
            System.out.println("登陆失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }

    //修改密码
    public void changePsw(){
        System.out.println("****************************************************************");
        String oldPsw = "";
        String newPsw1 = "";
        String newPsw2 = "";
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入旧密码:");
        oldPsw = scanner.nextLine();
        System.out.println("请输入的新密码");
        newPsw1 = scanner.nextLine();
        System.out.println("请再次输入的新密码");
        newPsw2 = scanner.nextLine();
        if(newPsw1.equals(newPsw2)){
            if(UserDao.changePsw(oldPsw,newPsw2)){
                System.out.println("修改密码成功");
            }else{
                System.out.println("修改密码失败");
            }
        }else{
            System.out.println("两次新密码不相同!修改密码失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }

    //注销用户
    public void withdraw(){
        System.out.println("****************************************************************");
        if(UserDao.withdraw()){
            System.out.println("注销成功");
        }else{
            System.out.println("注销失败");
        }
        System.out.println("****************************************************************");
        System.out.println();
    }

    //获取键盘输入的内容
    private static String readKeyBoard(int limit, boolean blankReturn) {
        Scanner scanner = new Scanner(System.in);
        String line = "";
        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            if (line.length() == 0) {
                if (blankReturn) return line;
                else continue;
            }
            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }
        return line;
    }

    //主菜单数字1-5选择
    public static char readMenuSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4' && c != '5') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }

    //退出程序的确认,是否退出程序
    public static char readConfirmSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false).toUpperCase();
            c = str.charAt(0);
            if (c == 'Y' || c == 'N') {
                break;
            } else {
                System.out.print("选择错误,请重新输入:");
            }
        }
        return c;
    }
}

三、结果展示

1、截图

①、用户注册

用户注册用户注册后的文档内容

②、用户登陆

用户登陆

③、修改密码

修改密码修改密码后文档内容

④、注销用户

注销用户注销用户后文档内容

2、视频

请点击:视频链接

Java基础IO流7月3日作业

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值