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

#define MAX_SIZE 10 // 停车场最大容量 #define MAX_WAITING 5 // 便道最大容量

typedef struct { char license[10]; // 车牌号 int arrive_time; // 到达时间 } Car;

typedef struct { Car data[MAX_SIZE]; int top; // 栈顶指针 } Park;

typedef struct { Car data[MAX_WAITING]; int front, rear; // 队头和队尾指针 } Waiting;

void init_park(Park *p) { p->top = -1; }

void init_waiting(Waiting *w) { w->front = w->rear = 0; }

int is_park_full(Park *p) { return p->top == MAX_SIZE - 1; }

int is_waiting_full(Waiting *w) { return (w->rear + 1) % MAX_WAITING == w->front; }

int is_park_empty(Park *p) { return p->top == -1; }

int is_waiting_empty(Waiting *w) { return w->front == w->rear; }

void push_park(Park *p, Car c) { if (is_park_full(p)) { printf("停车场已满,无法停车!\n"); return; } p->top++; p->data[p->top] = c; printf("车辆 %s 已停入停车场,停车位编号为 %d。\n", c.license, p->top + 1); }

void push_waiting(Waiting *w, Car c) { if (is_waiting_full(w)) { printf("便道已满,无法停车!\n"); return; } w->data[w->rear] = c; w->rear = (w->rear + 1) % MAX_WAITING; printf("车辆 %s 已停入便道,排队编号为 %d。\n", c.license, w->rear); }

Car pop_park(Park *p, char *license) { if (is_park_empty(p)) { printf("停车场无车辆,无法离开!\n"); Car empty_car = {"", 0}; return empty_car; } Car c = p->data[p->top]; p->top--; *license = c.license[0]; printf("车辆 %s 已离开停车场,停车费用为 %d 元。\n", c.license, (int)(rand() / (double)RAND_MAX * 100)); return c; }

Car pop_waiting(Waiting *w, char *license) { if (is_waiting_empty(w)) { printf("便道无车辆,无法离开!\n"); Car empty_car = {"", 0}; return empty_car; } Car c = w->data[w->front]; w->front = (w->front + 1) % MAX_WAITING; *license = c.license[0]; printf("车辆 %s 已离开便道,进入停车场,停车位编号为 %d。\n", c.license, w->front); return c; }

void display_park(Park *p) { if (is_park_empty(p)) { printf("停车场无车辆!\n"); return; } printf("停车场车辆如下:\n"); for (int i = p->top; i >= 0; i--) { printf("停车位编号:%d,车牌号:%s,到达时间:%d\n", i + 1, p->data[i].license, p->data[i].arrive_time); } }

void display_waiting(Waiting *w) { if (is_waiting_empty(w)) { printf("便道无车辆!\n"); return; } printf("便道车辆如下:\n"); for (int i = w->front; i != w->rear; i = (i + 1) % MAX_WAITING) { printf("排队编号:%d,车牌号:%s,到达时间:%d\n", i + 1, w->data[i].license, w->data[i].arrive_time); } }

int main() { Park p; Waiting w; init_park(&p); init_waiting(&w); int choice; do { printf("停车场管理系统\n"); printf("1. 车辆到达\n"); printf("2. 车辆离开\n"); printf("3. 显示停车场车辆\n"); printf("4. 显示便道上车辆\n"); printf("0. 退出系统\n"); printf("请选择功能:"); scanf("%d", &choice); switch (choice) { case 1: { Car c; printf("请输入车牌号:"); scanf("%s", c.license); c.arrive_time = rand() % 24; if (is_park_full(&p)) { push_waiting(&w, c); } else { push_park(&p, c); } break; } case 2: { char license; Car c = pop_park(&p, &license); if (c.license[0] != '\0') { if (!is_waiting_empty(&w)) { Car new_c = pop_waiting(&w, &license); push_park(&p, new_c); } } break; } case 3: { display_park(&p); break; } case 4: { display_waiting(&w); break; } case 0: { printf("感谢使用停车场管理系统!\n"); break; } default: { printf("输入有误,请重新输入!\n"); break; } } } while (choice != 0); return 0;

按以下要求编写代码利用结构化程序设计方法以及C的编程思想来完成停车场管理系统的设计使用数据结构中的栈、队列进行分析;按功能定义函数进行模块化设计各个功能模块用函数的形式来实现。1分析系统功能合理定义数据结构并完成栈和队列各个基础操作的代码实现并在main函数中调试通过;2 按问题要求实现以下基本功能:1车辆到达模块2车辆离开模块3显示停车场车辆4显示便道上车辆3.设计类似系统主界面要求选择菜单对应

原文地址: https://www.cveoy.top/t/topic/fbEt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录