【摘录】模拟物流快递系统程序设计

一、类的设计

类图如下:

在这个类图中,有两个接口Careable(保养接口),GPS(定位接口);一个抽象类Transportation(运输抽象类);三个具体类:Ztransportation(专业运输车类),Phone(手机定位类),SendTask(快递发货任务类)。

其中的Ztransportation继承至Transportation类并实现Careable接口;Phone实现GPS接口;SendTask类的send()方法需要依赖Transportation类型和GPS类型的对象完成快递送货的任务。


二、编码实现

(一)、创建对应包,类文件和接口文件。项目结构如下图所示:


(二)、编写Transportation抽象类

package com.hnevc.sendtask;

public abstract class Transportation {
	private String number; //编号
	private String model;//型号
	private String admin;//运货负责人
	public Transportation(){
		
	}
	//定义构造方法
	public Transportation(String number,String model,String admin){
		this.number = number;
		this.model = model;
		this.admin = admin;
	}
	//定义抽象方法
	abstract public void transport();
	//实现对属性的封装
	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;
	}
	
}

(二)编码实现Careable接口

package com.hnevc.sendtask;

public interface Careable {
	void upKeep();

(三)实现ZTransportation类

 首先继承Transportation抽象类,

package com.hnevc.sendtask;

public class ZTransportation extends Transportation  {

	@Override
	public void transport() {
		// TODO Auto-generated method stub
		System.out.println("运输中.......");
	}
	public ZTransportation(){
		super();
	}
	//定义带参的构造方法
	public ZTransportation(String number, String model,String admin){
		super(number,model,admin);
	}
}

然后实现Careable接口,在extends Transportation后面添加implements Careable接口,然后实现upKeep()方法。

package com.hnevc.sendtask;

public class ZTransportation extends Transportation implements Careable {

	@Override
	public void transport() {
		// TODO Auto-generated method stub
		System.out.println("运输中.......");
	}
	public ZTransportation(){
		super();
	}
	//定义带参的构造方法
	public ZTransportation(String number, String model,String admin){
		super(number,model,admin);
	}
	@Override
	public void upKeep() {
		// TODO Auto-generated method stub
		System.out.println("保养中.....");
	}
}

(四)定义GPS接口,申请showCoordinate()方法。

package com.hnevc.sendtask;

public interface GPS {
	String showCoordinate();
}

(五)定义Phone类,实现GPS接口

package com.hnevc.sendtask;

public class Phone implements GPS{

	@Override
	public String showCoordinate() {
		// TODO Auto-generated method stub
		String location ="1234,3434";
		return location;
	}

}

(六)实现SendTask类,实现send方法

package com.hnevc.sendtask;

public class SendTask {
	private String number;//快递单号
	private double goodsWeight;//获取重量
	
	public SendTask(String number,double goodsWeight){
		this.number = number;
		this.goodsWeight = goodsWeight;
	}
	//发货前
	public void sendBefore(){
		System.out.println("订单正在处理中....");
		System.out.println("货物重量"+this.goodsWeight+"KG");
		System.out.println("货物验货完毕");
		System.out.println("货物装货完毕");
		System.out.println("通知运货人");
		System.out.println("快递单号:"+this.number);
	}
	//发货中
	public void send(Transportation t, GPS gps){
		System.out.println("发货中...");
		System.out.println("运货人:"+t.getAdmin());
		System.out.println("货车编号:"+t.getNumber());
		System.out.println("货车型号:"+t.getModel());
		System.out.println("当前货车位置:"+gps.showCoordinate());
	}
	//发货后
	public void sendAfter(Transportation t){
		System.out.println("货物运输已经完成");
		System.out.println("运货人:"+t.getAdmin()+"所驾驶的编号为:"+t.getNumber()+"的"+t.getModel()+"已归还");
	}
	
}

(七)实现Test类

  首先实例化一个交通工具类的对象,然后实例化一个定位对象,在实例化一个发货任务对象,调用发货任务的sendBefor,send,sendAfter等方法实现快递送货。最后调用交通工具的保养方法。

package com.hnevc.sendtask;

public class Test {
	public static void main(String[] args) {
		Transportation t = new ZTransportation("湘A1234567","三一货卡","张三");
		GPS gps = new Phone();
		
		SendTask sendTask = new SendTask("SP3412345345", 12.8);
		sendTask.sendBefore();
		sendTask.send(t, gps);
		sendTask.sendAfter(t);
		((ZTransportation)t).upKeep();
	}
}

三、执行结果


  • 20
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 需求概述 物流配送公司的主要业务是为用户配送货物;物流公司的组织结构分为省公司和配送点;省公司主要负责车辆的维护、配送点、配送线路、配送价格的维护;配送点主要是接收客户订单,并联系省公司车队将货物运送到目的地;配送点同时还负责货物的配送工作。 对于一个货物的费用应包含如下两部分费用:运输费用和配送费用,运输费用是指由配送地到目的地配送点的费用,而配送费用是指由目的地配送点到客户指定地址的配送费用。 价格由省公司统一维护,配送点无权修改 1.1 业务流程 1.1.1 货物配送流程 1) 用户有货物需要配送 2) 用户网上下订单或通知本地配送点下订单 3) 用户运送货物到本地配送点 4) 配送点进行货物清点并填写货物配送交接单 5) 配送车辆进行装车(配送货物省去了时间限制) 6) 配送货物途中状态更新 7) 货物到达目的配送点,目的配送点检查货物并修改货物状态 8) 目的配送点进行货物配送 9) 客户接收货物 10) 配送点修改货物状态 1.2 车辆管理 车辆管理是由省公司负责的,省公司负责购买车辆,以及车辆的维护,运力调配等;在该系统中我们只需要把车辆的增、删、改做完即可;对于货物的体积如果超过一辆车则可以使用多辆车;每辆车都有状态表示;只有空闲时才可以安排。 1.3 路线管理 路线管理目前我们只做到路线的浏览、增加、修改、删除、配送点循序维护。内容如下:线路名称、配送点顺序。 1.4 收入分成设置 该页面提供设置省公司、发货配送点、收货配送点的分成比例; 省公司:50% 发货配送点:40% 收货配送点:10% 1.5 配送点管理 配送点管理是由省公司完成的,有配送点的浏览、添加、修改、删除、查看配送范围、查看配送价格等。 1.6 配送范围管理 各个配送点可以维护本地配送范围,本地配送范围包括,范围名称、配送时间、备注。包括配送范围的查询、修改、删除、添加。 备注:配送范围隶属于配送点,配送点不存在,配送范围也就不存在。 1.7 配送价格管理 配送价格包括配送点之间的运输价格和配送范围的配送价格;配送点间的运输价格由配送点来维护,总公司审核;配送范围的价格由配送点维护,同时提供查询功能供其它人进行查询。 配送点间价格:包括增、删、改、查;内容包括:发货配送点、收货配送点、首公斤、次公斤、首立方、次立方价格、备注。 配送范围价格:包括增、删、改、查;内容包括配送点名称、配送范围名称首公斤、次公斤、首立方、次立方价格、备注。 备注:价格隶属于配送点,只要有一个配送点不存在,整个价格就不再处在。 1.8 订单管理 订单管理是包括下订单、订单的修改、删除;其中订单只有在收货物之前的可以修改;下单的过程一般由用户或者配送点管理员来完成。 1.8.1 订单查询 每一个配送点的管理人员可以查询配送点的当前订单情况。查询的订单可以包括:今日订单,历史订单,未处理订单等。 1.8.2 订单输入、确认与订单状态维护 本功能模块分为三个子模块:订单输入、订单确认和订单状态维护。 1、 订单输入:对于用户不是在网上下单的情况,配送点要把该订单输入到网上,以便统一管理和调度。 2、订单确认:用户的网上订单,需要业务人员与货主联系确认,并收货后,再改变订单状态,才能够真正生效,进入拼凑,运输流程。配送点订单管理员通过订单输入页面中的发货日与发货车辆两个字段来进行订单确认。 3、订单状态维护:配送点管理员对所有的订单都应该进行审查和批复。而且应该维护订单的各种状态,包括:接受、在途(在哪个点)、在配送中、客户已收、等待支付等。订单部分状态的维护要结合条形码自动完成。 另外,如客户对订单进行了退订操作,则订单状态变为退订并突出显示出来;同时将所退订单发送到货物即将到达的配送点,通知配送点将货物卸下。货物即将到达的配送点还要将订单的目的地改为货物即将到达的配送点,同时产生一个新订单,目的地是货物的发出地。订单输入页面中设有订单状态字段,订单管理员通过对此字段的改变来维护订单状态。 1.8.3 条形码管理 货物验收后需要进行封单,我们目前采用给同一个订单的货物设置一个封单号,为了简化流程不再单独创建一个封单。封单号采用条形码的方式。 条形码规则:共16为前三位为配送点编码,不足三位用0代替,后三位为类别代码,中间10位为运单号码。条形码放在订单里。 1.9 货物类别维护 包括类别的增删改,内容包括类别代码,货物类别名称;其中类别代码采用自动增长方式 1.10 交接单 装货完成后,配送点管理员(业务员)需要生成交接单,根据目的配送点的数量生成相应的交接单;比如该车货物需要去五个配送点,则需要产生五个交接单。 根据订单的具体情况由配送点每天生成交接单,并进行打印。交接单一式三份,每个交接地一张交接单。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值