停车场管理系统(C语言)

2024-06-18 1658阅读

1、问题描述

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

2、设想 

该停车场管理系统由两个栈和两个队列实现,一个栈作为停车场,另一个栈作为临时停车点,便于让停车场内汽车离开,一个队列作为便道,另一个队列作为临时便道,便于让便道内汽车离开。

3、软件 

使用的软件是Dev-C++,版本为5.11版本,部分版本可能会提示出错。

4、要求

(1)系统功能以菜单方式显示;

(2)车辆编号为字符型;

(3)设置屏幕字体颜色;

(4)单位时间收费值可以修改。

5、系统的构想

(1)该停车场管理系统分为一个总系统和1两个子系统,分别是停车场管理总系统、停车场管理员系统和停车场消费者系统;

(2)由停车场管理总系统可以进入两个子系统;

(3)停车场管理员系统功能

①查看停车场内车辆信息,输出该停车场所有车辆的车牌号、位序、进入时间和消费金额;

②查看停车场便道内车辆信息,输出该停车场便道内车辆的车牌号和位序;

③查找车辆的目前的信息,客户输入车牌号,可输出目前该车牌号在停车场内的所有信息(前     提:该停车场内存在客户输入的车牌号的车辆),否则输出该车牌号不存在;

④更改收费标准;  

⑤返回停车场总系统;

⑥直接退出程序;

(4)停车场消费者系统功能

①查看停车场车辆数量,输出该停车场内共有多少辆车;

②查看便道的车辆数量,输出该停车场便道内共有多少量车

③进入停车场,客户进入该停车场停车(前提:停车场或便道有停车位),否则停车失败;

④离开停车场,客户输入车牌号码,相应车牌的车辆出停车场;

⑤离开停车场便道,客户输入车牌号码,相应车牌的车辆出便道;

⑥返回停车场总系统;

⑦直接退出程序。

6、运行结果

(1)首页界面

停车场管理系统(C语言)

 (2)停车场管理员系统界面

停车场管理系统(C语言)

 (3)停车场消费者系统

停车场管理系统(C语言)

 (4)输入选择错误的情况

停车场管理系统(C语言)

 (5)停车场管理系统部分功能

停车场管理系统(C语言)

 停车场管理系统(C语言)

停车场管理系统(C语言)

 (6)退出系统

停车场管理系统(C语言)

 7、代码部分

#include 
#include 
#include 
#include 
#include 
#define MAX1 5
#define MAX2 MAX1-1
typedef struct{
	int TimeIn;				
	int TimeOut;			
	char ct[50];
	char Lincense[10];		
}Car;
typedef struct{
	Car Stop[MAX1];		
	int top;			
}Stopping;
typedef struct{
	Car Pave[MAX2];		
	int count;				
	int front, rear;		
}Pavement; 
typedef struct{
	Car Let[MAX1];		
	int top;				 
}Buffer;						
typedef struct{					
	Car Wait[MAX2];		
	int count;				
	int front, rear;		
}Waiting; 
float price=1;
Stopping s;
Pavement p;
Buffer   b;
Car      c;
Waiting  w;
char     C[10];
 
void C_Play1();
void C_Play2();
void C_Play3();
void C_Play3_1();
void C_Play3_2();
void C_Play4();
void C_Play4_1();
void C_Play5();
void C_Play5_1();
void A_Play1();
void A_Play2();
void A_Play3();
void A_Play4();
void A_Play5();
void C_Play1()
{
	int i=0,j=0;
	i=s.top;
	j=i+1;
	if(j>0)
	{
		printf("\n\t该停车场内共有%d辆车\n",s.top+1);
	}
	else
	{
		printf("\n\t该停车场内无车辆"); 
	}
}
void C_Play2()
{
	int i=0;
	i=p.count;
	if(i>0)
	{
		printf("\n\t该停车场便道内共有%d辆车\n",i);
	 } 
	else if(i 0)
	{
		strcpy(s.Stop[++s.top].Lincense, b.Let[--b.top].Lincense);
		printf("\n\t车牌号码为【%s】的汽车重新进入停车场,位置为第%d位",b.Let[b.top].Lincense,s.top+1);
	}
	while(s.top0)
	{					 
		i=p.front; 
		if(strcmp(p.Pave[i].Lincense,C)==0)
		{
			break;	
		}
		printf("\n\t由于停车场便道后面的车辆需要出去,车牌号为【%s】的汽车暂时从停车场便道进入临时便道\n",p.Pave[p.front].Lincense);
		strcpy(w.Wait[w.rear].Lincense, p.Pave[p.front].Lincense);
		p.front++;	
		w.rear++;	
		w.count++;							
		p.count--;							
	}
	printf("\n\t车牌号为【%s】的汽车从停车场便道上开走,不收取任何费用!\n\n",p.Pave[i].Lincense); 
	p.front++;
	p.count--;
	while(p.count>0)
	{		
		printf("\n\t由于便道内的车辆需要出便道,车牌号为【%s】的汽车暂时从停车场便道进入临时便道\n",p.Pave[p.front].Lincense);
		strcpy(w.Wait[w.rear].Lincense, p.Pave[p.front].Lincense);
		p.front++;
		w.rear++;
		w.count++;
		p.count--;
	}
	while(w.count>0)
	{		
		printf("\n\t牌照为【%s】的汽车返回便道\n",w.Wait[w.front].Lincense);
		strcpy(p.Pave[p.rear].Lincense, w.Wait[w.front].Lincense);
		w.front++;	 
		p.rear++;
		w.count--;
		p.count++;
	}
}
void A_Play1()
{
	int i=0;
	i=s.top;
	time_t t1;
	long int t=time(&t1);
	if(i>=0)
	{
		printf("\n\t停车场内车辆信息如下:\n");
		printf("\t车牌号		位置		停放时间		目前要支付的停车费用");
		for(i;i>=0;i--)
		{
			printf("\n\t%s		第%d位 		%d分%d秒			%0.2f元\n\n",s.Stop[i].Lincense,i+1,(t-s.Stop[i].TimeIn)/60,(t-s.Stop[i].TimeIn)%60,price*(t-s.Stop[i].TimeIn)/60);
		}
	}
	else if(i=1) 
     	{
	    	printf("\t%s		第%d位\n", p.Pave[i].Lincense, k++);
	    	i++;
     	}
	} 
}
void A_Play3()
{
	int i=0,j=0,k=0,f=0,g=0,h=0,z=0; 
	i=s.top;
	f=p.count;
	g=p.front;
	h=p.rear;
	z=(p.rear)-(p.front);
	k=1;
	time_t t1;
	long int t=time(&t1);
	if(s.top>=0||p.count>0)
	{
		printf("\t请输入要搜索的车牌号:");
    	fflush(stdin);
    	scanf("%s",&C);
    }
	if(s.top>=0)
	{
		while(i!=-1)
		{
			if(strcmp(s.Stop[i].Lincense, C)==0)
			{
			printf("\n\t此汽车在停车场内,信息如下:\n");
			printf("\t车牌号		位置		停车费用		进入时间");
			printf("\n\t%s		第%d个		%0.2f元		%s",s.Stop[i].Lincense,i+1,price*(t-s.Stop[i].TimeIn)/60,s.Stop[i].ct);
			break; 
			} 
			i--;	
		}
	}
    if(p.count>0)
	{	 		
		while(g!=h)
		{
			if(strcmp(p.Pave[g].Lincense,C)==0)
			{
				printf("\n\t此汽车在停车场便道上,信息如下:");
				printf("\n\t车牌号		位置\n");
				printf("\t%s		第%d位",p.Pave[g].Lincense,k);
				break;
			}
			g++;
			k++;
		}	
	}
	if(s.top
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]