本程序模拟一个狭长停车场的车辆进出管理,使用栈模拟停车场,队列模拟等候便道。支持车辆到达、离开和费用结算功能,严格遵循停车场让路规则和停留时间计费逻辑。
- 操作系统:Windows10 或更高版本
- 编译器:MinGW64
- CMake:3.30.8
- Python:3.12.7
- C++标准:C++11
-
安装CMake
- 下载CMake安装包:CMake官网
- 运行安装程序,选择“Add CMake to the system PATH for all users”选项。
- 验证安装:在命令行中运行
cmake --version,确保输出CMake版本信息。
-
安装MinGW64
- 下载MinGW64安装包: MinGW官网
- 运行安装程序,选择“Installation type: Minimal”,“Architecture: x86_64”,“Threaded: posix”,“Exception: seh”,“Build revision: latest”
- 安装完成后,将MinGW的bin目录添加到系统环境变量中。
-
配置Python环境
-
下载Python安装包:Python官网
-
运行安装程序,选择“Add Python to PATH”选项。
-
验证安装:在命令行中运行
python --version,确保输出Python版本信息。 -
将Python的Scripts目录添加到系统环境变量中。
-
验证安装:在命令行中运行
python -m pip --version,确保输出pip版本信息。 -
安装依赖包:在命令行中运行
pip install -r requirements.txt,确保安装所有依赖包。
-
-
配置C++环境
- 安装完成后,将MinGW的bin目录添加到系统环境变量中。
- 验证安装:在命令行中运行
g++ --version,确保输出G++版本信息。
-
编译项目
- 运行python脚本:在命令行中运行
python build.py,确保编译成功。
- 运行python脚本:在命令行中运行
-
运行项目
- 运行可执行文件:在命令行中运行
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为栈底(最北端)。
• 便道队列:带头结点的单链表,维护队首和队尾指针。
• 临时栈:独立数组存储,确保让路车辆顺序正确恢复。