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

上传人:油条 文档编号:102354876 上传时间:2019-10-02 格式:DOC 页数:12 大小:495.50KB
返回 下载 相关 举报
停车场管理系统——C语言_第1页
第1页 / 共12页
停车场管理系统——C语言_第2页
第2页 / 共12页
停车场管理系统——C语言_第3页
第3页 / 共12页
停车场管理系统——C语言_第4页
第4页 / 共12页
停车场管理系统——C语言_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《停车场管理系统——C语言》由会员分享,可在线阅读,更多相关《停车场管理系统——C语言(12页珍藏版)》请在金锄头文库上搜索。

1、停车场管理系统【要求】(1)有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号),每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算。(2)假设停车场初始状态为第一层已经有4辆车,其车位号依次为14,停车时间依次为20,15,10,5,即先将这4辆车的信息存入文件car.dat中(数组的对应元素也要进行赋值)。(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信

2、息添入文件car.dat中,并将在此之前的所有停车时间加5。(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元(停车费用可设置一个变量进行保存),同时从文件car.dat中删除该车的信息,并将该车对应的车位设置为可用状态(即二维数组对应元素清零),按用户的选择来判断是否要输出停车收费的总计。(5)输出停车场中全部车辆的信息。(6)退出系统。【提示】(1)需求分析:车辆信息要用文件储存,提供文件的输入输出操作;当车要离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。(2)总体设计:整个管理系统可设计为停车模块、取车

3、模块、车辆信息浏览模块。二、总体设计根据上面的需求分析,可以将这个系统的设计分为四大模块(如图2-1):停车、取车、车辆信息浏览、退出。其中主要功能是停车、取车、车辆信息浏览三个模块。停车场管理退出停车车辆信息浏览取车图2-1系统功能模块图根据模块图可画出总的流程图(图2-2)NY开始结束显示一系列功能选项根据n的值运行相应模块程序输入n,判断m是否是14?图2-2 总流程图三、详细设计1、车辆信息车辆信息包括车牌号、层号、车位号、停车时间,将这四类数据组合成结构体car,以便于引用。【程序】struct carint carnumber;int floor;int position;int

4、time;car12;2、车位信息由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park26表示,注意停车场中已经停放了4辆车,设这四辆车的车牌号为6840,4167,3548,9201。【程序】int park26=6840,4167,3548,9201,0,0,0,0,0,0,0,0;car0.carnumber=6840;car0.floor=1;car0.position=1;car0.time=20;car1.carnumber=4167;car1.floor=1;car1.position=2;car1.time=15;car2.carnumber=3548;car2.

5、floor=1;car2.position=3;car2.time=10;car3.carnumber=9201;car3.floor=1;car3.position=4;car3.time=5;3、主菜单共包括四项功能:停车、取车、车辆信息浏览、退出。【程序】for(;)printf(nn *主菜单*nn);printf( 请输入数字键:n);printf( 1.停车n);printf( 2.取车n);printf( 3.车辆信息浏览n);printf( 4.退出nn);printf( *nn);scanf( %c,&a); 4、各功能模块设计(1)停车模块【需求分析】题目要求必须在一层停满

6、的情况下才能在第二层停车,因此可以利用for语句保证先将第一层停满,设置停车时间为5分钟并将原有车辆的停车时间加5分钟。进行分析时先打开文件检查停车车牌号,若打开文件操作出错则提示不能执行。停车模块流程图如图3-1所示。NY开始输入用户要停车辆的车牌号打开文件出错?提示无法打开文件显示停车成功!关闭文件返回主菜单结束图3-1 停车模块流程图【程序】if(a=1)printf(n请输入车牌号:);scanf(%d,&cari.carnumber);for(j=0;j2;+j)for(k=0;k6;+k)if(parkjk=0)parkjk=cari.carnumber;break;if(park

7、jk=cari.carnumber)break;cari.floor=j+1;cari.position=k+1;cari.time=5;for(j=0;ji;+j)carj.time=carj.time+5;if(fp=fopen(car.dat,w) =NULL)printf(cannot open this filen);exit(0);for(j=0;ji+1;+j)fprintf(fp,car%d.carnumber=%dn car%d.floor=%dn car%d.position=%dn car%d.time=%dn,j,carj.carnumber,carj.floor,ca

8、rj.position,carj.time);fclose(fp);printf(n停车成功!n);printf(n);+i;(2)取车模块【需求分析】首先输入所取车辆的车牌号,若与车库中所停车辆相符,则取车成功。之后根据用户的选择判断是否需要显示停车费用,此功能可用if条件语句实现。若需要,按每5分钟0.2元算出金额并显示出来。取车后须将该车停车纪录从文件中删除。若输入的车牌号与车库中所停车辆不符,则应给予提示。取车模块流程图如图3-2所示。NYYN结束输入所取车辆的车牌号码是否找到停车纪录?提示输入错误询问是否输出费用?显示停车费用开始返回主菜单图3-2取车模块流程图【程序】else if

9、(a=2)char b;printf(n请输入车牌号:);scanf(%d,&carNO);for(j=0;ji;+j)if(carNO=carj.carnumber)printf(n是否输出停车费用?(Y/N);scanf( %c,&b);if(b=Y)fee=carj.time/5.0*0.2;printf(车牌号:%d 停车费:,carNO);printf(%f元n欢迎下次光临!n,fee);else if(b=N)printf(n欢迎下次光临!n);else printf(n输入错误!n);printf(n);parkj/6j%6=0;if(fp=fopen(car.dat,w)=NU

10、LL)printf(cannot open this filen);exit(0);for(k=0;kj;+k)fprintf(fp,car%d.carnumber=%dn car%d.floor=%dn car%d.position=%dn car%d.time=%dn,k,cark.carnumber,cark.floor,cark.position,cark.time);for(+k;ki;+k)fprintf(fp,car%d.carnumber=%dn car%d.floor=%dn car%d.position=%dn car%d.time=%dn,k,cark.carnumber

11、,cark.floor,cark.position,cark.time);fclose(fp);printf(n);break;if(j=i)printf(n输入错误!nn);else continue;(3)车辆信息浏览模块【需求分析】该模块的功能是显示所有学生的纪录信息。其流程图如图3-3所示。开始结束显示车辆信息返回主菜单图3-3 车辆信息浏览模块流程图【程序】else if(a=3)printf(n 停车场所有车辆信息如下:nn);printf( 车牌号 层号 车位号 停车时间n);for(j=0;j2;+j)for(k=0;k6;+k)if(parkjk!=0)printf( %d %d %d %dn,carj*6+k.carnumber,carj*6+k.floor,carj*6+k.position,carj*6+k.time);else continue;if(fp=fopen(car.dat,w)=NULL)printf(cannot open this filen);exit(0); (4)退出模块【程序】else i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号