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四个类,实现了汽车的管理、添加、删除和租用操作等功能。在应用场景示例中,我们展示了两个常见的业务操作,即租用汽车和归还汽车。同理,我们还可以扩展其他功能,如查询和预订汽车等,以满足更多的实际需求。

阅读剩余 82%

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

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

相关文章

  • Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析

    下面我来详细讲解“Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析”的完整攻略。 问题描述 在Java Web开发中,有时需要获取当前工程(Web应用)的路径,一般是为了将文件读取到项目中,或者是为了控制输出的文件路径。本文将解决以下两个问题: 如何在Java项目中获取当前工程路径 如何在JSP和Servlet中获取当前工程路径 获取当前…

    Java 2023年6月15日
    00
  • Spring Security密码解析器PasswordEncoder自定义登录逻辑

    下面是详细讲解“Spring Security密码解析器PasswordEncoder自定义登录逻辑”的完整攻略: 1. 理解PasswordEncoder和其实现类 PasswordEncoder是Spring Security中的一个接口,用于加密和解密用户登录密码,在用户登录过程中用于比对用户输入的密码和数据库中存储的加密后的密码是否一致。 Sprin…

    Java 2023年5月20日
    00
  • java生成文件夹和文件的简单示例分享

    Java生成文件夹和文件的简单示例分享 在Java中,我们经常需要生成文件和文件夹来存储一些重要数据或保存用户的一些设置。下面我们就使用Java代码来展示如何生成文件夹和文件。 生成文件夹 如果你需要新建一个文件夹来存储文件,可以使用Java中的File类来实现。在使用之前,需要引入java.io包。 代码示例: import java.io.File; p…

    Java 2023年5月20日
    00
  • jQuery老黄历完整实现方法

    jQuery老黄历完整实现方法 简介 jQuery老黄历是一款对于时间的格式化呈现的插件,可以生成比较形象化的日期解释,比如”今天是个好日子,宜开发,宜部署”。 完整实现方法 要实现jQuery老黄历的功能,需要完成以下步骤: 步骤1:引入jQuery和老黄历脚本 首先,需要在HTML文件的<head>标签内引入jQuery和老黄历的脚本: &l…

    Java 2023年5月23日
    00
  • Java中List与数组相互转换实例分析

    当我们在Java开发中,经常需要对数据进行操作或转换。比如说,我们需要将一个数组转换为List,或者将一个List转换为数组。本篇文章将为大家详细介绍Java中List与数组相互转换的方法,以及相应的实例分析。 List转换为数组 在Java中,将一个List转换为数组可以使用 List.toArray() 方法。该方法将返回一个Object类型的数组,需要…

    Java 2023年5月26日
    00
  • springboot log4j2不能打印框架错误日志的解决方案

    我们先来介绍一些概念: Spring Boot:Spring Boot 旨在帮助您创建基于生产的最小限度的应用程序,使用 Spring 平台和第三方库,少量配置的方式,快速启动和运行应用程序。Spring Boot 提供了基础的生产级特性(例如,内嵌 Tomcat,配置管理,或者添加重量级依赖项)。 Log4j2:是目前业界使用广泛的日志框架之一,它提供了丰…

    Java 2023年5月20日
    00
  • SpringBoot整合Shiro的方法详解

    在Spring Boot中,Shiro是一个非常流行的安全框架,它可以帮助开发者轻松地实现身份验证、授权和加密等功能。在本攻略中,我们将详细介绍如何使用Shiro,并提供两个示例来说明其用法。 以下是两个示例,介绍如何使用Shiro: 示例一:使用注解方式 注解方式是Shiro中一种非常常用的方式,它可以帮助开发者快速地实现身份验证和授权。以下是一个示例,介…

    Java 2023年5月15日
    00
  • Java Spring Bean的生命周期管理详解

    Java Spring Bean的生命周期管理详解 简介 在使用Spring框架时,Bean(实例)的生命周期管理是非常重要的,它涉及到Bean的创建、初始化、依赖注入、方法调用、销毁等过程。本文将详细介绍Java Spring中Bean的生命周期管理机制,帮助读者更好地理解和使用Spring框架。 生命周期阶段 在Spring框架中,Bean的生命周期可以…

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