停车场管理系统.docx
- 文档编号:7033391
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:21
- 大小:264.31KB
停车场管理系统.docx
《停车场管理系统.docx》由会员分享,可在线阅读,更多相关《停车场管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
停车场管理系统
中国地质大学
本科生课程论文封面
课程设计评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总成绩:
评阅人签名:
注:
1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录
课程设计评语..................................................................................................................................2
目录..................................................................................................................................................3
1.课程论文题目............................................................................................................................4
2.程序设计思路.............................................................................................................................5
3.功能模块图.................................................................................................................................6
4.数据结构设计..............................................................................................................................6
5.算法设计......................................................................................................................................7
6.程序代码....................................................................................................................................11
7.程序运行结果.............................................................................................................................15
8.编程中遇到的困难及解决方法..................................................................................................21
9.总结心得及良好建议..................................................................................................................22
10.致谢..........................................................................................................................................23
1.课程论文题目
停车场管理系统2
【要求】
(1)有一个两层的停车场,每层有六个车位,当第一层车停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号),每辆车的信息包括车牌号、层号、车位号、停车时间共四项,其中停车时间按分钟计算。
(2)假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1~4,停车时间以此为20,15,10,5,即先将这4辆车的信息存入文件car.dat中(数组的对应元素也要进行赋值)。
(3)停车操作:
当第一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添入car.dat中,并将在此之前的所有车的停车时间加5。
(4)收费管理(取车):
当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元(停车费用可设置一个变量进行保存),同时从文件car.dat中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零),按用户的选择来判断是否要输出停车收费的总计。
(5)输出停车场中全部车辆的信息。
(6)退出系统。
2.程序设计思路
根据题目要求,车牌号,车辆位置等的存储要用到二维数组。
车辆信息要用到文件存储,提供文件的输入输出操作,当车辆离开时要更新停车场中的车辆信息,因而要提供文件的删除操作,此外还要用到一些标准函数和键盘式菜单等功能,因此应该包含#include
因此可将整个程序分为四大模块,即:
退出程序,车辆信息浏览,取车,停车几大模块;同时在各模块功能执行完后都能返回主菜单,可随时从任一模块开始运行,使各模块充分独立,让程序变得更加灵活和人性化。
3.功能模块图
4.数据结构设计
整个程序用到的数据主要是一个二维数组a[12][4],这样一个二维数组中的信息分别对应着不同车牌号的车辆的位置,停车时间这些信息,通过文件的读入与输出和一些公用函数save(),scan_car(),get_car(),stop_car完成数据浏览,添加,修改信息等操作。
因此使得此程能够很方便快捷的完成题中的要求。
程序中多出用到Break,使得程序看上去更加简洁。
5.算法设计
1、主菜单函数menu()以及其他菜单函数的连接关系
程序共有四个函数scan_car()get_car()stop_car()save()
1、main_menu()是主菜单函数,提供人机交互的界面,负责调用其他函数。
用for语句和while语句完成循环操作。
intmain_menu()//主菜单
{
intk;
system("CLS");//完成清屏操作
printf("\n\n\n\n\n\n\n\n\n");
printf("\n***********mainmenu***********\n");
printf("\n0.退出");
printf("\n1.车辆信息浏览");
printf("\n2.取车");
printf("\n3.停车\n");
printf("\n**********************************\n");
printf("\n\n请选择:
[]\b\b");
scanf("%d",&k);
returnk;
}
voidmain()//主函数
{
intk;
save();
while
(1)
{
k=main_menu();
if(k==0)exit(0);//退出菜单
elseif(k==1)scan_car();//进入车辆信息浏览模块
elseif(k==2)get_car();//进入取车模块
elseif(k==3)stop_car();//进入停车模块
elseprintf("\t\t\t输入错误!
\n\t\t\t请重新输入!
");
getch();
}
}
主菜单中的输出是提示操作者根据自己的需要使程序完成相应操作。
主函数根据主菜单中k的返回值来执行相关操作,在每个操作完成后都可以提示操作者单击任意键返回主菜单。
2、车辆信息浏览函数scan_car()
利用文件读写操作,输出当前车库信息
voidscan_car()//车辆信息浏览模块
{
inti,j;
FILE*fp;
fp=fopen("car.dat","r");//打开car.dat文件
if(fp==NULL)return;
printf("\n车牌层数位置时间\n");
for(i=0;i<12;i++)
{
for(j=0;j<4;j++)//输出车辆信息
{
fscanf(fp,"%d",&a[i][j]);
printf("%6d",a[i][j]);
}
printf("\n");
}
fclose(fp);
printf("......单击任意键回到主菜单......");
}
3、取车函数get_car()
用if语句判断相关输入是否正确,通过save()函数完成对车库信息的更新
voidget_car()//取车模块
{
floatmoney;
inti,m,n;
printf("请输入车牌号(车牌号应在1000~9999之间):
");
scanf("%d",&m);
while
(1)
{
if(m>9999||m<1000)//对输入的数字进行判断
{
printf("\t\t\t输入错误!
\n\t\t\t请重新输入!
\n");
printf("\t\t\t");break;
}
根据用户的选择是否输出收费总计,用for循环完成和save()函数完成车库信息更新
for(i=0;i<12;i++)
if(a[i][0]==m)
{
a[i][0]=-1;
money=a[i][3]/5.0*0.2;
printf("是否输出收费总计?
\n");
printf("\n1.是");
printf("\n2.否");
printf("\n\n请选择:
[]\b\b");
scanf("%d",&n);
if(n==1)
{
printf("收费总计是%f元.\n",money);
printf("欢迎下次再来!
\n再见!
\n");
a[i][3]=0;
save();
printf("......单击任意键回到主菜单......");
break;
}
elseif(n==2)
{
printf("欢迎下次再来!
\n再见!
\n");
a[i][0]=-1;
save();
printf("\t\t......单击任意键回到主菜单......");
break;
}
elseprintf("\t\t\t输入错误!
\n\t\t\t请重新输入!
");
printf("\n\t\t......单击任意键回到主菜单......\n\n");
break;
}
elseif(a[i][0]!
=m&&m>=1000&&m<9999)
{printf("\t\t\t该车不在停车场中!
\n\t\t\t请重新输入!
");break;
}break;
}
}
4、停车函数stop_car()函数
用for语句核对车牌号的输入是否有误,同时用for循环实现对已停车辆时间各加五分钟,再次利用save()函数完成车库信息的更新
voidstop_car()//停车模块
{inti,m;
printf("请输入车牌号(车牌号应在1000~9999之间):
");
scanf("%d",&m);
for(i=0;i<12;i++)//核对该车是否已停在停车场
if(a[i][0]==m)break;
if(i!
=12)
printf("\n\t\t\t此车已停在停车场!
\n");
elseif(i==12&&(m>9999||m<1000))
{
printf("\t\t\t\t\t输入错误!
\n\t\t\t\t\t请重新输入!
");
printf("\n\t\t......单击任意键回到主菜单......\n\n");
}
else//对输入正确的车牌号分配位置
{
for(i=0;i<12;i++)
if(a[i][0]==-1)
{
a[i][0]=m;
save();
printf("\n\n恭喜你!
\n停车成功!
\n\n");
printf("该车停在第%d层,第%d号\n",a[i][1],a[i][2]);
printf(".......单击任意键回到主菜单......");
break;
}
for(i=0;i<12;i++)//所有车的时间加5分钟
if(a[i][0]!
=0)a[i][3]+=5;
save();
}
}
6.程序代码
(每个函数都有功能说明)
#include
#include
#include
inta[12][4]={{1234,1,1,20},{2345,1,2,15},{3456,1,3,10},
{4567,1,4,5},{-1,1,5,0},{-1,1,6,0},{-1,2,1,0},{-1,2,2,0},{-1,2,3,0},
{-1,2,4,0},{-1,2,5,0},{-1,2,6,0}};
voidscan_car();//功能函数的声明
voidstop_car();
voidget_car();
voidsave();
voidsave()
{
FILE*fp;
inti,j;
if((fp=fopen("car.dat","w"))==NULL)//创建一个car.dat文件
{
printf("cannotopenfile\n");
return;
}
for(i=0;i<12;i++)
{
for(j=0;j<4;j++)
fprintf(fp,"%d",a[i][j]);
}
fclose(fp);
}
intmain_menu()//主菜单
{
intk;
system("CLS");//完成清屏操作
printf("\n\n\n\n\n\n\n\n\n");
printf("\n***********mainmenu***********\n");
printf("\n0.退出");
printf("\n1.车辆信息浏览");
printf("\n2.取车");
printf("\n3.停车\n");
printf("\n**********************************\n");
printf("\n\n请选择:
[]\b\b");
scanf("%d",&k);
returnk;
}
voidmain()//主函数
{
intk;
save();
while
(1)
{
k=main_menu();
if(k==0)exit(0);//退出菜单
elseif(k==1)scan_car();//进入车辆信息浏览模块
elseif(k==2)get_car();//进入取车模块
elseif(k==3)stop_car();//进入停车模块
elseprintf("\t\t\t输入错误!
\n\t\t\t请重新输入!
");
getch();
}
}
voidscan_car()//车辆信息浏览模块
{
inti,j;
FILE*fp;
fp=fopen("car.dat","r");//打开car.dat文件
if(fp==NULL)return;
printf("\n车牌层数位置时间\n");
for(i=0;i<12;i++)
{
for(j=0;j<4;j++)//输出车辆信息
{
fscanf(fp,"%d",&a[i][j]);
printf("%6d",a[i][j]);
}
printf("\n");
}
fclose(fp);
printf("......单击任意键回到主菜单......");
}
voidget_car()//取车模块
{
floatmoney;
inti,m,n;
printf("请输入车牌号(车牌号应在1000~9999之间):
");
scanf("%d",&m);
while
(1)
{
if(m>9999||m<1000)//对输入的数字进行判断
{
printf("\t\t\t输入错误!
\n\t\t\t请重新输入!
\n");
printf("\t\t\t");break;
}
for(i=0;i<12;i++)
if(a[i][0]==m)
{
a[i][0]=-1;
money=a[i][3]/5.0*0.2;
printf("是否输出收费总计?
\n");
printf("\n1.是");
printf("\n2.否");
printf("\n\n请选择:
[]\b\b");
scanf("%d",&n);
if(n==1)
{
printf("收费总计是%f元.\n",money);
printf("欢迎下次再来!
\n再见!
\n");
a[i][3]=0;
save();
printf("......单击任意键回到主菜单......");
break;
}
elseif(n==2)
{
printf("欢迎下次再来!
\n再见!
\n");
a[i][0]=-1;
save();
printf("\t\t......单击任意键回到主菜单......");
break;
}
elseprintf("\t\t\t输入错误!
\n\t\t\t请重新输入!
");
printf("\n\t\t......单击任意键回到主菜单......\n\n");
break;
}
elseif(a[i][0]!
=m&&m>=1000&&m<9999)
{printf("\t\t\t该车不在停车场中!
\n\t\t\t请重新输入!
");break;
}break;
}
}
;voidstop_car()//停车模块
{inti,m;
printf("请输入车牌号(车牌号应在1000~9999之间):
");
scanf("%d",&m);
for(i=0;i<12;i++)//核对该车是否已停在停车场
if(a[i][0]==m)break;
if(i!
=12)
printf("\n\t\t\t此车已停在停车场!
\n");
elseif(i==12&&(m>9999||m<1000))
{
printf("\t\t\t\t\t输入错误!
\n\t\t\t\t\t请重新输入!
");
printf("\n\t\t......单击任意键回到主菜单......\n\n");
}
else//对输入正确的车牌号分配位置
{
for(i=0;i<12;i++)
if(a[i][0]==-1)
{
a[i][0]=m;
save();
printf("\n\n恭喜你!
\n停车成功!
\n\n");
printf("该车停在第%d层,第%d号\n",a[i][1],a[i][2]);
printf(".......单击任意键回到主菜单......");
break;
}
for(i=0;i<12;i++)//所有车的时间加5分钟
if(a[i][0]!
=0)a[i][3]+=5;
save();
}
}
7.程序运行结果
1、显示主菜单
2、输入数字1进入车辆信息浏览
3、单击任意键返回主菜单后输入数字2进入取车界面
输入错误的车牌号后的提示界面
输入正确的车牌号提示操作者是否输出收费总计
如果选择2则进入如下界面
如果输入的数字不是1或2则进入如下界面
如果输入的车牌号不在车库中则进入如下界面
3、在主菜单中如果输入3则进入停车模块,输入车库中已存在的车牌号则有如下界面
输入正确的车牌号则进入如下界面
输入错误的车牌号则进入如下界面
8.编程中遇到的困难及解决方法
在编程的过程中,我很容易出现漏写分号“;”和大括号“}”的问题。
虽然实际错误不是很多,但是编译时出错的的地方很多。
按照计算机所指出的错误位置,一个一个的检查核对。
往往只是一个括号的问题,但却使得程序在编译时出现很多问题,而这种错误不是很容易发现的,但每次都在我耐心的查找下一一排除。
所以排除错误后我都会有一种发自内心的喜悦感。
在我所接到的编程题目中也出现了一些编译中出现很多错误的问题。
按照题目要求,需要在主菜单中出现四个功能选项,其中取车的模块又要根据用户的选择是否输出停车收费总计,所以取车的模块是四个模块中耗用我时间最多的一个。
经过不断编译与调试,我最后还是克服了所有困难,由于原来题目要求较少,题目较简
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统