租车信息:
输出结果:
代码:
1、先定义抽象类(汽车类:Moto)
1 package cn.aura.demo01; 2 3 public abstract class Moto { 4 //公共属性 5 private String id;//车牌号 6 private String brand;//品牌 7 private int preRent;//日租金 8 //构造方法 9 public Moto(String id, String brand, int preRent) { 10 this.id = id; 11 this.brand = brand; 12 this.preRent = preRent; 13 } 14 //set和get方法 15 public String getId() { 16 return id; 17 } 18 public void setId(String id) { 19 this.id = id; 20 } 21 public String getBrand() { 22 return brand; 23 } 24 public void setBrand(String brand) { 25 this.brand = brand; 26 } 27 public int getPreRent() { 28 return preRent; 29 } 30 public void setPreRent(int preRent) { 31 this.preRent = preRent; 32 } 33 //计算租金方法 34 public abstract double calRent(int days); 35 }
2.定义轿车类继承汽车类
1 package cn.aura.demo01; 2 /** 3 * 轿车类 4 */ 5 public class Car extends Moto{ 6 //私有属性 7 private String type;//型号 8 //set和get方法 9 public String getType() { 10 return type; 11 } 12 public void setType(String type) { 13 this.type = type; 14 } 15 //构造方法 16 public Car(String id, String brand, String type,int preRent) { 17 super(id, brand, preRent); 18 this.type = type; 19 } 20 21 //重写计算租金的算法 22 @Override 23 public double calRent(int days) { 24 if(days >0 && days <= 7) { 25 //days小于7天,不打折 26 return getPreRent()*days; 27 }else if (days > 7 && days <= 30) { 28 //days大于7天,9折 29 return getPreRent()*days*0.9; 30 }else if (days > 30 && days <= 150) { 31 //days大于30天,8折 32 return getPreRent()*days*0.8; 33 }else if (days > 150) { 34 //days大于150天,7折 35 return getPreRent()*days*0.7; 36 } 37 return 0; 38 } 39 }
3.定义客车类
1 package cn.aura.demo01; 2 /** 3 * 客车类 4 */ 5 public class Bus extends Moto{ 6 //私有属性 7 private int seatCount;//座位数 8 //set和get方法 9 public int getSeatCount() { 10 return seatCount; 11 } 12 public void setSeatCount(int seatCount) { 13 this.seatCount = seatCount; 14 } 15 //构造方法 16 public Bus(String id, String brand, int seatCount, int preRent) { 17 super(id, brand, preRent); 18 this.seatCount = seatCount; 19 } 20 //重写计算租金的算法 21 @Override 22 public double calRent(int days) { 23 if(days >0 && days <3) { 24 //days小于3天,不打折 25 return getPreRent()*days; 26 }else if (days >= 3 && days < 7) { 27 //days大于3天,9折 28 return getPreRent()*days*0.9; 29 }else if (days >= 7 && days <30) { 30 //days大于3天,8折 31 return getPreRent()*days*0.8; 32 }else if (days >= 30 && days <150) { 33 //days大于30天,7折 34 return getPreRent()*days*0.7; 35 }else if (days >= 150) { 36 //days大于150天,6折 37 return getPreRent()*days*0.6; 38 } 39 return 0; 40 } 41 }
4.定义汽车业务类
1 package cn.aura.demo01; 2 /** 3 * 定义汽车业务类 4 */ 5 public class MotoOperation { 6 //初始化数组 7 public static Moto[] motos = new Moto[8]; 8 //创建8个汽车对象 9 public void init() { 10 motos[0] = new Car("京NY28558", "宝马", "X6", 800); 11 motos[1] = new Car("京CNY3284", "宝马", "550i", 600); 12 motos[2] = new Car("京NT37465", "别克", "林荫大道", 300); 13 motos[3] = new Car("京NT96968", "别克", "GL8", 600); 14 motos[4] = new Bus("京6566754", "金杯", 16, 800); 15 motos[5] = new Bus("京8696997", "金龙", 16, 800); 16 motos[6] = new Bus("京9696996", "金杯", 34, 1500); 17 motos[7] = new Bus("京8696998", "金龙", 34, 1500); 18 } 19 //租赁汽车的方法 20 public Moto motoLeaseOut(String brand,String type,int seat) { 21 //for循环遍历数组motos 22 for(int i=0;i){ 23 if (brand.equals(motos[i].getBrand())) { 24 // 判断Moto类的motos[i]的类型是否和Car一样 25 if (motos[i] instanceof Car) { 26 // 强转成小汽车Car 27 Car car = (Car) motos[i]; 28 if (type.equals(car.getType())) { 29 return car; 30 } 31 } 32 if(motos[i] instanceof Bus){ 33 // 强转成大客车Bus 34 Bus bus = (Bus) motos[i]; 35 if (seat == bus.getSeatCount()) { 36 return bus; 37 } 38 } 39 } 40 41 } 42 //如果没有就返回空 43 return null; 44 } 45 }
5.定义测试类
1 package cn.aura.demo01; 2 3 import java.util.Scanner; 4 5 /** 6 * 汽车租赁管理类 7 */ 8 public class TestRent { 9 //主函数 10 public static void main(String[] args) { 11 MotoOperation motoOperation = new MotoOperation(); 12 // 初始化汽车 13 motoOperation.init(); 14 //设置一个空容器 15 Moto moto = null; 16 // 提示信息 17 System.out.println("***********欢迎光临腾飞汽车租赁公司***********"); 18 System.out.println("1、轿车 2、客车"); 19 System.out.println("请输入你要租赁的汽车类型:"); 20 // 获取用户输入 21 Scanner scanner = new Scanner(System.in); 22 int flag = scanner.nextInt(); 23 if (flag == 1) { 24 //轿车 25 System.out.println("请选择你要租赁的汽车品牌:1、别克 2、宝马"); 26 int brand = scanner.nextInt(); 27 if (brand == 1) { 28 System.out.println("请选择你要租赁的汽车类型:1、林荫大道 2、GL8"); 29 int type = scanner.nextInt(); 30 if (type == 1) { 31 moto = motoOperation.motoLeaseOut("别克", "林荫大道", 4); 32 } else if (type == 2) { 33 moto = motoOperation.motoLeaseOut("别克", "GL8", 4); 34 } 35 } else if (brand == 2) { 36 System.out.println("请选择你要租赁的汽车类型:1、X6 2、550i"); 37 int type = scanner.nextInt(); 38 if (type == 1) { 39 moto = motoOperation.motoLeaseOut("宝马", "X6", 4); 40 } else if (type == 2) { 41 moto = motoOperation.motoLeaseOut("别克", "550i", 4); 42 } 43 } 44 } else if (flag == 2) { 45 //客车 46 System.out.println("请选择你要租赁的汽车品牌:1、金龙 2、金杯"); 47 int brand = scanner.nextInt(); 48 if (brand == 1) { 49 System.out.println("请选择你要租赁的汽车座位数:1、16座 2、34座"); 50 int type = scanner.nextInt(); 51 if (type == 1) { 52 moto = motoOperation.motoLeaseOut("金龙", "", 16); 53 } else if (type == 2) { 54 moto = motoOperation.motoLeaseOut("金龙", "", 34); 55 } 56 } else if (brand == 2) { 57 System.out.println("请选择你要租赁的汽车座位数:1、16座 2、34座"); 58 int type = scanner.nextInt(); 59 if (type == 1) { 60 moto = motoOperation.motoLeaseOut("金杯", "", 16); 61 } else if (type == 2) { 62 moto = motoOperation.motoLeaseOut("金杯", "", 34); 63 } 64 } 65 } 66 //客户汽车匹配完成 67 if (moto != null) { 68 // 获取用户租车天数 69 System.out.println("请输入您的租车天数:"); 70 int days = scanner.nextInt(); 71 // 计算租车钱 72 double money = moto.calRent(days); 73 System.out.println("分配给您的汽车牌号是:" + moto.getId()); 74 System.out.println("您需要支付的租赁费用是:" + money + "元"); 75 }else { 76 System.out.println("很抱歉先生:当前的公司内,暂无您要的汽车类型!请重新选择!"); 77 } 78 79 } 80 81 82 }