Java练习小项目(继承与多态)

模拟汽车租赁
在这里插入图片描述

用户输入选择车辆种类、品牌、型号以及租车天数,程序输出租车金额及车牌照。

代码如下:
1.父类(Car)

import java.util.Scanner;

public abstract class Car {
	private String brand;//品牌
	private double dayRent;//日租金
	private String idCard;//车牌号
	
	public Car(String brand,double dayRent,String idCard) {
		this.brand=brand;
		this.dayRent=dayRent;
		this.idCard=idCard;
	}
	public Car() {
	}
	
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand=brand;
	}
	
	public double getDayRent() {
		return dayRent;
	}
	public void setDayRent(double dayRent) {
		this.dayRent=dayRent;
	}
	
	public String getIdCard() {
		return idCard;
	}
	public void setIdCard(String idCard) {
		this.idCard=idCard;
	}
	public abstract double playRent(int days);
}

2.子类(SaloonCar)

class SaloonCar extends Car{
	//型号
	private String type;
	public SaloonCar(String brand,double dayRent,String idCard,String type) {
		super(brand,dayRent,idCard);
		this.type=type;
	}
	public SaloonCar() {
	}
	
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type=type;
	}
	
	@Override
	public double playRent(int days) {
		double money=0;
		if(days>7&&days<=30) {
			money=days*0.9;
		}else if(days>30&&days<=150) {
			money=days*0.8;
		}else if(days>150) {
			money=days*0.7;
		}else {
			money=days;
		}
		return money;
	}
}

3.子类(Bus)

class Bus extends Car{
	//座位数
	private int num;
	public Bus(String brand,double dayRent,String idCard,int num) {
		super(brand,dayRent,idCard);
		this.num=num;
	}
	public Bus() {
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num=num;
	}
	
	
	@Override
	public double playRent(int days) {
		double money=0;
		if(days>=3&&days<7) {
			money=days*0.9;
		}else if(days>=7&&days<30) {
			money=days*0.8;
		}else if(days>=30&&days<150) {
			money=days*0.7;
		}else if(days>=150) {
			money=days*0.6;
		}else {
			money=days;
		}
		return money;
	}
}

4.调用函数类(Player)

class Player{
	Scanner input=new Scanner(System.in);
	Car[] cars=new Car[8];
	public void addCar(){
		cars[0]=new SaloonCar("宝马",800,"京NY28582","3系");
		cars[1]=new SaloonCar("宝马",600,"京CNY3284","M5");
		cars[2]=new SaloonCar("奥迪",300,"京NY37458","A6");
		cars[3]=new SaloonCar("奥迪",600,"京NY96964","RS7");
		cars[4]=new Bus("金杯",800,"京254631",16);
		cars[5]=new Bus("金龙",800,"京355632",16);
		cars[6]=new Bus("金杯",1500,"京256633",34);
		cars[7]=new Bus("金龙",1500,"京357634",34);
	}
	
	//找车
	public Car findCar(String brand,String type,int num) {
		if(cars!=null&&cars.length>0) {
			for(Car c:cars) {
				if(c instanceof SaloonCar) {
					SaloonCar saloonCar=(SaloonCar) c;
					if(saloonCar.getBrand().equals(brand)&&saloonCar.getType().equals(type)) {
						return saloonCar;
					}
				}else if(c instanceof Bus) {
					Bus bus=(Bus) c;
					if(bus.getBrand().equals(brand)&&bus.getNum()==num) {
						return bus;
					}
				}
			}
		}
		return null;
	}
	
	//选品牌(brand)
	public String ChooseCar(int num){
		String brand=null;
		int brandId;
		int num1=(num==1?1:2);
		if(num1==1) {
			System.out.print("请选择品牌:1.宝马\t2.奥迪");
			brandId=input.nextInt();
			brand=(brandId==1?"宝马":"奥迪");
		}else {
			System.out.print("请选择品牌:1.金杯\t2.金龙");
			brandId=input.nextInt();
			brand=(brandId==1?"金杯":"金龙");
		}
		return brand;
	}

	//选型号(type)
	public String Choosetype(String brand1){
	int typeId;
	String type =null;
	if("宝马".equals (brand1)||"奥迪".equals (brand1)){
		if("宝马".equals (brand1)){
			System. out.print("请选择你要订的型号:1.3系\t2.M5");
			typeId= input.nextInt();
			type=(typeId==1?"3系":"M5");
		}else {
			System.out.print("请选择你要订的型号:1.A6\t2.RS7");
			typeId= input.nextInt();
			type=(typeId==1?"A6":"RS7");
		}
	}
	else {
		type=null;
	}
	return type;
}
	
	//选座位数
	public int Choosenum(String brand1) {
		int typeId;
		int num=-1;
		if("宝马".equals(brand1)||"奥迪".equals(brand1)) {
			num=0;
		}else {
			if("金杯".equals(brand1)) {
				System.out.print("请选择座位数:1.16\t2.34");
				typeId=input.nextInt();
				num=(typeId==1?16:34);
			}else {
				System.out.print("请选择座位数:1.16\t2.34");
				typeId=input.nextInt();
				num=(typeId==1?16:34);
			}
		}
		return num;
	}
}

5.主函数

class Test{
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner input=new Scanner(System.in);
		Player a=new Player();
		a.addCar();
		System.out.print("输入订的车型:1.轿车\t2.客车");
		int brandnum=input.nextInt();
		String brand=a.ChooseCar(brandnum);
		String type=a.Choosetype(brand);
		int num=a.Choosenum(brand);
		Car b=a.findCar(brand, type, num);
		System.out.print("请输入天数:");
		int days=input.nextInt();
		SaloonCar c=new SaloonCar();
		System.out.println("车牌号是:"+b.getIdCard());
		System.out.println("费用是:"+c.playRent(days)*b.getDayRent());
	}
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值