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