快递E栈
创建三个数组:快递单号、快递公司名称、取件码
// 创建快递信息存储数组(假定存储有3个快递)
// 快递单号
String[] ordersId = new String[3];
// 快递公司名称
String[] names = new String[3];
// 取件码
int[] codes = new int[3];
对两个选择操作分别使用两个switch语句
System.out.println("\n请输入您的身份信息: 1-快递员 2-用户");
int num = sc.nextInt();
switch(num) {
case 1: // 表示这是快递员在操作
System.out.println("请选择操作: A-存快递 B-删除快递 C-修改快递信息 D-查看所有快递信息");
String num2 = sc.next();
switch(num2){
case "A":
case "B":
case "C":
case "D":
}
break;
case 2: // 表示这是用户在操作
System.out.println("请输入取件码:");
int code1 = sc.nextInt();
int index4 = -1;
// 寻找匹配的取件码
for(int i= 0;i<ordersId.length;i++) {
if(codes[i] !=0 && codes[i] == code1) {
index4 = i;
break;
}
}
if(index4 == -1) {
System.out.println("未找到该快递");
}else {
// 取快递
ordersId[index4] = null;
// 这两个可删可不删
names[index4] = null;
codes[index4] = 0;
System.out.println("您已取件成功!");
}
break;
}
对于快递员的存快递操作:
case "A": // 存快递
// 遍历数组查找是否还有空位置,进行添加
int index = -1; // 该变量用来判断快递柜是否存满
for(int i = 0 ; i < ordersId.length; i++) {
if(ordersId[i] == null) {
index = i;
break;//遇到一个就跳出循环
}
}
// 判断快递柜是否存满,并进行相关操作
if(index == -1) {
System.out.println("快递柜已满,无法继续存入");
}else {
// 如果有空位置 ,则存入以下数据:
// index 可以换成 i
// 录入单号
System.out.println("请输入快递单号:");
String number = sc.next();
ordersId[index] = number;
// 录入公司名称
System.out.println("请输入公司名称:");
String company = sc.next();
names[index] = company;
// 随机生成 1-1000的取件码 ,其中 Math.random()*1000 表示0-999个数据
int code = (int)( Math.random()*1000) +1;
codes[index] = code;
System.out.println("此快递已经存入,取件码是: "+ code);
}
break;
对于快递员的删除快递操作:
case"B"://删除快递
System.out.println("请输入要删除的快递单号:");
Stringnumber2=sc.next();
intindex1=-1;//该变量用来判断是否匹配到对应快递单号
for(inti=0;i<ordersId.length;i++){
if(ordersId[i].equals(number2)){
index1=i;
break;//匹配到就直接跳出循环
}
}
//判断是否匹配到快递单号,并进行相关操作
if(index1==-1){
System.out.println("该快递单号不存在!");
}else{
//清空数组中对应的值
ordersId[index1]=null;
//这两个可删可不删,因为前面都是依据ordersId是否为null判断
names[index1]=null;
codes[index1]=0;
System.out.println("已删除该快递单号");
}
break;
对于快递员的修改快递信息 操作:
case"C"://修改快递信息
System.out.println("请输入要修改的快递单号:");
Stringnumber3=sc.next();
intindex2=-1;//该变量用来判断是否匹配到对应快递单号
for(inti=0;i<ordersId.length;i++){
if(ordersId[i].equals(number3)){
index2=i;
break;//匹配到就直接跳出循环
}
}
//判断是否匹配到快递单号,并进行相关操作
if(index2==-1){
System.out.println("该快递单号不存在!");
}else{
//修改对应的快递信息
//将新快递单号赋值给数组中对应位置
System.out.println("请输入新的快递单号:");
Stringnewnumber=sc.next();
ordersId[index2]=newnumber;
//将新公司名称赋值给数组中对应位置
System.out.println("请输入新的公司名称:");
Stringnewcompany=sc.next();
names[index2]=newcompany;
//将新的取件码赋值给数组中对应位置
intnewcode=(int)(Math.random()*1000)+1;
codes[index2]=newcode;
System.out.println("您已修改成功!"+"新的取件码:"+newcode);
}
break;
对于快递员的查看操作:
case"D"://查看操作
int index3=-1;//该变量用来判断快递柜是否全空
for(inti=0;i<ordersId.length;i++){
if(ordersId[i]!=null){
index3=0;//这里可以赋予任何不为-1的值
break;//只要有一个,说明快递柜不为空就立即跳出
}
}
if(index3==-1){
System.out.println("快递柜为空,暂无快递");
}else{
System.out.println("所有快递信息如下:");
System.out.println("快递单号\t公司名称\t取件码");
for(inti=0;i<ordersId.length;i++){
if(ordersId[i]!=null){
System.out.println(ordersId[i]+"\t"+names[i]+"\t"+codes[i]);
}
}
}
break; //结束case"D",跳出switch(num2)语句
对于用户的取件操作:
case2://表示这是用户在操作
System.out.println("请输入取件码:");
intcode1=sc.nextInt();
intindex4=-1;
//寻找匹配的取件码
for(inti=0;i<ordersId.length;i++){
if(codes[i]!=0&&codes[i]==code1){
index4=i;
break;
}
}
if(index4==-1){
System.out.println("未找到该快递");
}else{
//取快递
ordersId[index4]=null;
//这两个可删可不删
names[index4]=null;
codes[index4]=0;
System.out.println("您已取件成功!");
}
break;