完成快递 E 栈(控制台简易版)系统。
功能介绍:
1. 角色切换(快递员和普通用户)
快递员功能:存快递,删除快递,修改快递,查看所有快递
普通用户功能:取快递
2.存快递
输入快递单号,输入快递名称,显示取件码
3.删除快递
输入快递单号删除快递
4.修改快递
输入需要修改的快递单号,然后输入新的快递单号,输入新的公司名称
5.查看所有快递
显示所有快递信息
6.取快递
输入取件码取件
使用 while循环 的嵌套和 break语句 实现界面的切换,将每个功能独立为一个方法,对存储快递信息的数组进行操作。
代码如下:
public static void main(String[] args) {
//二维数组存储快递信息,第二维下标分别为:0-快递单号 1-快递公司名称 2-取件码
String[][] parcelInfo = new String[3][3];
//获取输入数据
Scanner scanner = new Scanner(System.in);
String inputString;
//进入系统
system:while (true){
System.out.println("=====欢迎使用快递E站快递柜=====");
System.out.println("请输入您身份:1-快递员,2-用户 退出系统请输入exit");
inputString = scanner.next();
//根据打开相应界面或退出系统
if(inputString.equals("1")){
//进入快递员界面,传入输入数据,传入快递信息数组
deliveryman(scanner,parcelInfo);
}else if(inputString.equals("2")){
//进入用户界面,传入输入数据
user(scanner,parcelInfo);
}else if(inputString.equals("exit")){
//退出系统
break system;
}
}
System.out.println("=====系统已退出,感谢您的使用=====");
}
快递员界面和用户界面
//快递员界面
public static void deliveryman(Scanner scanner,String[][] parcelInfo){
deliverymanInterface:while (true) {
System.out.println("当前身份为 快递员 请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递 退出请输入exit");
String inputString = scanner.next();
if (inputString.equals("1")) {
//调用存快递方法,传入输入数据,传入快递信息数组
saveParcel(scanner,parcelInfo);
} else if (inputString.equals("2")) {
//调用删除快递方法,传入输入数据,传入快递信息数组
deleteParcel(scanner,parcelInfo);
} else if (inputString.equals("3")) {
//调用修改快递信息方法,传入输入数据,传入快递信息数组
amendParcelInfo(scanner,parcelInfo);
}else if (inputString.equals("4")) {
//调用查看所有快递方法,传入输入数据,传入快递信息数组
checkAllParcel(parcelInfo);
}else if (inputString.equals("exit")) {
//退出快递员界面
break deliverymanInterface;
}
}
}
//用户界面
public static void user(Scanner scanner,String[][] parcelInfo){
userInterface:while (true) {
System.out.println("当前身份为 用户 请输入取件码: 退出请输入exit");
String inputString = scanner.next();
if (inputString.equals("exit")) {
break userInterface;
}else{
//调用取快递方法,传入输入数据,传入快递信息数组
getParcel(inputString,parcelInfo);
}
}
}
快递员相关方法
//快递员相关操作
//存库快递方法
public static void saveParcel(Scanner scanner,String[][] parcelInfo) {
saveParcel:while (true) {
//遍历数组寻找空闲格子
for (int i = 0; i < 3; i++) {
//判断当前格子是否为空
if (parcelInfo[i][0] == null) {
System.out.println("请输入快递单号");
String inputString = scanner.next();
//存入快递单号
parcelInfo[i][0] = inputString;
System.out.println("请输入公司名称");
inputString = scanner.next();
//存入公司名称
parcelInfo[i][1] = inputString;
//计算随机取件码存入快递信息
int getRadom = (int) (Math.random() * 10000);
System.out.println("快递已存入,取件码为:" + getRadom);
parcelInfo[i][2] = getRadom + "";//随机数转化为字符串
//如果取件码不足4位,则在后面补0
if(4>parcelInfo[i][2].length()){
for(int j = parcelInfo[i][2].length()-4;j>0;j--){
parcelInfo[i][2] += "0";
}
}
//结束存快递操作
break saveParcel;
}
}
System.out.println("没有空闲的格子可以存放快递");
break saveParcel;
}
}
//删除快递方法
public static void deleteParcel(Scanner scanner,String[][] parcelInfo){
deleteParcel:while (true) {
//输入单号,查找数组中的单号
System.out.println("请输入要删除的快递单号");
String inputString = scanner.next();
for (int i = 0; i < 3; i++) {
//找到对应单号
if (inputString.equals(parcelInfo[i][0])) {
//删除快递单号
parcelInfo[i][0] = null;
parcelInfo[i][1] = null;
parcelInfo[i][2] = null;
System.out.println("单号:" + inputString + " 删除成功");
break deleteParcel;
}
}
System.out.println("未找到快递 " + inputString);
break deleteParcel;
}
}
//修改快递信息方法
public static void amendParcelInfo(Scanner scanner,String[][] parcelInfo){
amendParcelInfo:while (true) {
//输入单号,查找数组中的单号
System.out.println("请输入要修改的快递单号");
String inputString = scanner.next();
for (int i = 0; i < 3; i++) {
//找到对应单号
if (inputString.equals(parcelInfo[i][0])) {
//修改快递单号
System.out.println("请输入新的快递单号");
inputString = scanner.next();
//存入快递单号
parcelInfo[i][0] = inputString;
System.out.println("请输入公司名称");
inputString = scanner.next();
//存入公司名称
parcelInfo[i][1] = inputString;
System.out.println("修改成功");
break amendParcelInfo;
}
}
System.out.println("未找到快递 " + inputString);
break amendParcelInfo;
}
}
//查看所有快递方法
public static void checkAllParcel(String[][] parcelInfo){
System.out.println("所有快递信息如下:");
System.out.println("快递单号"+ "\t" + "公司名称"+ "\t" + "取件码");
checkAllParcel:while (true) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(parcelInfo[i][j] + "\t");
}
//打印完一条信息换行
System.out.println("");
}
System.out.println("");
break checkAllParcel;
}
}
用户相关方法
//用户相关操作
//取件方法
public static void getParcel(String inputString,String[][] parcelInfo){
getParcel:while (true) {
//输入单号,查找数组中的单号
for (int i = 0; i < 3; i++) {
//找到对应单号
if (inputString.equals(parcelInfo[i][2])) {
//删除快递单号
parcelInfo[i][0] = null;
parcelInfo[i][1] = null;
parcelInfo[i][2] = null;
System.out.println("取件成功");
break getParcel;
}
}
System.out.println("未找到快递 " + inputString);
break getParcel;
}
}
运行结果: