Java实现汽车租赁系统

Java实现汽车租赁系统攻略

系统要求分析

在开始编写系统代码之前,我们首先需要明确系统的要求,确定需要实现的功能和数据。汽车租赁系统的主要功能如下:

  1. 录入车辆信息:利用程序录入租赁公司当中汽车的信息,包括车型、颜色、车牌号码、基础日租金、车辆编号等信息。
  2. 客户注册:可实现多次客户注册并记录客户信息,包括:客户姓名、电话、租车证件等。
  3. 车辆出租:实现输入客户姓名、身份证号进行:(1)车型选择;(2)天数选择;系统提示应付租金。在租金计算的同时,可进行出租车的状态管理。
  4. 归还车辆:实现对归还车辆进行状态管理,并按所租时间与车型为计算依据的收费功能。
  5. 车辆查询:按车型、颜色、品牌等关键字查询车辆信息。

系统设计分析

在了解了系统需求之后,我们需要进行系统设计。系统设计主要包括功能模块划分、数据库表设计、类设计等。

  1. 功能模块划分:根据系统的基本需求划分功能模块,例如:车辆信息录入模块、客户信息录入模块、车辆出租模块、归还车辆模块、车辆查询模块等。每个模块应尽可能保持独立性,以方便后续修改和维护。

  2. 数据库表设计:根据系统需求设计数据库表,例如:车辆信息表、客户信息表、出租记录表等。表的设计应符合规范,避免冗余字段。

  3. 类设计:根据系统需求,设计对应的类,例如:车辆类、客户类、租车类等。类的设计应符合规范,可重用性、可维护性良好。

系统代码实现

在完成系统设计后,我们可以编写具体的程序实现。主要代码实现过程如下:

  1. 创建汽车类,包括属性:车型、颜色、车牌号码等信息。在Car类中定义rentPrice函数来计算某辆车的租赁价格。
public class Car {
    private String model;
    private String color;
    private int dailyRent;
    private String plateNumber;
    private int carId;
    private boolean available;

    // 构造函数
    public Car(String model, String color, int dailyRent, String plateNumber, int carId) {
        this.model = model;
        this.color = color;
        this.dailyRent = dailyRent;
        this.plateNumber = plateNumber;
        this.carId = carId;
        this.available = true;
    }

    // 租金计算函数
    public double rentPrice(int days) {
        return this.dailyRent * days;
    }
}
  1. 创建客户类,包括属性:姓名、电话、租车证件等信息。
public class Customer {
    private String name;
    private String phoneNum;
    private String id;

    // 构造函数
    public Customer(String name, String phoneNum, String id) {
        this.name = name;
        this.phoneNum = phoneNum;
        this.id = id;
    }

    // getter函数
    public String getName() {
        return name;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public String getId() {
        return id;
    }
}
  1. 创建租车记录类,包括属性:车辆、客户、租车时间等信息。
public class RentRecord {
    private Car car;
    private Customer customer;
    private int days;
    private double price;
    private Date rentDate;

    // 构造函数
    public RentRecord(Car car, Customer customer, int days) {
        this.car = car;
        this.customer = customer;
        this.days = days;
        this.rentDate = new Date();
        this.price = car.rentPrice(days);
    }

    // getter函数
    public Car getCar() {
        return car;
    }

    public Customer getCustomer() {
        return customer;
    }

    public int getDays() {
        return days;
    }

    public double getPrice() {
        return price;
    }

    public Date getRentDate() {
        return rentDate;
    }
}
  1. 创建汽车租赁系统类,包括功能模块:车辆信息录入、客户信息录入、车辆出租、归还车辆、车辆查询等。
import java.util.*;

public class CarRentalSystem {
    private List<Car> carList;
    private List<Customer> customerList;
    private List<RentRecord> rentRecordList;

    // 构造函数
    public CarRentalSystem() {
        this.carList = new ArrayList<Car>();
        this.customerList = new ArrayList<Customer>();
        this.rentRecordList = new ArrayList<RentRecord>();
    }

    // 车辆信息录入
    public void addCar(Car car) {
        carList.add(car);
    }

    // 客户信息录入
    public void addCustomer(Customer customer) {
        customerList.add(customer);
    }

    // 车辆查询
    public List<Car> searchCar(String keyword) {
        List<Car> result = new ArrayList<Car>();
        for (Car car : carList) {
            if (car.getModel().contains(keyword) || car.getColor().contains(keyword) || car.getPlateNumber().contains(keyword)) {
                result.add(car);
            }
        }
        return result;
    }

    // 租车
    public RentRecord rentCar(Car car, Customer customer, int days) {
        if (!car.isAvailable()) {
            System.out.println("车辆已被出租,请选择其他车辆!");
            return null;
        }
        RentRecord rentRecord = new RentRecord(car, customer, days);
        rentRecordList.add(rentRecord);
        car.setAvailable(false);
        return rentRecord;
    }

    // 还车
    public double returnCar(RentRecord rentRecord) {
        Car car = rentRecord.getCar();
        car.setAvailable(true);
        return rentRecord.getPrice();
    }
}

示例说明

示例1:录入车辆信息

Car car1 = new Car("比亚迪", "白色", 200, "鲁A12345", 1);
Car car2 = new Car("丰田", "黑色", 300, "鲁B12345", 2);
Car car3 = new Car("奥迪", "红色", 500, "鲁C12345", 3);

CarRentalSystem crs = new CarRentalSystem();
crs.addCar(car1);
crs.addCar(car2);
crs.addCar(car3);

示例2:租车

Customer customer1 = new Customer("张三", "12345678901", "37132519xxxx");
Car car = crs.searchCar("奥迪").get(0);  // 使用车辆查询功能
RentRecord rentRecord = crs.rentCar(car, customer1, 3);  // 租用车辆

// 打印租车信息
System.out.println("租车信息如下:");
System.out.println("客户姓名:" + rentRecord.getCustomer().getName());
System.out.println("车牌号码:" + rentRecord.getCar().getPlateNumber());
System.out.println("租车天数:" + rentRecord.getDays());
System.out.println("应付租金:" + rentRecord.getPrice());

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

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

相关文章

  • SpringBoot 集成短信和邮件的配置示例详解

    下面我将详细讲解“SpringBoot 集成短信和邮件的配置示例详解”的完整攻略。 1. 集成短信 1.1. 添加依赖 在 pom.xml 中添加阿里云短信 SDK 的依赖: <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-s…

    Java 2023年5月20日
    00
  • 在JSP中使用formatNumber控制要显示的小数位数方法

    在JSP中,可以使用<fmt:formatNumber>标签来控制数字的显示格式,包括小数位数。 步骤如下: 在JSP页面中引入JSTL标签库: <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@tagli…

    Java 2023年6月15日
    00
  • Spring Data JPA 简单查询–方法定义规则(详解)

    下面是针对“Spring Data JPA 简单查询–方法定义规则(详解)”这一话题的完整攻略: 一、Spring Data JPASpring Data JPA是一个基于Spring Framework的延伸项目,它提供了使用JPA进行数据持久化的方案。通过Spring Data JPA,我们不再需要编写许多常规的数据访问代码,这是因为Spring Da…

    Java 2023年5月20日
    00
  • Java线程池详细解读

    Java线程池详细解读 什么是线程池? 线程池是一种用于多线程管理的机制,它可以有效管理将要执行的任务,减轻了创建和销毁线程的负担。通过复用现有线程,避免了大量线程创建和销毁过程中的开销,从而提高了应用程序的性能和可伸缩性。 线程池的优势 线程池的优势主要体现在以下几个方面: 更好的利用 CPU 资源和减少上下文切换的时间开销。 可以根据需要创建和回收线程,…

    Java 2023年5月26日
    00
  • Java实现统计字符串出现的次数

    下面来详细讲解Java实现统计字符串出现次数的完整攻略。 1. 获取待统计的字符串和要统计的字符 首先需要从用户那里获取到待统计的字符串和要统计的字符,可以使用Scanner类进行输入。示例代码如下: Scanner sc = new Scanner(System.in); System.out.println("请输入待统计的字符串:"…

    Java 2023年5月27日
    00
  • java日志打印的完全使用指南

    Java日志打印的完全使用指南 为什么需要日志打印 在开发Java应用程序时,我们经常需要记录程序的运行状态,以便于调试、性能分析和错误排查。日志打印就是一种记录应用程序运行状态的方式,它可以用来记录各种类型的信息,如调试信息、异常信息、警告信息、错误信息等。 使用日志打印有以下几个好处: 记录程序的运行状态,便于排查问题。 通过日志分析来评估代码的性能表现…

    Java 2023年5月26日
    00
  • jquery动态改变form属性提交表单

    如果你想通过jQuery来动态地改变表单(form)的属性和值,这里提供一些可以参考的方法和示例。 改变表单属性 可以使用attr()函数来改变表单属性。 $("form").attr("action", "new_action_url"); 这个方法将表单的action属性更改为new_actio…

    Java 2023年6月15日
    00
  • Java中常用修饰符的使用方法汇总

    Java中常用修饰符的使用方法汇总 在Java中,修饰符是一种关键字,用于修饰类、变量、方法等结构的访问权限、范围等特征。本文将会详细讲解Java中常用修饰符的使用方法,帮助读者更好地理解和掌握Java编程。 访问修饰符 Java中访问修饰符包括public、protected、default和private四种,它们分别控制着变量、方法和类的访问权限。下面…

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