Java实现简单汽车租赁系统

Java实现简单汽车租赁系统的完整攻略

系统需求分析

该汽车租赁系统应该具备以下功能:

  1. 显示当前的租赁车辆列表

  2. 租客可以查询所需汽车类型的库存量

  3. 租客可以租车,并计算租车天数、费用等信息

  4. 车辆归还,更新库存

系统设计

类的设计-属性和方法

Car(汽车类)

属性:

  1. carType:汽车类型

  2. carId:汽车编号

  3. carPrice:汽车租金(元/天)

  4. isRented:是否已被租赁

方法:

  1. showCar():展示汽车信息

  2. getIsRented(): 获取汽车是否已被租赁状态

  3. setIsRented(): 设置汽车是否已被租赁状态

Customer(租户类)

属性:

  1. cusId:租户编号

  2. cusName:租户姓名

  3. rentedCar:所租汽车

  4. rentDays:租车天数

  5. rentFee:租车费用

方法:

  1. showRentInfo():展示租车信息

  2. rentCar():租车

  3. returnCar():还车

流程

初始化

  1. 创建两个集合,分别存储汽车和租户

  2. 创建Car和Customer实例,并添加到集合中(模拟汽车和租户库存信息)

展示租赁信息

  1. 遍历汽车集合,展示所有可租赁的汽车信息

  2. 类似的,展示租户信息

租车

  1. 根据租户输入查询车辆库存

  2. 如果车辆库存不足,则提示租户,否则进入下一步

  3. 获取租车天数,计算租车费用

  4. 将租车的租户信息存入租户集合中,并将车辆状态更改为“已租赁”

还车

  1. 根据租户编号和汽车编号查询租户和车辆信息

  2. 计算租车费用,更新租户信息(金额、租车天数等),更新汽车状态为“未租赁”

代码实现

以下是Java实现的汽车租赁系统示例:

import java.util.ArrayList;
import java.util.Scanner;

class Car {
    private String carType;
    private int carId;
    private double carPrice;
    private boolean isRented;

    // 构造方法
    public Car(String carType, int carId, double carPrice, boolean isRented) {
        this.carType = carType;
        this.carId = carId;
        this.carPrice = carPrice;
        this.isRented = isRented;
    }

    public void showCar() {
        System.out.println("车型:" + this.carType);
        System.out.println("编号:" + this.carId);
        System.out.println("价格:" + this.carPrice + "元/天");
        System.out.println("状态:" + (this.isRented ? "已租赁" : "未租赁"));
    }

    public boolean getIsRented() {
        return isRented;
    }

    public void setIsRented(boolean isRented) {
        this.isRented = isRented;
    }
}

class Customer {
    private int cusId;
    private String cusName;
    private Car rentedCar;
    private int rentDays;
    private double rentFee;

    public Customer(int cusId, String cusName) {
        this.cusId = cusId;
        this.cusName = cusName;
    }

    public void showRentInfo() {
        System.out.println("客户编号:" + this.cusId);
        System.out.println("客户姓名:" + this.cusName);
        System.out.println("租用的汽车");
        this.rentedCar.showCar();
        System.out.println("租用日期:" + rentDays + "天");
        System.out.println("租用费用:" + rentFee + "元");
    }

    public void rentCar(Car car, int days) {
        if (car.getIsRented()) {
            System.out.println("车辆 " + car.carId + " 已被租赁,请选择其他车辆。");
            return;
        }

        this.rentedCar = car;
        this.rentDays = days;
        this.rentFee = car.carPrice * days;

        car.setIsRented(true);
        System.out.println("客户编号:" + cusId);
        System.out.println("客户姓名:" + cusName);
        System.out.println("租用的汽车");
        this.rentedCar.showCar();
        System.out.println("租用日期:" + this.rentDays + "天");
        System.out.println("租用费用:" + this.rentFee + "元");
    }

    public void returnCar(int carId) {
        if (this.rentedCar == null || this.rentedCar.carId != carId) {
            System.out.println("客户 " + this.cusName + " 没有租用编号为 " + carId + " 的车辆。");
            return;
        }

        this.rentedCar.setIsRented(false);
        System.out.println("客户编号:" + cusId);
        System.out.println("客户姓名:" + cusName);
        System.out.println("租用的汽车");
        this.rentedCar.showCar();
        System.out.println("租用日期:" + this.rentDays + "天");
        System.out.println("租用费用:" + this.rentFee + "元");

        this.rentedCar = null;
        this.rentDays = 0;
        this.rentFee = 0;
    }
}

public class CarRentalSystem {
    public static void main(String[] args) {
        ArrayList<Car> carList = new ArrayList<>();
        ArrayList<Customer> customerList = new ArrayList<>();

        carList.add(new Car("小轿车", 1, 100, false));
        carList.add(new Car("面包车", 2, 150, true));
        carList.add(new Car("越野车", 3, 200, false));
        carList.add(new Car("商务车", 4, 250, false));
        carList.add(new Car("大巴车", 5, 300, false));

        customerList.add(new Customer(1, "张三"));
        customerList.add(new Customer(2, "李四"));
        customerList.add(new Customer(3, "王五"));

        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("欢迎使用汽车租赁系统,请选择以下功能:");
            System.out.println("1. 查看车辆信息");
            System.out.println("2. 查看客户信息");
            System.out.println("3. 租车");
            System.out.println("4. 还车");
            System.out.println("0. 退出系统");

            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    for (Car car : carList) {
                        car.showCar();
                    }
                    break;
                case 2:
                    for (Customer customer : customerList) {
                        customer.showRentInfo();
                    }
                    break;
                case 3:
                    System.out.println("请输入客户编号:");
                    int id = sc.nextInt();
                    System.out.println("请输入租赁天数:");
                    int days = sc.nextInt();
                    System.out.println("请选择车辆类型(输入数字1-5):");
                    System.out.println("1. 小轿车");
                    System.out.println("2. 面包车");
                    System.out.println("3. 越野车");
                    System.out.println("4. 商务车");
                    System.out.println("5. 大巴车");
                    int carType = sc.nextInt();

                    for (Car car : carList) {
                        if (car.carType.equals("小轿车") && carType == 1) {
                            customerList.get(id - 1).rentCar(car, days);
                            break;
                        } else if (car.carType.equals("面包车") && carType == 2) {
                            customerList.get(id - 1).rentCar(car, days);
                            break;
                        } else if (car.carType.equals("越野车") && carType == 3) {
                            customerList.get(id - 1).rentCar(car, days);
                            break;
                        } else if (car.carType.equals("商务车") && carType == 4) {
                            customerList.get(id - 1).rentCar(car, days);
                            break;
                        } else if (car.carType.equals("大巴车") && carType == 5) {
                            customerList.get(id - 1).rentCar(car, days);
                            break;
                        }
                    }
                    break;
                case 4:
                    System.out.println("请输入客户编号:");
                    id = sc.nextInt();
                    System.out.println("请输入车辆编号:");
                    int carId = sc.nextInt();
                    customerList.get(id - 1).returnCar(carId);
                    break;
                case 0:
                    System.exit(0);
                default:
                    System.out.println("输入错误,请重新输入。");
            }
        }
    }
}

上述示例提供了展示租车信息、租车、还车等的实现,可以自行测试、优化。对于输入、输出等交互细节,可以根据实际需求进行适当调整。

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

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

相关文章

  • Java集合ArrayList与LinkedList详解

    Java集合ArrayList与LinkedList详解 概述 Java集合分为两大类:Collection和Map。其中Collection又可以分为List、Set和Queue三种。 ArrayList和LinkedList是List接口的两种实现类,它们都可以存储按顺序排列的元素,但是它们之间有一些区别。本文将从以下几个方面详细讲解ArrayList和…

    Java 2023年5月26日
    00
  • Java实现单词倒序输出

    实现Java单词倒序输出有多种方法,我这里提供两种比较常见的方法: 方法一:利用StringBuilder实现 public static String reverseString(String str) { String[] words = str.split("\\s"); // 以空格为分隔符将句子分割成单词 StringBuild…

    Java 2023年5月26日
    00
  • 详细解读Java的串口编程

    详细解读Java的串口编程 什么是串口 串口是一种计算机外部设备与计算机通信的接口标准,它通过串口线连接计算机和设备,在数据传输时通过线上的电压变化来进行信息传递。 Java中实现串口编程 导入rxtxcomm.jar和win32com.dll两个文件,这两个文件提供了Java访问串口的接口。在导入了这两个文件之后,就可以在Java程序中访问串口了。 使用S…

    Java 2023年5月26日
    00
  • Java实现读取resources目录下的文件路径的九种方式

    Java实现读取resources目录下的文件路径通常有以下九种方式: 1. 使用ClassLoader的getResource()方法 在Java中,可以使用ClassLoader的getResource()方法获取resources目录下的文件路径。示例代码如下: URL resource = getClass().getClassLoader().ge…

    Java 2023年6月15日
    00
  • Java中为什么重写equals()也需要重写hashCode()?

    所有类默认继承Object类 先看一下Object源码 package java.lang; public class Object { //默认调用本地的hashcode()方法 根据内存地址生成hash值 避免不了哈希冲突 public native int hashCode(); //默认调用的equals方法比较的是’==’比较 //基本类型比较的是…

    Java 2023年4月25日
    00
  • Java中的复合数据类型

    下面是Java中的复合数据类型的详细讲解: 什么是复合数据类型 在Java中,复合数据类型是由多个简单数据类型组合而成的数据类型,这些简单数据类型可以是Java内置的基本数据类型或是其他复合数据类型。复合数据类型也可以被称为复杂数据类型或组合数据类型。 在Java中,有以下几种复合数据类型:- 数组(Array)- 类(Class)- 接口(Interfac…

    Java 2023年5月26日
    00
  • Spring Security 核心过滤器链讲解

    对于Spring Security,核心过滤器链可以说是它的核心之一。本文将从什么是核心过滤器链、以及它包含哪些过滤器等方面进行详细讲解。 1. 什么是核心过滤器链? 核心过滤器链是Spring Security运作的基础。当一个请求进来时,它将会被一系列的过滤器处理,处理完成后才会交给真正的应用程序处理。核心过滤器链由一系列的过滤器组成,每个过滤器都有自己…

    Java 2023年5月20日
    00
  • java使用JSONObject实例

    下面是关于“java使用JSONObject实例”的详细攻略: 什么是JSONObject JSONObject 是一个 Java 类,它是用来表示 JSON 对象的。我们可以通过构造方法或者添加属性的方式来创建一个 JSONObject 对象,然后可以通过 get 或者 opt 等方法获取里面的属性值。 JSONObject 常用方法 下面列举一些 JSO…

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