Java入门第二季——答答租车系统

2019-06-15 00:00:00 第二季 租车 答答

我写的这个系统注释很详细,应该很适合小白参考,经运行没有任何问题,并且运用了面向对象的三大特性封装、继承和多态(在代码里也都有注释),欢迎参考,也希望大家能提出宝贵的意见,一起学习,共同进步!

《Java入门第二季——答答租车系统》

创建父类Car,子类PassengerCar,Pickup,Truck,详见代码。
父类Car:

package com.imooc;

public class Car {
    //描述汽车可能有特征
    public String name;//车的名称
    public double cargoCapacity;//车的载货量
    public int busLoad;//车的载客量
    public int dailyRent;//车的日租金

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getCargoCapacity() {
        return cargoCapacity;
    }
    public void setCargoCapacity(double cargoCapacity) {
        this.cargoCapacity = cargoCapacity;
    }
    public int getBusLoad() {
        return busLoad;
    }
    public void setBusLoad(int busLoad) {
        this.busLoad = busLoad;
    }
    public int getDailyRent() {
        return dailyRent;
    }
    public void setDailyRent(int dailyRent) {
        this.dailyRent = dailyRent;
    }   
}

子类:小汽车PassengerCar

package com.imooc;

public class PassengerCar extends Car {//使用面向对象的继承特性
    //使用面向对象的封装特性
    private String name;
    private int busLoad;
    private int dailyRent;
    //客车的构造方法
    public PassengerCar(String name,int busLoad,int dailyRent){
        this.name=name;
        this.busLoad=busLoad;
        this.dailyRent=dailyRent;
    }
    //自动生成getter和setter函数
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getBusLoad() {
        return busLoad;
    }
    public void setBusLoad(int busLoad) {
        this.busLoad = busLoad;
    }
    public int getDailyRent() {
        return dailyRent;
    }
    public void setDailyRent(int dailyRent) {
        this.dailyRent = dailyRent;
    }
}

子类:皮卡Pickup

package com.imooc;

public class Pickup extends Car {
    private String name;
    private double cargoCapacity;
    private int busLoad;
    private int dailyRent;

    public Pickup(String name,double cargoCapacity,int busLoad,int dailyRent){
        this.name=name;
        this.cargoCapacity=cargoCapacity;
        this.busLoad=busLoad;
        this.dailyRent=dailyRent;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getCargoCapacity() {
        return cargoCapacity;
    }
    public void setCargoCapacity(double cargoCapacity) {
        this.cargoCapacity = cargoCapacity;
    }
    public int getBusLoad() {
        return busLoad;
    }
    public void setBusLoad(int busLoad) {
        this.busLoad = busLoad;
    }
    public int getDailyRent() {
        return dailyRent;
    }
    public void setDailyRent(int dailyRent) {
        this.dailyRent = dailyRent;
    }

}

子类:卡车Truck

package com.imooc;

public class Truck extends Car {
    private String name;
    private double cargoCapacity;
    private int dailyRent;

    public Truck(String name,double cargoCapacity,int dailyRent){
        this.name=name;
        this.cargoCapacity=cargoCapacity;
        this.dailyRent=dailyRent;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getCargoCapacity() {
        return cargoCapacity;
    }
    public void setCargoCapacity(double cargoCapacity) {
        this.cargoCapacity = cargoCapacity;
    }
    public int getDailyRent() {
        return dailyRent;
    }
    public void setDailyRent(int dailyRent) {
        this.dailyRent = dailyRent;
    }
}

主程序:Test类

package com.imooc;
import java.util.Scanner;
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("欢迎使用答答租车系统!");
        System.out.println("您是否需要租车:1是  0否");
        Scanner input1=new Scanner(System.in);
        int is=input1.nextInt();

        //创建一个Car类数组来保存各种车,利用引用多态来创建不同的子类对象
        Car[] cars={new PassengerCar("奥迪A4",5,500),
                    new Truck("小货车",5,150),
                    new PassengerCar("奔驰E400",5,700),
                    new Pickup("皮卡",1.5,4,200),
                    new Truck("大型货车",10,600),
                    new PassengerCar("大客车",25,650)          
        };

        //输入1,需要租车
        if(is==1){
            int totalMoney=0;
            double totalcargoCapacity=0;
            int totalbusLoad=0;
            int rentCarDays=0;

            System.out.println("您可租车的类型极其价目表:");
            System.out.println("序号\t"+"汽车名称\t"+"日租金\t"+"容量\t");
            int num=1;//定义初始序号
            for(Car currentCar:cars){//对所有车进行一次循环遍历,即foreach(),来创建一个汽车一览表
                if(currentCar instanceof PassengerCar){//判断正在遍历的car是否是Passenger类的一个实例
                    System.out.println(
                            "No."+num+'\t'+currentCar.getName()+'\t'//封装后只能通过get()方法来获取值
                            +currentCar.getDailyRent()+"元/天\t"
                            +"载人:"+currentCar.getBusLoad()+"人");
                    num++;
                }
                if(currentCar instanceof Truck){//判断正在遍历的car是否是Truck类的一个实例
                    System.out.println(
                            "No."+num+'\t'+currentCar.getName()+'\t'
                            +currentCar.getDailyRent()+"元/天\t"
                            +"载货:"+currentCar.getCargoCapacity()+"吨");
                    num++;                      
                } 
                if(currentCar instanceof Pickup){//判断正在遍历的car是否是Pickup类的一个实例
                    System.out.println(
                            "No."+num+'\t'+currentCar.getName()+'\t'
                            +currentCar.getDailyRent()+"元/天\t"
                            +"载人:"+currentCar.getBusLoad()+"人"
                            +",载货:"+currentCar.getCargoCapacity()+"吨");
                    num++;                      
                }
            }
            int totalDailyMoney = 0;//每日租金的总和
            System.out.println("请输入您的租车数量(最大租车数为6):");
            Scanner input2=new Scanner(System.in);
            int carRentAmount=input2.nextInt();//租出去的车数
            if(carRentAmount>0&&carRentAmount<=6){
                int[] rentCarsArray=new int[carRentAmount];//创建一个数组,用来保存租出去的车辆,长度为租出去的车数
                for(int i=1;i<=carRentAmount;i++){
                    System.out.println("请输入第"+i+"辆车的序号:");
                    Scanner input3=new Scanner(System.in);
                    int carNum=input3.nextInt();//输入车的序号
                    rentCarsArray[i-1]=carNum-1;//保存每一辆租出去的车在cars数组中的序号

                    totalDailyMoney+=cars[carNum-1].getDailyRent();
                    totalcargoCapacity+=cars[carNum-1].getCargoCapacity();
                    totalbusLoad+=cars[carNum-1].getBusLoad();
                }
                System.out.println("请输入需要租车的天数:");
                Scanner input4=new Scanner(System.in);
                rentCarDays=input4.nextInt();
                totalMoney=totalDailyMoney*rentCarDays;
                System.out.println("总载货量:"+totalcargoCapacity
                        +"\t总载客量:"+totalbusLoad
                        +"\t总价格:"+totalMoney);
                System.out.println("您的账单:\n***可载人的车有:");
                //载人账单
                for(int i=0;i<rentCarsArray.length;i++){                    
                    if((cars[rentCarsArray[i]] instanceof PassengerCar)||(cars[rentCarsArray[i]]) instanceof Pickup){
                        System.out.println(cars[rentCarsArray[i]].getName());
                    }       
                }
                System.out.println("——————共载人:"+totalbusLoad+"人");
                //载货账单
                System.out.println("***可载货的车有:");
                for(int i=0;i<rentCarsArray.length;i++){                    
                    if((cars[rentCarsArray[i]] instanceof Truck)||(cars[rentCarsArray[i]]) instanceof Pickup){
                        System.out.println(cars[rentCarsArray[i]].getName());
                    }       
                }
                System.out.println("——————共载货:"+totalcargoCapacity+"吨");

            }else{
                System.out.println("请修改租车数量!");
            }
        }else{
            System.out.println("感谢您访问答答租车系统");
        }
    }   
}

运行结果:

欢迎使用答答租车系统!
您是否需要租车:1是  0否
1
您可租车的类型极其价目表:
序号  汽车名称    日租金 容量  
No.1    奥迪A4    500元/天  载人:5人
No.2    小货车 150元/天  载货:5.0吨
No.3    奔驰E400  700元/天  载人:5人
No.4    皮卡  200元/天  载人:4人,载货:1.5吨
No.5    大型货车    600元/天  载货:10.0吨
No.6    大客车 650元/天  载人:25人
请输入您的租车数量(最大租车数为6):
5
请输入第1辆车的序号:
6
请输入第2辆车的序号:
4
请输入第3辆车的序号:
2
请输入第4辆车的序号:
1
请输入第5辆车的序号:
3
请输入需要租车的天数:
3
总载货量:6.5    总载客量:39 总价格:6600
您的账单:
***可载人的车有:
大客车
皮卡
奥迪A4
奔驰E400
——————共载人:39人
***可载货的车有:
皮卡
小货车
——————共载货:6.5吨

相关文章