快递E栈02(二维数组,面向对象)

具体需求如图:

 代码:

Express:

 1 package com.zzk.senior;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Express {
 6     //快递柜只能存100个快递,可以按需更改
 7     public static ExpressQuality[][] eq = new ExpressQuality[9][9];
 8     public static void main(String[] args) {
 9         hei:while(true){
10             System.out.println("请选择身份:1.管理员    2.用户(输入1或者2)   3.退出");
11             Scanner scanner = new Scanner(System.in);
12             try {
13                 int a = scanner.nextInt();
14                 switch(a){
15                     case 1:{
16                         System.out.println("请选择功能:1.快递录入  2.删除快递  3.修改快递  4.查看所有快递");
17                         int selectFunction = scanner.nextInt();
18                         if(selectFunction == 1){
19                             Add add = new Add();
20                             add.Add();
21                         }else if(selectFunction == 2){
22                             Delete delete = new Delete();
23                             delete.Delete();
24                         }else if(selectFunction == 3){
25                             Modify modify = new Modify();
26                             modify.Modify();
27                         }else if(selectFunction == 4){
28                             Search search = new Search();
29                             search.search();
30                         }else{
31                             System.out.println("输入有误");
32                         }
33                         break;
34                     }
35                     case 2:{
36                         TakeOut takeOut = new TakeOut();
37                         takeOut.takeOut();
38                         break;
39                     }
40                     case 3:{
41                         break hei;
42                     }
43                     default:{
44                         System.out.println("亲,只能输入1或2哦!");
45                         break;
46                     }
47                 }
48             }catch (RuntimeException e){
49                 System.out.println("亲,只能输入数字哦!");//查看所有快递有错误
50             }
51         }
52     }
53 }

ExpressQuality

 1 package com.zzk.senior;
 2 
 3 public class ExpressQuality {
 4     private int trackingNumber;
 5     private String company;
 6     private int pickUpCode;
 7 
 8     public ExpressQuality(){}
 9     public ExpressQuality(int trackingNumber,String company,int pickUpCode){
10         this.trackingNumber = trackingNumber;
11         this.company = company;
12         this.pickUpCode = pickUpCode;
13     }
14 
15     public int getPickUpCode() {
16         return pickUpCode;
17     }
18 
19     public void setPickUpCode(int pickUpCode) {
20         this.pickUpCode = pickUpCode;
21     }
22 
23     public String getCompany() {
24         return company;
25     }
26 
27     public void setCompany(String company) {
28         this.company = company;
29     }
30 
31     public int getTrackingNumber() {
32         return trackingNumber;
33     }
34 
35     public void setTrackingNumber(int trackingNumber) {
36         this.trackingNumber = trackingNumber;
37     }
38 }

Code

 1 package com.zzk.senior;
 2 
 3 import java.util.Random;
 4 
 5 public class Code {
 6     public int code() {
 7         Random random = new Random();
 8         return random.nextInt(899999) + 100000;
 9     }
10 }

Add

 1 package com.zzk.senior;
 2 
 3 import java.util.Scanner;
 4 import static com.zzk.senior.Express.eq;
 5 
 6 public class Add {
 7     public void Add(){
 8         Scanner scanner = new Scanner(System.in);
 9         try{
10             System.out.println("请输入快递单号:");//未限制6位数
11             int trackingNumber = scanner.nextInt();
12             System.out.println("请输入快递公司:");
13             String company = scanner.next();
14             ExpressQuality expressQuality = new ExpressQuality();//每次调用都会产生一次对象
15             expressQuality.setTrackingNumber(trackingNumber);
16             expressQuality.setCompany(company);
17             //生成取件码,并且取件码不能重复
18             Code c = new Code();
19             int cd = c.code();
20             hei:for(int i = 0;i<eq.length;i++){
21                 for(int j = 0;j<eq.length;j++){
22                     if(eq[i][j] == null){
23                         break hei;
24                     }
25                     if(eq[i][j].getPickUpCode() == cd){
26                         cd = c.code();
27                     }
28                 }
29             }
30 
31             expressQuality.setPickUpCode(cd);
32 
33             haha:for(int i = 0;i<eq.length+1;i++){
34                 for(int j = 0;j<eq.length+1;j++){
35                     if(eq[i][j] == null){
36                         eq[i][j] = expressQuality;
37                         break haha;
38                     }
39                 }
40             }
41             System.out.println("快递已存入,取件码是:"+cd);
42         }catch (RuntimeException e){
43             System.out.println("亲,请输入数字快递单号!");
44         }
45 
46     }
47 
48 }

Delete

 1 package com.zzk.senior;
 2 
 3 import java.util.Scanner;
 4 import static com.zzk.senior.Express.eq;
 5 
 6 public class Delete {
 7     public void Delete(){
 8         Scanner scanner = new Scanner(System.in);
 9         System.out.println("请输入要删除的快递单号:");
10         try{
11             int tracking1 = scanner.nextInt();
12             hei:for(int i = 0;i<eq.length;i++) {
13                 for(int j = 0;j<eq.length;j++){
14                     if(eq[i][j] == null) {
15                         if(i == 8 || j == 8){
16                             System.out.println("未找到快递");
17                         }
18                         continue;
19                     }else if(eq[i][j].getTrackingNumber() == tracking1) {
20                         eq[i][j] = null;
21                         System.out.println("删除成功");
22                         break hei;
23                     }
24                 }
25             }
26         }catch (RuntimeException e){
27             System.out.println("亲,请输入正确的快递单号!");
28         }
29     }
30 }

Modify

 1 package com.zzk.senior;
 2 
 3 import java.util.Scanner;
 4 import static com.zzk.senior.Express.eq;
 5 
 6 public class Modify {
 7     public void Modify(){
 8         Scanner scanner = new Scanner(System.in);
 9         System.out.println("请输入要修改的快递单号:");
10         try{
11             int tracking1 = scanner.nextInt();
12             hei:for(int i = 0;i<eq.length;i++) {
13                 for(int j = 0;j<eq.length;j++){
14                     ExpressQuality expressQuality = new ExpressQuality();
15                     if(eq[i][j] == null) {
16                         if(i == 8 || j == 8){
17                             System.out.println("未找到快递");
18                         }
19                         continue;
20                     }else if(eq[i][j].getTrackingNumber() == tracking1) {
21                         System.out.println("请输入新的快递单号:");
22                         int tracking3 = scanner.nextInt();
23                         System.out.println("请输入新的公司名称:");
24                         String company1 = scanner.next();
25                         //新的取件码
26                         Code c = new Code();
27                         expressQuality.setPickUpCode(c.code());
28                         expressQuality.setTrackingNumber(tracking3);
29                         expressQuality.setCompany(company1);
30                         eq[i][j] = expressQuality;
31                         System.out.println("修改成功");
32                         break hei;
33                     }
34                 }
35             }
36         }catch (RuntimeException e){
37             System.out.println("亲,请输入6位数快递单号!");
38         }
39 
40     }
41 }

Search

 1 package com.zzk.senior;
 2 
 3 import static com.zzk.senior.Express.eq;
 4 
 5 public class Search {
 6     public void search(){
 7         System.out.println("所有快递信息如下:");
 8         System.out.println("快递单号    公司名称    取件码");
 9         for(int i = 0;i<eq.length;i++){
10             for(int j = 0;j<eq.length;j++){
11                 if (eq[i][j] != null) {
12                     System.out.println(eq[i][j].getTrackingNumber() + "         " + eq[i][j].getCompany() + "         " + eq[i][j].getPickUpCode());
13                 }else if(eq[i][j] == null){
14                     continue; //跳出循环
15                 }
16             }
17         }
18     }
19 }

TakeOut

 1 package com.zzk.senior;
 2 
 3 import java.util.Scanner;
 4 import static com.zzk.senior.Express.eq;
 5 
 6 public class TakeOut {
 7     public void takeOut(){
 8         System.out.println("请输入取件码:");
 9         Scanner scanner = new Scanner(System.in);
10         try{
11             int tracking1 = scanner.nextInt();
12             hei:for(int i = 0;i<eq.length;i++) {
13                 for(int j = 0;j<eq.length;j++){
14                     if(eq[i][j] == null) {
15                         if(i == 8 || j == 8){
16                             System.out.println("未找到快递");
17                         }
18                         continue;
19                     }else if(eq[i][j].getPickUpCode() == tracking1) {
20                         eq[i][j] = null;
21                         System.out.println("取件成功");
22                         break hei;
23                     }
24                 }
25             }
26         }catch (RuntimeException e){
27             System.out.println("亲,请输入6位数取件码!");
28         }
29     }
30 }

实现效果:

原文地址:https://www.cnblogs.com/zhangzhongkun/p/14394674.html