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日

相关文章

  • Struts2实现多文件上传功能

    第一步:引入依赖在项目的 pom.xml 文件中添加以下依赖: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1&lt…

    Java 2023年5月20日
    00
  • 详解Spring Security怎么从数据库加载我们的用户

    下面我就来详细讲解如何用Spring Security从数据库中加载用户。 1. 创建数据表 首先我们需要在数据库中创建数据表,用于存储我们的用户信息,常用的表结构如下: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(45) NOT NULL, …

    Java 2023年6月3日
    00
  • java实现数组中的逆序对

    首先,让我们先来了解逆序对的概念。逆序对是指在一个数组a中,对于任意两个元素a[i]和a[j],当且仅当ia[j]时,就称这两个元素是一个逆序对。 为了实现数组中的逆序对,我们可以采用归并排序的思路,利用分治算法的思想来实现。 具体的实现过程如下: 将数组从中间分成两个子数组,递归地对两个子数组进行排序,直到每个子数组只剩下一个元素。 然后将两个子数组合并成…

    Java 2023年5月26日
    00
  • 如何检测SQL注入技术以及跨站脚本攻击

    SQL注入和跨站脚本攻击是常见的网络安全威胁,本文将详细介绍如何检测和防范这两种攻击。 检测SQL注入攻击 SQL注入的原理 SQL注入攻击是利用Web应用程序中的漏洞,通过向应用程序发送恶意的SQL命令,绕过身份验证和访问控制机制,从而获取敏感信息或完全接管应用程序的数据库管理系统(DBMS)。攻击者可以通过修改SQL查询语句或资料库程序来更改或删除重要数…

    Java 2023年6月15日
    00
  • 解决Mybatis中mapper.xml文件update,delete及insert返回值问题

    解决Mybatis中mapper.xml文件update,delete及insert返回值问题,需要在mapper.xml文件中使用select标签并指定resultType来解决。具体步骤如下: 在mapper.xml中编写对应的statement,如下: <!– update语句的示例 –> <update id="upd…

    Java 2023年5月26日
    00
  • 学习Java多线程之线程定义、状态和属性

    学习Java多线程之线程定义、状态和属性:完整攻略 1. 线程简介 在计算机的世界里,线程是操作系统能够进行运算调度的最小单位,是程序运行的最小单元。Java中线程是Thread类的实例,多线程的并发编程是Java开发中非常重要的一个方面。 2. 创建线程 Java创建线程有两种方式:继承Thread类和实现Runnable接口。本文以实现Runnable接…

    Java 2023年5月26日
    00
  • Java Springboot之Spring家族的技术体系

    Java Springboot之Spring家族的技术体系 什么是Spring家族 Spring家族是一个庞大的Java生态圈,以Spring Framework为核心,囊括了Spring Boot、Spring Cloud、Spring Data、Spring Security等许多重要的技术板块。Spring家族以轻量级的理念为基础,提供了丰富的技术和工…

    Java 2023年5月15日
    00
  • Springboot安全框架整合SpringSecurity实现方式

    Spring Boot 安全框架整合 Spring Security 实现方式 Spring Boot 是基于 Spring 框架的快速开发框架,而 Spring Security 是 Spring 生态中的安全框架,提供了安全认证、授权等功能。本文将介绍如何在 Spring Boot 中整合 Spring Security 实现安全认证和授权。 Sprin…

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