Kbaor_2023_9_28_Java第一次实战项目_ELM_V1_用户的实体类、工具类与实现类

Kbaor_2023_9_28_Java第一次实战项目_ELM_V1_用户的实体类、工具类与实现类

ELM_V1_用户的实体类

package elm_V1;

/**
 * [用户实体类]
 *
 * @author 秦帅
 * @date 2023-9-26
 */

public class User {
    private int userId;   // id
    private String userName;   //  姓名
    private String usersex;   // 性别
    private int account = 0;   // 用户余额

    private boolean userVIP = false;   // 是否为VIP
    private String upassword;   //  密码
    private String userAddress;   // 配送地址
    private String order = null;    //订单

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUsersex() {
        return usersex;
    }

    public void setUsersex(String usersex) {
        this.usersex = usersex;
    }

    public int getAccount() {
        return account;
    }

    public void setAccount(int account) {
        this.account = account;
    }

    public boolean getUserVIP() {
        return userVIP;
    }

    public void setUserVIP(boolean userVIP) {
        this.userVIP = userVIP;
    }

    public String getUpassword() {
        return upassword;
    }

    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }

    public String getOrder() {
        return order;
    }

    public void setOrder(String order) {
        this.order = order;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", usersex='" + usersex + '\'' +
                ", account=" + account +
                ", userVIP=" + userVIP +
                ", upassword='" + upassword + '\'' +
                ", userAddress='" + userAddress + '\'' +
                ", order='" + order + '\'' +
                '}';
    }
}

ELM_V1_用户的工具类

package elm_V1;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * [用户工具类]
 *
 * @author 秦帅
 * @date 2023-9-26
 */
public class UserGJ {
    // 字符流读文件数据到集合中
    public static List<User> fileToList() throws IOException {
        List<User> list = new ArrayList<User>();
        File file = new File("G:\\Idea_hn_ws\\DB\\User\\User.txt");
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);
        while (true) {
            String str = br.readLine();// 一次读取一行文本
            if (str != null) {
                // System.out.println(str);
                String[] arr = str.split(" ");
                User user = new User();
                user.setUserId(Integer.parseInt(arr[0]));  // ID
                user.setUpassword(arr[1]);  //密码
                user.setUserName(arr[2]);   //用户名称
                user.setAccount(Integer.parseInt(arr[3]));    //账户
                user.setUserVIP(Boolean.parseBoolean(arr[4]));  // VIP
                user.setUsersex(arr[5]);     // 性别
                user.setUserAddress(arr[6]);
                user.setOrder(arr[7]);
                list.add(user);
            } else {
                break;
            }
        }
        return list;
    }

    // 字符流把集合数据写入文件
    public static void listToFile(List list) throws IOException {
        // 确认文件是utf-8编码
        File file = new File("G:\\Idea_hn_ws\\DB\\User\\User.txt");
        FileWriter fileWriter = null;
        // 第一个参数是为是否append
        BufferedWriter bw = null;
        try {
            // 第二个参数是表示是否向文件中追加内容 true==追加 false==覆盖
            fileWriter = new FileWriter(file, false);
            bw = new BufferedWriter(fileWriter);
            // 传统的遍历方式
            for (int i = 0; i < list.size(); i++) {
                User user = (User) list.get(i);
                StringBuilder sbr = new StringBuilder();
                sbr.append(user.getUserId() + " ");
                sbr.append(user.getUpassword() + " ");
                sbr.append(user.getUserName() + " ");
                sbr.append(user.getAccount() + " ");
                sbr.append(user.getUserVIP() + " ");
                sbr.append(user.getUsersex() + " ");
                sbr.append(user.getUserAddress() + " ");
                sbr.append(user.getOrder() + " ");
                //容错判断
                if(sbr.toString().length()>=7) {
                    bw.write(sbr.toString());
                    bw.newLine();// 换行
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally { // 记着关闭流
            // 如果调用了关闭流的方法,就不用手动调bw.flush()
            bw.close();
            fileWriter.close();
        }
    }

    // 密码是否与ID匹配
    public static boolean uisRightpsd(String id, String str) throws IOException {
        boolean b = false;
        List<User> list = fileToList();
        // 传统的遍历方式
        for (int i = 0; i < list.size(); i++) {
            User user = (User) list.get(i);
            int j = 0;
            Integer j1 = new Integer(user.getUserId());//生成Integer类
            String bid = j1.toString();   //  id 转 str
            String bpsd = user.getUpassword();
            if (bid.equals(id) && str.equals(bpsd)) {
                b = true;
                break;
            }
        }
        return b;
    }

    //获取行
    public static int getFileRow() throws IOException {
        int sum = 0, bid = 0;
        List<User> list = fileToList();
        if (list.size() == 0)
            return sum;
        // 传统的遍历方式
        for (int i = 0; i < list.size(); i++) {
            User User = (User) list.get(i);
            bid = User.getUserId();
        }
        return bid;
    }

    // 判断文件中是否有与参数重名的用户
    public static boolean aisRepeat(String str) throws IOException {
        boolean b = false;
        List<User> list = fileToList();
        // 传统的遍历方式
        for (int i = 0; i < list.size(); i++) {
            User User = (User) list.get(i);
            String aname = User.getUserName();
            if (aname.equals(str)) {
                b = true;
                break;
            }
        }
        return b;
    }
    //根据用户ID找订单
    public static List<User> fileToListfindfood(int value) throws IOException {
        List<User> list = new ArrayList<User>();
        File file = new File("G:\\Idea_hn_ws\\DB\\User\\User.txt");
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);
        while (true) {
            String str = br.readLine();// 一次读取一行文本
            if (str != null) {
                // System.out.println(str);
                String[] arr = str.split(" ");

                User user = new User();
                user.setUserId(Integer.parseInt(arr[0]));  // ID
                user.setUpassword(arr[1]);  //密码
                user.setUserName(arr[2]);   //用户名称
                user.setAccount(Integer.parseInt(arr[3]));    //账户
                user.setUserVIP(Boolean.parseBoolean(arr[4]));  // VIP
                user.setUsersex(arr[5]);     // 性别
                user.setUserAddress(arr[6]);
                user.setOrder(arr[7]);
                if (user.getUserId() == value) {
                    list.add(user);
                }
            } else {
                break;
            }
        }
        return list;
    }
}

ELM_V1_用户的实现类

package elm_V1;
/**
 * [用户业务类]
 *
 * @author 秦帅
 * @date 2023-9-26
 */

import java.io.IOException;
import java.util.List;
import java.util.Scanner;

import static elm_V1.MenuServiceImp.*;
import static elm_V1.MenuServiceImp.menu02;
import static elm_V1.UserGJ.fileToList;
import static elm_V1.UserGJ.listToFile;


public class UserServiceImp {
    public static int value = 0;  //登录之后的id


    // 用户注册
    public static void userReg() throws IOException {
        int num = UserGJ.getFileRow() + 1;

        Scanner sc = new Scanner(System.in);
        System.out.println("请按如下格式输入用户信息  空格间隔");
        System.out.println("用户名称 用户性别 用户地址");
        String str = sc.nextLine();
        String[] str_arr = str.split(" ");
        while(str_arr.length!=3){
            System.out.println("请重新输入用户信息  空格间隔");
            System.out.println("用户名称 用户性别 用户地址");
            String str1 = sc.nextLine();
            str = str1;
            str_arr = str.split(" ");
        }

        while (UserGJ.aisRepeat(str_arr[0])) {
            System.out.println("用户名称重复 请重新输入用户名称:");
            str_arr[0] = sc.next();
        }

        while (BusinessGJ.isOver(str_arr[0], 40)) { // 40
            System.out.println("请重新输入用户名称 长度<=40:"); // 40
            str_arr[0] = sc.next();
        }

        while (BusinessGJ.isOver(str_arr[1], 2)) { // 2
            System.out.println("请重新输入用户性别 男/女:"); // 2
            str_arr[1] = sc.next();
        }

        while (BusinessGJ.isOver(str_arr[2], 40)) { // 40
            System.out.println("请重新输入用户地址 长度<=40:"); // 40
            str_arr[2] = sc.next();
        }
        System.out.println("请输入密码");
        String pwd = sc.next();
        System.out.println("请再次输入密码");
        String pwd2 = sc.next();

        boolean bz = BusinessGJ.isInclude(pwd, BusinessGJ.c1) && BusinessGJ.isInclude(pwd, BusinessGJ.c2)
                && BusinessGJ.isInclude(pwd, BusinessGJ.c3) && BusinessGJ.isInclude(pwd, BusinessGJ.c4) && pwd.length() >= 8;

        while (!bz) {
            System.out.println("密码强度不够或位数不够,请重新输入");
            pwd = sc.next();
            bz = BusinessGJ.isInclude(pwd, BusinessGJ.c1) && BusinessGJ.isInclude(pwd, BusinessGJ.c2)
                    && BusinessGJ.isInclude(pwd, BusinessGJ.c3) && BusinessGJ.isInclude(pwd, BusinessGJ.c4)
                    && pwd.length() >= 8;
        }

        while (!pwd.equals(pwd2)) {
            System.out.println("两次输入的密码不相同 请重新输入密码:");
            pwd = sc.next();
            System.out.println("请再次输入密码");
            pwd2 = sc.next();
        }

        User bs = new User();
        bs.setUserId(num);
        bs.setUserName(str_arr[0]);
        bs.setUsersex(str_arr[1]);
        bs.setUserAddress(str_arr[2]);
        bs.setUpassword(pwd);
        List<User> list = fileToList();
        list.add(bs);
        listToFile(list);

        System.out.println("用户注册成功 用户ID为: " + num + "  密码为: " + pwd + " 可以用它登录系统");

        // 暂停程序
        String str2 = sc.nextLine();
        MenuServiceImp.menu01();
    }

    // 用户登录
    public static void userLogin() throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请按如下格式输入用户信息  空格间隔");
        System.out.println("用户ID 用户密码");
        String str = sc.nextLine();
        String[] str_arr = str.split(" ");
        while(str_arr.length!=2){
            System.out.println("请重新输入用户信息  空格间隔");
            System.out.println("用户ID 用户密码");
            String str1 = sc.nextLine();
            str = str1;
            str_arr = str.split(" ");
        }
        String id = str_arr[0];
        String psd = str_arr[1];
        while (!(UserGJ.uisRightpsd(id, psd))) {
            System.out.println("您输入的ID或密码有误,用户ID 用户密码(空格间隔)请重新输入...");
            String str1 = sc.nextLine();
            String[] str_arr1 = str1.split(" ");
            id = str_arr1[0];
            psd = str_arr1[1];
        }
        //传参
        value = Integer.parseInt(id);
        System.out.println("登录成功后正在进入用户管理菜单...");


//		System.out.println("通过逐步提示 让商户利用键盘输入 登录信息");
//		System.out.println("登录成功后进入menu02(商户管理 2级菜单)");
//		System.out.println("登录失败后返回menu01(1级菜单)");
        System.out.println("按回车键...");
        // 暂停程序
        String str3 = sc.nextLine();
        menu04();
    }

    // 显示用户信息
    public static void queryUser() throws IOException {
            List<User> list = UserGJ.fileToList();
//		System.out.println("请输入您的商户ID...");
            Scanner sc = new Scanner(System.in);
//		String str = sc.nextLine();
            //ID转整形
//		int id = Integer.parseInt(str);
        User user = (User) list.get(value - 1);
            System.out.println("您的用户ID为:" + user.getUserId());
            System.out.println("您的用户登录密码为:" + user.getUpassword());
            System.out.println("您的用户名称为:" + user.getUserName());
            System.out.println("您的性别为:" + user.getUsersex());
            System.out.println("您的用户余额为:" + user.getAccount());
            System.out.println("您是否为VIP:" + user.getUserVIP());
            System.out.println("您的配送地址为:" + user.getUserAddress());
            System.out.println("您的订单如下为:" + user.getOrder());
            // 暂停程序
            String str1 = sc.nextLine();
            menu04();
    }

    // 修改用户信息
    public static void modifyUser() throws IOException {
        List<User> list = UserGJ.fileToList();
//		System.out.println("请输入您的商户ID...");
        Scanner sc = new Scanner(System.in);
//		String str = sc.nextLine();
        System.out.println("请选择您要修改的用户信息...");
        System.out.println("请输入相应的数字,在0-5之间选择...");
        System.out.println("1.用户登录密码");
        System.out.println("2.用户名称");
        System.out.println("3.用户性别");
        System.out.println("4.用户的配送地址");
        System.out.println("5.用户订单");
        System.out.println("0.返回上一级菜单");
        Scanner sc1 = new Scanner(System.in);
        String str1 = sc1.nextLine();


        User user = (User) list.get(value - 1);
        int ca = Integer.parseInt(str1);
        switch (ca) {
            case 1:
                System.out.println("请输入您修改后的用户登录密码...");
                String pwd = sc.next();
                System.out.println("请再次输入您修改后的用户登录密码...");
                String pwd2 = sc.next();


                boolean bz = BusinessGJ.isInclude(pwd, BusinessGJ.c1) && BusinessGJ.isInclude(pwd, BusinessGJ.c2)
                        && BusinessGJ.isInclude(pwd, BusinessGJ.c3) && BusinessGJ.isInclude(pwd, BusinessGJ.c4) && pwd.length() >= 8;

                while (!bz) {
                    System.out.println("密码强度不够或位数不够,请重新输入");
                    pwd = sc.next();
                    bz = BusinessGJ.isInclude(pwd, BusinessGJ.c1) && BusinessGJ.isInclude(pwd, BusinessGJ.c2)
                            && BusinessGJ.isInclude(pwd, BusinessGJ.c3) && BusinessGJ.isInclude(pwd, BusinessGJ.c4)
                            && pwd.length() >= 8;
                }

                while (!pwd.equals(pwd2)) {
                    System.out.println("两次输入的密码不相同 请重新输入密码:");
                    pwd = sc.next();
                    System.out.println("请再次输入密码");
                    pwd2 = sc.next();
                }
                user.setUpassword(pwd2);
                UserGJ.listToFile(list);
                System.out.println("密码修改成功!");
                break;
            case 2:
                System.out.println("请输入您修改后的用户名称...");
                String dz = sc.next();
                while (BusinessGJ.isOver(dz, 50)) { // 50
                    System.out.println("请重新输入用户名称 长度<=50:"); // 50
                    dz = sc.next();
                }
                user.setUserName(dz);
                UserGJ.listToFile(list);
                System.out.println("用户名称修改成功!");
                break;
            case 3:
                System.out.println("请输入您修改后的用户性别...");
                String ms = sc.next();
                while (BusinessGJ.isOver(ms, 2)) { // 2
                    System.out.println("请重新输入用户性别 长度<=2:"); // 50
                    ms = sc.next();
                }
                user.setUsersex(ms);
                UserGJ.listToFile(list);
                System.out.println("用户性别修改成功!");
                break;
            case 4:
                System.out.println("请输入您修改后的用户的配送地址.....");
                String mc = sc.next();
                while (BusinessGJ.isOver(mc, 40)) { // 50
                    System.out.println("请重新输入配送地址 长度<=40:"); // 50
                    mc = sc.next();
                }
                user.setUserAddress(mc);
                UserGJ.listToFile(list);
                System.out.println("您的配送地址已修改成功!");
                break;
            case 5:
                System.out.println("请输入您修改的用户订单.....");
                String dd = sc.next();
                while (BusinessGJ.isOver(dd, 40)) { // 50
                    System.out.println("请重新输入用户订单 长度<=40:"); // 50
                    dd = sc.next();
                }
                user.setOrder(dd);
                UserGJ.listToFile(list);
                System.out.println("您的用户订单已修改成功!");
                break;
            case 0:
                System.out.println("按回车键后回到商户管理菜单.....");
                menu04();
                break;
            default:
                System.out.println("请选择相应的功能! 在0-5之间选择。");
        }
        // 暂停程序
        String str3 = sc.nextLine();
        menu04();
    }

    // 注销用户
    public static void deleteUser() throws IOException {
        List<User> list = UserGJ.fileToList();
        System.out.println("您确定要注销该用户吗?(Y/N)");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        if (str.equals("Y") || str.equals("y")) {
//			System.out.println("请输入您要注销的商户ID...");
//			String str6 = sc.nextLine();
//			int id = Integer.parseInt(str6);
            User user = (User) list.get(value - 1);
            list.remove(user.getUserId() - 1);
            UserGJ.listToFile(list);
            System.out.println("用户注销成功!");
            System.out.println("即将返回主菜单!");
            String str5 = sc.nextLine();
            menu03();
        } else {
            System.out.println("按回车键后回到管理员菜单...");
            // 暂停程序
            String str5 = sc.nextLine();
            menu03();
        }
    }
    //展示订单
    public static void showOrder() throws IOException {
        List<User> list = UserGJ.fileToListfindfood(value);
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        String str1 = sc.nextLine();
        menu02();



    }
}

posted @ 2023-09-28 15:47  Kbaor  阅读(32)  评论(0)    收藏  举报