以下是一個簡單的停車場管理系統的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
函數提供一個簡單的菜單界面,讓用戶選擇不同的操作,如顯示停車場狀態、車輛進入、車輛離開以及退出系統。
這個示例可以作為一個基礎,根據實際需求進一步擴展和優化,例如添加更多的功能、改進用戶界面等。