停车场管理系统1汇总.docx
- 文档编号:30294447
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:20
- 大小:114.47KB
停车场管理系统1汇总.docx
《停车场管理系统1汇总.docx》由会员分享,可在线阅读,更多相关《停车场管理系统1汇总.docx(20页珍藏版)》请在冰豆网上搜索。
停车场管理系统1汇总
目录
一、系统开发的背景1
二、系统分析与设计1
(一)系统功能要求1
(二)系统模块结构设计1
三、系统的设计与实现2
(一)停车场管理系统基本功能浏览:
instruction()2
(二)停车场管理系统停车功能浏览:
park()3
(三)停车场管理系统取车功能的浏览leave()4
(四)停车场管理系统信息查询功能浏览information()6
四、系统测试7
(一)测试main_instruction函数7
(二)测试main_park函数8
(三)测试main_leave函数8
(四)测试main_information函数9
五、总结9
六、附件(代码)10
停车场管理系统
一、系统开发的背景
为了大大的提高停车场的工作效率,使存车,取车,查询车等工作快捷而安全正确的进行,因此设计出关于停车场管理系统的程序,可以迅速查到所需信息,更好地为人服务。
二、系统分析与设计
(一)系统功能要求
有一个两层的停车场,每层有六个车位,当第一层停满后,才允许存入第二层。
1、假设刚开始第一层已存入5辆车,停车位依次为1-5,停车时间以依次为25,20,15,10,5。
先将这五辆车的信息存入文件“gar.dat”中;
2、停车操作:
当一辆车停入停车场时,先输入车牌号,再为它分配一个层号和车位号。
停车时间设为5,然后将新的信息存入文件“gar.dat”中,并为之前停好的车都加5.
3、取车操作:
当有车离开时,输入他的车牌号,根据停车时间计算停车费用,每5分钟0.2元。
同时从文件“gar.dat”中删除该车的信息。
按用户的选择来判断是否输出停车的总收费。
4、输出停车场中所停车辆的全部信息。
5、退出系统。
(二)系统模块结构设计
通过对系统功能的分析,学生综合测评系统功能如图X所示。
图1学生综合测评系统功能图
通过上图的功能分析,把整个系统划分为4个模块:
1、停车,该模块主要实现:
已存车辆基本信息(车牌号,层号,车位号,停车时间)的输出,借助函数Init()来实现;
2、取车,该模块主要实现:
用户所取车辆信息及停车费用的输出,借助函数Park()来实现;
3、信息查询,该模块主要实现:
停车场所停车辆的全部信息的输出,借助函数Information()来实现。
4、退出,该模块主要实现:
用户完成所有操作后,退出系统。
三、系统的设计与实现
(一)停车场管理系统基本功能浏览:
instruction()
分析:
首先输出表头,然后依次输出操作信息。
流程图如图1所示。
图1:
instruction()流程图
该模块的具体代码如下所示。
voidInstruction()
printf("*******************************\n");
printf("停车场管理系统使用说明:
\n");
printf("*******************************\n");
printf("停车请输入1,取车请输入2\n");
printf("查看全部车辆的信息请输入3,退出请输入0\n");
}/*初始化停车信息,初始状态为第一层已停5辆车,停车时间依次为25,20,15,10,5*/
(二)停车场管理系统停车功能浏览:
park()
分析:
输入所停车辆的车牌号,如果第一层还有空车位,就输出此车可停的具体位置。
如果第一层已满,接着检查第二层是否有空车位,如有,则输出具体位置,如果一,二层都没有空位,则输出没有空位不能停车的信息。
流程图如2:
图2
voidpark(structGaragegar[][6])
{inti;
charnum[8];
printf("请输入车牌号:
");
scanf("%s",num);
for(i=0;i<6;i++)
{if(gar[0][i].state==1)
{printf("第一层第%d号位空着,请在此处停车\n",i+1);
strcpy(gar[0][i].number,num);
printf("车牌号:
%s层号:
1车位号:
%d\n",num,i+1);
AddTime(gar);/*在此之前的所有车的停车时间加5*/
gar[0][i].state=2;/*该车位已经停车*/
gar[0][i].time=5;/*将时间设为5*/
return;
}
}
printf("第一层已经没有空车位\n");
for(i=0;i<6;i++)
{
if(gar[1][i].state==1)
{printf("第二层第%d号车位空着,请在此处停车\n",i+1);
strcpy(gar[1][i].number,num);
printf("车牌号:
%s层号:
1车位号:
%d\n",num,i+1);
AddTime(gar);/*在此之前的所有车的停车时间加5*/
gar[1][i].state=2;/*该车位已经停车*/
gar[1][i].time=5;/*将时间设为5*/
return;
}
}
printf("对不起,12层都没有空车位,您现在不能在此处停车\n");
}
(三)停车场管理系统取车功能的浏览leave()
分析:
输入你所取车辆的车牌号,如果停车场有匹配的车辆,则输出该车辆所停的具体位置,并根据5分钟0.2元的价格输出该车的停车费用。
如果停车场中没有匹配的车辆,就会输出提醒客户没有他要找的车辆的信息。
流程图如图3
图3
doubleLeave(structGaragegar[2][6])
{
inti,j;
charnum[8];
doublecharge=0;
printf("请输入要取的车牌号:
");
scanf("%s",num);
for(i=0;i<2;i++)
{
for(j=0;j<6;j++)
{if(!
strcmp(gar[i][j].number,num))
{printf("您在%d层%d车位停车%d分钟\n",gar[i][j].lay,gar[i][j].garagenum,gar[i][j].time);
charge=gar[i][j].time/5*0.2;
printf("停车费用为每5分钟0.2元,您需要交%.2lf元\n",charge);
gar[i][j].state=1;
returncharge;
}
}
}
printf("没有你输入的车号.\n\n");
returncharge;
}
/*是否查看停车场的收入*/
voidIsPrintTotal(doubletotal)
{
charch;
printf("是否查看停车场总计?
Y/N");
scanf("%c",&ch);
printf("\n");
while(ch!
='y'&&ch!
='Y'&&ch!
='n'&&ch!
='N')
{
printf("请输入Y或N");
scanf("%c",&ch);
printf("\n");
}
switch(ch)
{
case'Y':
case'y':
printf("停车总计为%.2lf元\n",total);
break;
case'N':
case'n':
break;
}
}
(四)停车场管理系统信息查询功能浏览information()
分析:
利用循环语句依次检查停车场的停车情况,找出已满的车位,并输出该车所停的层数,车位数,车牌号,以及所停的时间。
流程图如图4
图4
voidInformation(structGaragegar[][6])
{
inti,j;
printf("车牌号层号车位号停车时间\n");
for(i=0;i<2;i++)
{
for(j=0;j<6;j++)
{
if(gar[i][j].state==2)
printf("%s%8d%8d%8d\n",gar[i][j].number,gar[i][j].lay,gar[i][j].garagenum,gar[i][j].time);
}
}
printf("\n");
}
四、系统测试
(一)测试main_instruction函数
图5main_instruction函数
(二)测试main_park函数
图6main_park函数
(三)测试main_leave函数
图7main_leave函数
(四)测试main_information函数
图7main_information函数
五、总结
通过这次实习,我对小程序的编写有了一个初步的掌握,对很多的函数有了新的认识,也学会了运用多种函数,也对编写软件的基本过程和基本方法有了一个大致的了解。
编写这个软件的过程中,函数的多次调用使我对函数调用这块知识有了更深的了解。
在这次作业中,我受益匪浅。
在软件设计过程中我遇到了许多困难。
在一次次的函数调用失败后,我对自己没有了信心,想过抄袭,也想过放弃。
这道题目,只有我一个人在做,没有同伴和我一起讨论,解决疑难,自己的基础又很薄弱,突然有种手足无措的感觉。
尤其是题目的要求,我没办法达到。
但几天下来,看到其他同学在那么努力地设计着他们的题目,我也选择了继续挑战自己。
抽时间对函数调用,数组,循环等几个知识点进行了复习,然后努力加工自己的设计。
经过好几天的努力,我总算完成了自己的设计。
通过这次程序设计,我发现自己对C语言学的是一塌糊涂,今后,我会努力弥补自己的知识漏洞缺陷,努力学习来巩固完善自己的知识面。
六、附件(代码,测试图)
#include
#include
#include
#defineSIZE8
structGarage
{
charnumber[8];/*车牌号*/
intlay;/*层号*/
intgaragenum;/*车位号*/
inttime;/*停车时间*/
intstate;/*1表示该车位空,2表示车位有车*/
}Gar[SIZE];
voidsave()
{
FILE*fp;
inti;
if((fp=fopen("gar.dat","rb"))==NULL)
{
printf("文件不能打开\n");
return;
}
for(i=0;i if(fwrite(&Gar[i],sizeof(structGarage),1,fp)! =1) printf("文件写入错误\n"); fclose(fp); } voidInstruction() {printf("-------------------------------------------\n"); printf("<<<<<<<<停车场管理系统设计>>>>>>>>\n"); printf("-------------------------------------------\n"); printf("*******************************\n"); printf("停车场管理系统使用说明: \n"); printf("*******************************\n"); printf("停车请输入1,取车请输入2\n"); printf("查看全部车辆的信息请输入3,退出请输入0\n"); }/*初始化停车信息,初始状态为第一层已停5辆车,停车时间依次为25,20,15,10,5*/ voidInit(structGaragegar[][6]) { inti,j;/*给所有的层号,车位号初始化,停车时间初始化为0,停车位全初始化为空*/ for(i=0;i<2;i++) { for(j=0;j<6;j++) { gar[i][j].lay=i+1; gar[i][j].garagenum=j+i; gar[i][j].time=0; gar[i][j].state=1; } } /*第一层的1~4号位停车*/ for(i=0;i<4;i++) { gar[0][i].state=0;} strcpy(gar[0][0].number,"#444");/*初始化的车牌号*/ gar[0][0].time=25; strcpy(gar[0][1].number,"#000"); gar[0][0].time=20; strcpy(gar[0][2].number,"#111"); gar[0][1].time=15; strcpy(gar[0][3].number,"#222"); gar[0][2].time=10; strcpy(gar[0][4].number,"#333"); gar[0][3].time=5;} /*新停入车后将在此之前的所有车的停车时间加5*/ voidAddTime(structGaragegar[][6]) { inti,j; for(i=0;i<2;i++) {for(j=0;j<6;j++) {if(gar[i][j].state==2) {gar[i][j].time+=5; } } } } /*停车*/ voidpark(structGaragegar[][6]) {inti; charnum[8]; printf("请输入车牌号: "); scanf("%s",num); for(i=0;i<6;i++) {if(gar[0][i].state==1) {printf("第一层第%d号位空着,请在此处停车\n",i+1); strcpy(gar[0][i].number,num); printf("车牌号: %s层号: 1车位号: %d\n",num,i+1); AddTime(gar);/*在此之前的所有车的停车时间加5*/ gar[0][i].state=2;/*该车位已经停车*/ gar[0][i].time=5;/*将时间设为5*/ return; } } printf("第一层已经没有空车位\n"); for(i=0;i<6;i++) { if(gar[1][i].state==1) {printf("第二层第%d号车位空着,请在此处停车\n",i+1); strcpy(gar[1][i].number,num); printf("车牌号: %s层号: 1车位号: %d\n",num,i+1); AddTime(gar);/*在此之前的所有车的停车时间加5*/ gar[1][i].state=2;/*该车位已经停车*/ gar[1][i].time=5;/*将时间设为5*/ return; } } printf("对不起,12层都没有空车位,您现在不能在此处停车\n"); } /*查看所有的停车信息*/ voidInformation(structGaragegar[][6]) { inti,j; printf("车牌号层号车位号停车时间\n"); for(i=0;i<2;i++) { for(j=0;j<6;j++) { if(gar[i][j].state==2) printf("%s%8d%8d%8d\n",gar[i][j].number,gar[i][j].lay,gar[i][j].garagenum,gar[i][j].time); } } printf("\n"); } /*取车*/ doubleLeave(structGaragegar[2][6]) { inti,j; charnum[8]; doublecharge=0; printf("请输入要取的车牌号: "); scanf("%s",num); for(i=0;i<2;i++) { for(j=0;j<6;j++) {if(! strcmp(gar[i][j].number,num)) {printf("您在%d层%d车位停车%d分钟\n",gar[i][j].lay,gar[i][j].garagenum,gar[i][j].time); charge=gar[i][j].time/5*0.2; printf("停车费用为每5分钟0.2元,您需要交%.2lf元\n",charge); gar[i][j].state=1; returncharge; } } } printf("没有你输入的车号.\n\n"); returncharge; } /*是否查看停车场的收入*/ voidIsPrintTotal(doubletotal) { charch; printf("是否查看停车场总计? Y/N"); scanf("%c",&ch); printf("\n"); while(ch! ='y'&&ch! ='Y'&&ch! ='n'&&ch! ='N') { printf("请输入Y或N"); scanf("%c",&ch); printf("\n"); } switch(ch) { case'Y': case'y': printf("停车总计为%.2lf元\n",total); break; case'N': case'n': break; } } main() { intoperate; doubletotal=0; structGaragegar[2][6]; Init(gar);/*初始化第一层已经停的4辆车*/ while (1) {Instruction(); printf("请输入要进行的操作: "); scanf("%d",&operate); while(operate<0||operate>3) { printf("输入的数不合法,请重新输入: "); scanf("%d",&operate); } switch(operate) { case1: park(gar); break; case2: total+=Leave(gar); IsPrintTotal(total); break; case3: Information(gar); break; case0: exit(0); } } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统 汇总