management.cpp

来自「这个小程序师以顺序栈来模拟停车场」· C++ 代码 · 共 132 行

CPP
132
字号
///////////////////////////////////

//   基于栈实现的停车场管理系统  //
//       yangshaobo              //

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

typedef struct
{
	char State;
	int Id;
	int StartTime;
	int LeftTime;
}AutoInfo;

typedef struct 
{
	AutoInfo elem[50];
	int top;
}SeqStack;

void InitStack(SeqStack *Q)
{
	Q->top=-1;
}

int PushStack(SeqStack *S,char State,int Id,int StartTime)
{
	
	S->top++;
	S->elem[S->top].State=State;
	S->elem[S->top].Id=Id;
	S->elem[S->top].StartTime=StartTime;
	//printf("?????\n");
	//S->elem[S->top]->LeftTime=T->LeftTime;
	return 1;
}

AutoInfo PopStack(SeqStack *S)
{
	AutoInfo temp;

	temp=S->elem[S->top];
	S->top--;
	return temp;
}

/*char GetTop(SeqStack *S)
{
	char T;
	T=S->elem[S->top]->State;
	return T;
}*/

void main()
{
//	SeqStack temp;
//	temp.elem[1]->Id=001;
	int N;

	char State;
	int Id;
	int StartTime;
	int LeftTime;
	
	AutoInfo Memory;

	SeqStack ParkLot;
	SeqStack Path;
	SeqStack TempM;
	//SeqStack *T;

	SeqStack *M;
	
	int flag;

	InitStack(&ParkLot);
	InitStack(&Path);
	InitStack(&TempM);

	printf("*********欢迎使用停车场管理系统!哈哈!*********\n");
	printf("\n");
	printf("请输入可以停放的车辆数:");
	scanf("%d",&N);
	printf("请依次输入汽车的“状态”、“车牌号”、“到达时间”、“离开时间”,\n");
	printf("输入(E,0,0)结束。\n");
	while(flag!=1)
	{
		if(State!='E')
		{
			int i;
			for(i=0;i<N;i++)
			{
				scanf("%c",&State);
				scanf("%d",&Id);
				scanf("%d",&StartTime);
			
				
				if(State=='A')
				{
					
					PushStack(&ParkLot,State,Id,StartTime);
				}
				else if(State=='D')
				{
					while(Id!=Memory.Id)
					{
						Memory=PopStack(&ParkLot);
					}
					printf("%d号车即将离开!\n",Memory.Id);
					printf("请交费%d元!\n",StartTime-Memory.StartTime);
					
				}			
			}
			if(i>=N)
			{
				printf("停车场车位已满,请在场外通道处等候!谢谢!");
			}
		}
		else
		{
			flag=1;
		}
	}

	//printf("%c\n",State);
	//printf("%d\n",StartTime);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?