用 C++ 设计停车系统

2025年3月17日 | 阅读 8 分钟

引言

停车位是当今发展中不可或缺的元素,尤其是在城市多功能建筑和结构中。尽管机场、城市和购物中心有大量的公共停车空间,但有效管理它们可能是一场噩梦。高效的停车场系统可以保持交通畅通,监控停车位占用情况,并确保高效的停车操作。在本文中,我们将讨论如何使用 C++ 实现一个简单的停车场设计。我们将编辑问题,提及所需的所有组件,并为该问题构建一个简单的解决方案。

问题陈述

我们需要创建一个停车场系统,该系统可以同时容纳多辆车,并记录剩余的停车位数。所考虑的系统应具有以下功能:

  • 停车: 场地可用性管理 - 每当车辆开到场地时,相关的泊车员将始终邀请观察者到至少一个空位。
  • 移车: 如果有车辆停放,系统应标记该停车位现已空闲。
  • 跟踪可用车位: 在这种系统的操作中,将在特定时间准确提及可用车位的相当数量。

很明显,这个停车场没有无限的车位,我们还假设可以在单个停车场内停放各种类型的车辆(例如,汽车、摩托车和公共汽车),并且停车位会因车辆类型而异。

程序 1

示例

编译并运行

输出

 
Level 0: 8 spots available.
Level 1: 10 spots available.
Level 2: 10 spots available.   

代码解释

  • 车辆类(Vehicle Class)是抽象类,包含摩托车(Motorcycle)、汽车(Car)和公共汽车(Bus)等子类,这些子类实现了结构中所需的停车位数。
  • 停车位类(ParkingSpot Class): 此类表示具有独立尺寸的停车空间,也称为停车位。它能够验证停车位是否被占用以及是否可以容纳车辆。
  • 停车层类(ParkingLevel Class): 它包含多个停车位,并负责车辆在停车区域的正确停放。只有在有空停车位的情况下才能停车。当车辆驶出停车区时,可以从该层移除车辆。
  • 停车场类(ParkingLot Class): 它控制多个停车场区域内的多个层。它特别优化用于需要在可用空间内停放一个或多个车辆,然后随时移除的情况。

程序 2

示例

编译并运行

输出

 
Level 0: 8 spots available.
Level 1: 10 spots available.
Level 2: 10 spots available.
Spot 2 on Level 0 reserved successfully.
Level 0: 8 spots available.
Level 1: 10 spots available.
Level 2: 10 spots available.   

说明

  • 车辆登记和识别: 车辆类现在包含一个 licensePlate 属性,用于跟踪每辆车的车牌号。
  • 停车费: 停车票类(ParkingTicket class)使用简单的每小时费率计算基于进出时间的停车费。
  • 动态车位分配: 车辆根据其大小(摩托车、紧凑型、大型)停放,不同类型的车辆可以停放到其他车位中。
  • 预订系统: 用户可以预订停车位。系统会阻止车辆占用预订的车位,并且可以取消预订以腾出空间。
  • 显示可用车位: 系统显示每个级别的可用停车位数。

结论

总之,这个用 C++ 开发的简单停车场系统展示了如何组织车辆并管理其在多个级别上的可用空间。该设计可以增强以包含更复杂的功能,例如支付选项处理、移动动态车位占用和实时更新信息。该设计可以用作任何复杂停车系统解决方案的基础。