C语言怎么实现停车场管理
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍了C语言怎么实现停车场管理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言怎么实现停车场管理文章都会有所收获,下面我们一起来看看吧。1.问题描述停车场
千家信息网最后更新 2025年01月18日C语言怎么实现停车场管理
这篇文章主要介绍了C语言怎么实现停车场管理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言怎么实现停车场管理文章都会有所收获,下面我们一起来看看吧。
1.问题描述
停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
2.基本要求
(1)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
(2)每一组输入数据包括三个数据项:汽车"到达"或"离去"信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
(3)栈以顺序结构实现,队列以链表结构实现。
(4)按照题意要求独立进行设计,设计结束后按要求写出设计报告。
一、代码块
#include#include #include typedef int ElemType;#define MaxSize 100#define QNODE struct QNodetypedef struct Node //车辆信息{ char AL; int NO; int time;}Node;typedef struct Stack //栈定义{ struct Node data[MaxSize]; int top; int num;}SqStack;QNODE //队列节点{ struct Node data; QNODE *next;};typedef struct linkqueue //队列结构体定义{ QNODE *front,*rear; int num;}LinkQueue;SqStack *Init_SeqStack() //置空栈{ SqStack *s; s=(SqStack*)malloc(sizeof(SqStack)); s->top=-1; s->num=0; return s;}LinkQueue *Init_LQueue() //创建空队列{ LinkQueue *q; QNODE *p; q=(LinkQueue*)malloc(sizeof(LinkQueue)); p=(QNODE*)malloc(sizeof(QNODE)); p->next=NULL; q->front=q->rear=p; q->num=0; return q;}int ISEmpty_SeqStack(SqStack *s) //判断栈是否为空,栈为空返回1{ if(s->top ==-1) return 1; else return 0;}int ISFULL_SeqStack(SqStack *s,int n) //判断栈是否已满,若栈满返回1{ if(s->top==n-1) return 1; else return 0;}int ISEmpty_LQueue(LinkQueue *q) //判断队列是否为空,队列为空返回1{ if(q->front==q->rear) return 1; else return 0;}void IN_Lqueue( LinkQueue *q,struct Node s) //入队{ QNODE *p; p=(QNODE*)malloc(sizeof(QNODE)); p->data=s; q->num++; p->next=NULL; q->rear->next =p; q->rear =p;}void Push_SeqStack(SqStack *p,struct Node s) //入栈{ p->top ++; p->data[p->top]=s; p->num++;}int POP_SeqStack(SqStack *s,struct Node car)//出栈{ SqStack *p; int t; p=Init_SeqStack(); while(s->data[s->top].NO !=car.NO)//找到车牌号为P.NO的车, { Push_SeqStack(p,s->data[s->top]); s->top--; s->num--; } t=car.time-s->data[s->top].time; s->top--; s->num--; while(ISEmpty_SeqStack(p)==0) { Push_SeqStack(s,p->data[p->top]); p->top--; p->num--; } return t;}struct Node Out_LQueue(LinkQueue *q) //出队{ QNODE *p; p=q->front->next; q->front->next=p->next; q->num --; if( q->front->next==NULL) q->rear=q->front; return p->data; free(p);}int main(){ SqStack *parkstack; //parkstack为表示停车场的栈 LinkQueue *parkqueue; //parkqueue为表示便道的队列 struct Node car; int n,a=0,t; //n为停车场栈的最大容量 float f; //f为每小时收费 parkstack=Init_SeqStack(); parkqueue=Init_LQueue(); //初始界面 printf("***************停车场信息查询***************\n"); printf("请输入停车场最大容量n="); scanf("%d",&n); printf("\n请输入每分钟收取费用f="); scanf("%f",&f); printf("\n请输入车辆信息\n"); scanf("%c,%d,%d",&car.AL,&car.NO,&car.time); while(car.AL!='Q') { if(car.AL=='A' ) { // 汽车到达的情况 if(ISFULL_SeqStack(parkstack,n)==1) //栈满的情况 { IN_Lqueue(parkqueue,car); //进入队列等待 printf("这辆车在门外便道上第%d个位置\n",parkqueue->num); printf("\n"); printf("请输入车辆信息\n"); } else { Push_SeqStack(parkstack,car); //入栈 printf("这辆车在停车场内第%d个位置\n",parkstack->num); printf("\n"); printf("请输入车辆信息\n"); } } if(car.AL=='L' ) //汽车离开的情况 { t=POP_SeqStack(parkstack,car);//出栈 printf("这辆车停留时间为%d,收费为%f。\n",t,f*t); printf("\n"); printf("请输入车辆信息\n"); if(ISEmpty_LQueue(parkqueue)==0) //队列不为空需要进栈 Push_SeqStack(parkstack,Out_LQueue(parkqueue) ); } if(car.AL=='P'&&car.NO==0&&car.time==0 )//显示停车场的车数 { printf("停车场的车数为%d\n",parkstack->num); printf("\n"); printf("请输入车辆信息\n"); } if(car.AL=='W'&&car.NO==0&&car.time==0 )//显示候车场的车数 { printf("候车场的车数为%d\n",parkqueue->num); printf("\n"); printf("请输入车辆信息\n"); } scanf("%c,%d,%d",&car.AL,&car.NO,&car.time); } printf("输入结束\n"); return 1;}
二、运行
关键字:A——arrive;L——leave;P——park;Q——quit;W——wait.
关于"C语言怎么实现停车场管理"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C语言怎么实现停车场管理"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
停车场
输入
汽车
车辆
信息
队列
便道
车场
管理
数据
时间
语言
大门
情况
知识
费用
收费
设计
输出
最大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
丽江计算机网络技术专科学校
软件技术安装软件开发方向
软件开发还是海尔好
五年级小学生网络安全作文
数据库试题解析章
hbase作为历史数据库
服务器 静音改装
安顺gpu服务器
网络安全与运维哪个好
怎么选择msdb数据库
惠普打印机自带打印服务器
数据库clob类型清空
数据库字段大小怎么调
淘宝软件开发是干什么的
天翼云sqlserver数据库
服务器中控机
电信网络安全会议
软件开发有什么课程设计
大专数据库管理员工资多少
当代网络技术创新事例
惠普服务器设置u盘启动
博途数据库
常规设置apache服务器
江苏品质刀片服务器直销
数据库加密技术的发展背景
海康存储服务器密码
数据库实时扫描
饥荒开服务器占内存吗
明日之后服务器没问题怎么解决
服务器中控机