《2022年C语言课设之停车场管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言课设之停车场管理系统 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言课程设计报告目录一、 题目要求,需求分析二、 总体设计思路与功能模块划分三、 程序设计四、 程序运行测试名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - 五、 总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。因此,计算机教育在全国备受重视,计算机知识与能力已成为21 世纪人才素质的基本要素之一。如今,高等教育的计算机教育发展十分迅速。十多年前,只有部分理工科
2、专业开设计算机课程。今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。 人们已经认识到, 计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言, 并可以熟练运用它,已成为当代大学生综合能力必要组成。计算机技术发展如此迅猛, 计算机应用如此广泛, 需要学习的东西愈来愈多,而我们的总学时是有限的。一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。根据我们专业的性质和要求,则应侧重于上机操作运用。为此,学校名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
3、- - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - 特意在本学期最后安排了32个学时的上机实习。现将一星期的实习内容及结果分析分列如下:一、题目要求 :27.停车场管理21、有一个两层的停车场,每层有 6 个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4 项,其中停车时间按分钟计算。2、假设停车场初始状态为第一层已经停有4 辆车,其车位号依次为14,停车时间依次为 20,15,10,5。即先将这四辆车的信息
4、存入文件“car.dat 中(数组的对应元素也要进行赋值)。3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为 5,最后将新停入的汽车的信息添加文件car.dat中,并将在此之前的所有车的停车时间加 5。4、收费管理(取车) :当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟 0.2 元。 (停车费用可设置一个变量进行保存),同时从文件 car.dat中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。按用户的选择来判断是否要输出停车收费的总计。名
5、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - 5、输出停车场中全部车辆的信息。6、退出系统。需求分析:车辆信息用文件储存, 提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。二、总体设计思路:整个管理系统设计可设计为停车模块、取车模块、车辆浏览信息模块。另外车辆停放信息涉及到从car.dat中读取,保存和修改,为了方便起见,和程序的模块化,我们将文件的读入和保
6、存单独设计为两个子程序。Main 键盘式菜单putCar 停车模块getCar 取车模块showInfo 车位信息saveAll 将车辆信息存入car.dat 输入车牌号码取车删除车辆信息显示停车费用输入车辆车牌号存车名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - 各子程序设计如下:1.使用全局变量数组, 用一个二维数组实现停车场车位的信息,int cars124; 2. 通过读取 car.dat的数据,对程序初始化。下图为
7、car.dat的初始数据:在 init()通过一个 for 循环完成对 car.dat中数据的读取 。Exit 退出图 1 整体模块图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - for(i=0;i12;i+) fscanf(fp,%d , &carsi0); fscanf(fp,%d , &carsi1); fscanf(fp,%d , &carsi2); fscanf(fp,%d , &carsi3); 3. 同理,我们
8、设计一个子程序saveAll ()用来保存停车场车位的信息到car.dat。用 for循环再将处理后的数据存入文件中。for(i=0;i9999)&(temp100000)break; flag=0; printf(请重新输入五位数车牌号n :); while(!flag); 其次,读取的车牌号正确之后对标志量清零flag=0 ,代表没有没有找到车位,进行为车辆找停车位的操作,如下:flag=0; for(i=1;i13;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页
9、,共 20 页 - - - - - - - - - if(carsi0!=0) continue; carsi0=temp; flag=1; break; 通过 for 循环和 continue语句找到没有停车的车位,即 cari0不等于 0,并将标志量 flag赋值 1,表示有车位,用break 语句跳出循环。再用 if语句处理 flag=1的情况,即停车场车位已满无法停车。最后,对存入的车辆赋初始时间5,并且前面的已存入的车辆时间都加5。语句如下:for(i=0;i9999)&(temp100000) for(i=0;i12;i+) if(carsi0=temp) carsi0=0; co
10、st=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; 最后,调用saveAll ()函数来保存数据到car.dat。6、车辆信息浏览模块:注意我们只需要显示有车的车位可以用for循
11、环语句再加上if判断语句来实现显示功能。printf(车牌号 tt楼层 t 车位 tt时间 n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - for(i=0;i12;i+) if(carsi0!=0) printf(%dtt %d tt%d tt %dn,carsi0,carsi1,carsi2,carsi3); 7、主函数:调用子函数init ()初始化读取car.dat文件。用 printf在屏幕上显示停车场的菜单。
12、再用 switch语句实现选择执行哪个模块语句。switch(a) case 1:putCar(); break; case 2:getCar();break; case 3:showInfo();break; case 4:exit(0); break; default:printf(您输入的信息有误! n); break; ; getchar(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 三、程序设计#includ
13、e #include #include #include int cars124; /*停车场使用数组*/ void init() /*初始化 */ char filename = car.dat; FILE *fp; int i; if(fp = fopen(filename,r) = NULL) printf(无法打开文件 car.datn); return ; for(i=0;i12;i+) /*读数据文件内容到数组 */ fscanf(fp,%d , &carsi0); fscanf(fp,%d , &carsi1); fscanf(fp,%d , &carsi2); fscanf(f
14、p,%d , &carsi3); fclose(fp); void saveAll() /*保存数据到car.dat*/ char filename = car.dat; FILE *fp; int i=0; if(fp = fopen(filename,w) = NULL) printf(无法打开文件 car.datn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - return ; for(i=0;i0)&(temp
15、10000)break; flag=0; printf(Your car number is a digit between 0 and 10000:); while(!flag); flag=0; for(i=0;i12;i+) if(carsi0!=0) continue; carsi0=temp; flag=1; break; if(flag=0) /*没有找到位置, 停车场已满*/ printf(很抱歉!车位已满 :n); return ; for(i=0;i0)&(temp10000) for(i=0;i12;i+) if(carsi0=temp) carsi0=0; /*删除该车位
16、车辆信息 */ cost=0.2*carsi3/5; carsi3=0; flag=1; break; if(flag=0) printf(您输入的车牌号码有误,请重新输入。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 按任意键回到主菜单
17、 .); void showInfo() /*显示当前停车场信息 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - int i; printf(nn*当前停车场车位信息 *n); printf(车牌号 tt楼层t 车位 tt时间n); for(i=0;i12;i+) if(carsi0!=0) printf(%dtt %d tt%d tt %dn,carsi0,carsi1,carsi2,carsi3); getchar
18、(); 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); switch(a) /*菜单选择*/ case 1:putCar(); break; case 2:getCar();break; ca
19、se 3:showInfo();break; case 4:exit(0); break; default:printf(您输入的信息有误! n); break; ; getchar(); while(1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - return 0; 四、 程序运行测试:1、打开程序进入键盘式界面菜单,选择您所需要进行的操作选项。名师资料总结 - - -精品资料欢迎下载 - - - - - - -
20、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - 2、车辆车位的初始化,查看当前车位信息如下:3、停入车牌号为20000 的车:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 4、查看当前车位信息:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
21、 - - - - - - 第 16 页,共 20 页 - - - - - - - - - 出现错误,车辆无法按楼层和车位要求停。对 car.dat进行修改楼层号初始化为1 1 1 1 1 1 2 2 2 2 2 2 车位号初始化为1 2 3 4 5 6 1 2 3 4 5 6。在使用停车操作时,车辆从一楼到二楼依次按序停放。对程序修改后运行如下:查看修改后名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - 取车,并显示费用:再存
22、入 5 辆车:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 20 页 - - - - - - - - - 停车车位顺次排下。取出两辆车:再存入两辆:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 20 页 - - - - - - - - - 后存入的车占据取出车的空车位将车库存满:输入 4,程序结束。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -