停车场管理系统C语言.docx

上传人:b****5 文档编号:6738735 上传时间:2023-01-09 格式:DOCX 页数:14 大小:293.70KB
下载 相关 举报
停车场管理系统C语言.docx_第1页
第1页 / 共14页
停车场管理系统C语言.docx_第2页
第2页 / 共14页
停车场管理系统C语言.docx_第3页
第3页 / 共14页
停车场管理系统C语言.docx_第4页
第4页 / 共14页
停车场管理系统C语言.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

停车场管理系统C语言.docx

《停车场管理系统C语言.docx》由会员分享,可在线阅读,更多相关《停车场管理系统C语言.docx(14页珍藏版)》请在冰豆网上搜索。

停车场管理系统C语言.docx

停车场管理系统C语言

停车场管理系统

【要求】

(1)有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号),每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算。

(2)假设停车场初始状态为第一层已经有4辆车,其车位号依次为1~4,停车时间依次为20,15,10,5,即先将这4辆车的信息存入文件car.dat中(数组的对应元素也要进行赋值)。

(3)停车操作:

当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添入文件car.dat中,并将在此之前的所有停车时间加5。

(4)收费管理(取车):

当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元(停车费用可设置一个变量进行保存),同时从文件car.dat中删除该车的信息,并将该车对应的车位设置为可用状态(即二维数组对应元素清零),按用户的选择来判断是否要输出停车收费的总计。

(5)输出停车场中全部车辆的信息。

(6)退出系统。

【提示】

(1)需求分析:

车辆信息要用文件储存,提供文件的输入输出操作;当车要离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。

(2)总体设计:

整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块。

二、总体设计

根据上面的需求分析,可以将这个系统的设计分为四大模块(如图2-1):

停车、取车、车辆信息浏览、退出。

其中主要功能是停车、取车、车辆信息浏览三个模块。

图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");

printf("请输入数字键:

\n");

printf("1.停车\n");

printf("2.取车\n");

printf("3.车辆信息浏览\n");

printf("4.退出\n\n");

printf("************************************************\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;j

car[j].time=car[j].time+5;

if((fp=fopen("car.dat","w"))==NULL)

{

printf("cannotopenthisfile\n");

exit(0);

}

for(j=0;j

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停车成功!

\n");

printf("\n");

++i;

}

(2)取车模块

【需求分析】

首先输入所取车辆的车牌号,若与车库中所停车辆相符,则取车成功。

之后根据用户的选择判断是否需要显示停车费用,此功能可用if条件语句实现。

若需要,按每5分钟0.2元算出金额并显示出来。

取车后须将该车停车纪录从文件中删除。

若输入的车牌号与车库中所停车辆不符,则应给予提示。

取车模块流程图如图3-2所示。

图3-2取车模块流程图

【程序】

elseif(a=='2')

{

charb;

printf("\n请输入车牌号:

");

scanf("%d",&carNO);

for(j=0;j

{

if(carNO==car[j].carnumber)

{

printf("\n是否输出停车费用?

(Y/N)");

scanf("%c",&b);

if(b=='Y')

{

fee=car[j].time/5.0*0.2;

printf("车牌号:

%d停车费:

",carNO);

printf("%f元\n欢迎下次光临!

\n",fee);

}

elseif(b=='N')

printf("\n欢迎下次光临!

\n");

else

printf("\n输入错误!

\n");

printf("\n");

park[j/6][j%6]=0;

if((fp=fopen("car.dat","w"))==NULL)

{

printf("cannotopenthisfile\n");

exit(0);

}

for(k=0;k

fprintf(fp,"car[%d].carnumber=%d\ncar[%d].floor=%d\ncar[%d].position=%d\ncar[%d].time=%d\n",k,car[k].carnumber,car[k].floor,car[k].position,car[k].time);

for(++k;k

fprintf(fp,"car[%d].carnumber=%d\ncar[%d].floor=%d\ncar[%d].position=%d\ncar[%d].time=%d\n",k,car[k].carnumber,car[k].floor,car[k].position,car[k].time);

fclose(fp);

printf("\n");break;

}

}

if(j==i)

{

printf("\n输入错误!

\n\n");

}

elsecontinue;

}

(3)车辆信息浏览模块

【需求分析】

该模块的功能是显示所有学生的纪录信息。

其流程图如图3-3所示。

图3-3车辆信息浏览模块流程图

【程序】

elseif(a=='3')

{

printf("\n停车场所有车辆信息如下:

\n\n");

printf("车牌号层号车位号停车时间\n");

for(j=0;j<2;++j)

{

for(k=0;k<6;++k)

{

if(park[j][k]!

=0)

printf("%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("car.dat","w"))==NULL)

{

printf("cannotopenthisfile\n");

exit(0);

}

}

(4)退出模块

【程序】

elseif(a=='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)车辆信息浏览模块

输入”3”按下”enter”键进入车辆信息浏览模块,如图4-9所示。

图4-9车辆信息浏览模块

(4)退出模块

输入”4”按下”enter”键退出系统,如图4-10所示。

图4-10退出系统

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1