停车管理系统

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define N 2
struct car
{
	int ID;//汽车牌照号
	int Time; // 汽车到达或离去时间
	char Su;//汽车到达还是离去
	int position;//汽车在停车场或过道的位置
};
typedef struct car Car;
struct SNode//两个栈共享空间 ,模拟停车场让车情景
{
	Car Data[MAXSIZE];
	int Top1;
	int Top2;
};
typedef struct SNode Stack;
typedef struct QNode PtrToSNode;
struct QNode
{
	Car Data;
	PtrToSNode *Next;
};
struct queue
{
	PtrToSNode *front,*rear;
	int size;
};
typedef struct queue Queue;

Stack CreateStack()//建立空栈
{
	Stack S;
	S.Top1=-1;
	S.Top2=MAXSIZE;
	return S;
}
Queue *CreateQueue()//建立空队列
{
	Queue *Q;
	Q=(Queue *)malloc(sizeof(Queue));
	Q->front=(PtrToSNode *)malloc(sizeof(PtrToSNode));

	Q->rear=(PtrToSNode *)malloc(sizeof(PtrToSNode));
	Q->rear->Next=NULL;
	Q->size=0;
	Q->front->Next=Q->rear;
	return Q;
}
bool IsEmpty(Queue *Q)
{
	if(Q->size==0)
	return true;
	return false;
}

void InsertQueue(Queue *Q,Car C) //队首插入元素
{
	if(IsEmpty(Q))
	{
		Q->rear->Data=C;
	}
	else
	{
		PtrToSNode *P;
        P=(PtrToSNode *)malloc(sizeof(PtrToSNode));
        P->Data=C;
	    P->Next=NULL;
		Q->rear->Next=P;
		Q->rear=P;
	}
    Q->size++;
    return ;
}
Car DeleteQueue(Queue *Q) //队尾删除元素,返回Car类型
{
	Car A;
	PtrToSNode *P;
	P=Q->front->Next;
	Q->front->Next=P->Next;
	A=P->Data;
	free(P);
	Q->size--;
	return A;
}
bool PushStack1(Stack &S,Car C)
{
	if(S.Top2-S.Top1==1)
	return false;
	S.Top1++;
	S.Data[S.Top1]=C;
	return true;
}
bool PushStack2(Stack &S,Car C)
{
	if(S.Top2-S.Top1==1)
	return false;
	S.Top2--;
	S.Data[S.Top2]=C;
	return true;
}
Car DeleteStack1(Stack &S)
{
	Car C;
	C=S.Data[S.Top1];
	S.Top1--;
	return C;
}
Car DeleteStack2(Stack &S)
{
	Car C;
	C=S.Data[S.Top2];
	S.Top2++;
	return C;
}
Car Change(Stack &S,Car C)
//遇到要出停车场的车时,当停车场内某辆车要离开时,
//在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场
{
	Car A,B;
	int s=0;
	while(S.Data[S.Top1].ID!=C.ID)
	{
		A=DeleteStack1(S);
		PushStack2(S,A);
		s++;
	}
	A=S.Data[S.Top1];
	DeleteStack1(S);
	while(s--)
	{
		B=DeleteStack2(S);
		B.position--;
		PushStack1(S,B);
	}
	return A;
}
void CountTimeAndCost(Car C,Car A)//计算出停车场的车停车时间和费用 ,并输出结果
{
	int t,cost;
	t=C.Time-A.Time;
	cost=t*10;
	printf("停车时间:%d 累计费用:%d\n",t,cost);
}
int main()
{
	Car A,B,C;
	Stack S;
	Queue *Q;
	Q=CreateQueue();
	S=CreateStack();
	printf("\t欢迎使用停车管理系统\n");
	while(1)
	{
		printf("-------------A、停车---------------\n");
		printf("-------------D、取车---------------\n");
		printf("-------------E、退出---------------\n");
		scanf("%c",&C.Su);
		printf("依次输入你的车牌号,当前时间\n");
		scanf("%d%d",&C.ID,&C.Time);
		getchar();//注意这里要吸收回车,否则会被下一轮输入的char吸收
		if(C.Su==‘E‘)
		break;
		if(C.Su==‘A‘)
		{
			if(S.Top1==N-1)
			{
			    C.position=Q->size+1;
				InsertQueue(Q,C);
				printf("停车位置:便道 %d\n",C.position);
			}
			else
			{
				C.position=S.Top1+2;
				PushStack1(S,C);
				printf("停车位置:停车场 %d\n",C.position);
			}

		}
		else
		{
			A=Change(S,C);
			CountTimeAndCost(C,A);
			if(!IsEmpty(Q))
			{
				B=DeleteQueue(Q);
				B.position=S.Top1+2;
				PushStack1(S,B);
			}
		}
	}
	return 0;
}
时间: 2024-09-30 06:37:12

停车管理系统的相关文章

基于停车管理系统的分析与理解

这个程序的要求是:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放.若车场满了,车要在门外的便道上等候,一旦有车走,则便道上第一辆车进入.当停车场中的车离开时,由于通道窄,在它后面的车要先退出,待它走后依次进入.汽车离开时按停放时间收费. 基本功能要求: 1)建立三个数据结构分别是:停放队列,让路栈,等候队列 2)输入数据模拟管理过程,数据(入或出,车号). 项目分析: 此项目需要同时使用栈和队列来实现.由于停车场是个狭长通道,所以无论是汽车进入还是汽车驶出都必须从同

SSM在线停车管理系统

每天记录学习,每天会有好心情.*^_^* 最近了解了基于SSM的在线停车管理系统项目,在这个平台记录一下这个基于SSM的在线停车管理系统项目,方便以后再次使用或学习的时候能够及时的翻阅.在完成基于SSM的在线停车管理系统项目的时候,考虑了很多框架.最终决定选用SSM(MYECLIPSE),该框架具有极强的移植性,多平台性,便于操作性等优点.此框架能在MYECLIPSE开发工具中完美的编写和运行,基于SSM的在线停车管理系统为一个 后台项目.采用当前非常流行的B/S体系结构,以JSP作为开发技术,

智能停车系统实时数据监控

随着新世纪经济持续健康快速发展,以及加入WTO后私人购车高峰期的即将到来,交通需求将显著增加,停车设施的水平直接影响到城市的交通运行效率和生活环境品质.停车设施的过度短缺.布局不合理和管理不规范,都将对提高城市的综合竞争力产生不利影响. 因此,从长远发展目标来看,结合城市布局结构的调整,建立和完善与城市社会经济发展相适应的城市停车系统,十分紧迫和必要. 国内的智能停车市场发展了20多年,2000年以前属于起步阶段,大家学习国外的技术,攻克技术难题,当时城市中车辆和停车场也不多,市场容量有限,当时

智慧停车诱导技术方案

第1章. 技术方案及系统集成实施方案技术方案1.1.城市道路停车现状分析1.1.1.中国城市道路停车现状说明随着我国的国民经济的迅猛发展,汽车消费历年来呈现高速增长的态势.高速增长的汽车消费不仅带来了GDP的明显增长,也带来了城市管理的新内容.随着汽车保有量的不断增长,高速公路.城市道路等交通设施的规划.建设与管理已经成为城市管理的重要内容,其中停车管理越来越显露出其对城市交通管理的重要性.由于城市中心区本身的土地利用特征,产成了大量的以城市中心区为目的地的出行.但是,城市中心区用地紧张.交通结

融资晚报:一大波创业公司获得融资

融资晚报:一大波创业公司获得融资 2015-03-16 25 公众小额捐赠平台路人甲完成200万天使融资,“路人甲”由友成基金会孵化,是北京汇涓时代网络科技有限公司旗下产品.路人甲亦是在猎云投融资对接平台挂牌的创业项目.路人甲之后可能会沉淀 积分系统等新的方式,近期会联合各个公益组织,结合阶段性热点,组织各类主题活动,将大量的零散存量捐赠人导入“路人甲”,形成核心用户群体. 3D虚拟试衣系统量体试衣获得来自浙商创投的天使投资,投资数额未透露.量体试衣亦是去年底在猎云投融资对接平台上挂牌的创业项目

移动端车牌识别TF卡授权

1.移动端车牌识别TF卡授权描述 通过智能手持机或Pad摄像头对准车牌,可以先选择采用视频预览模式识别或拍照模式,实现自动采车牌号信息,支持Android.iOS平台,支持接口开发,车牌识别TF卡授权只支持Android平台. 识别率高:车牌识别率98%以上: 识别速度快:识别时间小于1秒: 视频识别:采用视频流识别,用户体验好,也可用传统拍照模式. 识别拍照全:支持蓝牌.黄牌.双层黄牌.军牌.警牌.新能源车牌 支持场景全:支持白天.夜晚.强烈阳光.地下车库等场景 2.移动端车牌识别TF卡授权技

毕业设计课题大全

标题: 交换机端口数据流量信息采集方法评述(1人) 目的: 本题目意在通过检索"截获交换机封包"的相关资料,研究对交换机端口流量进行实时监测的手段和方法及实现的原理. 内容:论文要求分析交换机内部封包的交换和计数原理,进而探查如何通过局域网络监测交换机端口的实时流量信息. 参考资料:思科CCNA和CCNP认证教材,及相关参考资料 计算机专业毕业设计题目大全 http://blog.renren.com/share/250527820/12343150865 重点考虑: 5.电子邮件服务

安卓 Android题目大全

安卓001个人事务管理系统(单端) 安卓002手机订餐系统 安卓003无线点菜 安卓004酒店房间预定系统 安卓005个人相册管理系统(单端) 安卓006计算器(单端) 安卓007英语学习(单端) 安卓009医疗健康查询系统 安卓010健身信息管理系统 安卓011课程表(单端) 安卓012音乐播放器(单端) 安卓013便民自行车管理(单端) 安卓015二手图书交易系统 安卓016公交查询线路(单端) 安卓018校园闲置物品交易平台 安卓019电子书阅读器 安卓020蔬菜水果销售系统 安卓022

VS2010使用TTS

最近在写纯车牌停车管理系统,需要用到语音合成功能. 目前最常用的Windows Speech SDK版本有三种:5.1.5.3和5.4.        Windows Speech SDK 5.1版本支持xp系统和server 2003系统,需要下载安装.XP系统默认只带了个Microsoft Sam英文男声语音库,想要中文引擎就需要安装Windows Speech SDK 5.1.        Windows Speech SDK 5.3版本支持Vista系统和Server 2008系统,已