答答租车系统(面向对象综合练习)

这是一个面向对象设计的练习,要求利用面向对象思想设计答答租车系统,计算不同车型的租车费用、载客量和载货量。系统包含客车、皮卡车和货车三种车型,每种车有不同的载客量、载货量和租金。用户输入租车数量及车型序号和租用天数,系统将输出载客总人数、载货总重量和租车金额。

答答租车系统(面向对象综合练习)

Time Limit: 1000MS  Memory Limit: 65536KB
Problem Description

各位面向对象的小伙伴们,在学习了面向对象的核心概念——类的封装、继承、多态之后,答答租车系统开始营运了。

请你充分利用面向对象思想,为公司解决智能租车问题,根据客户选定的车型和租车天数,来计算租车费用,最大载客人数,最大载载重量。

公司现有三种车型(客车、皮卡车、货车),每种车都有名称和租金的属性;其中:客车只能载人,货车只能载货,皮卡车是客货两用车,即可以载人,也可以载货。

下面是答答租车公司的可用车型、容量及价目表:
序号     名称     载客量      载货量        租金
                           (人)     (吨)    (元/天)
  1          A            5                                 800
  2          B            5                                 400
  3          C            5                                 800
  4          D            51                             1300
  5          E            55                             1500
  6          F             5            0.45             500
  7         G             5             2.0               450
  8         H                            3                  200
  9          I                             25              1500
 10        J                             35              2000

要求:根据客户输入的所租车型的序号及天数,计算所能乘载的总人数、货物总数量及租车费用总金额。

Input
首行是一个整数:代表要不要租车 1——要租车(程序继续),0——不租车(程序结束);

第二行是一个整数,代表要租车的数量N;

接下来是N行数据,每行2个整数m和n,其中:m表示要租车的编号,n表示租用该车型的天数。

Output
若成功租车,则输出一行数据,数据间有一个空格,含义为:

载客总人数 载货总重量(保留2位小数) 租车金额(整数)

若不租车,则输出: 

0 0.00 0(含义同上)

Example Input
1
2
1 1
2 2
Example Output

15 0.00 1600

import java.util.Scanner;

class Car
{
    protected String name;
    protected int rent;

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public int getRent()
    {
        return rent;
    }

    public void setRent(int rent)
    {
        this.rent = rent;
    }
}

class PassengerCar extends Car
{
    private double peopleCapacity;

    public PassengerCar(String name, int rent, double peoplecapacity)
    {
        this.name = name;
        this.rent = rent;
        this.peopleCapacity = peoplecapacity;
    }

    public double getPeopleCapacity()
    {
        return peopleCapacity;
    }

    public void setPeopleCapacity(double peopleCapacity)
    {
        this.peopleCapacity = peopleCapacity;
    }

}

class PickUp extends Car
{
    private double cargoCapacity;
    private int peopleCapacity;

    public PickUp(String name, int rent, int peopleCapacity,
                  double cargoCapacity)
    {
        this.name = name;
        this.rent = rent;
        this.cargoCapacity = cargoCapacity;
        this.peopleCapacity = peopleCapacity;
    }

    public double getCargoCapacity()
    {
        return cargoCapacity;
    }

    public void setCargoCapacity(double cargoCapacity)
    {
        this.cargoCapacity = cargoCapacity;
    }

    public int getPeopleCapacity()
    {
        return peopleCapacity;
    }

    public void setPeopleCapacity(int peopleCapacity)
    {
        this.peopleCapacity = peopleCapacity;
    }
}

class Trunk extends Car
{
    private double cargoCapacity;

    public Trunk(String name, int rent, double cargoCapacity)
    {
        this.name = name;
        this.rent = rent;
        this.cargoCapacity = cargoCapacity;
    }

    public double getCargoCapacity()
    {
        return cargoCapacity;
    }

    public void setCargoCapacity(double cargoCapacity)
    {
        this.cargoCapacity = cargoCapacity;
    }

}

public class Main
{
    public static void main(String[] args)
    {
        Car[] carsForRent=
        {
            new PassengerCar("A",800,5),
            new PassengerCar("B", 400, 5),
            new PassengerCar("C", 800, 5),
            new PassengerCar("D",1300, 51),
            new PassengerCar("E", 1500, 55),
            new PickUp("F", 500,5, 0.45),
            new PickUp("G", 450,5, 2.0),
            new Trunk("H",200, 3),
            new Trunk("I", 1500, 25),
            new Trunk("J", 2000, 35)
        };
        Scanner scan=new Scanner(System.in);
        int input=scan.nextInt();
        int totalPeopley=0; //载客总人数
        double totalCargo=0; //载货总重量
        int totalMoney=0; //租金总额
        if(input==1)
        {
            int rentNum=scan.nextInt();
            int[] carsId=new int[rentNum]; //租车 Id
            int[] days=new int[rentNum]; //租车天数
            for(int j=0; j<rentNum; j++)
            {
                carsId[j]=scan.nextInt();
                days[j]=scan.nextInt();
            }
            for(int j=0; j<rentNum; j++)
            {
                totalMoney+=carsForRent[carsId[j]-1].getRent()*days[j];
                if(carsForRent[carsId[j]-1] instanceof PassengerCar)
                {
                    totalPeopley+=((PassengerCar)carsForRent[carsId[j]-1]).getPeopleCapacity()*days[j];
                }
                if(carsForRent[carsId[j]-1] instanceof PickUp)
                {

                    totalPeopley+=((PickUp)carsForRent[carsId[j]-1]).getPeopleCapacity()*days[j];
                    totalCargo+=((PickUp)carsForRent[carsId[j]-1]).getCargoCapacity()*days[j];
                }
                if(carsForRent[carsId[j]-1] instanceof Trunk)
                {
                    totalCargo+=((Trunk)carsForRent[carsId[j]-1]).getCargoCapacity()*days[j];
                }
            }
        }
        System.out.println(totalPeopley+"  "+String.format("%.2f",  totalCargo)+"  "+totalMoney);
        scan.close();
    }
}


### 回答1: sdut-oop-7 答答租车系统是一个面向对象综合练习项目,主要涉及继承多态。该系统模拟了一个租车公司的业务流程,包括车辆的租赁、归还、计费等功能。通过继承多态的应用,实现了对不同型车辆的管理和计费,提高了系统的灵活性和可扩展性。该项目对于学习面向对象编程的同学来说是一个很好的练手项目,可以加深对于继承多态的理解和应用。 ### 回答2: 答答租车系统是一款基于对象的汽车租赁系统,该系统通过继承多态的机制,实现了面向对象的程序设计,大大提高了程序的可维护性和可扩展性。答答租车系统主要有以下三个功能模块:车辆管理、订单管理、客户管理。 在车辆管理模块中,系统通过继承的方式实现了不同型汽车之间的代码复用和抽象,使得系统具有更好的复用性和可扩展性。例如,通过Vehicle派生出的Car和Bus,分别实现了汽车和公交车两种不同型的车辆,并重写了Vehicle中的抽象方法,以实现各自特有的功能。 在订单管理模块中,系统利用多态的机制实现了对不同型车辆的订单管理,订单Order中的属性中包含了租赁的车型、车辆的日租金和租车时间等信息。而对于不同型车辆的具体租金计算,系统通过多态的方式,调用了各自中重写的计算租金方法,使得租金计算得以统一管理。 在客户管理模块中,系统实现了客户信息的增、删、改、查功能,其中,包括了普通客户和VIP客户两种不同型的客户。VIP客户拥有普通客户的所有功能,而且还可以享受租车优惠,系统中通过继承的方式实现了VIP客户对普通客户的扩展。 总之,答答租车系统的设计充分体现了面向对象编程的思想,通过继承多态,实现了系统各个模块之间的解耦合和模块化设计的目的,提高了软件的开发效率,增强了系统的可维护性和可扩展性。 ### 回答3: 答答租车系统是一款基于面向对象思想的综合练习程序,在本次练习中,我们主要学习了继承多态。 该系统主要功能是模拟汽车租赁场景,可以进行车辆租赁、还车、查询等操作。在此过程中,我们使用了继承多态的思想,将车辆分为两个基本:汽车和自行车。汽车包含两个子:轿车和客车。在轿车和客车子中,我们又继承了其他车辆相关的,如车辆品牌、颜色等属性。而自行车中,我们设置了其特有的属性,如框架材质等。 通过使用继承多态的思想,我们可以实现代码的重用扩展,提高开发效率。例如,在代码中我们定义了一个抽象 Vehicle,这个中包含了车辆的共性属性和方法,而通过继承这个抽象,我们只需要定义各个子的特有属性及方法即可。 在面向对象的思想中,我们还运用了封装、继承多态等原则来设计和实现代码,使得代码结构清晰,易于维护,提高了程序的可重用性和可扩展性,为今后的开发奠定了基础。 总的来说,通过这次对答答租车系统的学习和练习,我们更清晰地了解了面向对象的思想和继承多态的应用,在今后的编程实践中,也可以更深入地应用这些原则,编写出更加优秀的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值