慕课网JAVA入门第二季综合练习答答租车系统

->主讲布置的练习要求:创建一个控制台版本的租车系统,运行结果应该如下图所示:



->针对这个练习,我的思路是这样:创建一个Car类,包含租车车辆的所有信息,然后创建仅载人车辆类继承Car类、仅载货车辆类继承Car类,即可载货又可载人车辆类继承Car类。然后创建一维对象数组,使父类Car的对象指向子类的引用。之后再具体实现业务逻辑。具体代码如下:

import java.util.Scanner;

public class DaDaRentCar {
	static int howmuchDay,allPersonNum,allGoodsNum,allManeyNum;
	static int howmuchCar;
	static int[] theCarId = new int[howmuchCar]; //记录输入车辆的序号
	static Car[] carForRent ={(manrideCar)new manrideCar(1,"奥迪A4",500,4),new manrideCar(2, "马自达6", 400, 4),new
			pickupCar(3, "皮卡雪6", 450, 4, 2),new manrideCar(4, "金龙   ", 800, 20),new truckCar(5, "松花江", 400, 4),new
			truckCar(6, "依维柯", 1000, 20)};
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
	     isNeeded();  //判断是否需要进入系统,进入与退出系统的功能在本函数体内完成
	     howmuchCar =  howmuchCar(); //需要租车的数量
	     theCarId = new int[howmuchCar]; //记录输入车辆的序号
	     for(int i=1;i<=howmuchCar;i++){
	    	 System.out.println("请输入第"+i+"辆车的序号");
	    	 theCarId[i-1] = whatCarId();
	     }
	     howmuchDay = howmuchDay();
	     displayDill();
	}
	
	private static void displayDill() {
		// TODO 自动生成的方法存根
		String str_person = new String(),str_goods = new String();
		for(int id:theCarId){
			for(Car car:carForRent){
				if(car.id == id){
					allManeyNum += car.money;
					if(car.getClass() == manrideCar.class){
						str_person += car.name+"  ";
						allPersonNum += car.personNum;
					}
					else if(car.getClass() == truckCar.class){
						str_goods += car.name+"  ";
						allGoodsNum += car.goodsNum;
					}
					else if(car.getClass() == pickupCar.class){
						str_goods += car.name+"   ";
						str_person += car.name;
						allPersonNum += car.personNum;
						allGoodsNum += car.goodsNum;
					}
				}
			}
		}
		str_person += "共载人:"+Integer.toString(allPersonNum)+"人";
		str_goods += "共载货:"+Integer.toString(allGoodsNum)+"吨";
		System.out.print("您的账单:\n***可载人的车有:\n"+str_person+"\n***载货的车有:\n"+str_goods+"\n***租车总价格:"+Integer.toString(allManeyNum*howmuchDay)+"元");
	}

	private static int howmuchDay() {
		// TODO 自动生成的方法存根
		System.out.println("请输入您要租车的时间/天");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		return num;
	}


	private static int whatCarId() {
		// TODO 自动生成的方法存根
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		return num;
	}


	private static int howmuchCar() {
		// TODO 自动生成的方法存根
		System.out.println("请输入你要租车的数量");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		return num;
	}


	private static void isNeeded() {
		// TODO 自动生成的方法存根
		System.out.println("欢迎使用嗒嗒租车系统\n您是否要租车:1是2否");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		if (num==1){
			displayCar();
		}
		else{
			System.exit(0);
		} 
		
	}

	private static void displayCar() {
		// TODO 自动生成的方法存根
		System.out.println("您可租车的类型及其价目表:\n序号  汽车名称      租金         容量");
		for(Car car:carForRent){
			if(car.getClass() == manrideCar.class){
				System.out.println(car.id+".      "+car.name+"     "+car.money+"元/天   "+"载人:"+car.personNum+"人");
			}
			else if(car.getClass() == truckCar.class){
				System.out.println(car.id+".      "+car.name+"     "+car.money+"元/天   "+"载货:"+car.goodsNum+"人");
			}
			else if(car.getClass() == pickupCar.class){
				System.out.println(car.id+".      "+car.name+"     "+car.money+"元/天   "+"载人:"+car.personNum+"人"+"载货:"+car.goodsNum+"吨");
			}
		}
	}

}

 class Car{
	int id,money,personNum,goodsNum;
	String name;
}
 
 class manrideCar extends Car{
	 public manrideCar(int id,String name,int money,int personNum) {
		// TODO 自动生成的构造函数存根
		 this.id = id;
		 this.name = name;
		 this.money = money;
		 this.personNum = personNum;
	}
 }
 
 class truckCar extends Car{
	 public truckCar(int id,String name,int money,int goodsNum){
		 this.id = id;
		 this.name = name;
		 this.money = money;
		 this.goodsNum = goodsNum;
	 }
 }
 
 class pickupCar extends Car{
	 public  pickupCar(int id,String name,int money,int personNum,int goodsNum) {
		// TODO 自动生成的构造函数存根
		 this.id = id;
		 this.name = name;
		 this.money = money;
		 this.personNum = personNum;
		 this.goodsNum = goodsNum;
	}
	 

 }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值