您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 停车场管理系统的设计C语言课程设计
学号《高级语言程序设计》课程设计报告题目:停车场管理系统的设计专业:计算机科学与技术班级:13级(3)班姓名:指导教师:陈茅成绩:计算机与信息工程系二0一五年月日2014-2015学年第二学期目录1、设计内容及要求2、整体设计停车模块车辆信息浏览模块取车模块3、运行与测试报告4、设计感想5、源程序代码设计目的:通过设计一个停车场管理系统,进一步消化和巩固已学过的C语言程序设计基础理论,学习和实践程序设计的各种技能,利用C语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具,同时也掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。设计内容:1.有一个两层的停车场,每层有6个车位,当第一层车位停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。2.假设停车场初始状态为第二层已经有四辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。即先将这四辆车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)3.停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件“car.dat”中,并将在此之前的停车时间加5。(此题简化时间的处理:当有一辆车进入时才对别的车加时间5分钟)4.收费管理(取车):当有车开走时,输入其车牌号,先按其停车时间计算费用,每5分钟2毛钱。同时从文件“car.dat”k删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组清零)。按用户的选择来判断是否要输出停车收费的总计。5.输出停车场中全部车辆的信息。6.退出系统。需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车开走时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。总体设计整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块。停车场管理系统停车模块车辆信息浏览模块取车模块详细设计首先定义包含与标准库有关的变量定义和宏定义和文件包含所用的文件#includestdio.h#includestdlib.h#includeconio.h#includeio.h#includestdlib.h然后用一个二维数组来表示一个停车场的位置,每个数组元素存放一个车牌号intcars[12][4]={{1234,1,1,20},{2345,1,2,15},{3456,1,3,10},{4567,1,4,5},{0,1,5,0},{0,1,6,0},{0,2,1,0},{0,2,2,0},{0,2,3,0},{0,2,4,0},{0,2,5,0},{0,2,6,0}};后定义一个文件夹来储存所停车的信息,开始有四辆车在车库voidsave(){FILE*fp;inti,j;if((fp=fopen(car.dat,w))==NULL){printf(cannotopenfile\n);return;}for(i=0;i12;i++)for(j=0;j4;j++)if(fwrite(cars,2,1,fp)!=1)printf(filewriteerror\n);fclose(fp);getchar();一、停车模块开始输入车牌号车牌号在1000到999之间存入停车系统结束N一.停车模块voidcar_park(void){intx,i,j;printf(\n^-^欢迎您的光临!^-^\n);printf(\n\n请输入车牌号:\n\n);车牌号要在1000至9999之间,输入错误的车牌号将返回主菜单for(i=0;i12;i++)if(cars[i][0]==x||x1000||x9999)break;if(i!=12){printf(\n错误的号码或已经停过了!!!\n);getchar();}elseif(i==12&&x=1000&&x=9999){for(i=0;i12;i++)if(cars[i][0]==0){cars[i][0]=x;save();printf(\n\n成功\n\n);为车选择一个停车的位置,包括层号与位置号printf(层=%d,车位=%d\n,cars[i][1],cars[i][2]);printf(\n\n\nTwotimes'Enter'toend...);break;}for(i=0;i12;i++)if(cars[i][0]!=0)cars[i][3]+=5;save();二、车辆信息浏览模块把停车信息存入文件中打开文件关闭文件车辆信息存入文件车位层号位置序号voidprintfdata(){inti,j;FILE*fp;fp=fopen(car.dat,r);printf(\nNumberFloorPositionTime\n);for(i=0;i12;i++){for(j=0;j4;j++){fread(cars,2,1,fp);printf(%6d,cars[i][j]);}printf(\n);}fclose(fp);}voidsave();voidcar_park(void);voidcar_get(void);voidprintfdata();charreadcommand();voidinitialization();插入主函数intmain(){charc;printf(按'enter'开始\n);while(1){initialization();c=readcommand();system(cls);请选择所需要的操作,停车,取车,计时switch(c){case'p':car_park();break;case'P':car_park();break;case'g':car_get();break;case'G':car_get();break;case'd':printfdata();printf(\n\npleasepress'Enter'tocontinue....\n);scanf(%c,&c);break;case'D':printfdata();printf(\n\nrreupklfdkpleasepress'Enter'tocontinue....\n);scanf(%c,&c);break;选择以下操作“P”停车操作“g”取车操作“d”计算停车时间case'e':printf(\n\n\n\nPress'Enter'tocontinue...);exit(0);break;case'E':printf(\n\n\n\nPress'Enter'tocontinue...);exit(0);break;default:printf(ERROR!Press'Enter'tocontinue...);getchar();break;}}}voidinitialization(){inti;getchar();printf(\n******************************************************\n);printf(1.停车--p2.取车--g3.停车时间--d4.退出--E);printf(\n\n****************************************************\n);}charreadcommand(){Charc;while((c!='p')&&(c!='P')&&(c!='g')&&(c!='G')&&(c!='d')&&(c!='D')&&(c!='e')&&(c!='E')){printf(输入p,g,d,e选择!!\n);c=getchar();printf(\n);break;}returnc;}三.取车操作voidcar_get(void){inti,y;floatpaid;inta;printf(\n取车\n\n\n输入车牌号:\n\n\n\n);printf(\n车牌号在1000至9999之间\n错误的号码\n\n);scanf(%d,&y);for(i=0;i12;i++){for(i=0;i12;i++)if(cars[i][0]==y)开始输入车牌号车牌号在1000到999之间车牌号是车库已存的牌号计算时间和停车费删除结束NN{取车后车牌号清零cars[i][0]=0;paid=0.2*cars[i][3]/5;计算停车费printf(\n计费(1--是2或任意键--否)\n\n\n);scanf(%d,&a);{switch(a){case1:printf(\n\n\n价格是%8.2fyuan\n,paid);cars[i][3]=0;save();break;case2:printf(欢迎您下次光临);cars[i][3]=0;save();break;default:break;}}}else;break;}if(i==12)printf(\n此车不在停车场!!!\n);}运行与测试报告设计感想:众所周知,C语言程序是一种最基本的应用程序,只有熟练的掌握和运用才能便于以后的编程。通过此次程序设计实习,我成功地完成了课堂上老师所要求的内容,更加理解和懂得运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。在编程过程中我们需要多练习,多思考,要有耐心。在进行调试程序检错的时候,要从头开始,不要放过每一个小的环节。在实习中我也遇到了好多的问题,通过老师的细心讲解以及和同学们在一起讨论,不仅解决了许多问题,而且还学到了许多知识。源程序代码#includestdio.h//包含了与标准I/O库有关的变量定义和宏定义#includestdlib.h//文件包含所用的文件#includeconio.h#includeio.h#includestdlib.hintcars[12][4]={{1234,1,1,20},{2345,1,2,15},{3456,1,3,10},{4567,1,4,5},{0,1,5,0},{0,1,6,0},{0,2,1,0},{0,2,2,0},{0,2,3,0},{0,2,4,0},{0,2,5,0},{0,2,6,0}};//二维数组代表停车信息voidsave(){FILE*fp;inti,j;if((fp=fopen(car.dat,w))==NULL){printf(cannotopenfile\n);return;}for(i=0;i12;i++)for(j=0;j4;j++)if(fwrite(cars,2,1,fp)!=1)printf(filewriteerror\n);fclose(fp);getchar();}voidcar_park(void)//停车操作{intx,i,j;printf(\n^-^欢迎您的光临!^-^\n);printf(\n\n请输入车牌号:\n\n);printf(\n注意:车牌号要在1000至9999之间\n输入错误的车牌号将返回菜单\n\n);scanf(%d,&x);//输入要停车的停车号for(i=0;i12;i++)if(cars[i][0]==x||x1000||x9999)break;if(i!=12){printf(\n错误的号码或已经停过了!!!\n);getchar();//如果此车号已在,打印此车已停}elseif(i==12&&x=1000&&x=9999){for(i=0;i12;i++)if(cars[i][0]==0){cars[i][0]=x;save();printf(\n\n成功\n\
本文标题:停车场管理系统的设计C语言课程设计
链接地址:https://www.777doc.com/doc-2694988 .html