停车场管理系统,看看哪里有问题

#include<stdio.h>

#include<stdlib.h>

#define MAX_STOP 5   

#define MAX_PAVE 100 

typedef struct{

 

     char *license_plate;

 

     char state; //汽车当前状态,字符s表示停放在停车位上,字符p表示停放在便道上,每辆车的初始状态用i表示      

 

}CAR;

 

typedef struct {

 

     CAR STOP[MAX_STOP];

 

     int top;          

 

}STOPPING;

 

typedef struct {

 

     CAR PAVE[MAX_PAVE];

 

     int front,rear;    

 

}PAVEMENT;

 

typedef struct {

 

     CAR BUFF[MAX_STOP];

 

     int top;            

 

}BUFFER;

 

STOPPING P;PAVEMENT Q;BUFFER R;char *str;

 

void welcome(){

 

     printf("\t**欢迎使用本程序**\n");

 

     printf("\t本程序为停车场的模拟管理程序,有车到来时请按【c】建。\n");

 

     printf("\t然后根据屏幕提示进行相关操作,有车要走时请按【l】键。\n");

 

     printf("\t然后根据屏幕提示进行相关操作,查看停车场状态请按【s】键。\n");

 

     printf("\t然后根据屏幕提示进行相关操作,要退出程序请按【Q】键。\n");

     

     printf("\t请选择你要进行的操作!\n\n\n");

 

}

void come()

{

 

printf("请输入进来的车辆的车牌号:",str);

scanf("%c",*str);

if(P.top<MAX_STOP)//如果停车位没满

{

P.STOP[P.top].license_plate=str;

P.STOP[P.top].state='s';

printf("牌照号为%c的汽车停入停车位的%d车位",str,P.STOP[P.top]);

P.top++;}

else//停车位已经满了,要停放在便道上 

{

Q.rear++;

Q.PAVE[Q.rear].license_plate=str;

Q.PAVE[Q.rear].state='p';

printf("牌照号为%c的汽车停入便道的%d的位上",str,Q.PAVE[Q.rear]);}

}

void leave()

{

printf("请输入要离开的车辆的车牌号:",str);

scanf("%c",*str);

while(P.top<MAX_STOP-1)

{

R.top++;

P.top--;

R.BUFF[R.top].license_plate==P.STOP[P.top].license_plate;

P.STOP[P.top].state='i';

R.BUFF[R.top].state='i';

printf("牌照号为%c的汽车暂时退出停车位"); 

}

if(P.top=MAX_STOP-1)

{

P.top--;

printf("牌照号为%c的汽车离开停车位"); }

while(R.top>0&&P.top<MAX_STOP-1)

{P.STOP[P.top].license_plate==R.BUFF[R.top].license_plate;

P.STOP[P.top].state='s';

printf("牌照号为%c的汽车回到停车位");

P.top++;

R.top--; 

}

while(Q.front<Q.rear+1&&P.top<MAX_STOP)//便道上的车停到停车场上 

{P.STOP[P.top].license_plate==Q.PAVE[Q.front].license_plate; 

printf("牌照号为%c的汽车从便道进入停车位");

P.STOP[P.top].state=='s';

Q.front++;

P.top++;

}

}

void display()

{

printf("停车位的情况:");

if(P.top==0)

printf("停车场无车停放");

else

for(int c=1;c<P.top;c++)

{

printf("c位置有牌照号为P.STOP[c].license_plate的车停放");} 

printf("便道的情况:");

if(Q.front<Q.rear+1)

{int l=1;

int k;

k=Q.rear-(Q.rear-Q.front);

while(l<Q.rear+2-Q.front)

{printf("l位置有牌照号为Q.PAVE[l].license_plate的停放");

l++;

Q.front++;

k++;

}

}

}

int main()

 

{

char key;

welcome();

P.top=1;

Q.front=1;

Q.rear=0;

R.top=0;

do{

key=getchar();

if(key=='C'||key=='c')

come();

else if(key=='L'||key=='l')

{leave();

}

else if(key=='S'||key=='s')

display();

else

welcome(); 

}

while (key!='Q'&&key!='q');

return 0;

 

 }

你最好说说你遇到什么问题,不要让大家猜啊

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m