停车场管理系统C语言Word下载.docx
《停车场管理系统C语言Word下载.docx》由会员分享,可在线阅读,更多相关《停车场管理系统C语言Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
图2-1系统功能模块图
根据模块图可画出总的流程图(图2-2)
图2-2总流程图
三、详细设计
1、车辆信息
车辆信息包括车牌号、层号、车位号、停车时间,将这四类数据组合成结构体car,以便于引用。
【程序】
structcar
{
intcarnumber;
intfloor;
intposition;
inttime;
}car[12];
2、车位信息
由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park[2][6]表示,注意停车场中已经停放了4辆车,设这四辆车的车牌号为6840,4167,3548,9201。
intpark[2][6]={6840,4167,3548,9201,0,0,0,0,0,0,0,0};
car[0].carnumber=6840;
car[0].floor=1;
car[0].position=1;
car[0].time=20;
car[1].carnumber=4167;
car[1].floor=1;
car[1].position=2;
car[1].time=15;
car[2].carnumber=3548;
car[2].floor=1;
car[2].position=3;
car[2].time=10;
car[3].carnumber=9201;
car[3].floor=1;
car[3].position=4;
car[3].time=5;
3、主菜单
共包括四项功能:
for(;
;
)
{
printf("
\n\n*********************主菜单*********************\n\n"
);
请输入数字键:
\n"
1.停车\n"
2.取车\n"
3.车辆信息浏览\n"
4.退出\n\n"
************************************************\n\n"
scanf("
%c"
&
a);
4、各功能模块设计
(1)停车模块
【需求分析】
题目要求必须在一层停满的情况下才能在第二层停车,因此可以利用for语句保证先将第一层停满,设置停车时间为5分钟并将原有车辆的停车时间加5分钟。
进行分析时先打开文件检查停车车牌号,若打开文件操作出错则提示不能执行。
停车模块流程图如图3-1所示。
图3-1停车模块流程图
if(a=='
1'
{
printf("
\n请输入车牌号:
"
scanf("
%d"
car[i].carnumber);
for(j=0;
j<
2;
++j)
{
for(k=0;
k<
6;
++k)
{
if(park[j][k]==0)
{
park[j][k]=car[i].carnumber;
break;
}
}
if(park[j][k]==car[i].carnumber)break;
}
car[i].floor=j+1;
car[i].position=k+1;
car[i].time=5;
for(j=0;
i;
car[j].time=car[j].time+5;
if((fp=fopen("
car.dat"
"
w"
))==NULL)
printf("
cannotopenthisfile\n"
exit(0);
i+1;
fprintf(fp,"
car[%d].carnumber=%d\ncar[%d].floor=%d\ncar[%d].position=%d\ncar[%d].time=%d\n"
j,car[j].carnumber,car[j].floor,car[j].position,car[j].time);
fclose(fp);
printf("
\n停车成功!
++i;
}
(2)取车模块
首先输入所取车辆的车牌号,若与车库中所停车辆相符,则取车成功。
之后根据用户的选择判断是否需要显示停车费用,此功能可用if条件语句实现。
若需要,按每5分钟0.2元算出金额并显示出来。
取车后须将该车停车纪录从文件中删除。
若输入的车牌号与车库中所停车辆不符,则应给予提示。
取车模块流程图如图3-2所示。
图3-2取车模块流程图
elseif(a=='
2'
charb;
carNO);
if(carNO==car[j].carnumber)
\n是否输出停车费用?
(Y/N)"
scanf("
b);
if(b=='
Y'
{
fee=car[j].time/5.0*0.2;
printf("
车牌号:
%d停车费:
carNO);
%f元\n欢迎下次光临!
fee);
}
elseif(b=='
N'
printf("
\n欢迎下次光临!
else
\n输入错误!
park[j/6][j%6]=0;
if((fp=fopen("
))==NULL)
exit(0);
for(k=0;
j;
fprintf(fp,"
k,car[k].carnumber,car[k].floor,car[k].position,car[k].time);
for(++k;
fclose(fp);
if(j==i)
\n\n"
elsecontinue;
(3)车辆信息浏览模块
该模块的功能是显示所有学生的纪录信息。
其流程图如图3-3所示。
图3-3车辆信息浏览模块流程图
elseif(a=='
3'
\n停车场所有车辆信息如下:
车牌号层号车位号停车时间\n"
if(park[j][k]!
=0)
%d%d%d%d\n"
car[j*6+k].carnumber,car[j*6+k].floor,car[j*6+k].position,car[j*6+k].time);
elsecontinue;
if((fp=fopen("
exit(0);
}
(4)退出模块
4'
)break;
四、运行结果
(1)主菜单:
效果如图4-1所示。
图4-1主菜单
(2)停车模块
输入”1”按下”enter”键进入停车操作,如图4-2所示。
图4-2停车模块
根据提示输入车牌号按下”enter”键,如图4-3所示。
图4-3输入车牌号
根据需要再停入两辆车,如图4-4、4-5所示。
图4-4停入第二辆车
图4-5停入第三辆车
(3)取车模块
输入”2”按下”enter”键进入取车操作,如图4-6所示。
图4-6取车模块
根据提示输入车牌号,如图4-7所示。
图4-7输入车牌号
根据提示输入”Y”,如图4-8所示。
图4-8输出停车费
输入”3”按下”enter”键进入车辆信息浏览模块,如图4-9所示。
图4-9车辆信息浏览模块
输入”4”按下”enter”键退出系统,如图4-10所示。
图4-10退出系统