Java模拟物流快递系统程序设计(此题仅仅实现类的继承与多态)

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

任务描述

网购已成为人民生活的重要组成部分,当人们在购物网站中下订单后,订单中的货物就会在经过一系列的流程后,送到客户手中.而在送货其间,物流管理人员可以在系统中查看所有物品的物流信息。编写一个模拟物流快递系统的程序,模拟后台系统处理货物的过程.

实现思路

运输货物首先需要有交通工具,所以需要定义一个交通工具类。由于交通工具可能有很多,所以可以将该交通工具类定义为一个抽象类,类中需要包含该交通工具的编号、型号以及运货负责人等属性,还需要定义一个抽象的运输方法。

交通工具有很多种,可以定义一个专用的运输车类,该类继承交通工具类。

有了运输工具后,就可以运送货物了,货物在运输前,运输时和运输后,都需要检查和记录,并且每一个快递都有快递单号,可以定义一个快递任务类,包含快递单号和货物重量的属性及货物发送前,发送途中和送到后得方法。

实现

定义工具类:此类定义为抽象的,包含车辆编号、车辆型号、运货负责人等属性、以及其各自get 和set 方法,同时定义一个抽象的运输方法。

定义专用运输车类。该类继承交通工具类(可多定义几种运输车类:大货车,小货车)。

定义快递任务类该类包含快递单号,货物重量属性,送前准备方法(显示订单开始处理,仓库验货中;货物重量信息,货物检验完毕,货物填装完毕,运货人已通知,快递单号信息);发送货物(显示运货人信息,位置暂时可以自定增加接口后自动获取);送后操作(显示货物运送任务结束,运货人所驾驶的编号为。。。的型号为。。。的车已经归还);定义设置,获取快递单号的方法及货物重量的方法。

定义测试类,实例化对象并传入数据,测试运行。

代码实现

交通工具抽象类

/**
 * 
 * @author 
 * 交通工具抽象类
 */
public abstract class Vehicle {
    private String number;
    private String model;
    private String admin;
    //构造方法
    public Vehicle() {
    	
    }
	public Vehicle(String number, String model, String admin) {
		super();
		this.number = number;
		this.model = model;
		this.admin = admin;
	}
	
	//送货方法
	public abstract void vehicle();
	
	//生成getter和setter方法
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	public String getAdmin() {
		return admin;
	}
	public void setAdmin(String admin) {
		this.admin = admin;
	}
    
    
}
复制代码

专用交通工具子类

/**
 * 
 * @author 
 * 专用交通工具子类
 */
public class AVehicle extends Vehicle{
    
	//构造方法
	public AVehicle() {
		super();
	}

	public AVehicle(String number, String model, String admin) {
		super(number, model, admin);
	}
	
    //重写送货方法
	@Override
	public void vehicle(){
		System.out.println("货物正在运送中......");
	}
}

复制代码

快递类

/**
 * 
 * @author 
 * 快递任务类
 */
public  class ExpressTask {
    double weight; //货物重量
    String number;//快递单号
    
    //生成构造方法
    public ExpressTask() { 	
    }
    public ExpressTask(double weight, String number) {
		super();
		this.weight = weight;
		this.number = number;
	}
	
	//运送前方法
    public void before() {
    	System.out.println("订单开始处理...");
    	System.out.println("仓库验货中...");
    	System.out.println("货物重量:"+this.weight+"kg");
    	System.out.println("货物检验完毕...");
    	System.out.println("货物填装完毕...");
    	System.out.println("正在随机分配运货人...");
    	System.out.println("运货人已通知...");
    	System.out.println("快递单号:"+this.number);
    }
    
    //实例化交通工具
    AVehicle tool = new AVehicle("001","宾利","老马");
    
    //运送中方法
    public void sending() {
    	
    	System.out.println("运货人:"+ tool.getAdmin()+"\n"
                           +"车辆型号:"+tool.getModel()+"\n"
    			           +"车辆编号:"+tool.getNumber());
    	tool.vehicle();
    }
    
    //运送后方法
    public void later() {
    	System.out.println("货物运送结束...");
    	System.out.println("运货人"+tool.getAdmin()
    	                  +"所驾驶的编号为"+tool.getNumber()
    	                  +"的型号为"+tool.getModel()
    	                  +"的车已归还");
    }
}
复制代码

测试类

/**
 * 
 * @author 
 * 快递测试类
 */
public class test {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		//创建快递任务
		ExpressTask express = new ExpressTask();
		
		System.out.println("正在创建快递任务...");
		System.out.println("请输入快递重量(kg):");
		express.weight = scanner.nextDouble();
		System.out.println("请输入快递单号:");
		express.number = scanner.next();
		System.out.println("订单创建成功...");
		
		//调用送货前
        express.before();
        System.out.println("=============================");
        //调用送货中
        
        express.sending();
        System.out.println("=============================");
        //调用送货后
        express.later();
	}

}

复制代码

运行实例

在这里插入图片描述

Guess you like

Origin juejin.im/post/7034878809291620388