Java代码~~汽车租赁系统

租车信息:

输出结果:

代码:

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<motos.length;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 }
原文地址:https://www.cnblogs.com/qjc-hll-520/p/11934845.html