21停车场管理系统.docx

上传人:b****5 文档编号:8047038 上传时间:2023-01-28 格式:DOCX 页数:13 大小:161.51KB
下载 相关 举报
21停车场管理系统.docx_第1页
第1页 / 共13页
21停车场管理系统.docx_第2页
第2页 / 共13页
21停车场管理系统.docx_第3页
第3页 / 共13页
21停车场管理系统.docx_第4页
第4页 / 共13页
21停车场管理系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

21停车场管理系统.docx

《21停车场管理系统.docx》由会员分享,可在线阅读,更多相关《21停车场管理系统.docx(13页珍藏版)》请在冰豆网上搜索。

21停车场管理系统.docx

21停车场管理系统

C语言课程设计

 

题目停车场管理系统

学生姓名曹鑫鑫

学号

专业勘查技术与工程(钻探方向)

学校中国地质大学(武汉)

1设计内容与设计要求

系统功能简介

⏹系统有简洁明了的菜单界面,用户可以通过输入简单的选项来完成相应的工作。

⏹用户可以选择1,2,3,4分别进行相应的操作,统一查看,统一输出。

题目如下:

(1)有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层.(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信

(2)假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1—4,停车时间依次为20,15,10,5.即先将这四辆车的信息存入文件”car.dat”中(数组的对应元素也要进行赋值)

(3)停车操作:

当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的停车时间加5.

(4)收费管理(取车):

当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.

(5)输出停车场中全部车辆的信息.

(6)退出系统.

2.系统的运行流程:

系统初始运行时,会显示如图4-1所示的输入界面,用户可以根据提示,进行相应的选择,来完成系统提供的各种功能。

图4-1输入界面

根据系统提示提示用户选择相应的数字键,按ENTER键后进入相应的功能菜单。

如下图4-2是输入1,显示停车以及所需用户的车牌号输入后按ENTER键进入所要放车的停车位菜单,其中包含了系统分配的层号和一个车位号。

下面即为此程序执行此功能时的截图:

 

 

4.运行设计

首先打开软件,根据给出的信息输入相应的功能模块数字,输入完毕后按“ENTER”键进入,再根据提示执行相应的操作,程序使用完毕后输入数字0退出程序。

1、车辆信息

车辆信息包括车牌号、层号、车位号、停车时间,将这四类数据组合成结构体car,以便于引用。

【程序】

structGarage

{

charcarnum[8];

intlay;

intgaragenum;

inttime;

2、车位信息

由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park[2][6]表示,注意停车场中已经停放了4辆车。

【程序】

for(i=0;i<4;i++)

{gar[0][i].isempty=0;}

strcpy(gar[0][0].carnum,"1234");/*初始化的车牌号*/

gar[0][0].time=20;

strcpy(gar[0][1].carnum,"3792");

gar[0][1].time=15;

strcpy(gar[0][2].carnum,"5895");

gar[0][2].time=10;

strcpy(gar[0][3].carnum,"4494");

gar[0][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");

scanf(" %c",&a);

4、各功能模块设计

(1)停车模块

【需求分析】

题目要求必须在一层停满的情况下才能在第二层停车,因此可以利用for语句保证先将第一层停满,设置停车时间为5分钟并将原有车辆的停车时间加5分钟。

进行分析时先打开文件检查停车车牌号,若打开文件操作出错则提示不能执行。

【程序】 if(a=='1')

{inti;charnum[8];

printf("请输入车牌号:

");

scanf("%s",num);

for(i=0;i<6;i++)

{if(gar[0][i].isempty==1)

{printf("第一层第%d号车位空着,请在此处停车\n",i+1);

strcpy(gar[0][i].carnum,num);

printf("车牌号:

%s层号:

1车位号:

%d\n",num,i+1);

AddTime(gar);/*在此之前停车的所有汽车时间加5*/

gar[0][i].isempty=0;/*表示该车为已经停车*/

gar[0][i].time=5;/*将时间设为5*/

return;

}

}

printf("第一层已经没有空车位\n");

for(i=0;i<6;i++)

{

if(gar[1][i].isempty==1)

{printf("第二层第%d号车位空着,请在此处停车\n",i+1);

strcpy(gar[1][i].carnum,num);

printf("车牌号:

%s层号:

2车位号:

%d\n",num,i+1);

AddTime(gar);/*在此之前停车的所有汽车时间加5*/

gar[1][i].isempty=0;/*表示该车位已经停车*/

gar[1][i].time=5;/*将时间设为5*/

return;

}

}

printf("对不起,12层都没有空车位,您现在不能在此停车\n");

}

}

(2)取车模块

【需求分析】

首先输入所取车辆的车牌号,若与车库中所停车辆相符,则取车成功。

之后根据用户的选择判断是否需要显示停车费用,此功能可用if条件语句实现。

若需要,按每5分钟0.2元算出金额并显示出来。

取车后须将该车停车纪录从文件中删除。

若输入的车牌号与车库中所停车辆不符,则应给予提示。

【程序】

 if(a=='2'){

{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].carnum,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].isempty=1;

returncharge;

}

}

}

printf("没有您输入的车号。

\n\n");

returncharge;

}

/*是否查看总收入*/

voidIsPrintTotal(doubletotal)

{

charch;

printf("是否查看停车收费总计?

Y/N");

scanf("%c",&ch);

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;

}

(3)车辆信息浏览模块

【需求分析】

该模块的功能是显示所有学生的纪录信息。

其流程图如图3-3所示。

图3-3 车辆信息浏览模块流程图

【程序】

elseif(a=='3')

voidInformation(structGaragegar[][6])

{inti,j;

printf("车牌号层号车位号停车时间\n");

for(i=0;i<2;i++){for(j=0;j<6;j++)

{if(gar[i][j].isempty==0)

printf("%s%8d%8d%8d\n",gar[i][j].carnum,gar[i][j].lay,gar[i][j].garagenum,gar[i][j].time);

}printf("\n");

(4)退出模块

【程序】

else if(a=='4')break;

附件:

源程序清单

#include

structGarage

{

charcarnum[8];

intlay;

intgaragenum;

inttime;

intisempty;/*该车位是否为空,1表示空,0表示有车*/

};

voidInstruction()

{printf("停车场管理系统菜单\n");

printf("停车请输入1

取车请输入2

查看全部车辆的信息请输入3

退出请输入0

\n");

}

voidInit(structGaragegar[][6])

{

inti,j;

for(i=0;i<2;i++)

{for(j=0;j<6;j++)

{gar[i][j].lay=i+1;

gar[i][j].garagenum=j+1;

gar[i][j].time=0;

gar[i][j].isempty=1;

}

}

for(i=0;i<4;i++)

{gar[0][i].isempty=0;}

strcpy(gar[0][0].carnum,"1234");/*初始化的车牌号*/

gar[0][0].time=20;

strcpy(gar[0][1].carnum,"3792");

gar[0][1].time=15;

strcpy(gar[0][2].carnum,"5895");

gar[0][2].time=10;

strcpy(gar[0][3].carnum,"4494");

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].isempty==0)

{gar[i][j].time+=5;

}

}

}

}

/*停车*/

 if(a=='1')

{inti;charnum[8];

printf("请输入车牌号:

");

scanf("%s",num);

for(i=0;i<6;i++)

{if(gar[0][i].isempty==1)

{printf("第一层第%d号车位空着,请在此处停车\n",i+1);

strcpy(gar[0][i].carnum,num);

printf("车牌号:

%s层号:

1车位号:

%d\n",num,i+1);

AddTime(gar);/*在此之前停车的所有汽车时间加5*/

gar[0][i].isempty=0;/*表示该车为已经停车*/

gar[0][i].time=5;/*将时间设为5*/

return;

}

}

printf("第一层已经没有空车位\n");

for(i=0;i<6;i++)

{

if(gar[1][i].isempty==1)

{printf("第二层第%d号车位空着,请在此处停车\n",i+1);

strcpy(gar[1][i].carnum,num);

printf("车牌号:

%s层号:

2车位号:

%d\n",num,i+1);

AddTime(gar);/*在此之前停车的所有汽车时间加5*/

gar[1][i].isempty=0;/*表示该车位已经停车*/

gar[1][i].time=5;/*将时间设为5*/

return;

}

}

printf("对不起,12层都没有空车位,您现在不能在此停车\n");

}

/*取车*/

 if(a=='2'){

{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].carnum,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].isempty=1;

returncharge;

}

}

}

printf("没有您输入的车号。

\n\n");

returncharge;

}

/*是否查看总收入*/

voidIsPrintTotal(doubletotal)

{

charch;

printf("是否查看停车收费总计?

Y/N");

scanf("%c",&ch);

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;

}

 

/*查看所有车辆信息*/

 elseif(a=='3')

voidInformation(structGaragegar[][6])

{inti,j;

printf("车牌号层号车位号停车时间\n");

for(i=0;i<2;i++){for(j=0;j<6;j++)

{if(gar[i][j].isempty==0)

printf("%s%8d%8d%8d\n",gar[i][j].carnum,gar[i][j].lay,gar[i][j].garagenum,gar[i][j].time);

}printf("\n");

else if(a=='4')break;

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1