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开发之Jdbc分页源码详解

    首先,我们需要了解JDBC分页的概念,它可以帮助我们在处理大量数据时,避免一次性获取过多的数据,从而提高程序的性能。 下面是一个基于JDBC的分页实现的示例代码,供您参考: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;…

    Java 2023年6月16日
    00
  • 让IIS6支持JSP的设置方法(IIS完美整合Tomcat)

    让IIS6支持JSP的设置方法主要是通过IIS和Tomcat的联合来实现,在整合过程中,需要对IIS的默认配置进行一些修改与设置,以便让IIS能够支持JSP页面的访问。 以下是详细的设置步骤: 1. 安装Tomcat 首先需要安装支持JSP和Servlet的Tomcat服务器,可以去官网下载Tomcat,下载完成后进行安装,安装时需要指定Tomcat的安装路…

    Java 2023年5月19日
    00
  • 快速建立Servlet和JSP的运行、调试和编译环境

    快速建立Servlet和JSP的运行、调试和编译环境的攻略如下: 环境准备 安装JDK 前往Oracle官网下载JDK安装包(根据操作系统和位数选择相应版本):https://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完成后,按照安装提示进行安装并配置环境变量。 安装Tomca…

    Java 2023年5月19日
    00
  • 快速掌握SpringBoot应用的启动入口

    让我来详细讲解一下“快速掌握SpringBoot应用的启动入口”的完整攻略。 1. 确定SpringBoot应用的启动入口 要了解SpringBoot应用的启动入口,我们需要先了解SpringBoot应用的结构。 SpringBoot应用的结构大致如下: – src – main – java – com.example.demo // 代码所在的包名 – …

    Java 2023年5月15日
    00
  • 多线程(多窗口卖票实例讲解)

    多线程(多窗口卖票实例讲解) 什么是多线程? 多线程(Multithreading)是指在一个程序中,运行多个线程并行执行,从而实现一次完成多个任务的处理方式。一个进程可以有多个线程,这些线程并行执行。 为什么要使用多线程? 在某些场景下,单线程无法同时处理多任务,导致程序响应慢,效率低下。如果使用多线程,则可以同时处理多个任务,提高程序的运行效率和响应速度…

    Java 2023年5月18日
    00
  • java必学必会之线程(2)

    Java必学必会之线程(2)攻略 线程同步 在多线程编程中,线程同步是一个非常重要的问题。如果不加以控制,在多线程同时访问共享资源的情况下,可能会导致数据不一致、死锁等问题。 同步的两种方式 Java 中实现同步的两种方式分别是 synchronized 和 ReentrantLock。 synchronized 关键字是 Java 提供的默认的语言级别的同…

    Java 2023年5月30日
    00
  • Java转JSON串的几种方式

    Java转JSON串的几种方式: 在Java开发中,将Java对象转化成JSON格式数据是很常见的一项操作。下面是几种常见的方式: 1. 使用Gson Gson是Google提供的一个Java JSON库,可以将JSON字符串和Java对象互相转化。可以通过以下步骤来使用Gson将Java对象转化成JSON格式数据: 引入Gson依赖: “` com.go…

    Java 2023年5月26日
    00
  • SpringBoot使用阿里OSS实现文件云存储的方法

    下面是“SpringBoot使用阿里OSS实现文件云存储的方法”的完整攻略。 一、前置条件 在开始之前,需要先获取一个阿里云OSS账号,并创建一个Bucket用于存储文件。同时在本地安装好SpringBoot环境和Maven。 二、导入依赖 首先,在pom.xml文件中添加阿里云OSS依赖: <dependency> <groupId&gt…

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