汽车租赁管理系统之对象,数组

 汽车类父类:

//父类:汽车类
public abstract class Vehicle {
//车牌号  品牌  日租金
	private String vehicleId;//车牌
	private String brand;//品牌
	private int perRent;//日租金
	//有参构造
	public Vehicle(String vehicleId, String brand, int perRent) {
		this.vehicleId = vehicleId;
		this.brand = brand;
		this.perRent = perRent;
	}
	
	public Vehicle() {
	}

	public String getVehicleId() {
		return vehicleId;
	}
	public void setVehicleId(String vehicleId) {
		this.vehicleId = vehicleId;
	}
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public int getPerRent() {
		return perRent;
	}
	public void setPerRent(int perRent) {
		this.perRent = perRent;
	}
	//抽象方法:计算租金--》根据租赁周期来计算租金
	public abstract float clacRent(int days);
	
}

 子类轿车类:

//子类:轿车类
public class Car extends Vehicle {
	//型号
	private String type;
	
	public Car() {
		
	}

	public Car(String vehicleId, String brand, int perRent,String type) {
		super(vehicleId, brand, perRent);
		this.type=type;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	//根据轿车计算租金的规则重写父类方法
	@Override
	public float clacRent(int days) {
		//租金 = 日租金*租赁周期
		float price = this.getPerRent()*days;
		//折扣规则
		if(days>7 && days<=30){
			price*=0.9f;
		}else if(days>30 && days<=150){
			price*=0.8f;
		}else if(days>150){
			price*=0.7f;
		}
		return price;
	}
	

}

子类客车类:

//子类:客车类
public class Bus extends Vehicle {
	//座位数
	private int seatCount;
	
	public Bus() {
		
	}

	public Bus(String vehicleId, String brand, int perRent,int seatCount) {
		super(vehicleId, brand, perRent);
		this.seatCount=seatCount;
	}

	

	public int getSeatCount() {
		return seatCount;
	}

	public void setSeatCount(int seatCount) {
		this.seatCount = seatCount;
	}

	//根据客车计算租金的规则重写父类方法
	@Override
	public float clacRent(int days) {
		//租金 = 日租金*租赁周期
		float price = this.getPerRent()*days;
		//折扣规则
		if(days>3 && days<=7){
			price*=0.9f;
		}else if(days>7 && days<30){
			price*=0.8f;
		}else if(days>=30 && days<=150){
			price*=0.7f;
		}else if(days>150){
			price*=0.6f;
		}
		return price;
	}
	

}

 汽车业务类

import cn.Bus;
import cn.Car;
import cn.Vehicle;

//汽车业务类
public class VehicleOperation {
	Vehicle[] vehicles = new Vehicle[8];
	//汽车信息初始化
	public void init(){
		vehicles[0] = new Car("浙N1556","宝马",700,"x6");
		vehicles[1] = new Car("浙L5669","宝马",800,"550i");
		vehicles[2] = new Car("浙P3456","别克",500,"林荫大道");
		vehicles[3] = new Car("浙O1896","别克",600,"GL8");
		vehicles[4] = new Bus("浙Q1556","金龙",900,34);
		vehicles[5] = new Bus("浙W6856","金龙",1000,16);
		vehicles[6] = new Bus("浙V0356","金杯",1100,34);
		vehicles[7] = new Bus("浙X1786","金杯",750,16);
	}
	//租车
	//参数 : 品牌 座位数 型号
	public Vehicle rentVehicle(String brand ,int seatCount,String type){
		Vehicle v= null;
		for(Vehicle vehicle :vehicles){
			if(vehicle instanceof Car){
				//轿车
				Car car = (Car)vehicle;//向下转型
				//轿车的品牌型号与客户想要的品牌和型号吻合
				if(car.getBrand().equals(brand) && car.getType().equals(type)){
					v=car;
					break;
				}
						
			}else{
				//客车
				Bus bus = (Bus)vehicle;//向下转型
				//客车的品牌型号与客户想要的品牌和型号吻合
				if(bus.getBrand().equals(brand) && bus.getSeatCount()==seatCount){
					v=bus;
					break;
				}
			}
		}
		return v;
	}
}

 汽车租赁管理类:入口测试类

import java.util.Scanner;

import cn.Vehicle;

//汽车租赁管理类:入口测试类
public class VehicleRent {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		VehicleOperation vehicleOpr = new VehicleOperation();
		System.out.println("****************欢迎光临腾飞租赁汽车系统*******************");
		System.out.print("请选择你要租赁的车型:1.轿车 2.客车");
		int vehicleType = input.nextInt();
		
		//获取用户租赁汽车的三个条件:品牌 座位数 型号
		String brand = "";
		int seatCount = 0;
		String type = "";
		
		switch(vehicleType){
		case 1://租赁轿车,获取到用户想租赁的轿车的品牌及型号信息
			System.out.print("请输入您想租赁的汽车品牌:1.别克 2.宝马");
			int choose = input.nextInt();
			if(choose==1){
				brand = "别克";
				System.out.print("请输入您要租赁的汽车类型:1.林荫大道 2.GL8");
				type = (input.nextInt() == 1)?"林荫大道": "GL8";
				
			}else{
				brand = "宝马";
				System.out.print("请输入您要租赁的汽车类型:1.x6 2.550i");
				type = (input.nextInt() == 1)?"x6": "550i";
			}
			break;
		case 2://租赁客车
			System.out.print("请输入您想租赁的汽车品牌:1.金杯 2.金龙");
			brand = (input.nextInt() == 1)?"金杯": "金龙";
			System.out.print("请输入您想租赁的汽车座位数:1.16座 2.34座");
			seatCount = (input.nextInt() == 1)?16: 34;
			break;
			
		}
		//初始化汽车信息
		vehicleOpr.init();
		//租车
		Vehicle v = vehicleOpr.rentVehicle(brand, seatCount, type);
		//提示用户租车的车牌号  计算租金(多态)
		System.out.print("请输入您要租赁汽车的天数:");
		int days = input.nextInt();
		float price = v.clacRent(days);
		System.out.println("分配给您的汽车车牌号为:"+v.getVehicleId());
		System.out.print("您需要支付的租赁费用为:"+price+"元");
		
	}
}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值