cai鸟驿站管理系统

article/2025/9/18 17:19:24

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.查看未取货订单
在这里插入图片描述


http://chatgpt.dhexx.cn/article/dO8uO3vA.shtml

相关文章

软件测试——文档测试

从三月份进入公司实习&#xff0c;眨眼间已是七月中了&#xff0c;研一的下半学期恍惚间就结束了。 从前对软件测试的认知局限于黑盒测试、白盒测试&#xff0c;进入公司才知道我所了解的只是“冰山一角”。上个月参与了一个项目&#xff0c;花费了一周左右的时间——对文档。这…

软件的接口设计图_软件工程中的分析、设计与实例

>软件开发>>软件维护"],[20,"\n","24:\"1uh9\"|33:1"],[20,"问题定义>>可行性研究>>需求分析>>概要设计>>详细设计>>编码和单元测试>>综合测试>>软件维护"],[20,"\n&qu…

如何写好软件任务书

一、前言 我们在平常工作中可能会遇到这样的场景&#xff0c;领导跟你讲了我们这个产品大概要做成啥样&#xff0c;然后画了一张简图&#xff0c;就将任务给你&#xff0c;开始出方案设计&#xff0c;需求设计&#xff0c;架构设计&#xff0c;这个时候很多人往往会无从下手。…

软件架构设计概述

1、软件架构设计 软件架构的研究内容主要涉及软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法等。 软件架构设计解决好软件的设计、复用、质量和维护等方面的实际问题&#xff1b;解决各类关键的重复问题的通用方案&#xff08;复用性&#xff…

软件设计师-5.软件工程基础知识

5.1 软件工程概述 5.1.1 软件生存周期 软件&#xff1a;包含程序、数据及相关文档。 软件工程&#xff1a;涉及到软件开发、维护、管理等多方面的原理、工具与环境。最终的目的是开发高质量的软件。 目的&#xff1a;提高软件生产率、提高软件质量、降低软件成本。 声明周…

软件设计文档示例模板 - 学习/实践

1.应用场景 主要用于学习&#xff0c;以及书写软件设计文档。 2.学习/操作 1.文档阅读 加餐 | 软件设计文档示例模板-极客时间 2.整理输出 在第9篇文章中&#xff0c;我讲了每种UML模型图的画法&#xff0c;以及这些画法分别适用于什么样的设计阶段&#xff0c;我们也可以将…

来给你的CSDN博客换个皮肤~

进入CDSN官网&#xff0c;登录自己的账号&#xff0c;点击内容管理。 进入首页&#xff0c;选择博客设置 进入页面后&#xff0c;可修改博客标题、添加博客描述、修改博客皮肤&#xff0c;还可以修改默认编辑器。 来呀&#xff0c;一起换皮肤啊~

cdsn怎么查看我的关注(我关注过谁)

登录后点开链接 https://my.csdn.net/my/follow 如下图&#xff1a;

CDPN解读

关于6-DoF的一些基础的知识点请看上一篇博客。 Related work 从RGB图像中识别6-DoF的方法分为直接法和间接法。 1. 间接法 即不是直接的从RGB图像中恢复出6-DoF的信息&#xff0c;而是现在2维RGB图像和它的3维的模型上建立点到点的对应关系&#xff0c;然后通过数学的方法将…

2023年7月江苏/北京/深圳CDGA/CDGP数据治理认证招生

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

CDSN发文章

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

CDC-ECM 和 RNDIS

HomeCategoriesTagsAboutFeed CDC-ECM 和 RNDIS Category: network Tags: network linux wifi ###1. USB-CDC USB协议中的的CDC类是USB通信设备类 (Communication Device Class) 的简称, CDC类是USB组织定义的一类专门给各种通信设备&#xff08;电信通信设备和中…

CDC

CDC CDC(clock domain crossing) 思维导图: 跨时钟域处理方法总结如下: 1、有关系的时钟之间传单bit数据,理论上只需要源数据保持足够长的时间(clk2的两个周期)即可; 2、无关系的时钟之间传单bit数据,必须要使用同步器; 3、不管有无关系的时钟进行单bit传输,脉冲同…

2023年3月全国DAMA-CDGA/CDGP数据治理认证招生简章

弘博创新是DAMA中国授权的数据治理人才培养基地&#xff0c;贴合市场需求定制教学体系&#xff0c;采用行业资深名师授课&#xff0c;理论与实践案例相结合&#xff0c;快速全面提升个人/企业数据治理专业知识与实践经验&#xff0c;通过考试还能获得数据专业领域证书。 DAMA认…

cdsn的code使用方法

今天无意间发现了csdn的code,刚好前两天因为校园网对github的限制苦恼,这下来了精神,迫不及待的尝试了一下! 网上搜了很多使用方法,在这里做个总结,感谢网上的各位贴友。 code感觉就是github的大陆版,各种功能都蛮像的,希望是一个经得起考验的版本控制器。 下面是方…

CDSN格式

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

CDSN使用教程

欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&#x…

Mysql中去重的语法_MySQL去重distinct

去重 在MySQL中需要查询表中不重复的记录时,可以使用distinct关键字过滤重复记录。 语法: select distinct [,...,] from ; 数据表如下: mysql> select * from emp; +-------+--------+------------+------+------------+------+------+--------+ | empno | ename | job …

mysql去重统计

第一种使用 DISTINCT 去重统计 SELECT COUNT(DISTINCT record_id) FROM assessment_record_date WHERE date_type 1 and DATE_FORMAT( the_date,%Y-%m) DATE_FORMAT(NOW(),%Y-%m) 结果是去重之后的总数量 第二种使用 GROUP BY 去重统计 SELECT COUNT(record_id) FROM a…

mysql查询去重后的总数

mysql 查询去重 建议以后给出列名、数据示例&#xff0c;这样我们写的SQL你可以粘贴运行&#xff5e; SELECTDISTINCT表1.列2,表1.列1 FROM表1 WHERE表1.列2IN(SELECT列1FROM表2) 更多追问追答 谢谢你&#xff0c;我补充了一下&#xff0c;我想粘贴的多点&#xff0c;但是太多了…