超详细注释之小区快递管理系统(Java二维数组)

    技术2024-05-28  78

    小区快递管理系统

    知识点

    抽象类、多态、equals、Object类的概念,类的继承与使用,二维数组的使用。 拓展内容: String.valueOf()方法:把数据转换为字符串类型 注意:null类型数据不能直接用于比较判断,需要转换为字符串类型

    功能实现

    描述:疫情期间为了减少人员接触,很多小区在快递的配送流程中,加入了快递柜.

    抽象类(父类):快递系统类

    用于存放二维数组,类似数据库

    public abstract class ExpressSystem { ExpressSystem(){} //封装属性 public String getOrderNum() { return orderNum; } public void setOrderNum(String orderNum) { this.orderNum = orderNum; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public String getTakeOutNum() { return takeOutNum; } public void setTakeOutNum(String takeOutNum) { this.takeOutNum = takeOutNum; } //快递单号 private String orderNum; //快递公司 private String company; //6位取件码 private String takeOutNum; //快递柜,20表示快递柜数量(随意修改) static Object[][] cabinet = new Object[20][3]; //x存放柜子位置 //0存放快递的单号的位置 //1存在快递公司的位置 //2存放6位取件码的位置 @Override public String toString() { return "这是系统类"; } }

    子类:管理员系统类

    实现管理员的增删改查操作

    import java.util.Random; import java.util.Scanner; public class UserSystem extends ExpressSystem{ UserSystem() { super(); } //快递录入 void write(String orderNum, String company) { //随机产生柜子位置 Random random = new Random(); int x = 0; int count = 0; while (true) { x = random.nextInt(cabinet.length); if (String.valueOf(cabinet[x][0]).equals("null")) { break; } if (count>50) { System.out.println("快递好像存满了,请查看所有快递"); exit(); } count++; } //随机产生6位取件码,转换为String类型 String takeOutNum = "0"; takeOutNum = String.valueOf(random.nextInt(999999)); //发送取件码短信给用户,不用实现 //存入父类 setCompany(company); setOrderNum(orderNum); setTakeOutNum(takeOutNum); //存入数组 cabinet[x][0] = getOrderNum(); cabinet[x][1] = getCompany(); cabinet[x][2] = getTakeOutNum(); System.out.println("-------已写入的数据是-------"); System.out.println("柜子位置:"+x); System.out.println("快递单号"+orderNum); System.out.println("快递公司:"+company); System.out.println("取件码:"+takeOutNum); } private void exit() { // TODO Auto-generated method stub } //删除快递,根据单号 void remove(String orderNum) { //根据单号判断柜子x for (int i = 0; i < cabinet.length; i++) { if (String.valueOf(cabinet[i][0]).equals(String.valueOf(orderNum))) { int x = i; //存入父类 setCompany(null); setOrderNum(null); setTakeOutNum(null); //存入数组 cabinet[x][0] = getOrderNum(); cabinet[x][1] = getCompany(); cabinet[x][2] = getTakeOutNum(); System.out.println("-------快递已删除-------"); System.out.println("柜子位置:"+x+" 号的快递已删除"); } } } //修改快递,根据单号 void update(String orderNum) { //根据单号判断柜子x for (int i = 0; i < cabinet.length; i++) { if (String.valueOf(cabinet[i][0]).equals(String.valueOf(orderNum))) { int x = i; Scanner input = new Scanner(System.in); //输入修改公司、输入修改单号、输入修改取件码 System.out.print("修改公司名:"); String company = input.nextLine(); System.out.print("修改单号:"); orderNum = input.nextLine(); System.out.print("修改取件码:"); String takeOutNum = input.nextLine(); //存入父类 setCompany(company); setOrderNum(orderNum); setTakeOutNum(takeOutNum); //存入数组 cabinet[x][0] = getOrderNum(); cabinet[x][1] = getCompany(); cabinet[x][2] = getTakeOutNum(); System.out.println("-------已修改的数据是-------"); System.out.println("柜子位置:"+x); System.out.println("快递单号"+cabinet[x][0]); System.out.println("快递公司:"+cabinet[x][1]); System.out.println("取件码:"+cabinet[x][2]); } } System.out.println("执行结束"); } //查看所有快递,遍历打印 void print() { for (int i = 0; i < cabinet.length; i++) { System.out.print("柜子位置"+i+","); System.out.print("快递单号"+cabinet[i][0]+","); System.out.print("快递公司"+cabinet[i][1]+","); System.out.print("取件码"+cabinet[i][2]+"。"); System.out.println(); } } @Override public String toString() { return "这是管理员类"; } }

    子类:普通用户类

    实现用户取快递操作(其实就是管理员删快递)

    public class User extends ExpressSystem{ public User() { super(); } //取快递(删除快递) void takeOut(String takeOutNum) { //根据取件码号判断柜子x for (int i = 0; i < cabinet.length; i++) { if (String.valueOf(takeOutNum).equals(String.valueOf(cabinet[i][2]))) { int x = i; System.out.println("-------将要取出的快递是-------"); System.out.println("柜子位置:"+x); System.out.println("快递单号"+cabinet[x][0]); System.out.println("快递公司:"+cabinet[x][1]); System.out.println("取件码:"+cabinet[x][2]); //存入父类 setCompany(null); setOrderNum(null); setTakeOutNum(null); //存入数组 cabinet[x][0] = getOrderNum(); cabinet[x][1] = getCompany(); cabinet[x][2] = getTakeOutNum(); System.out.println("快递已取出"); } } System.out.println("执行结束"); } @Override public String toString() { return "这是用户类"; } }

    main类:测试类

    测试所有类的方法是否有bug,是否成功

    public class Test { public static void main(String[] args) { UserSystem userSystem = new UserSystem(); //管理员写入数据 userSystem.write("13", "公司"); userSystem.write("15", "公司"); userSystem.write("19", "公司"); userSystem.write("20", "公司"); //管理员修改数据 userSystem.update("13"); //管理员删除数据 userSystem.remove("20"); User user = new User(); //用户取出快递(删除数据) user.takeOut("6613"); //打印所有数据 userSystem.print(); } }
    Processed: 0.010, SQL: 9