首页 > 代码库 > 停车管理系统

停车管理系统

#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=http://www.mamicode.com/C;				"停车时间:%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;
}

 

停车管理系统