Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

停车场管理模拟程序

项目描述

本程序模拟一个狭长停车场的车辆进出管理,使用栈模拟停车场,队列模拟等候便道。支持车辆到达、离开和费用结算功能,严格遵循停车场让路规则和停留时间计费逻辑。

环境要求

  • 操作系统:Windows10 或更高版本
  • 编译器:MinGW64
  • CMake:3.30.8
  • Python:3.12.7
  • C++标准:C++11

安装步骤

  1. 安装CMake

    • 下载CMake安装包:CMake官网
    • 运行安装程序,选择“Add CMake to the system PATH for all users”选项。
    • 验证安装:在命令行中运行 cmake --version,确保输出CMake版本信息。
  2. 安装MinGW64

    • 下载MinGW64安装包: MinGW官网
    • 运行安装程序,选择“Installation type: Minimal”,“Architecture: x86_64”,“Threaded: posix”,“Exception: seh”,“Build revision: latest”
    • 安装完成后,将MinGW的bin目录添加到系统环境变量中。
  3. 配置Python环境

    • 下载Python安装包:Python官网

    • 运行安装程序,选择“Add Python to PATH”选项。

    • 验证安装:在命令行中运行 python --version,确保输出Python版本信息。

    • 将Python的Scripts目录添加到系统环境变量中。

    • 验证安装:在命令行中运行 python -m pip --version,确保输出pip版本信息。

    • 安装依赖包:在命令行中运行 pip install -r requirements.txt,确保安装所有依赖包。

  4. 配置C++环境

    • 安装完成后,将MinGW的bin目录添加到系统环境变量中。
    • 验证安装:在命令行中运行 g++ --version,确保输出G++版本信息。
  5. 编译项目

    • 运行python脚本:在命令行中运行 python build.py,确保编译成功。
  6. 运行项目

    • 运行可执行文件:在命令行中运行 python main.py,确保程序正常运行。

注意

  • 确保环境变量MinGW的bin目录在其他C/C++编译器(如Clang)之前, 否则可能会导致编译错误。
  • 确保环境变量Python的Scripts目录在其他Python环境之前(如MinGW中的python), 否则可能会导致Python版本错误。

功能特性

• 车辆到达(A)

• 停车场未满时,车辆进入停车场栈,输出停车位置。

• 停车场已满时,车辆加入便道队列,输出便道位置。

• 车辆离开(D)

• 目标车辆后的所有车辆暂移至临时栈,待目标车辆离开后按原序恢复。

• 自动从便道队列首部取车补入停车场(如果有空位)。

• 输出停留时间及费用(费用=停留时间,单位时间费用率1)。

• 输入终止(E)

• 结束程序运行。

输入输出说明

输入格式 • 每组数据包含三个字段:(操作类型, 车牌号, 时间)

• 操作类型:A(到达)、D(离开)、E(终止)

• 车牌号:整数,唯一标识车辆

• 时间:整数,表示到达/离开的时刻

• 输入按时间升序排列,示例:

(‘A’,1,5)
(‘A’,2,10)
(‘D’,1,15)
(‘A’,3,20)
(‘E’,0,0)

输出格式 • 到达(A)

• 停车场有空位:车辆 [车牌号] 停在停车场 [位置] 号位

• 便道等候:车辆 [车牌号] 停在便道 [位置] 号位

• 离开(D)

车辆 [车牌号] 停留时间 [时间] 小时,费用 [费用] 元

• 非法操作(如离开不存在的车辆):操作无效

数据结构设计

• 停车场栈(顺序存储)

• 容量固定为 n(测试案例中 n=2

• 元素结构:{车牌号, 进入时间}

• 便道队列(链式存储)

• 无容量限制,按FIFO规则管理

• 节点结构:{车牌号, 到达时间, next指针}

• 临时栈(顺序存储)

• 用于暂存让路车辆,操作完成后按原序恢复至停车场栈

运行示例

测试数据输入

(‘A’,1,5)
(‘A’,2,10)
(‘D’,1,15)
(‘A’,3,20)
(‘A’,4,25)
(‘A’,5,30)
(‘D’,2,35)
(‘D’,4,40)
(‘E’,0,0)

预期输出

车辆 1 停在停车场 1 号位
车辆 2 停在停车场 2 号位
车辆 1 停留时间 10 小时,费用 10 元
车辆 3 停在便道 1 号位
车辆 4 停在便道 2 号位
车辆 5 停在便道 3 号位
车辆 2 停留时间 25 小时,费用 25 元
操作无效(车牌4不在停车场)
输入结束

实现细节

• 停车场栈:数组实现,索引0为栈底(最北端)。

• 便道队列:带头结点的单链表,维护队首和队尾指针。

• 临时栈:独立数组存储,确保让路车辆顺序正确恢复。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages