【问题描述】
某停车场是一个可停放n辆汽车的狭长通道,且只有 一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。按上述要求试为停车场编制车辆管理的模拟程序。

【基本要求】
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。

【测试数据】
设n=2,输入数据为:(`A`,1,5),(`A`,2,10), (`D`1,15),(`A`,3,20), (`A`,4,25), (`A`,5,30), (`D`,2,35), (`D`,4,40), (`E`,0,0).其中:`A`表示到达(Arrival);`D`表示离去(Departure);`E`表示输入结束(End)。

【实现要求】

需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。

特别注意:
整个车辆的入场和出场必须严格的通过调用队列和栈的相关函数实现。

【运行结果】

(1)当停车场内车辆未满时:

(2)当下一辆车辆入栈,显示当前停车场内车辆信息

(3)当停车场内车辆容量已达上限,提示停车场内车辆已满,显示栈道内车辆信息:

(4)当车辆出停车场,显示应收费信息:

源代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#define Max 2   //停车场容量
#define PRICE 2 //收费标准 :2元/小时 typedef struct car{char id[10];//车牌 char sta;  //状态:A,D,E int t;      //入场或离场时间
}car;
typedef struct S *SNode;
struct S{//栈 car data[Max];int top;
};
typedef  SNode Stack;
typedef struct Qd{car data;struct Qd *next;
} *QNode;
typedef struct Q{//队列 QNode front,rear;
}*Que;
bool push(Stack s,car carp);
bool pop(Stack s,car *carp);
bool insertQ(Que q,car carp);
bool DeleQ(Que q,car *carp);
void printQ(Que q);//输出队列中所有车辆信息
void printS(Stack s);//输出停车场中所有车辆信息
void menu();
int main(){int choice;car carp,*tp,*tp2;tp=(struct car*)malloc(sizeof(struct car));tp2=(struct car*)malloc(sizeof(struct car));Stack s1,s2;s1=(struct S*)malloc(sizeof(struct S));s2=(struct S*)malloc(sizeof(struct S));Que q;//初始化停车场 s1->top=-1;//停车场 s2->top=-1; // 中转 //初始化便道 q=(Que)malloc(sizeof(struct Q));q->front=q->rear=NULL;while(1){printf("\n\n\n\n\t\t\t\t........欢迎进入停车场管理系统!.......\n ");printf("\t\t\t\t     请输入操作信息(输入E退出系统)\n");printf("例:(A 蒙E 1 )表示车牌号为蒙E的车辆于1时进入停车场\n   (D 蒙E 5 )表示车牌号为蒙E的车辆于5时离开停车场\n"); scanf("%c",&carp.sta);if(carp.sta=='E'||carp.sta=='e'){printf("感谢使用停车场管理系统!\n");exit(0);break;}scanf("%s %d",carp.id  ,&carp.t );switch (carp.sta){case 'A'://来车 case 'a': if(s1->top ==Max-1) //进入便道,同时输出便道上所有车辆信息 {printf("\n停车场已满,该车将驶入便道等候!\n\n");insertQ(q,carp);printS(s1); printQ(q); }else{//进入停车场 ,同时输出便道上所有车辆信息push(s1,carp);printS(s1);}   break;case 'D'://走车case 'd':if(s1->top ==-1) //停车场为空 printf("Not found!\n"); else{//离开停车场 while(strcmp(s1->data [s1->top].id,carp.id )!=0 &&s1->top !=-1){//查找 push(s2,s1->data [s1->top ]);pop(s1,tp);}if(s1->top ==-1)printf("Not found!\n");else{pop(s1,tp);tp2->t=carp.t;printf("车牌号码为 %s 的车辆停留了%d小时,应收费用%d元\n", carp.id,carp.t -tp->t,(carp.t -tp->t)*PRICE );void printS(Stack s);while(s2->top !=-1){pop(s2,tp);push(s1,*tp); }if(q->front !=NULL){ //便道上有车,将头车入库 DeleQ(q,&carp);carp.t=tp2->t;push(s1,carp);}     }} break;}system("pause");system("cls") ;getchar();}return 0;
}void printS(Stack s)
{int i;printf("停车场内车辆信息:\n");for(i=0;i<=s->top;i++){printf("车牌号 到达时间\n%s\t %d时\n\n",s->data[i].id,s->data[i].t);}
}void printQ(Que q)
{struct Qd* p;p=(struct Qd*)malloc(sizeof(struct Qd));p=q->front;printf("---------------------------\n"); printf("便道内车辆信息:\n");printf("车牌号 到达时间\n%s\t %d时\n",p->data.id,p->data.t);
}bool insertQ(Que q,car carp)
{QNode p;p=(QNode)malloc(sizeof(struct Qd));p->data=carp;p->next=NULL;if(q->front==NULL){q->front=p;q->rear=p;}else{q->rear->next=p;q->rear=p;}
}bool push(Stack s,car carp)
{s->top++;s->data[s->top]=carp;
}bool pop(Stack s,car* carp)
{*carp=s->data[s->top--];
}bool DeleQ(Que q,car* carp)
{QNode p;*carp=q->front->data;p=q->front;q->front=q->front->next;free(p);
}

C语言停车场管理模拟系统相关推荐

  1. 停车场c语言程序,C语言停车场管理标准系统源代码

    <C语言停车场管理标准系统源代码>由会员分享,可在线阅读,更多相关<C语言停车场管理标准系统源代码(10页珍藏版)>请在人人文库网上搜索. 1.include#include车 ...

  2. 停车场自动计费系统 c语言,数据结构用c语言实现停车场管理完整系统.doc

    数据结构用c语言实现停车场管理完整系统 题目:用C语言实现停车场管理程序的设计 天津农学院 11计算机系计科 小组成员: 王亚洲 1108014219 王浩轩 1108014208 穆建良110801 ...

  3. C语言数据结构课程设计-停车场管理

    停车场管理 1.课程设计目的 2. 课程设计内容和要求 2.1问题描述: 2.2设计要求: 3.课程设计总体方案及分析 3.1问题分析 3.2 概要设计 3.3 测试结果 4. 课程设计总结 5. 附 ...

  4. C语言课程设计之停车场管理问题

    C语言课程设计之停车场管理问题 1.问题描述:停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第 ...

  5. 简单利用C语言 解决停车场管理问题

    简单利用C语言 解决停车场管理问题 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出.车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车 ...

  6. 数据结构C语言之停车场管理

    停车场管理 题目描述 [问题描述] 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停 ...

  7. 基于C语言的数据结构课程设计(学生管理系统、停车场管理、家谱管理、校园导航系统)

    一.设计目的 本课程设计是软件工程学生的必修课程,数据结构与算法课程设计既是一门基础课程,又是一门实践性课程.通过本实训课程的学习和训练,使同学学会分析研究数据对象的特性,学会数据的组织方法,以便选择 ...

  8. 实习二 栈、队列和递归算法设计 (题目:停车场管理 )

    一.需求分析 1.每一组输入数据包括:汽车"到达"或"离去"信息.汽车牌照号码以 及到达或离去的时刻. 2.输出信息:若是车辆到达,则输出汽车在停车场内或便道上 ...

  9. C语言停车场管理系统

    C语言停车场管理系统 [问题描述] 某停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端最先到达的第一辆车停放在车 ...

最新文章

  1. storm入门教程 第一章 前言[转]
  2. 科大星云诗社动态20210222
  3. springmvc rest风格化案例
  4. GoogLeNet系列解读
  5. sklearn线性回归详解
  6. 问题 B: 十进制到二进制的转换
  7. 使用逻辑回归制作评分卡
  8. CMake使用详解一(单文件编译)
  9. Representation Flow for Action Recognition论文解读
  10. Qt4_实现Edit菜单
  11. 分布式红锁的加锁的lua底层设计原理
  12. HTML-DOM零碎
  13. IDEA格式化代码的快捷键是什么
  14. python筛选出csv满足某条件的行_Python之根据条件筛选特定行
  15. 你还不知道 BTree,B-Tree,B+Tree 的区别吗?
  16. java 面板图形保存_如何使Java窗体变成jpg格式的图片并进行保存
  17. 操作简便的JPG图片转为PDF转换器
  18. 揭秘流量宝的“黑科技”(一)
  19. 高级网管网上培训班即将开课
  20. office2010c盘_Microsoft Office 2010 Professional 系统盘垃圾清理

热门文章

  1. 【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码
  2. linux symlink 函数,详解C语言中symlink()函数和readlink()函数的使用
  3. float gpu 加速_(总结篇)使用 MATLAB GPU 加速计算|MATLAB 并行计算与分布式服务器|MATLAB技术论坛...
  4. 教授专栏17 | 许佳龙:银行查找网安漏洞 提高公众风险意识
  5. 在持续集成 (CI) 环境中使用 Android 模拟器 | AndroidDevSummit 中文字幕视频
  6. 高速接口中的PRBS的设计
  7. FxFactory 7 Pro for Mac(fcpx/ae/pr视觉特效插件包)v7.2.5
  8. 黑苹果强制关机导致硬盘挂在失败问题
  9. 如何利用 XMind 高效学习?
  10. 37岁被裁员,出来再找工作,大公司不愿要,无奈去小公司面试,HR的话扎心了