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

这篇具有很好参考价值的文章主要介绍了停车场管理系统(C语言)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、问题描述

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

2、设想 

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

3、软件 

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

4、要求

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

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

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

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

5、系统的构想

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

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

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

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

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

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

④更改收费标准;  

⑤返回停车场总系统;

⑥直接退出程序;

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

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

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

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

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

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

⑥返回停车场总系统;

⑦直接退出程序。

6、运行结果

(1)首页界面

用c语言停车收费管理系统,c语言,c#

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

用c语言停车收费管理系统,c语言,c#

 (3)停车场消费者系统

用c语言停车收费管理系统,c语言,c#

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

用c语言停车收费管理系统,c语言,c#

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

用c语言停车收费管理系统,c语言,c#

 用c语言停车收费管理系统,c语言,c#

用c语言停车收费管理系统,c语言,c#

 (6)退出系统

用c语言停车收费管理系统,c语言,c#

 7、代码部分

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#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)
	{
		printf("\n\t该停车场便道内无车辆\n"); 
	}
}

void C_Play3()
{
	int i=0,j=0,k=0,z=0,y=0;
	y=MAX1-1;
	k=p.front;
	i=s.top;
    j=(p.rear)-(p.front);
	if(s.top<MAX1&&p.count<MAX2)
	{
		printf("\n\t请输入您的车牌号码:");
    	scanf("%s",C);
	 } 
	else
	{
		printf("\n\t该停车场和停车场便道已满,欢迎下次再来!");
		return;
	}
	while(i!=-1)
	{
		if(strcmp(s.Stop[i].Lincense,C)==0)
		{
			printf("\t该车辆已在停车场内,请重新输入车牌号");
			C_Play3();
			return;
		}
		i--;
    }
    while(j!=0)
    {
	    if(strcmp(p.Pave[k].Lincense,C)==0)
	    {
	 	    printf("\t该车辆已在停车场便道内,请重新输入车牌号。");
	        C_Play3();
	        return;
	    }
	    j--;
	    k++;
	}
	if(s.top<MAX1-1)
	{
		C_Play3_1();
	}
	else 
	{
       	if(p.count==MAX2)
       	{
  	    	printf("\t该停车场与便道已满,请您下次再来"); 
     	}
		else
		{
	    	C_Play3_2();
	    }
    }
}
 
void C_Play3_1()
{
	time_t t1;
	long int t=time(&t1);	
	char* t2;				
	t2=ctime(&t1); 
	s.Stop[++s.top].TimeIn=t;
	strcpy(s.Stop[s.top].ct,t2);
	strcpy(s.Stop[s.top].Lincense,C);
	printf("\n\t车牌号码为:%s		位置:第%d位		当前时间为:%s",C,s.top+1,t2);
	printf("\t车辆已停好!\n");
}

void C_Play3_2()
{
   	strcpy(p.Pave[p.rear].Lincense,C);
   	p.rear++;
   	p.count++;
   	printf("\t由于停车场内已满,您车牌号为【%s】的车暂时停在便道上",C);
}

void C_Play4()
{
	int i=0,k=0;
	i=s.top;
	k=1;
	if(s.top==-1)
	{
		printf("\n\t该停车场内目前无车辆停放");
		return;
	}
	if(s.top>=0)
	{
		printf("\t请输入您的车牌号码:");
    	fflush(stdin);
	    scanf("%s",C);
	    if(s.top>=0)
      	{
	    	while(i!=-1)
	    	{
		    	if(strcmp(s.Stop[i].Lincense, C)==0)
		       {
	        		C_Play4_1();
     	     	}
		     	i--;
		     	k=k*strcmp(s.Stop[i].Lincense, C);
	     	}
	     	while(k!=0)
	     	{
	     		printf("\n\t您输入的车牌号码不在该停车场内\n");
				break; 
			 }
    	}
	}
}
 
void C_Play4_1()
{
	while(s.top>=0)
	{	
		if(strcmp(s.Stop[s.top].Lincense, C)==0)
		{
			break;
		}
		else
		{
			strcpy(b.Let[b.top++].Lincense,s.Stop[s.top].Lincense);
	     	printf("\t由于停车场后方车辆需出去,车牌号码为【%s】的汽车暂时退出停车场让后方车辆驶出停车场\n", s.Stop[s.top--].Lincense);	 
		}
	}
	printf("\n\t车牌号码为【%s】的汽车从停车场开走", s.Stop[s.top].Lincense);
	time_t t1;
	long int t = time(&t1);
	s.Stop[s.top].TimeOut = t;
	char* t2;
	t2 = ctime(&t1);
	printf("\n\t离开时间:%s\t停车费用共:%0.2f元\n",t2,price*(s.Stop[s.top].TimeOut-s.Stop[s.top].TimeIn)/60);
	s.top--;
	while(b.top > 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.top<MAX1-1)
	{
		if(0==p.count)
		{
			break;
		 }
		else
		{
			time_t t1;
			long int t=time(&t1);
			char* t2;
			strcpy(s.Stop[++s.top].Lincense,p.Pave[p.front].Lincense);
			printf("\n\n\t车牌号码为【%s】的汽车从停车场便道进入停车场的第%d个车位",p.Pave[p.front].Lincense,s.top+1);
			s.Stop[s.top].TimeIn=t;
			p.front++;
			p.count--;
		}
	}
}

void C_Play5()
{
    int z=0,i=0,k=0,j=0;
    z=p.front;
    j=p.count;
    k=1;
    if(p.count==0)
    {
        printf("\n\t该停车场便道内目前无车辆停放\n");
		return; 
    }
    else
    {
        printf("\n\t请输入您的车牌号码:");
        fflush(stdin);
        scanf("%s",&C);
        if(p.count!=0)
        {
            while(j!=0)
            {
                if(strcmp(p.Pave[z].Lincense,C)==0)
                {
                    C_Play5_1();
                }
                k=k*strcmp(p.Pave[z].Lincense,C);
                j--;
                z++;
            }
            while(k!=0) 
            {
            	printf("\n\t您输入的车牌号码不在该停车场便道内\n");
            	break;
			}
        }
    }
}

void C_Play5_1()
{
	int i=0; 
	while(p.count>0)
	{					 
		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<0) 
	{
		printf("\n\t该停车场目前没有车辆停放\n\t"); 
	}
}
 
void A_Play2()
{
	int i=p.front;
	int k=1;	
	if(p.count==0)
	{
		printf("\t\n\t该停车场便道内目前没有车辆\n"); 
	}
	else
	{
		printf("\t便道内车辆信息如下:\n"); 
    	printf("\t车牌号		位置\n"); 
    	while(i!=p.rear&&p.count>=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<0&&p.count<=0)
	{
		printf("\n\t该停车场和便道内无车辆\n"); 
		return;
	}
	while(strcmp(s.Stop[i].Lincense, C)!=0&&strcmp(p.Pave[g].Lincense,C)!=0)
	{
		printf("\n\t此车牌号码的车辆不在该停车场和停车场便道内");
		break;
	}
}

void A_Play4()
{
	printf("\n\t当前的收费为%0.2f元/分钟\n",price);
	printf("\t请输入更改后的收费标准(元/分钟):");
	fflush(stdin);
	scanf("%4f",&price); 
	printf("\t当前收费标准为%0.2f元/分钟\n",price);
}


int main()
{
	s.top=-1;
	b.top=-1;
	p.rear=0;
	p.count=0;
	p.front=0;
	w.count=0;
	w.front=0;
	w.rear=0; 
	begin: 
	system("cls");
	system("color 0A");
	printf("\t**************************************************\n\t");
	printf("**		欢迎使用停车场总系统		**\n");
	printf("\t**************************************************\t\n\t");
	printf("**		请选择您需要进行的操作		**\n\t");
	printf("*	\t1、进入停车场管理员系统		 *\n\t");
	printf("*	\t2、进入停车场消费者系统		 *\n\t");
	printf("*	\t3、直接退出程序		     	 *\n\t");
	printf("##################################################\n\t"); 
	printf("请输入您的的选择:");
	int z=0;
	fflush(stdin);
	scanf("%d",&z); 
    if(z==1)
	{
		while(1)
		{
	    	system("cls");
	        system("color 0B");
	        printf("\t**********************************************************\n\t");
	     	printf("**		欢迎使用停车场管理员系统		**\n");
	     	printf("\t**********************************************************\n\t");
         	printf("**		请选择您需要进行的操作			**\n\t");
            printf("*		1、查看停车场内车辆信息		 	 *\n\t");
            printf("*		2、查看便道的内车辆信息			 *\n\t");
            printf("*		3、查找车辆的目前的信息			 *\n\t"); 
            printf("*		4、更改收费标准				 *\n\t");
            printf("*		5、返回停车场总系统			 *\n\t");
            printf("*		6、直接退出程序				 *\n\t");
			printf("##########################################################\n\t"); 
            printf("请输入您的选择:");
            int i=0,l=0;
            fflush(stdin);
            scanf("%d",&i);
            if(i==1)
            { 
                A_Play1();
	     	}
	    	if(i==2)
	    	{
	    		A_Play2();
	    	}
	     	if(i==3)
	    	{
	    		A_Play3();
	    	}
	     	if(i==4)
	    	{
	    		A_Play4();
	    	}
	    	if(i==5)
	    	{
	    		goto begin;
	    	 } 
	    	if(i==6)
	    	{
	    		printf("\n\t欢迎下次使用!\n");
	    		sleep(2); 
				break;
			}
			if(i>6||i<1)
			{
				system("cls");
				system("color 0C"); 
				printf("\n\t输入选项错误,请在1~6内选择\n\n");
			}
	    	printf("\n\n\t输入键继续使用停车场管理员系统"); 
	    	getch();
	    }
    }
	else if(z==2)
	{
		while(1)
		{
		    system("cls");
	    	system("color 0B");
	    	printf("\t**********************************************************\n\t");
         	printf("**		欢迎使用停车场消费者系统		**\n");
         	printf("\t**********************************************************\n\t");
            printf("**		请选择您需要进行的操作			**\n\t");
            printf("*		1、查看停车场车辆数量			 *\n\t");
            printf("*		2、查看便道的车辆数量			 *\n\t");
            printf("*		3、进入停车场				 *\n\t");
            printf("*		4、离开停车场				 *\n\t");
            printf("*		5、离开停车场便道			 *\n\t");
            printf("*		6、返回停车场总系统			 *\n\t");
            printf("*		7、直接退出程序				 *\n\t");
            printf("*  收费标准:本停车场按照%0.2f元/分钟计费,希望您能理解   *\n\t",price);
            printf("##########################################################\n\t"); 
            printf("请输入您的选择:"); 
            int k=0,l=0;
            fflush(stdin);
            scanf("%d",&k);
            if(k==1)
            { 
                C_Play1();
	    	}
	     	if(k==2)
     		{
	     		C_Play2();
	    	}
	    	if(k==3)
    		{
	    		C_Play3();
	      	}
    		if(k==4)
    		{
	    		C_Play4();
    		}
    		if(k==5)
    		{
    			C_Play5();
			}
	    	if(k==6)
	    	{
	    		goto begin;
	    	}
	    	if(k==7)
	    	{
	    		printf("\n\t欢迎下次使用!\n");
	    		sleep(2); 
				break;
			}
			if(k>7||k<1)
			{
				system("cls");
				system("color 0C"); 
				printf("\n\t输入选项错误,请在1~7内选择\n\n");
			}
	    	printf("\n\n\t任意键继续使用停车场消费者系统");
			getch(); 
	    }
    }
    else if(z==3)
	{
		printf("\n\t欢迎下次使用!\n");
	    sleep(1); 		
	 } 
    else
	{
		system("cls");
		system("color 0C");
		printf("\t输入错误,请重新输入");
		sleep(2); 
		goto begin;
		return 0; 
	}
}

8、结语

该停车场管理系统代码由于是本人和另一位大一舍友一起写的,代码的注释部分我们并没有写出来,代码也可能存在许多不足之处,有疑问可以留言交流。文章来源地址https://www.toymoban.com/news/detail-759364.html

到了这里,关于停车场管理系统(C语言)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于C/C++语言的停车场管理系统编程课程设计超详细

    详细代码讨论加我QQ:1271370903 基于C语言的停车管理系统编程设计 1.课程目的 本程序旨在训练学生的C语言基本编程能力,通过串联C语言输入输出、循环语句、子函数设计、数组、结构体等知识点,完成一个简单系统的设计开发。 2.系统功能 (1)通过菜单的形式实现人机交互

    2024年02月11日
    浏览(40)
  • 停车场管理系统

    开发   以下为停车场管理系统的代码:   首先定义Car类,记录车辆信息:   ```java public class Car {     private String plateNumber;  // 车牌号     private long enterTime;  // 进入停车场时间     private long exitTime;  // 离开停车场时间       public Car(String plateNumber, long enterTime) {      

    2024年02月09日
    浏览(41)
  • C#停车场管理系统

    现如今随着经济的发展, 私家车越来越多, 系统管理停车场变得尤为重要。所以我写了这个系统用来系统化的管理停车场的车辆的停入、驶出和计费,停车位的使用情况,停车证件的信息管理以及工作员工的信息管理,使得停车场的管理可以变的更加的方便快捷和人性化。

    2024年02月07日
    浏览(48)
  • 停车场管理系统(C++)

    大二写的肯定会有很多很多很多缺点~希望大佬们能指出~给大家提供一个可以改的一个小东西,改成其他的什么什么也是可以的~有bug在评论区里说一下~952行~基本重要的都有注释~ 本“项目”实现了: 1.大中小车型分类 2.进场候车道 3.时间的自动提取 4.车牌的判定 5.查询、进车

    2024年01月16日
    浏览(52)
  • 基于python的停车场管理系统的设计与实现/智能停车管理系统

    车位信息 是 停车场供应用户 必不可少的一个部分。在 停车场发展 的整个过程中, 车位信息 担负着最重要的角色。为满足如今日益复杂的管理需求,各类 系统管理 程序也在不断改进。本课题所设计的 停车场管理系统 , 使用 Django 框架 , Python语言 进行开发,它的优点代

    2024年02月10日
    浏览(43)
  • 停车场收费系统

        1.1 AppServe集成应用     Mysql:MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。     Php:PHP是

    2024年02月03日
    浏览(87)
  • 数据结构停车场管理系统设计

    数据结构与算法分析课程设计之数据结构停车场管理系统设计。主要应用到数据结构中的栈与队列。运用到的编程语言为C++。 目录 一  设计要求  二 思路分析 三 设计流程 先附上完整代码: 运行结果图: 1.1 问题描述 :设停车场是一个可停放n辆车的狭长通道,且只有一个

    2024年02月04日
    浏览(45)
  • 用JAVA实现停车场管理系统

    该程序使用ArrayList存储停车记录,并通过switch-case语句实现菜单选择功能。主要功能包括: 停车:输入车牌号和进入时间,自动分配停车位编号, 结算:根据停车位编号计算停车费用,计费标准为停车时长(秒)乘以每秒费用0.05元,同时记录车辆离开时间和费用; 查看记录

    2024年02月11日
    浏览(40)
  • 停车场管理系统文件录入(C++版)

    ❤️作者主页:微凉秋意 ✅作者简介:后端领域优质创作者🏆,CSDN内容合伙人🏆,阿里云专家博主🏆 之前写的停车场管理系统或者是通讯录管理系统都没有使用 文件 录入、保存数据,今天带来一个文件录入信息的C++版停车场管理系统。代码部分都会有详细注释,稍加思

    2024年02月03日
    浏览(40)
  • 【数据结构】停车场管理系统程序设计

    说明: 该程序设计采用常见基础的数据结构栈和队列实现了一个简单停车场管理系统。在具体设计中,实现了系统页面和停车场的示意图显示,通过调用顺序栈和链队的相关函数,模拟了实际停车场的运营流程。 目录 1 任务内容 2 需求分析 2.1 功能需求 2.2 输入输出需求 3 概

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包