C语言停车场模拟程序:结构体数组实现车辆进出管理
这段代码是一个停车场模拟程序,通过结构体数组 CAR 存储车辆信息,实现车辆的进出以及等待功能。
#include <stdio.h>
#define M 100
struct CAR{
char xinxi;
int haoma;
int shijian;
};
int main()
{
int n,i,j,k,p,weizhi;
k=0;
weizhi=1;
struct CAR tingche[M];
int shichang,dengdai,a,b;
dengdai=-1;
scanf("%d",&n);
while(tingche[k].xinxi!='E'){
scanf("%c%d%d",&tingche[k].xinxi,&tingche[k].haoma,&tingche[k].shijian);
if(tingche[k].xinxi!='E') {
k++;
}
}
i=0;
while(i<=k-1){
if(tingche[i].xinxi=='E'){
break;
}else if(tingche[i].xinxi=='A'){
if(weizhi<=n){
printf("car#%d in parking space #%d\n",tingche[i].haoma,weizhi);
weizhi++;
}else{
printf("car#%d waiting\n",tingche[i].haoma);
dengdai=tingche[i].haoma;
}
}else if(tingche[i].xinxi=='D'){
a=0;
b=tingche[i].shijian;
for(j=0;j<i;j++){
if(tingche[i].haoma==tingche[j].haoma){
a=1;
shichang=tingche[i].shijian-tingche[j].shijian;
break;
}
}
if(a==1){
printf("car#%d out,parking time %d\n",tingche[i].haoma,shichang);
for(p=0;p<k;p++){
if(tingche[p].haoma==tingche[i].haoma){
tingche[p].haoma=-1;
}
}
weizhi--;
if(dengdai!=-1){
for(j=0;j<k;j++){
if(dengdai==tingche[j].haoma&&tingche[j].xinxi=='A'){
tingche[j].shijian=b;
break;
}
}
printf("car#%d in parking space #%d\n",dengdai,weizhi);
dengdai=-1;
}
}else{
printf("the car not in park\n");
}
}
i++;
}
}
程序功能:
- 模拟车辆进入停车场 (
A),并分配停车位。 - 模拟车辆离开停车场 (
D),并计算停车时间。 - 处理车辆等待情况,将等待时间最长的车辆放入空闲的停车位。
主要重点和难点:
- 计算停车时间: 查找对应车辆的进入时间和离开时间,并计算时间差。
- 处理等待车辆: 记录等待车辆的车牌号码,并在有车辆离开时判断是否有等待车辆,如果有,则将等待时间最长的车辆放入停车位中。
改进建议:
- 使用函数封装功能,例如
addCar()、removeCar()、calculateParkingTime()等,提高代码可读性和可维护性。 - 在输入车辆信息时,添加输入验证,例如检查车牌号码是否合法,停车时间是否合理等,避免出现输入错误。
- 添加更多功能,例如显示停车场状态、统计停车场收入等,使其更完善。
学习收获:
- 深刻理解结构体的用法,以及如何利用结构体数组实现复杂的数据操作。
- 加深了对程序设计和逻辑思维的认识。
- 了解了如何使用 C 语言实现简单的模拟程序。
原文地址: https://www.cveoy.top/t/topic/otOH 著作权归作者所有。请勿转载和采集!