java实现简单租车系统

Java实现简单租车系统攻略

1.需求分析

租车系统需要考虑的功能有:

  • 汽车种类和数量的分类管理
  • 用户租车和归还车辆的操作
  • 计算租车费用

根据以上需求,我们需要有以下的类:

  • Car:汽车类,用于描述汽车对象的基本属性,如品牌、型号、日租金等。
  • CarRentSystem:租车系统类,用于管理汽车的分类、添加、删除和租用操作等。
  • User:用户类,用于描述租车人信息。
  • RentRecord:租车记录类,用于描述一次租用的车辆信息,包括所租车辆的数量、租用时间、归还时间和总共费用等。

2.类的设计和实现

2.1 Car类

Car类是汽车类,用于描述汽车对象的基本属性,如品牌、型号、日租金等。在Java中,我们可以用以下代码来实现:

  public class Car {
    private String brand; //汽车品牌
    private String model; //汽车型号
    private double rentPerDay; //每日租金
    private int stock; //汽车库存

    public Car(String brand, String model, double rentPerDay, int stock) {
        this.brand = brand;
        this.model = model;
        this.rentPerDay = rentPerDay;
        this.stock = stock;
    }

    public String getBrand() {
        return brand;
    }

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

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public double getRentPerDay() {
        return rentPerDay;
    }

    public void setRentPerDay(double rentPerDay) {
        this.rentPerDay = rentPerDay;
    }

    public int getStock() {
        return stock;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }
  }

2.2 CarRentSystem类

CarRentSystem类是租车系统类,用于管理汽车的分类、添加、删除和租用操作等。在Java中,我们可以用以下代码来实现:

  public class CarRentSystem {
    private String name; //系统名称
    private List<Car> cars; //汽车列表

    public CarRentSystem(String name, List<Car> cars) {
        this.name = name;
        this.cars = cars;
    }

    public void addCar(Car car) {
        cars.add(car);
    }

    public void removeCar(Car car) {
        cars.remove(car);
    }

    public List<Car> getCars() {
        return cars;
    }

    public void rent(User user, Car car, int days) {
        if (car.getStock() <= 0) {
            System.out.println(car.getBrand() + car.getModel() + "暂无库存!");
        } else {
            RentRecord rentRecord = new RentRecord();
            rentRecord.setUser(user);
            rentRecord.setCar(car);
            rentRecord.setDays(days);
            rentRecord.setRentedDate(new Date());
            car.setStock(car.getStock() - 1);
            System.out.println("租车信息:" + user.getName() + "租用了" + days + "天" +
                    car.getBrand() + car.getModel() + ",租金为:" + rentRecord.getTotalCost());
        }
    }

    public void returnCar(RentRecord rentRecord) {
        rentRecord.getCar().setStock(rentRecord.getCar().getStock() + 1);
        rentRecord.setReturnDate(new Date());
        System.out.println("租车信息:" + rentRecord.getUser().getName() + "归还了" +
                rentRecord.getDays() + "天" + rentRecord.getCar().getBrand() + rentRecord.getCar().getModel() +
                ",应付款为:" + rentRecord.getTotalCost() + "元");
    }
  }

2.3 User类

User类是用户类,用于描述租车人信息。在Java中,我们可以用以下代码来实现:

  public class User {
    private String name; //用户姓名
    private String email; //用户邮箱

    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }

    public String getName() {
        return name;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
  }

2.4 RentRecord类

RentRecord类是租车记录类,用于描述一次租用的车辆信息,包括所租车辆的数量、租用时间、归还时间和总共费用等。在Java中,我们可以用以下代码来实现:

  public class RentRecord {
    private User user; //租车人
    private Car car; //租用车辆
    private int days; //租用天数
    private Date rentedDate; //租用日期
    private Date returnDate; //归还日期

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }

    public int getDays() {
        return days;
    }

    public void setDays(int days) {
        this.days = days;
    }

    public Date getRentedDate() {
        return rentedDate;
    }

    public void setRentedDate(Date rentedDate) {
        this.rentedDate = rentedDate;
    }

    public Date getReturnDate() {
        return returnDate;
    }

    public void setReturnDate(Date returnDate) {
        this.returnDate = returnDate;
    }

    public double getTotalCost() {
        return car.getRentPerDay() * days;
    }
  }

3. 应用场景示例

3.1 租用汽车

假设用户“张三”要租用一辆“奔驰S600”,租用4天,如下代码实现:

    //汽车分类
    List<Car> cars = new ArrayList<>();
    CarRentSystem carRentSystem = new CarRentSystem("租车系统", cars);

    //添加汽车
    Car car = new Car("奔驰", "S600", 800.0, 1);
    carRentSystem.addCar(car);

    //租用汽车
    User user = new User("张三", "zhangsan@qq.com");
    carRentSystem.rent(user, car, 4);

输出结果:

租车信息:张三租用了4天奔驰S600,租金为:3200.0

3.2 归还汽车

假设用户“张三”租用了一辆“奔驰S600”,租用4天,现在要归还车辆,如下代码实现:

    //汽车分类
    List<Car> cars = new ArrayList<>();
    CarRentSystem carRentSystem = new CarRentSystem("租车系统", cars);

    //添加汽车
    Car car = new Car("奔驰", "S600", 800.0, 1);
    carRentSystem.addCar(car);

    //租用汽车
    User user = new User("张三", "zhangsan@qq.com");
    RentRecord rentRecord = new RentRecord();
    rentRecord.setUser(user);
    rentRecord.setCar(car);
    rentRecord.setDays(4);
    rentRecord.setRentedDate(new Date());
    car.setStock(car.getStock() - 1);

    //归还汽车
    carRentSystem.returnCar(rentRecord);

输出结果:

租车信息:张三归还了4天奔驰S600,应付款为:3200.0元

4. 总结

本文介绍了Java实现简单租车系统的攻略,通过分析需求,设计了包括Car、CarRentSystem、User、RentRecord四个类,实现了汽车的管理、添加、删除和租用操作等功能。在应用场景示例中,我们展示了两个常见的业务操作,即租用汽车和归还汽车。同理,我们还可以扩展其他功能,如查询和预订汽车等,以满足更多的实际需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简单租车系统 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java Object类和包装类深入解读

    Java Object类和包装类深入解读 Java中的所有类继承自Object类,这使得Object类成为Java中最基础的类之一。此外,Java中还包含了8个基本数据类型,这些基本数据类型都有其对应的包装类,用来对基本类型进行装箱操作,使其具备对象的特征。本文将深入探讨Java中Object类和包装类的相关知识点和用法。 Object类 什么是Object…

    Java 2023年5月26日
    00
  • SpringSecurity整合springBoot、redis实现登录互踢功能

    下面我将详细讲解“SpringSecurity整合springBoot、redis实现登录互踢功能”的完整攻略。在这个攻略中,我们将会学习如何使用SpringSecurity完成登录验证,如何将SpringSecurity和SpringBoot进行整合,以及如何使用Redis实现登录互踢功能。 一、如何使用SpringSecurity完成登录验证 Sprin…

    Java 2023年5月19日
    00
  • mybatis如何设置useGeneratedKeys=true

    要设置useGeneratedKeys=true,需要在mybatis的mapper.xml文件中编写对应的代码。在这之前,需要了解一下什么是自动生成主键(Generated Key)、什么是useGeneratedKeys=true、以及如何使用。 自动生成主键是指在将数据插入到关系数据库中时,主键值可以由数据库自动生成,这种方式可以有效减少数据库的工作量…

    Java 2023年5月20日
    00
  • Spring与Spring boot的区别介绍

    Spring与Spring Boot是Java开发中广泛使用的两个框架,两者之间有明显的区别。本篇攻略将介绍Spring和Spring Boot的区别,以及为何可能会选择使用Spring Boot。 Spring与Spring Boot的区别 Spring框架 Spring框架是一个广泛使用的框架,有以下几点特点: 宽泛的适用范围:Spring框架可以应用于…

    Java 2023年5月15日
    00
  • 使用Gson将字符串转换成JsonObject和JsonArray

    使用Gson库将字符串转换为JsonObject或JsonArray是Java开发中常见的数据处理任务。下面是详细的攻略: 导入Gson库 要使用Gson库,需要在项目中引入Gson的依赖。可以通过在maven或gradle中添加以下代码来引入Gson库。 Maven: <dependency> <groupId>com.google…

    Java 2023年5月26日
    00
  • java.lang.Void类的解析与使用详解

    首先我们来说一下”java.lang.Void类的解析与使用详解”。 介绍 Void是Java语言中的一个特殊类,它只有一个成员变量TYPE,并且是一个final静态变量,类型为Class。在Java中,对于一个没有返回值的方法,可以将其方法签名描述为void method(),这里的void实际上就是一个关键字,代表着返回值为空。 但是,Java的反射机制…

    Java 2023年5月23日
    00
  • Spring Security和Shiro的相同点与不同点整理

    下面我将详细讲解“Spring Security和Shiro的相同点与不同点整理”,这里进行如下分类阐述:概念、使用场景、安全策略、授权与认证、拦截器等。 一、概念 Spring Security:基于spring的安全框架,目的是为了给Java应用程序提供声明式的安全访问控制。 Shiro:一个易于使用的Java安全框架,提供了身份验证、授权、密码和会话管…

    Java 2023年5月20日
    00
  • jsp 文件下载示例代码

    下面是关于 JSP 文件下载示例代码的完整攻略: 一、准备工作 在编写 JSP 文件下载示例之前,我们需要准备以下工作: 创建一个 download.jsp 页面,用于处理文件下载请求并返回文件内容; 确定要下载的文件路径,并将该路径作为参数传递给 download.jsp 页面。 二、JSP 文件下载示例代码 以下是一个标准的 JSP 文件下载示例代码: …

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部