服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java面向对象实现汽车租赁系统

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

2022-07-22 11:39勤奋的小镇青年、 Java教程

这篇文章主要为大家详细介绍了Java面向对象实现汽车租赁系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

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

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

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()));
            }
        }

    }
}

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

原文链接:https://blog.csdn.net/weixin_53106424/article/details/111911118

延伸 · 阅读

精彩推荐
  • Java教程使用java连接Redis,Maven管理操作

    使用java连接Redis,Maven管理操作

    这篇文章主要介绍了使用java连接Redis,Maven管理操作,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    double_lifly2602020-07-17
  • Java教程java精度计算代码 java指定精确小数位

    java精度计算代码 java指定精确小数位

    这篇文章主要为大家详细介绍了java精度计算代码,java指定精确小数位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    追逐繁星4292020-08-03
  • Java教程java在文件尾部追加内容的简单实例

    java在文件尾部追加内容的简单实例

    下面小编就为大家带来一篇java在文件尾部追加内容的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    java教程网3352020-07-11
  • Java教程优化MyBatis配置文件中的配置详解

    优化MyBatis配置文件中的配置详解

    这篇文章主要介绍了优化MyBatis配置文件中的配置详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下...

    小江_xiaojiang3912021-03-31
  • Java教程java输入数字,输出倒序的实例

    java输入数字,输出倒序的实例

    这篇文章主要介绍了java输入数字,输出倒序的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Zartillery4852020-08-28
  • Java教程java 字符串截取的实例详解

    java 字符串截取的实例详解

    这篇文章主要介绍了java 字符串截取的实例详解的相关资料,这里提供了实例代码帮助大家实现这样的功能,需要的朋友可以参考下...

    海那边的小萌男2452020-12-10
  • Java教程java 重试框架 sisyphus 入门介绍

    java 重试框架 sisyphus 入门介绍

    sisyphus 综合了 spring-retry 和 gauva-retrying 的优势,使用起来也非常灵活,本文给大家介绍java 重试框架 sisyphus 入门相关知识,感兴趣的朋友一起看看吧...

    老马啸西风9762022-02-24
  • Java教程JFreeChart简单实现光滑曲线绘制

    JFreeChart简单实现光滑曲线绘制

    这篇文章主要为大家详细介绍了JFreeChart简单实现光滑曲线的绘制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    jvl_jevy11802021-05-10