C语言课设之停车场管理系统2Word文档格式.docx
- 文档编号:17627664
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:19
- 大小:184.84KB
C语言课设之停车场管理系统2Word文档格式.docx
《C语言课设之停车场管理系统2Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课设之停车场管理系统2Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
27.停车场管理2
1、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"
中(数组的对应元素也要进行赋值)。
3、停车操作:
当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"
car.dat"
中,并将在此之前的所有车的停车时间加5。
4、收费管理(取车):
当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。
(停车费用可设置一个变量进行保存),同时从文件"
中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。
按用户的选择来判断是否要输出停车收费的总计。
5、输出停车场中全部车辆的信息。
6、退出系统。
需求分析:
车辆信息用文件储存,提供文件的输入输出操作;
当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;
另外还要用键盘式菜单实现功能选择。
二、总体设计思路:
整个管理系统设计可设计为停车模块、取车模块、车辆浏览信息模块。
另外车辆停放信息涉及到从car.dat中读取,保存和修改,为了方便起见,和程序的模块化,我们将文件的读入和保存单独设计为两个子程序。
各子程序设计如下:
1.使用全局变量数组,用一个二维数组实现停车场车位的信息,
intcars[12][4];
2.通过读取car.dat的数据,对程序初始化。
下图为car.dat的初始数据:
在init()通过一个for循环完成对car.dat中数据的读取。
for(i=0;
i<
12;
i++)
{
fscanf(fp,"
%d"
&
cars[i][0]);
cars[i][1]);
cars[i][2]);
cars[i][3]);
}
3.同理,我们设计一个子程序saveAll()用来保存停车场车位的信息到car.dat。
用for循环再将处理后的数据存入文件中。
fprintf(fp,"
cars[i][0]);
cars[i][1]);
cars[i][2]);
cars[i][3]);
\n"
);
}
4.进行对停车模块的设计:
首先,输入车辆的车牌号,我们从键盘读取车牌号码,并判断车牌号码是否正确(五位数整型车牌号码)。
输入出错时要求继续输入。
我们引入flag标志量判断车牌号是否正确,初始intflag=1,从键盘读入车牌号码,并判断:
printf("
请输入您的车牌号:
"
);
do{
scanf("
%d"
&
temp);
if((temp>
9999)&
&
(temp<
100000))break;
flag=0;
printf("
请重新输入五位数车牌号\n:
}while(!
flag);
其次,读取的车牌号正确之后对标志量清零flag=0,代表没有没有找到车位,进行为车辆找停车位的操作,如下:
flag=0;
for(i=1;
13;
{
if(cars[i][0]!
=0)
continue;
cars[i][0]=temp;
flag=1;
break;
通过for循环和continue语句找到没有停车的车位,即car[i][0]不等于0,并将标志量flag赋值1,表示有车位,用break语句跳出循环。
再用if语句处理flag==1的情况,即停车场车位已满无法停车。
最后,对存入的车辆赋初始时间5,并且前面的已存入的车辆时间都加5。
语句如下:
for(i=0;
cars[i][3]+=5;
cars[i][2]+=i;
又因为我在car.dat已经对车辆的停放楼层和车位有过初始赋值,可以省去再对cars[i][1]和cars[i][2]的操作。
并且可以满足“第一层有空位必须停在第一层”的要求,不过存在一个问题就是车辆只能按车位序号停放。
5、取车模块:
第一步,读取要提取车辆的车牌号码。
再通过flag标志量对所输入车牌号正误分别处理。
(初始flag=0)
第二步,对于输入正确的车辆进行操作:
删除车辆信息,再计算费用,再对时间清零并标
志取车成功。
第三步,进过上一步后取车不成功时即flag还是为0时,提示重复输入车牌号直道成功为止。
程序如下:
100000)){
for(i=0;
if(cars[i][0]==temp){
cars[i][0]=0;
cost=0.2*cars[i][3]/5;
cars[i][3]=0;
flag=1;
break;
}
if(flag==0)
printf("
您输入的车牌号码有误,请重新输入。
第四步,有选择性的显示收费价格:
printf("
\n显示停车费用?
是
(1)/否
(2)"
scanf("
i);
switch(i){
case1:
\n车牌号:
%d费用%8.2f元\n"
temp,cost);
case2:
default:
break;
最后,调用saveAll()函数来保存数据到car.dat。
6、车辆信息浏览模块:
注意我们只需要显示有车的车位可以用for循环语句再加上if判断语句来实现显示功能。
车牌号\t\t楼层\t车位\t\t时间\n"
%d\t\t%d\t\t%d\t\t%d\n"
cars[i][0],cars[i][1],cars[i][2],cars[i][3]);
7、主函数:
调用子函数init()初始化读取car.dat文件。
用printf在屏幕上显示停车场的菜单。
再用switch语句实现选择执行哪个模块语句。
switch(a){
case1:
putCar();
case2:
getCar();
break;
case3:
showInfo();
case4:
exit(0);
default:
您输入的信息有误!
};
getchar();
三、程序设计
#include<
stdio.h>
stdlib.h>
#include<
conio.h>
io.h>
intcars[12][4];
/*停车场使用数组*/
voidinit()/*初始化*/
charfilename[]="
;
FILE*fp;
inti;
if((fp=fopen(filename,"
r"
))==NULL){
无法打开文件\"
car.dat\"
return;
i++){/*读数据文件内容到数组*/
fscanf(fp,"
fclose(fp);
}
voidsaveAll()
{/*保存数据到car.dat*/
inti=0;
w"
i++){/*写数据到文件*/
voidputCar()
{/*停车操作*/
inttemp;
intflag=1;
\n\n*********欢迎来到地大停车场*********\n"
请输入你的车牌号:
0)&
10000))break;
Yourcarnumberisadigitbetween0and10000:
flag=0;
i++){
if(flag==0){/*没有找到位置,停车场已满*/
很抱歉!
车位已满:
i++){/*所有车的停车时间一起加5*/
saveAll();
getchar();
存车成功!
\n按任意键回到主菜单..."
voidgetCar()
{/*取车*/
inti,temp,flag=0;
floatcost;
\n\n*********从停车场取车*********\n"
请输入你的车牌号码:
10000)){
/*删除该车位车辆信息*/
\nPrintfoutthecost?
Yes
(1)/No
(2)"
/*保存数据*/
取车成功!
voidshowInfo()
{/*显示当前停车场信息*/
\n\n*********当前停车场车位信息*********\n"
输入任意键返回主菜单..."
intmain()
inta;
init();
do{
\n\n\n*******************************************************************\n"
*地大停车场管理系统*\n"
*1.停车*\n"
*2.取车*\n"
*3.当前车位信息*\n"
*4.退出*\n"
*******************************************************************\n"
请输入选项:
a);
switch(a){/*菜单选择*/
}while
(1);
return0;
四、程序运行测试:
1、打开程序进入键盘式界面菜单,选择您所需要进行的操作选项。
2、车辆车位的初始化,查看当前车位信息如下:
3、停入车牌号为20000的车:
4、查看当前车位信息:
出现错误,车辆无法按楼层和车位要求停。
对car.dat进行修改楼层号初始化为111111222222车位号初始化为123456123456。
在使用停车操作时,车辆从一楼到二楼依次按序停放。
对程序修改后运行如下:
查看修改后
取车,并显示费用:
再存入5辆车:
停车车位顺次排下。
取出两辆车:
再存入两辆:
后存入的车占据取出车的空车位
将车库存满:
输入4,程序结束。
。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 停车场 管理 系统