用JAVA实现停车场管理系统

2023-10-27

该程序使用ArrayList存储停车记录,并通过switch-case语句实现菜单选择功能。主要功能包括:

  • 停车:输入车牌号和进入时间,自动分配停车位编号,

  • 结算:根据停车位编号计算停车费用,计费标准为停车时长(秒)乘以每秒费用0.05元,同时记录车辆离开时间和费用;

  • 查看记录:显示所有停车记录的编号、车牌号、进入时间、离开时间和费用;

  • 退出程序。

当停车场已满时,无法再停车;当用户输入不存在的停车位编号或已经结算过的车辆编号时,系统会提示用户相应的信息。

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

class ParkingRecord {
    int id;
    String licensePlate;
    long timeIn;
    long timeOut;
    double cost;
}

public class ParkingLot {
    private ArrayList<ParkingRecord> parkingLot;
    private int currentCapacity;
    private final int MAX_CAPACITY = 10;

    public ParkingLot() {
        parkingLot = new ArrayList<ParkingRecord>(MAX_CAPACITY);
        currentCapacity = 0;
    }

    private void showMenu() {
        System.out.println("Parking Lot Management System");
        System.out.println("=============================");
        System.out.println("1. Park a car");
        System.out.println("2. Check out a car");
        System.out.println("3. Show parking records");
        System.out.println("4. Exit");
        System.out.print("Enter your choice: ");
    }

    private void parkCar() {
        if (currentCapacity < MAX_CAPACITY) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("Enter license plate: ");
            String licensePlate = scanner.nextLine();
            long timeIn = System.currentTimeMillis();
            ParkingRecord record = new ParkingRecord();
            record.id = currentCapacity + 1;
            record.licensePlate = licensePlate;
            record.timeIn = timeIn;
            parkingLot.add(record);
            currentCapacity++;
            System.out.println("Car parked successfully. Parking slot number is " + record.id);
        } else {
            System.out.println("Parking lot is full.");
        }
    }

    private void checkOutCar() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter parking slot number: ");
        int id = scanner.nextInt();
        ParkingRecord record = parkingLot.get(id - 1);
        if (record.timeOut > 0) {
            System.out.println("This car has already been checked out.");
            return;
        }
        record.timeOut = System.currentTimeMillis();
        long timeElapsed = record.timeOut - record.timeIn;
        double cost = timeElapsed / 1000.0 * 0.05;
        record.cost = cost;
        System.out.println("Checked out successfully. Parking fee is " + cost);
    }

    private void showParkingRecords() {
        System.out.println("ID\tLicense Plate\tTime In\tTime Out\tCost");
        for (ParkingRecord record : parkingLot) {
            System.out.printf("%d\t%s\t\t%d\t%d\t%.2f\n", record.id, record.licensePlate, record.timeIn, record.timeOut, record.cost);
        }
    }

    public static void main(String[] args) {
        ParkingLot parkingLot = new ParkingLot();
        Scanner scanner = new Scanner(System.in);
        int choice;
        do {
            parkingLot.showMenu();
            choice = scanner.nextInt();
            switch (choice) {
                case 1:
                    parkingLot.parkCar();
                    break;
                case 2:
                    parkingLot.checkOutCar();
                    break;
                case 3:
                    parkingLot.showParkingRecords();
                    break;
                case 4:
                    System.out.println("Thank you for using the Parking Lot Management System.");
                    break;
                default:
                    System.out.println("Invalid choice.");
                    break;
            }
            System.out.println();
        } while (choice != 4);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用JAVA实现停车场管理系统 的相关文章

随机推荐

  • this.getClass().getClassLoader().getResourceAsStream找不到文件

    this getClass getClassLoader getResourceAsStream 路径正确 但是找不到文件时 要检查对应xml文件是否放到了这个地方 只有放到了才能找到
  • 安卓手机GPU OpenCL总结

    前段时间 把市面上手机GPU OpenCL支持情况做了一个总结 总结如下 目前 手机 GPU 市面有四个公司产品 Qualcomm Imagination Technologies ARM Vivante 分别对应的产品如下 所有表格均是按
  • Springboot课程试题库管理系统毕业设计源码271129

    Springboot 计算机网络原理 课程试题库管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径 但是途径的扩展基本上为人们所努力的方向 由于站在的角度存在偏差 人们经常能够获得不同类型信息 这也是技术最为难以攻克的课题 针对 计
  • 录制、回放乱码问题解决办法和快照问题解决办法.

    1 录制的脚本乱码 LR录制的脚本中可能会有乱码 主要是当URL中有中文时 通过如下问题可以解决此问题 a Go to Vugen gt Tools gt Recording Options gt Advanced b Check the
  • 失业的程序员(六):加班

    本系列前章 失业的程序员 一 二 三 四 五 一 本文前戏 谈爱 每次开文我总要说一些看起来和本文其实关系不大的啰嗦话 也希望各位观众能够习惯 稍微花费大家几分钟时间便可进入正文 再一次跪求谅解 前几天在家看 我是歌手 复活赛那期 着实震撼
  • 1.开始学习前端(HTML+CSS+JavaScript)学习记录

    1 了解前端 Web开发 对于网页开发 最基础的 最核心的技术就是html css javascript 简称js 这三个技术也被称为前端开发 新三剑客 在Web1 0时代的 网页制作 网页三剑客是指网站的开发工具 Dreamweaver
  • 2009年8月21日

    开通博客了 new Start 1 加了的Active控件Windows Media Player如何能使用快进FastForward 和快退FastForward 这两个功能呢 给控件关联一个control变量 然后调用FastForwa
  • 大数据分析陷阱与Simpson’s Paradox(辛普森悖论)

    在大数据分析时 你有没有遇到这样一种奇怪现象 当分开看数据的时候会得到一种结论 但是合起来之后发现情况却完全改变 这就是著名的辛普森悖论 它总是隐藏在大数据之中 成为大数据分析的陷阱之一 1 含义 辛普森悖论 Simpson s Parad
  • 用C语言进行面向对象编程

    在C语言中进行面向对象编程需要使用一些特定的技术和方法 具体如下 结构体 在C语言中 结构体可以用来表示一个对象的属性和状态 相当于一个类的实例变量 结构体中可以包含不同类型的数据成员 如整数 字符 指针等 函数指针 C语言中可以使用函数指
  • 全局配置Element UI 中的 $message 的显示时长

    首先说下我是全局引入的Element UI组件 这是要更改message 的默认的时长 重写message的方法 import ElementUI from element ui import element ui lib theme ch
  • 修改 el-dialog__body padding

    在dialog外部套个div 再写deep addDia deep el dialog body padding bottom 0
  • angular 路由

    参考 angular 路由 文档 路由案例 路由参数 paramMap和Snapshot 当组件需要复用的时候使用paramMap获取路由参数 如一个组件不刷新 只更改了路由参数 那么就可以实时获取路由参数 当确定组件不复用的时候直接使用S
  • Python turtle画图库&&画姓名

    看一下我定义的change 和run 函数 绘图坐标体系 作用 设置主窗体的大小和位置 turtle setup width height startx starty width 窗口宽度 若值是整数 表示像素值 若是小数 表示窗口宽度与屏
  • 欧拉角万向节锁问题

    欧拉角万向节锁问题 2017 05 28 01 38 465人阅读 评论 0 收藏 举报 分类 计算机图形学 5 版权声明 本文为博主原创文章 未经博主允许不得转载 这两天一直纠结在欧拉角的万向节锁问题上 查了很多资料 可是依旧没有完全弄懂
  • Linux操作系统之僵尸进程

    文章目录 一 什么是僵尸进程 二 僵尸进程带来的危害 三 如何解决僵尸进程 四 什么是孤儿进程 一 什么是僵尸进程 子进程先于父进程节结束 父进程没有调用wait 获取子进程的退出码 子进程此时变为僵尸进程 在每个进程退出时 内核释放所有资
  • 阿里云 linux 的nginx 配置uni-app的H5前端项目vue,后端接口阿里云。

    背景 vue项目调用接口是阿里云的 H5网站也要部署到阿里云 2个不同的服务器 需要做nginx部署与api代理 1 端口配置 首先当然是买个阿里云服务器 这里是配置是linux系统 配置访问的域名 再接着 给网站配置需要的端口 如下 配置
  • 解决Windows系统缺少MCRecvSrc.dll文件的问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个MCRecvS
  • 国外it的一些学习网站

    1 国外有什么好的网站推荐 https blog csdn net AndroidCC article details 55223971 2 一些比较好的国外IT网站 https blog csdn net fzy1017692329 ar
  • Matlab中dir函数使用小技巧

    想必很多小伙伴在matlab中对文件进行批处理时经常会使用dir函数吧 dir函数用于列出文件夹中的内容 使用语法如下 Matlab dir 列出当前文件夹中的文件和文件夹 当然调用方式也可以是listing dir dir name 列出
  • 用JAVA实现停车场管理系统

    该程序使用ArrayList存储停车记录 并通过switch case语句实现菜单选择功能 主要功能包括 停车 输入车牌号和进入时间 自动分配停车位编号 结算 根据停车位编号计算停车费用 计费标准为停车时长 秒 乘以每秒费用0 05元 同时