《C语言课程设计停车场管理系统2.docx》由会员分享,可在线阅读,更多相关《C语言课程设计停车场管理系统2.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中国地质大学中国地质大学(武汉武汉)设计名称:设计名称:班级序号:班级序号:姓姓名:名:学学号:号:指导老师:指导老师:-2-C C 语言程序设计报告语言程序设计报告前言前言设计目的设计目的:通过设计一个停车场管理系统,进一步消化和巩固已学过的 C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用 C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具,同时也掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。设计内容设计内容题目要求:题目要求:27 题:停车场管理 2内容内容:1 有一个两层的停车场
2、,每层有 6 个车位,当第一层车位停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。2 假设停车场初始状态为第一层已经有四辆车,其车位号依次为 1-4,停车时间依次为 20,15,10,5。即先将这四辆车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)3 停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为 5,最后将新停入的汽车的信息添加文件“car.dat”中,并将
3、在此之前的停车时间加 5。(此题简化时间的处理:当有一辆车进入时才对别的车加时间 5 分钟)4 收费管理(取车):当有车开走时,输入其车牌号,先按其停车时间计算费用,每 5 分钟 2 毛钱。同时从文件“car.dat”k 删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组清零)。按用户的选择来判断是否要输出 停车收费的总计。5 输出 停车场中全部车辆的信息。6 退出系统。需求分析需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车开走时要删除文件-3-中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。总体设计总体设计整个管理系统可设计为停车模块、取车模
4、块、车辆信息浏览模块。停车场管理系统停车模块车辆信息浏览模块取车模块详细设计详细设计首先定义首先定义包含与标准库有关的变量定义和宏定义和文件包含所用的文件包含与标准库有关的变量定义和宏定义和文件包含所用的文件#include#include#include#include#include 然后用然后用一个二维数组来表示一个二维数组来表示一个一个停车场的位置,每个数组元素存放一个车牌号停车场的位置,每个数组元素存放一个车牌号int cars124=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,
5、2,0,0,2,3,0,0,2,4,0,0,2,5,0,0,2,6,0;/*二维数组代表停车信息*/后定义一个文件夹来储存所停车的信息,开始有四辆车在车库后定义一个文件夹来储存所停车的信息,开始有四辆车在车库voidsave()FILE*fp;int i,j;if(fp=fopen(car.dat,w)=NULL)printf(cannot open filen);return;for(i=0;i12;i+)for(j=0;j4;j+)if(fwrite(cars,2,1,fp)!=1)-4-printf(file write errorn);fclose(fp);getchar();一一.停
6、车模块停车模块开始输入车牌号车牌号在1000 至 9999 之间?存入停车系统结束Nvoid car_park(void)/*停车操作*/int x,i,j;printf(n-欢迎您的光临!-n);printf(nn 请输入车牌号:nn);车牌号要在车牌号要在 10001000 至至 99999999 之间,输入错误的车牌号将返回主菜单之间,输入错误的车牌号将返回主菜单for(i=0;i12;i+)if(carsi0=x|x9999)break;if(i!=12)printf(n 错误的号码或已经停过了!n);getchar();/*如果此车号以在,打印此车已停*/else if(i=12&x
7、=1000&x=9999)for(i=0;i12;i+)if(carsi0=0)carsi0=x;save();printf(nn 成功nn);为车选择一个停车的位置,包括层号与位置号为车选择一个停车的位置,包括层号与位置号车位层号位置序号-5-printf(层=%d,车位=%dn,carsi1,carsi2);printf(nnnTwo times Enter to end.);break;/*如果此车号不在,则进行停车操作*/for(i=0;i12;i+)if(carsi0!=0)carsi3+=5;/*所有停车时间+5*/save();/*保存以上信息到文件*/二车辆信息浏览模块二车辆信
8、息浏览模块把停车信息存入文件中把停车信息存入文件中车辆信息存入文件车辆信息存入文件void printfdata()/*停车信息*/int i,j;FILE*fp;fp=fopen(car.dat,r);/*打开文件car.dat*/printf(n Number Floor Position Timen);for(i=0;i12;i+)for(j=0;j4;j+)fread(cars,2,1,fp);/*读文件*/printf(%6d,carsij);printf(n);fclose(fp);/*关闭文件car.dat*/void save();void car_park(void);voi
9、d car_get(void);void printfdata();char readcommand();void initialization();插入主函数插入主函数int main()char c;printf(按enter开始n);while(1)initialization();/*初始化界面*/打开文件打开文件关闭文件关闭文件-6-c=readcommand();/*读取停车场状况*/system(cls);请选择所需要的操作,停车,取车,计时,请选择所需要的操作,停车,取车,计时,选择以下操作选择以下操作“P”停车操作停车操作“g”取车操作取车操作“d”计算停车时间计算停车时间s
10、witch(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(nn please press Enter to continue.n);scanf(%c,&c);break;/*停车信息*/case D:printfdata();/*停车信息*/printf(nn rreupklfdkplease press Enter to conti
11、nue.n);scanf(%c,&c);break;case e:printf(nnnnPress Enter to continue.);exit(0);break;case E:printf(nnnnPress Enter to continue.);exit(0);break;default:printf(ERROR!Press Enter to continue.);getchar();break;/*/void initialization()/*初始函数*/int i;getchar();printf(n*n);-7-printf(1.停车-p2.取车-g3.停车时间-d4.退出-
12、E);printf(nn*n);char readcommand()/*选择函数*/char c;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;return c;三三.取车操作取车操作-8-开始输入车牌号车牌号是车库已存的牌号计算时间和停车费删除结束N车牌号在1000 至 9999 之间?Nvoid car_get(void)/*取车操作*/int i,y;float paid;int a;printf(n取车nnn输
13、入车牌号:nnnn);printf(n车牌号在 1000 至 9999 之间n错误的号码nn);scanf(%d,&y);/*输入要取车的车牌号*/for(i=0;i12;i+)for(i=0;i12;i+)if(carsi0=y)取车后车牌号清零取车后车牌号清零carsi0=0;paid=0.2*carsi3/5;计算停车费计算停车费printf(n 计费(1-是2 或任意键-否)nnn);scanf(%d,&a);switch(a)-9-case 1:printf(nnn 价格是%8.2fyuann,paid);/*打印停车费用*/carsi3=0;/*时间清零*/save();break
14、;case 2:printf(欢迎您下次光临);carsi3=0;/*时间清零*/save();break;default:break;else;break;if(i=12)printf(n 此车不在停车场!n);/*如果此车不在,打印号码不在*/运行与测试报告:运行与测试报告:一一.停车操作,请选择操作种类:停车操作,请选择操作种类:-10-二二.输入停车信息,寻找车位输入停车信息,寻找车位三三.取车操作,计算价格取车操作,计算价格-11-后记后记设计感想:众所周知,C 语言程序是一种最基本的应用程序,只有熟练的掌握和运用才能便于以后的编程。通过此次程序设计实习,我成功地完成了课堂上老师所要
15、求的内容,更加理解和懂得运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的的基本方法,学会利用流程图表示算法,进一步掌握和提高利用 C 语言进行程序设计的能力。在编程过程中我们需要多练习,多思考,要有耐心。在进行调试程序检错的时候,要从头开始,不要放过每一个小的环节。在实习中我也遇到了好多的问题,通过老师的细心讲解以及和同学们在一起讨论,不仅解决了许多问题,而且还学到了许多知识。-12-附录:附录:源程序如下:源程序如下:#include/*包含了与标准 I/O 库有关的变量定义和宏定义*/#include/*文件包含所用的文件*/#include#
16、include#include int cars124=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;int i,j;if(fp=fopen(car.dat,w)=NULL)printf(cannot open filen);return;for(i=0;i12;i+)for(j=0;j4;j+)if(fwrite(cars,2,1,fp)!=1)print
17、f(file write errorn);fclose(fp);getchar();void car_park(void)/*停车操作*/int x,i,j;printf(n-欢迎您的光临!-n);printf(nn 请输入车牌号:nn);printf(n 注意:车牌号要在 1000 至 9999 之间n 输入错误的车牌号将返回菜单nn);scanf(%d,&x);/*输入要停车的车牌号*/for(i=0;i12;i+)if(carsi0=x|x9999)break;if(i!=12)printf(n 错误的号码或已经停过了!n);getchar();/*如果此车号以在,打印此车已停*/-13
18、-else if(i=12&x=1000&x=9999)for(i=0;i12;i+)if(carsi0=0)carsi0=x;save();printf(nn 成功nn);printf(层=%d,车位=%dn,carsi1,carsi2);printf(nnnTwo times Enter to end.);break;/*如果此车号不在,则进行停车操作*/for(i=0;i12;i+)if(carsi0!=0)carsi3+=5;/*所有停车时间+5*/save();/*保存以上信息到文件*/void car_get(void)/*取车操作*/int i,y;float paid;int
19、a;printf(n取车nnn输入车牌号:nnnn);printf(n车牌号在 1000 至 9999 之间n错误的号码nn);scanf(%d,&y);/*输入要取车的车牌号*/for(i=0;i12;i+)for(i=0;i12;i+)if(carsi0=y)carsi0=0;/*取车后车牌号清零*/paid=0.2*carsi3/5;/*计算停车费用*/printf(n 计费(1-是2 或任意键-否)nnn);scanf(%d,&a);switch(a)case 1:printf(nnn 价格是%8.2fyuann,paid);/*打印停车费用*/carsi3=0;/*时间清零*/sav
20、e();break;case 2:printf(欢迎您下次光临);carsi3=0;/*时间清零*/save();-14-break;default:break;else;break;if(i=12)printf(n 此车不在停车场!n);/*如果此车不在,打印号码不在*/void printfdata()/*停车信息*/int i,j;FILE*fp;fp=fopen(car.dat,r);/*打开文件car.dat*/printf(n Number Floor Position Timen);for(i=0;i12;i+)for(j=0;j4;j+)fread(cars,2,1,fp);/
21、*读文件*/printf(%6d,carsij);printf(n);fclose(fp);/*关闭文件car.dat*/void save();void car_park(void);void car_get(void);void printfdata();char readcommand();void initialization();int main()char c;printf(*停车场管理操作程序*n);printf(设计者:秦民凯专业:岩土工程学号:20081002763日期:2010/9/2n);printf(-n);printf(按enter开始n);while(1)-15-i
22、nitialization();/*初始化界面*/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(nn please press Enter to continue.n);scanf(%c,&c);break;/*停车信息*/case D:pri
23、ntfdata();/*停车信息*/printf(nn rreupklfdkplease press Enter to continue.n);scanf(%c,&c);break;case e:printf(nnnnPress Enter to continue.);exit(0);break;case E:printf(nnnnPress Enter to continue.);exit(0);break;default:printf(ERROR!Press Enter to continue.);getchar();break;/*/void initialization()/*初始函数*/int i;getchar();printf(n*n);printf(1.停车-p2.取车-g3.停车时间-d4.退出-E);printf(nn*n);char readcommand()/*选择函数*/char c;-16-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;return c;
限制150内