C语言停车场模型详解

news2025/1/18 11:04:37

C语言停车场模型详解

    • 1. 引言
    • 2. 代码概述
    • 3. 代码详解
      • 3.1 定义常量和数据结构
      • 3.2 初始化车库
      • 3.3 查找车辆所在车库
      • 3.4 查找车辆所在的车位
      • 3.5 打印车库状态
      • 3.6 打印等候车辆
      • 3.7 车辆入库
      • 3.8 车辆出库
      • 3.9 菜单功能
      • 3.10 主函数
    • 5.效果展示
    • 5.完整代码
    • 6. 总结

1. 引言

本文将介绍一个使用C语言实现的停车场模型,包括代码和实现思路。停车场管理系统是现实生活中常见的系统之一,通过模拟实现停车场管理系统,我们可以学习和熟悉C语言的基本语法,以及如何利用数据结构和算法解决实际问题。

2. 代码概述

本停车场模型代码由以下几个部分组成:

  • 定义常量和数据结构:包括最大车库数、最大每个车库的车位数、最大车牌号长度等常量的定义,以及CarCarPort结构体的定义。
  • 初始化车库:定义init_carports函数,用于初始化车库信息。
  • 查找车辆所在车库:定义find_carport函数,用于根据车牌号查找车辆所在的车库。
  • 查找车辆所在的车位:定义find_carport_by_plate函数,用于在指定车库中根据车牌号查找车辆所在的车位。
  • 打印车库状态:定义print_carports函数,用于打印当前各个车库的车位情况。
  • 打印等候车辆:定义print_waiting_cars函数,用于打印当前等候的车辆。
  • 车辆入库:定义in_car函数,用于实现车辆进入停车场的操作。
  • 车辆出库:定义out_car函数,用于实现车辆离开停车场的操作。
  • 菜单功能:定义menu函数,用于实现用户选择功能菜单,并根据用户选择调用相应的函数。
  • 主函数:定义main函数,用于程序的入口,调用init_carports函数进行初始化,调用menu函数进入功能菜单循环。

3. 代码详解

3.1 定义常量和数据结构

在代码开始部分,我们定义了一些常量,包括最大车库数、最大每个车库的车位数、最大车牌号长度等。这些常量的定义有助于代码的可读性和维护性,方便后续对代码的修改和扩展。

#define MAX_CARPORTS 10 // 最大车库数
#define MAX_CAPACITY 10 // 最大每个车库的车位数
#define MAX_PLATE_LEN 10 // 最大车牌号长度

typedef struct {
    char plate[MAX_PLATE_LEN];
    time_t in_time;
} Car;

typedef struct {
    int capacity;
    Car cars[MAX_CAPACITY];
} CarPort;

在这段代码中,我们定义了Car结构体用于表示一辆车的信息,包括车牌号和进入停车场的时间。CarPort结构体用于表示一个车库的信息,包括车库的容量和存放的车辆信息。

3.2 初始化车库

通过init_carports函数,我们可以初始化车库的信息,包括车库个数和每个车库的车位数。

void init_carports() {
    printf("请输入车库个数:");
    scanf("%d", &carport_num);

    for (int i = 0; i < carport_num; i++) {
        printf("请输入第 %d 个车库的车位个数:", i + 1);
        scanf("%d", &carports[i].capacity);
    }
}

在函数中,我们使用scanf函数依次读取用户输入的车库个数和每个车库的车位数,并将其保存到carport_numcarports[i].capacity变量中。

3.3 查找车辆所在车库

通过find_carport函数,我们可以根据车牌号查找车辆所在的车库。函数会遍历每个车库中的车辆信息,比对车牌号,如果存在相同的车牌号,则返回对应的车库编号。

int find_carport(const char *plate) {
    for (int i = 0; i < carport_num; i++) {
        for (int j = 0; j < carports[i].capacity; j++) {
            if (strcmp(plate, carports[i].cars[j].plate) == 0) {
                return i;
            }
        }
    }
    return -1;
}

在函数中,我们使用两层循环来遍历每个车库中的车辆信息。在内层循环中,使用strcmp函数比对字符串是否相同,如果相同,则返回对应的车库编号。如果没有找到车辆所在的车库,函数返回-1。

3.4 查找车辆所在的车位

通过find_carport_by_plate函数,我们可以在指定车库中根据车牌号查找车辆所在的车位。如果找到相同的车牌号,则返回车位的索引。

int find_carport_by_plate(const char *plate, int carport) {
    for (int j = 0; j < carports[carport].capacity; j++) {
        if (strcmp(plate, carports[carport].cars[j].plate) == 0) {
            return j;
        }
    }
    return -1;
}

在函数中,我们使用一个循环遍历指定车库中的车辆信息,通过strcmp函数比对车牌号是否相同,如果相同,则返回对应车位的索引。如果没有找到车牌号相同的车辆,则返回-1。

3.5 打印车库状态

通过print_carports函数,我们可以打印当前各个车库的车位情况。

void print_carports() {
    for (int i = 0; i < carport_num; i++) {
        printf("车库 %d 车位情况:", i + 1);
        for (int j = 0; j < carports[i].capacity; j++) {
            if (strlen(carports[i].cars[j].plate) > 0) {
                printf("%s ", carports[i].cars[j].plate);
            }
        }
        printf("\n");
    }
}

在函数中,我们使用两层循环遍历每个车库中的车辆信息,并通过strlen函数判断是否为空车位。如果不为空车位,则打印车牌号。最后,通过换行符换行。

3.6 打印等候车辆

通过print_waiting_cars函数,我们可以打印当前等候的车辆信息。

void print_waiting_cars() {
    printf("等待车辆:");
    for (int i = 0; i < carport_num; i++) {
        for (int j = carports[i].capacity; j < MAX_CAPACITY; j++) {
            if (strlen(carports[i].cars[j].plate) > 0) {
                printf("%s ", carports[i].cars[j].plate);
            }
        }
    }
    printf("\n");
}

在函数中,我们使用两层循环遍历每个车库中的等候车辆信息,并通过strlen函数判断是否为空车位。如果不为空车位,则打印车牌号。最后,通过换行符换行。

3.7 车辆入库

通过in_car函数,我们可以实现车辆进入停车场的操作。

void in_car() {
    int carport;
    char plate[MAX_PLATE_LEN];

    printf("请输入车库编号(1-%d):", carport_num);
    scanf("%d", &carport);
    carport--;

    if (carport < 0 || carport >= carport_num) {
        printf("车库编号无效\n");
        return;
    }

    printf("请输入车牌号:");
    scanf("%s", plate);

    int index = find_carport(plate);
    if (index >= 0) {
        printf("车辆 %s 已在库\n", plate);
        return;
    }

    for (int i = 0; i < carports[carport].capacity; i++) {
        if (strlen(carports[carport].cars[i].plate) == 0) {
            strcpy(carports[carport].cars[i].plate, plate);
            carports[carport].cars[i].in_time = time(NULL);
            printf("车辆 %s 入库成功\n", plate);
            print_carports();
            print_waiting_cars();
            return;
        }
    }

    for (int i = carports[carport].capacity; i < MAX_CAPACITY; i++) {
        if (strlen(carports[carport].cars[i].plate) == 0) {
            strcpy(carports[carport].cars[i].plate, plate);
            carports[carport].cars[i].in_time = time(NULL);
            printf("车辆 %s 在便道等候\n", plate);
            print_carports();
            print_waiting_cars();
            return;
        }
    }

    printf("车库 %d 已满,无法入库\n", carport + 1);
}

在函数中,我们先通过scanf函数读取用户输入的车库编号,并将其减1转换为数组索引。然后,通过scanf函数读取用户输入的车牌号。

接下来,我们通过find_carport函数查找车辆是否已在库中,如果已存在,则打印提示信息并返回。

然后,我们使用循环遍历当前车库的车位情况,通过strlen函数判断是否为空车位。如果存在空车位,则将车辆信息保存到该车位,并记录进入停车场的时间。然后打印入库成功的提示信息,并调用print_carportsprint_waiting_cars函数打印当前车库和等候车辆情况,并返回。

如果车库已满,我们通过循环遍历便道的车位情况,查找是否存在空车位。如果存在空车位,则将车辆信息保存到该车位,并记录进入停车场的时间。然后打印在便道等候的提示信息,并调用print_carportsprint_waiting_cars函数打印当前车库和等候车辆情况,并返回。

如果便道车位也满了,则打印无法入库的提示信息。

3.8 车辆出库

通过out_car函数,我们可以实现车辆离开停车场的操作。

void out_car() {
    char plate[MAX_PLATE_LEN];

    printf("请输入车牌号:");
    scanf("%s", plate);

    int carport = find_carport(plate);
    if (carport < 0) {
        printf("车辆 %s 不在库\n", plate);
        return;
    }

    int index = find_carport_by_plate(plate, carport);
    if (index < 0) {
        printf("未找到车辆 %s 的位置\n", plate);
        return;
    }

    carports[carport].cars[index].in_time = 0;
    strcpy(carports[carport].cars[index].plate, "");

    printf("车辆 %s 出库成功\n", plate);
    print_carports();
    print_waiting_cars();
}

在函数中,我们通过scanf函数读取用户输入的车牌号,并通过find_carport函数查找车辆是否在库中。如果车辆不在库中,则打印提示信息并返回。

接下来,我们通过find_carport_by_plate函数查找车辆在指定车库中的车位。如果没有找到车辆在库中的位置,则打印提示信息并返回。

然后,我们将车辆在库中的时间设置为0,将车辆的车牌号清空。

最后,我们打印车辆出库成功的提示信息,并调用print_carportsprint_waiting_cars函数打印当前车库和等候车辆情况。

3.9 菜单功能

通过menu函数,我们可以实现用户选择功能菜单,并根据用户选择调用相应的函数。

void menu() {
    int choice;

    do {
        printf("\n停车场管理系统\n");
        printf("1. 入库\n");
        printf("2. 出库\n");
        printf("3. 查看车库\n");
        printf("4. 查看等候车辆\n");
        printf("0. 退出\n");
        printf("请输入您的选择:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                in_car();
                break;
            case 2:
                out_car();
                break;
            case 3:
                print_carports();
                break;
            case 4:
                print_waiting_cars();
                break;
            case 0:
                printf("再见!\n");
                break;
            default:
                printf("无效选择\n");
                break;
        }
    } while (choice != 0);
}

在函数中,我们通过do-while循环实现一个功能菜单的循环,直到用户选择退出程序。在循环中,我们使用switch语句根据用户选择调用对应的函数。如果用户选择无效选项,则打印提示信息。

3.10 主函数

main函数中,我们首先调用init_carports函数进行初始化,然后调用menu函数进入功能菜单循环。

int main() {
    init_carports();
    menu();
    return 0;
}

5.效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.完整代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define MAX_CARPORTS 10 // 最大车库数
#define MAX_CAPACITY 10 // 最大每个车库的车位数
#define MAX_PLATE_LEN 10 // 最大车牌号长度

typedef struct {
    char plate[MAX_PLATE_LEN];
    time_t in_time;
} Car;

typedef struct {
    int capacity;
    Car cars[MAX_CAPACITY];
} CarPort;

CarPort carports[MAX_CARPORTS];
int carport_num = 0; // 实际车库数

void init_carports() {
    printf("请输入车库个数:");
    scanf("%d", &carport_num);

    for (int i = 0; i < carport_num; i++) {
        printf("请输入第 %d 个车库的车位个数:", i + 1);
        scanf("%d", &carports[i].capacity);
    }
}

int find_carport(const char *plate) {
    for (int i = 0; i < carport_num; i++) {
        for (int j = 0; j < carports[i].capacity; j++) {
            if (strcmp(plate, carports[i].cars[j].plate) == 0) {
                return i;
            }
        }
    }
    return -1;
}

int find_carport_by_plate(const char *plate, int carport) {
    for (int j = 0; j < carports[carport].capacity; j++) {
        if (strcmp(plate, carports[carport].cars[j].plate) == 0) {
            return j;
        }
    }
    return -1;
}

void print_carports() {
    for (int i = 0; i < carport_num; i++) {
        printf("车库 %d 车位情况:", i + 1);
        for (int j = 0; j < carports[i].capacity; j++) {
            if (strlen(carports[i].cars[j].plate) > 0) {
                printf("%s ", carports[i].cars[j].plate);
            }
        }
        printf("\n");
    }
}

void print_waiting_cars() {
    printf("等待车辆:");
    for (int i = 0; i < carport_num; i++) {
        for (int j = carports[i].capacity; j < MAX_CAPACITY; j++) {
            if (strlen(carports[i].cars[j].plate) > 0) {
                printf("%s ", carports[i].cars[j].plate);
            }
        }
    }
    printf("\n");
}

void in_car() {
    int carport;
    char plate[MAX_PLATE_LEN];

    printf("请输入车库编号(1-%d):", carport_num);
    scanf("%d", &carport);
    carport--;

    if (carport < 0 || carport >= carport_num) {
        printf("车库编号无效\n");
        return;
    }

    printf("请输入车牌号:");
    scanf("%s", plate);

    int index = find_carport(plate);
    if (index >= 0) {
        printf("车辆 %s 已在库\n", plate);
        return;
    }

    for (int i = 0; i < carports[carport].capacity; i++) {
        if (strlen(carports[carport].cars[i].plate) == 0) {
            strcpy(carports[carport].cars[i].plate, plate);
            carports[carport].cars[i].in_time = time(NULL);
            printf("车辆 %s 入库成功\n", plate);
            print_carports();
            print_waiting_cars();
            return;
        }
    }

    for (int i = carports[carport].capacity; i < MAX_CAPACITY; i++) {
        if (strlen(carports[carport].cars[i].plate) == 0) {
            strcpy(carports[carport].cars[i].plate, plate);
            carports[carport].cars[i].in_time = time(NULL);
            printf("车辆 %s 在便道等候\n", plate);
            print_carports();
            print_waiting_cars();
            return;
        }
    }

    printf("车库 %d 已满,无法入库\n", carport + 1);
}

void out_car() {
    char plate[MAX_PLATE_LEN];

    printf("请输入出库车牌号:");
    scanf("%s", plate);

    int carport = find_carport(plate);
    if (carport < 0) {
        printf("车辆 %s 不在库\n", plate);
        return;
    }

    int index = find_carport_by_plate(plate, carport);
    if (index < 0) {
        printf("车辆 %s 不在库\n", plate);
        return;
    }

    time_t out_time = time(NULL);
    double duration = difftime(out_time, carports[carport].cars[index].in_time);
    double fee;

    if (duration <= 900) {
        fee = 0;
    } else {
        struct tm *out_tm = localtime(&out_time);
        int hour = out_tm->tm_hour;

        if (hour >= 6 && hour < 18) {
            fee = duration / 900 * 0.5;
        } else {
            fee = duration / 900;
        }
    }

    printf("车辆 %s 出库成功,停车时长 %.1f 分钟,收费 %.2f 元\n", plate, duration / 60, fee);

    carports[carport].cars[index].plate[0] = '\0';

    for (int i = carports[carport].capacity; i < MAX_CAPACITY; i++) {
        if (strlen(carports[carport].cars[i].plate) > 0) {
            strcpy(carports[carport].cars[index].plate, carports[carport].cars[i].plate);
            carports[carport].cars[index].in_time = carports[carport].cars[i].in_time;
            carports[carport].cars[i].plate[0] = '\0';
            printf("等候车辆 %s 入库\n", carports[carport].cars[index].plate);
            print_carports();
            print_waiting_cars();
            return;
        }
    }

    print_carports();
    print_waiting_cars();
}

void menu() {
    int choice;

    do {
        printf("\n停车场管理系统\n");
        printf("1. 入库\n");
        printf("2. 出库\n");
        printf("3. 查看车库\n");
        printf("4. 查看等候车辆\n");
        printf("0. 退出\n");
        printf("请输入您的选择:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                in_car();
                break;
            case 2:
                out_car();
                break;
            case 3:
                print_carports();
                break;
            case 4:
                print_waiting_cars();
                break;
            case 0:
                printf("再见!\n");
                break;
            default:
                printf("无效选择\n");
                break;
        }
    } while (choice != 0);
}

int main() {
    init_carports();
    menu();

    return 0;
}

6. 总结

本文介绍了一个使用C语言实现的停车场模型代码,包括定义常量和数据结构,初始化车库,查找车辆所在车库和车位,打印车库状态和等候车辆,车辆入库和出库,以及菜单功能等。该代码通过模拟实现停车场管理系统,可以帮助学习和熟悉C语言的基本语法,以及如何利用数据结构和算法解决实际问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1340250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GC控制器(Garbagecollector)源码解析

KubeController Garbagecollector 本文从源码的角度分析KubeController Garbagecollector相关功能的实现。 本篇kubernetes版本为v1.27.3。 kubernetes项目地址: https://github.com/kubernetes/kubernetes controller命令main入口: cmd/kube-controller-manager/controller-…

【Redis】八、哨兵模式

文章目录 一、概述这里的哨兵有两个作用多个哨兵 二、哨兵测试1、配置哨兵配置文件 sentinel.conf2、启动哨兵3、断开Master节点 三、哨兵模式优点&#xff1a;缺点&#xff1a; 哨兵模式的全部配置 参考&#xff1a;狂神说Java bilibili哨兵模式 一、概述 自动选取老大的模式…

【Spring Security】认证之案例的使用、MD5加密、CSRF防御

目录 一、引言 1、什么是SpringSecurity认证 2、为什么使用SpringSecurity之认证 3、实现步骤 二、快速实现&#xff08;案例&#xff09; 1、添加依赖 2、配置 3、导入数据表及相关代码 4、创建登录页及首页 5、创建配置Controller 6、用户认证 6.1、用户对象User…

Bind for 0.0.0.0:2379 failed: port is already allocated

1、执行命令docker-compose -p docker-apisix up -d 报错 Error response from daemon: driver failed programming external connectivity on endpoint docker-apisix-etcd-1 (2a92a0cefff9194fcd1dad4bdeabf4201d9047ec2633eda455c6e46528668af4): Bind for 0.0.0.0:2379 fa…

YoloV8改进策略:基于自研的图注意力机制改进| 独家改进方法|图卷积和注意力融合模块

摘要 SE注意力机制是一种通过显式建模卷积特征的信道之间相互依赖性的方法,旨在提高网络产生的表示的质量。SE注意力机制包括两个步骤:Squeeze和Excitation。在Squeeze步骤中,通过全局平均池化操作将输入特征图压缩成一个向量,然后通过一个全连接层将其映射到一个较小的向…

全志R128 DSP开发工具安装教程

资料准备 要编译和仿真DSP&#xff0c;需要以下资料&#xff1a; DSP 核 SDK&#xff0c;SDK 需要包含DSP 编译源码。Cadence Xtensa 的 Windows IDE 工具 (Xplorer‑8.0.13 版本)&#xff0c; Windows 版本 DSP 的 package 包。Cadence Xtensa 的 License&#xff0c;用于服…

STM32 基础知识(探索者开发板)--93讲 PWM

预分频器相当于一个计数器&#xff0c;2分频就是接收2个脉冲传递一个脉冲&#xff0c;3分频就是接收3个脉冲传递一个脉冲&#xff0c;最高65535分频&#xff0c;那么总计时间能达到65535*65535*1/72MHZ 约59秒&#xff0c;没有分频器只能计数最高0.09秒 PWM配置步骤 1.配置定时…

数据分析工具 Top 8

你能想象一个没有工具箱的水管工吗? 没有,对吧? 数据从业者也是如此。如果没有他们的数据分析工具&#xff0c;数据从业者就无法分析数据、可视化数据、从数据中提取价值&#xff0c;也无法做数据从业者在日常工作中做的许多很酷的事情。 根据你最感兴趣的数据科学职业——数…

企业数据可视化-亿发数据化管理平台提供商,实现一站式数字化运营

近些年来&#xff0c;国内企业数据化管理升级进程持续加速&#xff0c;以物联网建设、人工智能、大数据和5G网络等新技术的发展&#xff0c;推动了数字经济的蓬勃发展&#xff0c;成为维持经济持续稳定增长的重要引擎。如今许多国内中小型企业纷纷摒弃传统管理模式&#xff0c;…

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建安装thinkphp6漏洞信息配置 漏洞利用 修复建议 漏洞名称 漏洞描述 2020年1月10日&#xff0c;ThinkPHP团队发布一个补丁更新&#xff0c;修复了一处由不安全的SessionId导致的任意文…

读取无标题列表txt文本文件

文件如下&#xff1a; 使用pandas直接读取&#xff0c;有多少条数据&#xff0c;就会读出来多少列&#xff1a; import pandas as pdfilepath/Users/。。。/ file1失败名单.txt df1pd.read_csv(filepathfile1,sep,,headerNone) 会打印出无数列数据&#xff1a; 使用open方法读…

Linux基础知识点(四-管道)

目录 一、管道的基本概念 二、管道的分类 2.1 匿名管道PIPE 2.2 命名管道FIFO 三、pipe()函数 3.1 pipe()函数介绍 3.2 pipe()函数的使用 四、fifo()函数 4.1 fifo()函数介绍 4.2 命名管道创建方式 五、管道读写特点 一、管道的基本概念 生活中的管道&#xff0c…

【map】【滑动窗口】【优先队列】LeetCode480滑动窗口中位数

作者推荐 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本 本题涉及知识点 滑动窗口 map 优先队列 题目 中位数是有序序列最中间的那个数。如果序列的长度是偶数&#xff0c;则没有最中间的数&#xff1b;此时中位数是最中间的两个数的平均数。 例如&#xf…

springBoot整合redis做缓存

一、Redis介绍 Redis是当前比较热门的NOSQL系统之一&#xff0c;它是一个开源的使用ANSI c语言编写的key-value存储系统&#xff08;区别于MySQL的二维表格的形式存储。&#xff09;。和Memcache类似&#xff0c;但很大程度补偿了Memcache的不足。和Memcache一样&#xff0c;R…

yolov8 细胞分割数据集准备及训练

1、数据 下载:https://universe.roboflow.com/motherson-hm/5-part-diff 500来张,5个类别(嗜碱性细胞、嗜酸细胞、淋巴细胞、单核细胞、中性粒细胞) yolo 分割数据标注格式: 与检测类似,就是坐标分割有多个 2、训练 训练yaml: seg_data.yaml (与检测格式一样) …

sheng的学习笔记-卷积神经网络

源自吴恩达的深度学习课程&#xff0c;仅用于笔记&#xff0c;便于自行复习 导论 1&#xff09;什么是卷积神经网络 卷积神经网络&#xff0c;也就是convolutional neural networks &#xff08;简称CNN&#xff09;&#xff0c;使用卷积算法的神经网络&#xff0c;常用于计…

四川云汇优想教育咨询有限公司抖店开店靠谱吗

随着短视频平台的崛起&#xff0c;抖音已经成为了越来越多人展示自我、分享生活、推广产品的重要平台。因此&#xff0c;开设抖店已经成为了很多人的创业选择。如果您也有兴趣开设抖店&#xff0c;那么四川云汇优想教育咨询有限公司抖店开店服务将是您的不二之选。 四川云汇优想…

推荐五款简洁而实用的工具,值得你尝试

​ 分享快乐是生活中美好的瞬间&#xff0c;而分享简单巧妙的工具也能令我愉悦。这五款工具简洁而实用&#xff0c;值得你尝试。 1.视频播放器——Potplayer Potplayer是一款视频播放器&#xff0c;支持DXVA、CUDA和QuickSync等硬件加速技术&#xff0c;提供高效的视频播放性…

【数据结构和算法】---二叉树(2)--堆的实现和应用

目录 一、堆的概念及结构二、堆结构的实现2.1堆向下调整算法2.2堆向上调整算法2.3删除堆顶元素2.4插入元素2.5其他函数接口 三、堆结构的应用3.1堆排序3.2Top-k问题 四、堆概念及结构相关题目 一、堆的概念及结构 如果有一个数字集合&#xff0c;并把它的所有元素按完全二叉树…

2022 年全国职业院校技能大赛高职组云计算正式赛卷第二场-容器云

2022 年全国职业院校技能大赛高职组云计算赛项试卷 云计算赛项第二场-容器云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第二场-容器云 【任务 1】容器云平台搭建[5 分] 【任务 2】容器云应用部署&#xff1a; Docker Compose 编排部署[7.0…