停车场管理系统——C语言

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

停车场管理系统

【要求】

(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,以便于引用。

【程序】

struct car

{

int carnumber;

int floor;

int position;

int time;

}car[12];

2、车位信息

由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park[2][6]表示,注意停车场中已经停放了4辆车,设这四辆车的车牌号为6840,4167,3548,9201。

【程序】

int park[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("cannot open this file\n");

exit(0);

相关文档
最新文档