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日

相关文章

  • JavaWeb Session 会话管理实例详解

    JavaWeb Session 会话管理实例详解 什么是会话管理 JavaWeb应用中,一个用户在登录之后通常会有一系列的操作,这些操作都是在同一个会话中完成的。会话管理就是用来跟踪会话状态的一种技术。通过会话管理,我们可以记录用户什么时候登录,在登录后进行了哪些操作,以及在哪一个时间点离开应用等信息。 Session 实现原理 Session 原理 Ses…

    Java 2023年5月20日
    00
  • Spring Boot 开发环境热部署详细教程

    SpringBoot开发环境热部署详细教程 简介 SpringBoot是一种基于Spring框架的开发框架,其配置简单、部署方便。而开发过程中的热部署,使得开发者可以无需重新启动应用程序,即可实现代码更改的实时展示。本文将详细讲解如何在SpringBoot开发环境中实现热部署。 热部署的实现 在SpringBoot开发环境中,热部署一般有两种实现方式:使用S…

    Java 2023年5月15日
    00
  • 什么是分代垃圾回收?

    以下是关于分代垃圾回收的详细讲解: 什么是分代垃圾回收? 分代垃圾回收是一种常见的垃圾回收算法。其原理是将内存空间分为不同的代,每一代对象具有不同的生命周期。在程序运行过程中,垃圾回收器会根据对象的生命周期将其分配到不同的代中,然后对不同代的对象采用不同的垃圾回收策略,以提高垃圾回收的效率和性能。 分代垃圾回收通常将内存空间分为三代:年轻代、中年代和老年代。…

    Java 2023年5月12日
    00
  • Java实战之酒店人事管理系统的实现

    Java实战之酒店人事管理系统的实现 介绍 本篇攻略将详细介绍如何使用Java语言实现一个酒店人事管理系统。该系统主要功能包括员工信息的录入、查询、修改和删除,以及工资和考勤等数据的统计。开发该系统需要掌握Java语言、MySQL数据库和Java GUI编程等技术。 准备工作 在开始开发之前,需要完成以下准备工作: 安装JDK和Eclipse IDE。 安装…

    Java 2023年6月16日
    00
  • java WebSocket 服务端实现代码

    下面是实现Java WebSocket服务端的完整攻略,包括示例说明。 准备工作 在开始编写WebSocket服务端代码之前,需要先确保拥有以下条件: Java开发环境,最好使用JDK8或以上版本。 WebSocket API,Java提供了JSR-356标准的WebSocket API,可以通过Maven添加依赖以使用API。 <dependency…

    Java 2023年5月19日
    00
  • spring多数据源配置实现方法实例分析

    Spring多数据源配置实现方法实例分析 在Spring应用中,我们经常需要连接多个数据库进行操作,此时需要使用到多数据源配置。本文将介绍如何在Spring框架中配置多数据源,并通过一个示例演示其使用方法。 一、添加多数据源依赖 在进行多数据源配置前,需先在pom.xml文件中添加相应的依赖: <dependency> <groupId&g…

    Java 2023年5月20日
    00
  • Java日期转换注解配置date format时间失效

    Java中日期的转换是非常常见的操作,通常在开发过程中使用注解方式进行转换。然而,如果注解的配置中没有设置正确的date format,那么转换结果就会出现问题。本文将为您详细讲解如何解决Java日期转换注解配置date format时间失效的问题。 问题分析 在Java开发过程中,我们经常会用到注解来进行日期的转换,例如将java.util.Date类型转…

    Java 2023年5月20日
    00
  • 高内聚低耦合原则_动力节点Java学院整理

    高内聚低耦合原则(Cohesion and Coupling) 什么是高内聚低耦合 高内聚低耦合是软件开发中一个非常重要的设计原则,它指的是模块内部的代码要紧密相连,而模块之间的耦合要尽量减少。 高内聚指的是模块内的各个元素方法或者变量之间联系紧密,完成单一任务。在内聚度高的模块中,任何代码的变动都会影响到整个模块,保证了模块内的代码协调性。 低耦合指的是模…

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