Java面向对象实现汽车租赁系统

本文实例为大家分享了Java实现汽车租赁系统的具体代码,供大家参考,具体内容如下

父类Vehicle

public abstract class Vehicle {
    private String num;
    private String brand;
    private  double rent;

    //重写equals方法
    public abstract boolean equals(Vehicle v);

    //计算费用
    public abstract double cost(int days,double rent);

    //3个参数的有参构造
    public Vehicle(String num, String brand, double rent) {
        this.num = num;
        this.brand = brand;
        this.rent = rent;
    }

    //无参构造
    public Vehicle() {
    }

    //get,set方法
    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public double getRent() {
        return rent;
    }

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

子类Cars

public class Cars extends Vehicle{
    private String type;

    //重写父类equals方法
    @Override
    public boolean equals(Vehicle v) {
        if(v instanceof Cars){
            Cars c=(Cars) v;
            return this.getBrand().equals(c.getBrand())&&this.getType().equals(c.getType());
        }
        return false;
    }

    //重写父类费用方法
    @Override
    public double cost(int days,double sent) {
        if (days>150){
            return days*sent*0.7;
        }else if (days>30){
            return days*sent*0.8;
        }else if (days>7){
            return days*sent*0.9;
        }else {
            return days*sent;
        }
    }

    //无参构造
    public Cars() {
    }

    //有参构造
    public Cars(String num, String brand, double rent, String type) {
        super(num, brand, rent);
        this.type = type;
    }

    //2个有参构造的方法
    public Cars(String brand,String type){
        super.setBrand(brand);
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

子类Bus

public class Bus extends Vehicle{
    private int seat;

    //重写父类的equals方法
    @Override
    public boolean equals(Vehicle v) {
        if(v instanceof Bus){
            Bus b=(Bus) v;
            return this.getBrand().equals(b.getBrand())&&this.getSeat()==b.getSeat();
        }
        return false;
    }

    //重写父类费用方法
    @Override
    public double cost(int days,double rent) {
        if (days>=150){
            return days*rent*0.6;
        }else if (days>=30){
            return days*rent*0.7;
        }else if (days>=7){
            return days*rent*0.8;
        }else if (days>=3){
            return days*rent*0.9;
        }else {
            return days*rent;
        }
    }

    //2个参数的有参构造
    public Bus(String brand,int seat){
        super.setBrand(brand);
        this.seat=seat;
    }

    //子类有参构造
    public Bus(String num, String brand, double rent, int seat) {
        super(num, brand, rent);
        this.seat = seat;
    }

    //子类无参构造
    public Bus(){}

    //子类get set 方法
    public int getSeat() {
        return seat;
    }

    public void setSeat(int seat) {
        this.seat = seat;
    }
}

汽车业务类VehicleServicer

public class VehicleServicer {

    public static List initVehicle(){
        Vehicle v1=new Bus("京6566754","金杯",800,16);
        Vehicle v2=new Bus("京9696996","金杯",1500,34);
        Vehicle v3=new Bus("京8696997","金龙",800,16);
        Vehicle v4=new Bus("京8696998","金龙",1500,34);
        Vehicle c1 =new Cars("京NT37465","别克",300,"林荫大道");
        Vehicle c2 =new Cars("京9696996","别克",600,"GLB");
        Vehicle c3 =new Cars("京8696997","宝马",800,"X6");
        Vehicle c4 =new Cars("京8696998","宝马",600,"550i");

        //先装入数组中
        Vehicle[] ve = {v1,v2,v3,v4,c1,c2,c3,c4};

        //将数组转换成集合
        List<Vehicle> vehicles = Arrays.asList(ve);
        return vehicles;
    }

}

测试类Test

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("**********欢迎光临秋明山守望者汽车租赁公司**********");
        System.out.println("1.轿车    2.客车");
        System.out.print("请选择你要租赁的汽车类型:");
        int type = sc.nextInt();
        //桥车
        Vehicle ve;
        String brand;
        if(type==1){
            System.out.print("请选择你要租赁的汽车品牌(1.别克  2.宝马):");
            int pinpai = sc.nextInt();
            String model=pinpai==1?"别克":"宝马";
            if(pinpai==1){
                System.out.print("请输入你要租赁的汽车类型(1.X6  2.550i):");
                int leixin = sc.nextInt();
                brand=leixin==1?"林荫大道":"GL8";
            }else {
                System.out.print("请输入你要租赁的汽车类型(1.X6  2.550i):");
                int leixin = sc.nextInt();
                brand=leixin==1?"X6":"550i";
            }
             ve = new Cars(model, brand);

        }else {//客车
            int seat;
            System.out.print("请选择你要租赁的汽车品牌(1.金龙  2.金杯):");
            int pinpai = sc.nextInt();
            String s=pinpai==1?"金龙":"金杯";
            System.out.print("请选择你要租赁的汽车座位数(1.16座 2.34座):");
            int z = sc.nextInt();
            seat =z==1?16:34;
            ve = new Bus(s, seat);
        }
        //根据选好的车型,输出车牌和总价
        List<Vehicle> list = VehicleServicer.initVehicle();
        for (Vehicle v:list) {
            if(ve.equals(v)){
                System.out.print("请输入你要租赁的天数:");
                int days = sc.nextInt();
                System.out.println("分配给您的汽车牌号是:"+v.getNum());
                System.out.println("您需要支付的租赁费用是:"+v.cost(days,v.getRent()));
            }
        }

    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现汽车租赁系统

    本文实例为大家分享了java实现汽车租赁系统的具体代码,供大家参考,具体内容如下 //车类 public abstract class Vehicle { //车牌号 品牌 日租金 private String id; private String brand; private int perRent; public Vehicle(){} //Vehicle的带参构造方法 public Vehicle(String id, String brand, int perRent) { this.i

  • java实现简单的汽车租赁系统

    本文实例为大家分享了java实现简单的汽车租赁系统的具体代码,供大家参考,具体内容如下 欢迎进入xx汽车租赁公司请输入用户名请输入密码(用户名默认是名字缩写,密码是123,将登陆模块封装到方法中去调用方法)请输入您的操作1)查看现在车库中的所有车辆信息2)租赁汽车3)往车库中添加汽车4)修改汽车租赁价格信息 用switch去判断操作 类分析 代码: package com.youjiuye.bms; public class CRMS {     public static void main(

  • Java实现简单汽车租赁系统

    本文实例为大家分享了Java实现简单汽车租赁系统的具体代码,供大家参考,具体内容如下 需求如下:  问题分析: 首先应当构建一个MotoVehicle的抽象(abstract)类,类里面包含一个brand属性,表示汽车品牌:还包含一个no属性,表示汽车牌号: package cn.jbit.car; public abstract class MotoVehicle { private String no; private String brand; /** * 无参构造方法 */ public

  • Java面向对象实现汽车租赁系统

    本文实例为大家分享了Java实现汽车租赁系统的具体代码,供大家参考,具体内容如下 父类Vehicle public abstract class Vehicle {     private String num;     private String brand;     private  double rent;     //重写equals方法     public abstract boolean equals(Vehicle v);     //计算费用     public abstr

  • Java 汽车租赁系统详细实现代码

    汽车租赁: 分为客车和轿车两种: 客车小于20座:500一天,大于20座:900一天. 轿车分为豪华和普通:豪华600一天,普通200一天. 效果图: 代码如下: 机动车类: package busTest; /* 机动车类 */ public abstract class MotoVehicle { private String carNumber; //车牌号 private String carBrand; // 车品牌 //构造方法 public MotoVehicle(){} publ

  • java编写汽车租赁系统

    本文实例为大家分享了java编写汽车租赁系统的具体代码,供大家参考,具体内容如下 题目要求: 1,汽车租赁信息表如下: 2,类和属性: 3,运行效果: 效果实现: 代码实现: 1,车类: package homework.exam; public abstract  class Vehicle {     private String num;     private String brand;     private double rent;     public String getNum(

  • Java从零编写汽车租赁系统全程分析

    目录 覆盖知识 项目需求 设计步骤 开发思路 类的属性和方法 代码展示 效果展示 覆盖知识 程序基本概念.数据类型.流程控制.顺序.选择 .循环.跳转语句.变量.类.方法.继承.多态. 掌握数据库.JDBC.三层架构等相关知识. 掌握Druid连接池.Apache的DBUtils使用 . 项目需求 某汽车租赁公司出租多种轿车和客车,出租费用以日为单位计算. 出租车型及信息如下表所示: 车型 具体信息 日租金 折扣 轿车 宝马X6(京NY28588) 800 days>7天9折 days>30天

  • C#实现简单的汽车租赁系统

    最近学习了继承,多态,集合,设计模式,有一个汽车租凭系统,给大家分享一下: 我们首先来看看我们这个系统的效果 1.做一个项目,我们首先对项目进行分析 根据我们最近学的知识,我们可以看出继承,多态,集合,设计模式,我们都能用到 我们把所需要的类和简单模式中的"简单工厂"的工厂准备好 类图: 01.车辆类(父类) using System; using System.Collections.Generic; using System.Linq; using System.Text; usi

  • C#实现汽车租赁系统项目

    本文实例为大家分享了C#实现汽车租赁系统的具体代码,供大家参考,具体内容如下 汽车和卡车的父类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //父类变量和方法 namespace 汽车租赁系统 { public class Inheritance { public Inheritance() { } publi

  • java 面向对象面试集锦

    java  面向对象:这里整理了面向对象的基础知识,帮助大家学习理解,希望能帮助到大家,这里是 根据公司面试资料整理的相关知识: Overload和Override的区别.Overloaded的方法是否可以改变返回值的类型? Overload是重载的意思,Override是覆盖的意思,也就是重写.重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子

随机推荐