




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上C语言课程设计实习报告姓 名: 成帅安 学号: 院(系): 工程学院 专业: 土木工程 2016 年 6 月第一章 停车场管理系统1.1题目描述1、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为14,停车时间依次为20,15,10,5。即先将这四辆车的信息存入文件“car.dat中(数组的对应元素也要进行赋值)。3、停车操作:当一辆车进入停车场时,先输
2、入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件car.dat中,并将在此之前的所有车的停车时间加5。4、收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。(停车费用可设置一个变量进行保存),同时从文件car.dat中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。按用户的选择来判断是否要输出停车收费的总计。5、输出停车场中全部车辆的信息。6、退出系统。1.2算法设计1、需求分析:车辆信息用文件储存,提供文件的输入输出操作
3、; 当车离开时要删除文件中该车的信息,因而要提供文件的删除操作; 用键盘式菜单实现功能选择。2、总体设计思路:整个管理系统设计可设计为停车模块、取车模块、车辆浏览信息模块。另外车辆停放信息涉及到从car.dat中读取,保存和修改,为了方便起见和程序的模块化,我将文件的读入和保存单独设计为两个子程序。 整体模块图如下:输入车辆车牌号存车putCar停车模块saveAll将车辆信息存入car.dat输入车牌号码取车getCar取车模块删除车辆信息显示停车费用Main键盘式菜单showInfo车位信息Exit退出图1.整体模块图3、各子程序设计如下:(1)使用全局变量数组,用一个二维数组实现停车场车
4、位的信息, int cars124;(2) 通过读取car.dat的数据,对程序初始化。下图为car.dat的初始数据: 在init()通过一个for循环完成对car.dat中数据的读取。for(i=0;i12;i+) fscanf(fp,%d , &carsi0); fscanf(fp,%d , &carsi1); fscanf(fp,%d , &carsi2); fscanf(fp,%d , &carsi3); (3)设计一个子程序saveAll()用来保存停车场车位的信息到car.dat。用for循环再将处理后的数据存入文件中。for(i=0;i9999)&(temp)break;fla
5、g=0;printf(请重新输入五位数车牌号n :);while(!flag); 其次,读取的车牌号正确之后对标志量清零flag=0,代表没有没有找到车位,进行为车辆找停车位的操作,如下:flag=0; for(i=1;i13;i+) if(carsi0!=0)continue; carsi0=temp; flag=1; break; 通过for循环和continue语句找到没有停车的车位,即cari0不等于0,并将标志量flag赋值1,表示有车位,用break语句跳出循环。再用if语句处理flag=1的情况,即停车场车位已满无法停车。最后,对存入的车辆赋初始时间5,并且前面的已存入的车辆时间
6、都加5。语句如下:for(i=0;i9999)&(temp)for(i=0;i12;i+)if(carsi0=temp)carsi0=0; cost=0.2*carsi3/5;carsi3=0;flag=1;break;if(flag=0)printf(您输入的车牌号码有误,请重新输入。n);while(!flag); 第四步,有选择性的显示收费价格:printf(n 显示停车费用?是(1)/否(2);scanf(%d,&i);switch(i)case 1:printf(n车牌号 : %d 费用 %8.2f元n,temp,cost);case 2:default: break; 最后,调用s
7、aveAll()函数来保存数据到car.dat。(6)车辆信息浏览模块: 只需要显示有车的车位,可以用for循环语句再加上if判断语句来实现显示功能。printf(车牌号tt楼层t 车位 tt时间n);for(i=0;i12;i+)if(carsi0!=0)printf(%dtt %d tt%d tt %dn,carsi0,carsi1,carsi2,carsi3); (7)主函数:调用子函数init()初始化读取car.dat文件。用printf在屏幕上显示停车场的菜单。再用switch语句实现选择执行哪个模块语句。switch(a) case 1:putCar(); break;case
8、2:getCar();break;case 3:showInfo();break;case 4:exit(0); break; default:printf(您输入的信息有误!n); break;getchar();1.3程序设计及代码分析程序代码如下:#include #include #include#includeint park124; /*停车场使用数组*/void init() /*初始化*/char filename = car.dat;FILE *fp;int i;if(fp = fopen(filename,r) = NULL)printf(无法打开文件 car.datn);
9、return ;for(i=0;i12;i+) /*读数据文件内容到数组*/fscanf(fp,%d , &parki0);fscanf(fp,%d , &parki1);fscanf(fp,%d , &parki2);fscanf(fp,%d , &parki3);fclose(fp);void saveAll() /*保存数据到car.dat*/char filename = car.dat;FILE *fp;int i=0;if(fp = fopen(filename,w) = NULL)printf(无法打开文件 car.datn);return ;for(i=0;i9999)&(te
10、mp)break;flag=0;printf(您输入的车牌号格式有误);while(!flag);flag=0;for(i=0;i12;i+)if(parki0!=0)continue;parki0=temp;flag=1;break;if(flag=0) /*没有找到位置,停车场已满*/printf(很抱歉!车位已满:n);return ;for(i=0;i9999)&(temp)for(i=0;i12;i+)if(parki0=temp)parki0=0; /*删除该车位车辆信息*/cost=0.2*parki3/5;parki3=0;flag=1;break;if(flag=0)prin
11、tf(您输入的车牌号码有误,请重新输入。n);while(!flag);printf(n Printf out the cost?Yes(1)/No(2);scanf(%d,&i);switch(i)case 1:printf(n车牌号 : %d 费用 %8.2f元n,temp,cost);case 2:default: break;saveAll(); /*保存数据*/getchar();printf(取车成功!n按任意键回到主菜单.);void showInfo() /*显示当前停车场信息*/int i;printf(nn*当前停车场车位信息*n);printf(车牌号tt楼层t 车位 t
12、t时间n);for(i=0;i12;i+)if(parki0!=0)printf(%dtt %d tt%d tt %dn,parki0,parki1,parki2,parki3);getchar();printf(输入任意键返回主菜单.);int main()int a;init();do printf(nnn*n);printf(* 地大停车场管理系统 *n);printf(* 1.停车 *n);printf(* 2.取车 *n);printf(* 3.当前车位信息 *n);printf(* 4.退出 *n); printf(*n);printf(请输入选项:);scanf(%d,&a);
13、switch(a) /*菜单选择*/case 1:putCar(); break;case 2:getCar();break;case 3:showInfo();break;case 4:exit(0); break; default:printf(您输入的信息有误!n); break;getchar();while(1);return 0;1.4试验数据及运行效果截图1、 打开程序进入键盘式界面菜单,选择您所需要进行的操作选项:2、 车辆车位的初始化,查看当前车位信息如下:3、 停入车牌号为12345的车4、 查看当前车位信息:5、 取车并显示费用:6、 连续停入多辆车,当停第13辆车时:7、 查看当前车位信息:8、 输入4程序退出。1.5设计中出现的错误及解决方法错误:停车时车辆无法按照楼层和车位要求停放,查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论