停车场管理.docx

上传人:b****2 文档编号:2201924 上传时间:2023-05-02 格式:DOCX 页数:13 大小:71.24KB
下载 相关 举报
停车场管理.docx_第1页
第1页 / 共13页
停车场管理.docx_第2页
第2页 / 共13页
停车场管理.docx_第3页
第3页 / 共13页
停车场管理.docx_第4页
第4页 / 共13页
停车场管理.docx_第5页
第5页 / 共13页
停车场管理.docx_第6页
第6页 / 共13页
停车场管理.docx_第7页
第7页 / 共13页
停车场管理.docx_第8页
第8页 / 共13页
停车场管理.docx_第9页
第9页 / 共13页
停车场管理.docx_第10页
第10页 / 共13页
停车场管理.docx_第11页
第11页 / 共13页
停车场管理.docx_第12页
第12页 / 共13页
停车场管理.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

停车场管理.docx

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

停车场管理.docx

停车场管理

中国地质大学

C语言课程设计报告文档

 

课程名称c语言课程设计

教师姓名张冬梅

本科生姓名徐帅

本科生学号20091003766

本科生专业网络工程

所在院系计算机学院

日期2010年6月20日

 

第27题课程设计:

停车场管理

Part1;

【要求】

(1)有一个两成的停车场,每层有6个车位,当地一层车停满后才允许使用第二层,每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟算。

(2)假设停车场的初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5,即先将这四辆车的信息存入文件car.dat中

(3)停车操作:

当一辆车进入停车场时,先输入其车牌号,在为他分配一个车位号和层号,停车时间设为5,最后将新停近的汽车信息加到文件中,并将在此之前的所有车的停车时间加5。

(4)收费管理:

当有车离开时,输入其车牌号,先按其停车时间收费,每5分钟收费0.2元,同时从文件car.dat中删除其信息,并将该车为设置为可停车状态,按用户的选择来判断是否要输出停车收费总计。

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

(6)退出系统

【提示】

(1)需求分析:

车辆信息要用文件存储,提供文件的输出输入操作,当车离开时要删除文件中该车的信息,因而要提供文件删除操作,另外还要用键盘式菜单功能选择。

(2)总体设计:

整个管理系统可设计为停车模块,取车模块,车辆信息浏览模块。

Part2:

流程图:

Part3

设计思路

(1)先设计一个结构体函数structGarage,存储车牌号,层号,车位号,停车时间等信息。

(2)初始化结构体中的变量,满足题目设置的条件,然后自定义函数实现停车,取车,查看停车信息,查看收费的功能,

(3)最后在主函数中调用这些函数,实现最终的功能,完成设计。

Part4:

程序

#include

#include

#include

structGarage

{

charcarnum[8];/*车牌号*/

intlay;//层号

intgaragenum;/*车位号*/

inttime;/*停车时间*/

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

};

voidInstruction()

{printf("停车场管理系统使用说明\n");

printf("停车请输入1取车请输入2\n");

printf("查看全部车辆的信息请输入3退出请输入0\n");

}

/*初始化停车场信息,初始状态为第一层已经停有4辆车,*其车位号依次为1—4,停车时间依次为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+1;

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

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

}

}

/*第一层的1-4号车位停车*/

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

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

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

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

strcpy(gar[0][1].carnum,

"1111");gar[0][1].time=15;

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

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

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

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;

}

}

}

}

/*停车*/

voidPark(structGaragegar[][6])

{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");

}

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

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");

}

/*取车*/

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].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;

}

}

main()

{intchoice;

doubletotal=0;

structGaragegar[2][6];

Init(gar);//初始化第一层已经停有的4辆车

while

(1){Instruction();

printf("请输入要进行的操作:

");

scanf("%d",&choice);

while(choice<0||choice>3)

{

printf("输入的不合法,请输入0-3选择:

");

scanf("%d",&choice);

}

switch(choice)

{

case1:

Park(gar);

break;

case2:

total+=Leave(gar);

IsPrintTotal(total);

break;

case3:

Information(gar);

break;

case0:

exit(0);

}

}

return0;

}

程序设计小结:

大学里接触到的第一门专业课就是c语言,上课时也总是很兴奋,认真的听完了张老师的一个学期的课程,加上自己提前的预习,感觉还不错。

但是我在课程中间时开始在校外上课,精力分散开来,也就没有继续把大量的时间发费在c语言上,导致最后的成绩不是太好,自己的编程能力也没有得到提升,但是我已经尽力了。

通过对这一课题的设计和实现,我对MicosoftVisualC++环境进行了深一步的了解,并逐渐开始熟练MicosoftVisualC++环境的工作界面,以及对每一个快捷键的熟悉。

并认识到,熟悉这些快捷键,极为便捷编写程序,但是还要更加熟悉。

编程时要养成良好的风格,注意相同内容的缩进和对齐。

这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。

通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至函数的自定义与调用和函数间的空行数字都有明确规定,良好的编写习惯,有助于代码的移植和纠错。

这个程序设计主要涉及到了C语言中的结构体、循环及函数调用操作等内容,只有充分掌握了C语言中的结构体、循环及调用操作等内容,才有可能组织好这些代码,使之符合运算逻辑,得到理想的结果。

善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。

通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,对我而言,知识上的收获重要,精神上的丰收是可喜的。

挫折是一份财富,经历是一份拥有。

这次实际操作必将成为我人生旅途上一个非常美好的回忆!

回顾起此次课程设计,至今仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,循环……通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍。

 同时,在老师的身上我学得到很多实用的知识,在此表示感谢!

同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2