cai鸟驿站管理系统
需求:要求实现登陆,完成管理员对员工的管理,以及员工对订单的管理。如果登陆成功。根据登陆用户的权限,进入不同的界面。如果用户以管理员身份登陆系统,则进入管理员管理员工的界面。
功能:
管理员登录:查看所有员工、添加员工、删除员工,修改登陆管理员的密码、安全退出,几个功能模块。
员工登录:入库、客户取货、查看未收货订单,按取货码查询订单,按姓名查询订单,修改登陆员工的密码、安全退出,几个功能模块。
思路:首先我建了6个类,分别是:员工类、管理员业务类、员工业务类、快递类、菜单类、流程测试类。
员工类写员工的属性,管理员业务类写登录和管理员身份登录后可执行的功能,员工业务类写员工身份登录后可执行的功能,快递类写快递的属性,菜单类用switch语句分别写功能的调用,用while循环写一个死循环,不限制执行次数。然后在测试流程类调用前面的菜单类。
1、创建员工类
/*** 员工类*/
public class Employee {/**用户名*/public String username;/**密码*/public String psw;/**等级*/public String level;
}
2、创建管理员业务类
import com.project.class1_19.Employee;import javax.swing.*;/*** 管理员业务类*/
public class ManageService {/**员工标*/public static int index = -1;/**员工数组*/public static Employee[] EmployeeArray = new Employee[2];/**员工人数*/public static int num = EmployeeArray.length;public static void loginIn(){if (login()==false) {JOptionPane.showMessageDialog(null,"非法用户");System.exit(0);}if ("管理员".equals(EmployeeArray[index].level)) {Menu.level();}else {Menu.Employee();}}/**登录*/public static boolean login(){EmployeeArray[0] =new Employee();EmployeeArray[0].username ="张三";EmployeeArray[0].psw="111";EmployeeArray[0].level="管理员";EmployeeArray[1] =new Employee();EmployeeArray[1].username ="张四";EmployeeArray[1].psw ="222";EmployeeArray[1].level ="员工";for (int i=0;i<3;i++){String username = JOptionPane.showInputDialog(null, "请输入用户名");String psw = JOptionPane.showInputDialog(null, "请输入密码");if (checkLogin(username,psw) !=-1){return true;}else {JOptionPane.showMessageDialog(null,"用户名或密码错误");}}return false;}/*** 检测用户名或密码是否正确*/public static int checkLogin(String username,String psw){for (int i =0;i<num;i++){if (username.equals(EmployeeArray[i].username) && psw.equals(EmployeeArray[i].psw)){index =i;return i;}}return -1;}/*** 查看员工信息*/public static void showInfor(){String inFor = "姓名 等级\n";for (int i = 0; i < num; i++) {inFor += EmployeeArray[i].username + " " + EmployeeArray[i].level + "\n";}JOptionPane.showMessageDialog(null, inFor);}/*** 建个更长的员工数组*/public static void newArray(){Employee[] newEArray =new Employee[num+10];for (int i=0;i<num;i++){newEArray[i] =EmployeeArray[i];}EmployeeArray =newEArray;}/*** 添加员工*/public static void addEmployee(){String name = JOptionPane.showInputDialog(null,"请输入姓名");String level = JOptionPane.showInputDialog(null,"请输入等级");if (num==EmployeeArray.length){newArray();}EmployeeArray[num] =new Employee();EmployeeArray[num].username =name;EmployeeArray[num].psw = "666";EmployeeArray[num].level =level;num++;String isContinue = JOptionPane.showInputDialog(null,"是否继续(y/n)");if ("y".equalsIgnoreCase(isContinue)){//忽略大小写比较是否相等addEmployee();}}/*** 检测员工是否存在* @return*/public static int checkEmployee(){String str = JOptionPane.showInputDialog(null,"请输入姓名");for (int i=0;i<num;i++){if (str.equals(EmployeeArray[i].username)){return i;}}JOptionPane.showMessageDialog(null,"查无此人");return -1;}/*** 删除员工*/public static void deleteEmployee(){if (checkEmployee()!=-1){for (int i=checkEmployee();i<num-1;i++){EmployeeArray[i] =EmployeeArray[i+1];}num--;showInfor();}}/*** 改密码*/public static void changPsw(){String psw = JOptionPane.showInputDialog(null,"请输旧密码");if (psw.equals(EmployeeArray[index])==false){JOptionPane.showMessageDialog(null,"旧密码错误");return;}String newPsw = JOptionPane.showInputDialog(null,"请输入新密码");String newPsw1 = JOptionPane.showInputDialog(null,"请再次输入新密码");if (newPsw.equals(newPsw1)==false){JOptionPane.showMessageDialog(null,"两次密码不一致");return;}EmployeeArray[index].psw = newPsw;}
}
3、创建员工业务类
import com.project.class1_19.Express;import javax.swing.*;
import java.time.LocalDate;/*** 员工业务类*/
public class EmployeeService {/**快递数组*/public static Express[] ExpressArray = new Express[3];/**快递数*/public static int x=0;/**快递坐标*/
// public static int y = -1;/**入库*/public static void pickInto(){if (x == ExpressArray.length){newExpressArray();}String code = JOptionPane.showInputDialog(null,"请输入取货码");String consignee =JOptionPane.showInputDialog(null,"请输入收货人");String phone = JOptionPane.showInputDialog(null,"请输入收货人电话");ExpressArray[x] = new Express();ExpressArray[x].pickupCode = code;ExpressArray[x].consignee = consignee;ExpressArray[x].consigneePhone = phone;ExpressArray[x].pickInToTime = LocalDate.now();ExpressArray[x].pickupTime = "未取货";ExpressArray[x].pickupName = "无";ExpressArray[x].handler = "无";x++;String reAdd = JOptionPane.showInputDialog(null, "是否继续入库订单 (y/n)");if ("y".equalsIgnoreCase(reAdd)) {pickInto();}}/*** 建一个更长的快递数组*/public static void newExpressArray(){Express[] newExpressArray = new Express[x+10];for (int i = 0;i<x ;i++){newExpressArray[i] = ExpressArray[i];}ExpressArray = newExpressArray;}/**客户取货*/public static void pickup(){int a =checkEx();if (checkEx()!=-1){String s = "取货码 收货人 收货人电话 入库时间 取货时间 取货人 经办人\t\n";s = s +ExpressArray[a].pickupCode+" "+ExpressArray[a].consignee+" "+ExpressArray[a].consigneePhone+" "+ExpressArray[a].pickInToTime+" "+ExpressArray[a].pickupTime+" "+ExpressArray[a].pickupName+" "+ExpressArray[a].handler+" \n";}if ("未取货".equals(ExpressArray[a].pickupTime)){String str = JOptionPane.showInputDialog(null,"确认要取走吗? 是/否");if ("是".equals(str)){String name = JOptionPane.showInputDialog(null,"取件人签字");ExpressArray[a].pickupName =name;ExpressArray[a].pickupTime =LocalDate.now().toString();ExpressArray[a].handler = ManageService.EmployeeArray[ManageService.index].username;}}JOptionPane.showMessageDialog(null,"该订单已被取走");}/*** 检测取货码是否存在* @return 快递对应的数组坐标*/public static int checkEx(){String code = JOptionPane.showInputDialog(null,"请输入取货码");for (int i=0;i<x;i++){if (code.equals(ExpressArray[i].pickupCode)){return i;}}JOptionPane.showMessageDialog(null,"该取货码不存在");return -1;}/*** 查看未收货订单*/public static void notTaken(){String s ="取货码 收货人 收货人电话 入库时间 取货时间 取货人 经办人\n";for (int i=0;i<x;i++){if ("未取货".equals(ExpressArray[i].pickupTime)){s = s+ExpressArray[i].pickupCode+" "+ExpressArray[i].consignee+" "+ExpressArray[i].consigneePhone+" "+ExpressArray[i].pickInToTime+" "+ExpressArray[i].pickupTime+" "+ExpressArray[i].pickupName+" "+ExpressArray[i].handler+"\n";}}JOptionPane.showMessageDialog(null,s);}/*** 按取货码查找订单*/public static void findCode(){int b =checkEx();if (b != -1) {String s = "取货码 收货人 收货人电话 入库时间 取货时间 取货人 经办人\n";s = s + ExpressArray[b].pickupCode + " " + ExpressArray[b].consignee + " " + ExpressArray[b].consigneePhone+ " " + ExpressArray[b].pickInToTime + " " + ExpressArray[b].pickupTime + " " + ExpressArray[b].pickupName+ " " + ExpressArray[b].handler + "\n";}}/*** 按姓名查找订单*/public static void findName(){String name = JOptionPane.showInputDialog(null,"请输入收货人姓名");String s ="取货码 收货人 收货人电话 入库时间 取货时间 取货人 经办人\n";for (int i=0;i<ExpressArray.length;i++){if (name.equals(ExpressArray[i].consignee)){s = s+ExpressArray[i].pickupCode+" "+ExpressArray[i].consignee+" "+ExpressArray[i].consigneePhone+" "+ExpressArray[i].pickInToTime+" "+ExpressArray[i].pickupTime+" "+ExpressArray[i].pickupName+" "+ExpressArray[i].handler+"\n";}}JOptionPane.showMessageDialog(null,s);}
}
4、创建快递类
import java.time.LocalDate;/***快递类*/
public class Express {/**取货码*/public String pickupCode;/**收货人*/public String consignee;/**收货人电话*/public String consigneePhone;/**入库时间*/public LocalDate pickInToTime;/**取货时间*/public String pickupTime;/**取货人*/public String pickupName;/**经办人*/public String handler;
}
5、创建菜单类
import javax.swing.*;/*** 菜单类*/
public class Menu {public static void level() {ManageService MS = new ManageService();while (true) {String str = JOptionPane.showInputDialog(null,"欢迎使用员工管理\n" + " \n" + "1、查看所有员工\n" + "2、添加员工\n" + "3、删除员工\n" + "4、修改密码\n" + "5、安全退出\n");switch (str) {case "1":MS.showInfor();break;case "2":MS.addEmployee();break;case "3":MS.deleteEmployee();break;case "4":MS.changPsw();break;case "5":new Test();break;}}}public static void Employee(){EmployeeService ES =new EmployeeService();ManageService MS = new ManageService();while (true){String str =JOptionPane.showInputDialog(null,"欢迎使用员工管理\n"+" \n"+"1、入库\n"+"2、客户取货\n"+"" +"3、查看未收货订单\n"+"4、按取货码查询订单\n"+"5、按姓名查询订单\n"+"6、修改密码\n"+"7、安全退出\n");switch (str){case "1":ES.pickInto();break;case "2":ES.pickup();break;case "3":ES.notTaken();break;case "4":ES.findCode();break;case "5":ES.findName();break;case "6":MS.changPsw();break;case "7":new Test();break;}}}
}
6、创建流程测试类
import javax.swing.*;/*** 流程测试类*/
public class Test {public Test() {ManageService MS = new ManageService();while (true) {String str = JOptionPane.showInputDialog(null,"欢迎使用菜鸟驿站管理系统\n" + " \n" + "1、登录系统\n" + "2、退出系统");switch (str) {case "1":MS.loginIn();break;case "2":System.exit(0);default:JOptionPane.showMessageDialog(null, "选择错误");break;}}}public static void main(String[] args) {new Test();}
}
效果截图
1.用户名或密码输入错误
2.超过3次输入错误
3.管理员身份登录成功4.查看员工功能
5.员工身份登录成功
6.查看未取货订单