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

小区快递管理系统

知识点

抽象类、多态、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();
	}

}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值