任务描述
网购已成为人民生活的重要组成部分,当人们在购物网站中下订单后,订单中的货物就会在经过一系列的流程后,送到客户手中.而在送货其间,物流管理人员可以在系统中查看所有物品的物流信息。编写一个模拟物流快递系统的程序,模拟后台系统处理货物的过程.
实现思路
运输货物首先需要有交通工具,所以需要定义一个交通工具类。由于交通工具可能有很多,所以可以将该交通工具类定义为一个抽象类,类中需要包含该交通工具的编号、型号以及运货负责人等属性,还需要定义一个抽象的运输方法。
交通工具有很多种,可以定义一个专用的运输车类,该类继承交通工具类。
有了运输工具后,就可以运送货物了,货物在运输前,运输时和运输后,都需要检查和记录,并且每一个快递都有快递单号,可以定义一个快递任务类,包含快递单号和货物重量的属性及货物发送前,发送途中和送到后得方法。
实现
定义工具类:此类定义为抽象的,包含车辆编号、车辆型号、运货负责人等属性、以及其各自get 和set 方法,同时定义一个抽象的运输方法。
定义专用运输车类。该类继承交通工具类(可多定义几种运输车类:大货车,小货车)。
定义快递任务类该类包含快递单号,货物重量属性,送前准备方法(显示订单开始处理,仓库验货中;货物重量信息,货物检验完毕,货物填装完毕,运货人已通知,快递单号信息);发送货物(显示运货人信息,位置暂时可以自定增加接口后自动获取);送后操作(显示货物运送任务结束,运货人所驾驶的编号为。。。的型号为。。。的车已经归还);定义设置,获取快递单号的方法及货物重量的方法。
定义测试类,实例化对象并传入数据,测试运行。
代码实现
交通工具抽象类
/*** * @author * 交通工具抽象类*/publicabstractclassVehicle { privateStringnumber; privateStringmodel; privateStringadmin; //构造方法publicVehicle() { } publicVehicle(Stringnumber, Stringmodel, Stringadmin) { super(); this.number=number; this.model=model; this.admin=admin; } //送货方法publicabstractvoidvehicle(); //生成getter和setter方法publicStringgetNumber() { returnnumber; } publicvoidsetNumber(Stringnumber) { this.number=number; } publicStringgetModel() { returnmodel; } publicvoidsetModel(Stringmodel) { this.model=model; } publicStringgetAdmin() { returnadmin; } publicvoidsetAdmin(Stringadmin) { this.admin=admin; } }
专用交通工具子类
/*** * @author * 专用交通工具子类*/publicclassAVehicleextendsVehicle{ //构造方法publicAVehicle() { super(); } publicAVehicle(Stringnumber, Stringmodel, Stringadmin) { super(number, model, admin); } //重写送货方法publicvoidvehicle(){ System.out.println("货物正在运送中......"); } }
快递类
/*** * @author * 快递任务类*/publicclassExpressTask { doubleweight; //货物重量Stringnumber;//快递单号//生成构造方法publicExpressTask() { } publicExpressTask(doubleweight, Stringnumber) { super(); this.weight=weight; this.number=number; } //运送前方法publicvoidbefore() { 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); } //实例化交通工具AVehicletool=newAVehicle("001","宾利","老马"); //运送中方法publicvoidsending() { System.out.println("运货人:"+tool.getAdmin()+"\n"+"车辆型号:"+tool.getModel()+"\n"+"车辆编号:"+tool.getNumber()); tool.vehicle(); } //运送后方法publicvoidlater() { System.out.println("货物运送结束..."); System.out.println("运货人"+tool.getAdmin() +"所驾驶的编号为"+tool.getNumber() +"的型号为"+tool.getModel() +"的车已归还"); } }
测试类
/*** * @author * 快递测试类*/publicclasstest { publicstaticvoidmain(String[] args) { Scannerscanner=newScanner(System.in); //创建快递任务ExpressTaskexpress=newExpressTask(); 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(); } }
运行实例