简单的停车场管理系统的C语言实现示例
以下是一个简单的停车场管理系统的C语言实现示例。该示例使用结构体来管理停车场的车位信息,并提供基本车辆进入、离开以及显示停车场状态功能。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SLOTS 10 // 最大车位数
#define LICENSE_PLATE_LENGTH 10 // 车牌号最大长度
// 定义车位结构体
typedef struct {
int slotNumber;
int isOccupied;
char licensePlate[LICENSE_PLATE_LENGTH];
} ParkingSlot;
// 初始化停车场
void initializeParkingLot(ParkingSlot *slots, int size) {
for (int i = 0; i < size; i++) {
slots[i].slotNumber = i + 1;
slots[i].isOccupied = 0;
strcpy(slots[i].licensePlate, "");
}
}
// 显示停车场状态
void displayParkingLot(ParkingSlot *slots, int size) {
printf("停车场状态:\n");
for (int i = 0; i < size; i++) {
if (slots[i].isOccupied) {
printf("车位 %d: 已占用, 车牌号: %s\n", slots[i].slotNumber, slots[i].licensePlate);
} else {
printf("车位 %d: 空闲\n", slots[i].slotNumber);
}
}
}
// 车辆进入停车场
int enterParkingLot(ParkingSlot *slots, int size, const char *licensePlate) {
for (int i = 0; i < size; i++) {
if (!slots[i].isOccupied) {
slots[i].isOccupied = 1;
strcpy(slots[i].licensePlate, licensePlate);
printf("车辆 %s 已进入车位 %d\n", licensePlate, slots[i].slotNumber);
return slots[i].slotNumber;
}
}
printf("停车场已满,车辆 %s 无法进入\n", licensePlate);
return -1;
}
// 车辆离开停车场
void leaveParkingLot(ParkingSlot *slots, int size, const char *licensePlate) {
for (int i = 0; i < size; i++) {
if (slots[i].isOccupied && strcmp(slots[i].licensePlate, licensePlate) == 0) {
slots[i].isOccupied = 0;
strcpy(slots[i].licensePlate, "");
printf("车辆 %s 已离开车位 %d\n", licensePlate, slots[i].slotNumber);
return;
}
}
printf("未找到车辆 %s\n", licensePlate);
}
int main() {
ParkingSlot slots[MAX_SLOTS];
initializeParkingLot(slots, MAX_SLOTS);
int choice;
char licensePlate[LICENSE_PLATE_LENGTH];
while (1) {
printf("\n停车场管理系统\n");
printf("1. 显示停车场状态\n");
printf("2. 车辆进入停车场\n");
printf("3. 车辆离开停车场\n");
printf("4. 退出\n");
printf("请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
displayParkingLot(slots, MAX_SLOTS);
break;
case 2:
printf("请输入车牌号: ");
scanf("%s", licensePlate);
enterParkingLot(slots, MAX_SLOTS, licensePlate);
break;
case 3:
printf("请输入车牌号: ");
scanf("%s", licensePlate);
leaveParkingLot(slots, MAX_SLOTS, licensePlate);
break;
case 4:
exit(0);
default:
printf("无效的选择,请重新输入\n");
}
}
return 0;
}
代码说明:
- 结构体定义:
ParkingSlot
结构体用于存储每个车位的信息,包括车位编号、是否被占用以及车牌号。 - 初始化函数:
initializeParkingLot
函数用于初始化停车场的所有车位为空闲状态。 - 显示函数:
displayParkingLot
函数用于显示当前停车场的状态,包括每个车位是否被占用以及对应的车牌号。 - 进入函数:
enterParkingLot
函数用于处理车辆进入停车场的操作,找到一个空闲车位并记录车牌号。 - 离开函数:
leaveParkingLot
函数用于处理车辆离开停车场的操作,根据车牌号找到对应的车位并将其标记为空闲。 - 主函数:
main
函数提供一个简单的菜单界面,让用户选择不同的操作,如显示停车场状态、车辆进入、车辆离开以及退出系统。
这个示例可以作为一个基础,根据实际需求进一步扩展和优化,例如添加更多的功能、改进用户界面等。