->主讲布置的练习要求:创建一个控制台版本的租车系统,运行结果应该如下图所示:
->针对这个练习,我的思路是这样:创建一个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;
}
}