7、某停车场有20个车位(1-20号),设计一个停车场管理系统,实现停车管理系统。 c语言程序设计 。

2025-03-26 04:07:22
推荐回答(1个)
回答1:

#include
#include
#include
typedef struct{
int num;
char id[50];
time_t in;
time_t out;
float mon;
}P;
P p[21];
void in();
void out();
void look();
void init();
int vacant();

int main()
{
int i,flag=0;
init();
while(1)
{ printf(" \n");
printf(" 1: 进入 \n");
printf(" 2 离开 \n");
printf(" 3: 查看车位情况 \n");
printf(" 4: 退出 \n");
printf(" \n");
puts("请输入选项:");
scanf("%d",&i);
switch(i)
{
case 1: in();break;
case 2: out();break;
case 3: look();fflush(stdin);
puts("按任意键继续。。。。。。。");
getchar();break;
case 4: flag=1;break;
}
if(flag==1) break;
system("CLS");
}
return 0;
}

void init()
{ int i=0;
while(i<21){ p[i].num=i;p[i].id[0]='\0';p[i].in=0;p[i].out=0;p[i].mon=0.;i++;}
}
int vacant()
{
int i=1,num=0;
while(i<21){ if(p[i].id[0]=='\0') num++;i++;}
return num;
}
void in()
{ int i=0,a[21];
while(i<21){ a[i]=0; i++;}
i=1;
if(vacant()!=0){ puts("有车位 空车位为:");
while(i<21){ if(p[i].id[0]=='\0') {a[i]=i; printf("%-4d",i);}i++;}
puts("");
puts("请输入所要停入车位号:");
while(1){
scanf("%d",&i);
int j=0,flag=0;
while(j<21) { if(a[j]==0){ j++;continue;} if(a[j]==i){ flag=1;break;}j++;}
if(flag==0) puts("输入错误,请再次输入所要停入车位号:");
else break;
}

puts("请输入所要停入的车牌号:");
scanf("%s",p[i].id);
time(&(p[i].in));
}
else puts("车位已满!");
fflush(stdin);
puts("按任意键继续。。。。。。。");
getchar();
}
void out()
{
int i,j=0,a[21],flag=0;
while(j<21){ a[j]=0; j++;}
j=0;
look();
while(j<21){ if(p[j].id[0]!='\0') a[j]=j;j++; }
puts("请输入离开车的车位号:");
while(1)
{
j=0;
scanf("%d",&i);
while(j<21) { if(a[j]==0){ j++;continue;} if(a[j]==i){ flag=1;break;}j++;}

if(flag==1) break;
else puts("输入错误,请再次请输入离开车的车位号:");
}
time(&(p[i].out));
struct tm *tm1,*tm2;
tm1=gmtime(&(p[i].in));
tm2=gmtime(&(p[i].out));
int num1,num2;
if(tm1->tm_hour+8>23) num1=tm1->tm_hour+8-24;
else num1=tm1->tm_hour+8;
if(tm2->tm_hour+8>23) num2=tm2->tm_hour+8-24;
else num2=tm2->tm_hour+8;
printf("该车位号为: %d 车牌号为:%s \n%d:%d 停入 %d:%d 离开 \n应付金额为 %0.2f元\n",i,p[i].id,num1,tm1->tm_min,num2,tm2->tm_min,(p[i].out-p[i].in)/3600.0*10);
p[i].id[0]='\0';
fflush(stdin);
puts("按任意键继续。。。。。。。");
getchar();
}
void look()
{ int i=1,k=0;
struct tm *tm1;

if(vacant()!=0)
{ puts("空车位为:");
while(i<21){ if(p[i].id[0]=='\0'){ printf("%-4d",i);k++;}i++; }
i=1;
puts("");
puts("已占车位为:");
if(k==20) puts(" 没有停车辆!");
while(i<21)
{ if(p[i].id[0]!='\0')
{ tm1=gmtime(&(p[i].in));int num1;
if(tm1->tm_hour+8>23) num1=tm1->tm_hour+8-24;else num1=tm1->tm_hour+8;
printf("车位号:%-4d 车牌号:%s 进入时间:%d:%d\n",i,p[i].id,num1,tm1->tm_min);
}
i++;

}

}
else puts("车位已满!");

}