当前位置: 首页 > article >正文

简单的停车场管理系统的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;
}

代码说明:

  1. 结构体定义ParkingSlot 结构体用于存储每个车位的信息,包括车位编号、是否被占用以及车牌号。
  2. 初始化函数initializeParkingLot 函数用于初始化停车场的所有车位为空闲状态。
  3. 显示函数displayParkingLot 函数用于显示当前停车场的状态,包括每个车位是否被占用以及对应的车牌号。
  4. 进入函数enterParkingLot 函数用于处理车辆进入停车场的操作,找到一个空闲车位并记录车牌号。
  5. 离开函数leaveParkingLot 函数用于处理车辆离开停车场的操作,根据车牌号找到对应的车位并将其标记为空闲。
  6. 主函数main 函数提供一个简单的菜单界面,让用户选择不同的操作,如显示停车场状态、车辆进入、车辆离开以及退出系统。

这个示例可以作为一个基础,根据实际需求进一步扩展和优化,例如添加更多的功能、改进用户界面等。


http://www.kler.cn/a/522817.html

相关文章:

  • FreeRTOS学习 --- 动态任务创建和删除的详细过程
  • redis缓存和springboot缓存包冲突怎么办
  • Baklib打造高效内容管理平台提升协作与创作体验
  • 【Unity3D】aab包太大无法上传Google问题
  • 项目集成Nacos
  • springboot跨域配置
  • Bandicam录屏软件安装步骤与百度网盘链接
  • CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析
  • c++学习第十三天
  • RK3568 adb使用
  • 团体程序设计天梯赛-练习集——L1-022 奇偶分家
  • 洛谷 P2574 XOR的艺术
  • QT使用eigen
  • 【面试】【详解】设计模式
  • 定制Centos镜像(一)
  • Unity 资源 之 宝藏资源分享Motion Warping: Climb Interact
  • 2023年版本IDEA复制项目并修改端口号和运行内存
  • 寒假学web--day10
  • 【UE插件】Sphinx关键词语音识别
  • 前部分知识复习02
  • 单元测试在复杂业务逻辑开发中的重要性与实践
  • 性能测试丨Nginx 性能数据监控
  • 【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning
  • Node.js日志记录新篇章:morgan中间件的使用与优势
  • Fort Firewall:全方位守护网络安全
  • 数据结构与算法之数组: LeetCode 380. O(1) 时间插入、删除和获取随机元素 (Ts版)