停车场实验报告
- 格式:doc
- 大小:92.00 KB
- 文档页数:15
停车场内实习报告一、实习背景与目的随着我国经济的快速发展和城市化进程的推进,城市交通拥堵和停车难问题日益凸显。
为了缓解这一问题,各地纷纷加大停车场建设力度,提高停车场的管理效率。
我此次实习的目的,就是通过在停车场内的工作,了解停车场的运营管理情况,学习停车场的规划与设计理念,提高自己的实际操作能力。
二、实习内容与过程在实习期间,我参与了停车场的日常管理工作,主要包括收费、车辆引导、停车位调度等方面。
通过实际操作,我深刻了解了停车场管理的复杂性和重要性。
1. 收费管理:停车场采用电子收费系统,我负责协助管理人员进行收费操作,确保收费准确无误。
同时,我还学习了停车场收费标准的制定和调整,了解了不同类型停车场收费政策的差异。
2. 车辆引导:在高峰时段,我负责引导车辆进入停车位,确保车辆停放规范。
这需要我具备良好的沟通协调能力和对停车场布局的熟悉程度。
3. 停车位调度:在停车位紧张时,我参与了停车位的调度工作,通过与车主沟通,合理分配停车资源。
这让我认识到了停车场资源优化配置的重要性。
4. 停车场清洁与维护:我参与了停车场的清洁和维护工作,学习了停车场环境卫生管理知识,提高了自己的环保意识。
三、实习收获与反思1. 停车场规划与设计:通过实习,我了解了停车场规划与设计的重要性。
一个合理规划的停车场,可以有效提高停车效率,缓解城市交通拥堵。
我认为,在停车场规划与设计中,应充分考虑城市交通需求、地块性质、用地规模等因素,实现停车场与城市交通的协调发展。
2. 停车场管理模式:实习期间,我学习了不同停车场管理模式,如电子收费系统、人工收费等。
我认为,停车场管理模式应根据停车场类型、规模和地域特点进行选择,以提高管理效率。
3. 服务意识:在实习过程中,我认识到停车场管理不仅仅是停车位的调度和收费,更涉及到车主的出行体验。
因此,提高服务质量,提升车主满意度是停车场管理的重要内容。
4. 团队协作:实习期间,我深刻体会到了团队协作的重要性。
停车场管理实验报告一、实验目的:通过对停车场管理的实际操作,掌握停车场管理的基本流程、技巧和方法,提高停车场管理的效率和质量。
二、实验原理:停车场管理是指对停放在停车场内的车辆进行有序管理和监督的过程。
其主要内容包括车辆的进出登记,停车位的分配,车辆停放位置的调整等。
通过合理的管理和监督,可以提高停车场的利用率,缩短停车时间,避免车辆拥堵,提高停车场的收益。
三、实验步骤:1.登记车辆信息:对每辆进入停车场的车辆进行登记,包括车辆的品牌、颜色、车牌号等信息。
2.分配停车位:根据停车场的空余停车位数量和车辆的类型,为车辆分配合适的停车位。
3.调整停车位置:当车辆数量较多时,根据实际情况进行停车位置的调整,以便保证每辆车都能停放到合适的位置。
4.缴费离场:当车主停车结束后,需要缴纳相应的停车费用,收取费用后放行车辆。
四、实验结果:通过实验,我们发现采用合理的停车场管理方法可以提高停车场的利用率和效益。
在实验过程中,我们按照停车场管理的基本流程进行操作,及时登记车辆信息,合理分配停车位,并根据实际情况进行停车位置的调整。
通过合理管理和调整,车辆停放得更加有序,效率和质量得到了显著提高。
五、实验总结:本实验通过对停车场管理的实际操作,使我们更加深入地了解和掌握了停车场管理的基本流程、技巧和方法。
合理的停车场管理可以提高停车场的利用率和效益,减少车辆拥堵,为车主提供更好的服务。
在今后的实践中,我们需要进一步学习和掌握停车场管理的相关知识和技巧,不断提高停车场管理的水平和质量。
六、实验感想:通过这次停车场管理实验,我对停车场管理的重要性有了更深刻的认识。
合理的停车场管理对于提高停车场利用率和效益具有重要意义。
在实际操作过程中,需要注重细节,如及时登记车辆信息,合理分配停车位以及根据实际情况调整停车位置。
我希望通过今后的学习和实践,不断提升自己的停车场管理能力,为社会交通管理贡献力量。
一、前言随着我国经济的快速发展,汽车已经成为人们日常生活中不可或缺的交通工具。
随之而来的是停车难的问题日益凸显。
为了更好地了解停车场的运营管理、解决停车难问题,我们团队于2023年在某大型商场停车场进行了为期一周的社会实践。
通过实地考察、访谈和数据分析,我们对停车场的运营管理有了更为深入的认识。
二、实践目的1. 了解停车场的基本情况,包括停车场规模、设施、收费标准等。
2. 分析停车场的运营管理现状,包括停车场的布局、收费标准、服务质量等。
3. 探讨解决停车难问题的措施,为相关部门提供参考。
三、实践过程1. 实地考察我们团队于2023年X月X日至X月X日对某大型商场停车场进行了实地考察。
首先,我们了解了停车场的规模和设施,包括停车位数、出入口、停车场内的标识、照明、监控设备等。
其次,我们观察了停车场的布局和收费标准,并对不同类型车辆的收费标准进行了记录。
2. 访谈为了深入了解停车场的运营管理,我们访谈了停车场管理人员、商户和消费者。
通过与他们的交流,我们了解到以下情况:(1)停车场管理人员表示,停车场的管理工作主要包括车辆引导、秩序维护、设备维护等。
在高峰时段,停车场的秩序维护工作尤为重要。
(2)商户反映,停车场对商场的人流量有较大影响。
良好的停车场管理有助于提升商场的形象和顾客满意度。
(3)消费者普遍认为,停车场的收费标准较高,且停车场的车位紧张,尤其在高峰时段。
3. 数据分析通过对停车场数据的分析,我们发现以下问题:(1)停车场车位利用率较高,尤其在高峰时段。
(2)停车场收费标准与周边停车场相比偏高。
(3)停车场在高峰时段的秩序维护工作存在不足。
四、实践成果1. 了解停车场运营管理现状通过本次实践,我们了解了停车场的基本情况、运营管理现状以及存在的问题。
2. 提出解决停车难问题的措施针对停车难问题,我们提出以下建议:(1)优化停车场布局,增加停车位数量。
(2)实行错时停车,提高停车场利用率。
(3)合理调整收费标准,降低消费者负担。
停车场管理实验报告第一篇:实验简介本次实验是关于停车场管理的,旨在探讨停车场的管理方法以及利用计算机技术对停车场进行智能管理的可行性。
实验过程中,我们首先对停车场的基本情况进行了调查和分析,并确定了停车场的布局和车位数量。
然后,我们设计了一个基于计算机视觉技术的车牌识别系统,能够自动识别汽车牌照,并将其和相应的车位绑定。
最后,我们开发了一个基于云端的管理系统,能够实时监控停车场的使用情况,统计收益和预测流量,优化停车场管理。
通过本次实验,我们希望能够提高停车场的利用率,降低管理成本,提高用户体验。
第二篇:实验步骤1. 调查和分析首先,我们对停车场的周边环境、车流量、停车需求等进行了调查和分析,并根据调查结果确定了停车场的布局和车位数量。
2. 设计车牌识别系统我们采取了基于计算机视觉技术的车牌识别系统,能够自动识别汽车牌照,并将其和相应的车位绑定。
该系统主要分为以下三个部分:(1)摄像头:采用高清摄像头,能够自动对焦和自动曝光,提高识别准确率。
(2)软件系统:采用OpenCV图像处理库进行开发,能够自动识别车牌,并提取车牌号码信息。
(3)数据存储:采用MySQL数据库进行存储,能够存储车牌号码和相应的车位信息,方便管理。
3. 开发管理系统我们开发了一个基于云端的管理系统,能够实时监控停车场的使用情况,统计收益和预测流量,优化停车场管理。
该系统主要包括以下功能:(1)实时监控:通过车牌识别系统和摄像头,能够实时监控停车场内的车辆,并提供车位信息和空余位置。
(2)预约停车:用户可以通过手机或网站进行预约停车,并预定相应的车位。
(3)收费管理:管理人员可以通过系统对停车场的收费进行监控和管理,能够统计收益和优化停车场营运。
4. 测试和优化最后,我们进行了系统的测试和优化,并对系统的性能进行了评估和改进,确保停车场管理系统的稳定和可靠性。
第三篇:实验结果与展望经过长时间的实验和努力,我们开发出了一套基于计算机视觉技术的停车场管理系统,能够实现车辆自动识别和智能管理。
最新停车场管理实验报告实验目的:本次实验旨在评估和分析最新的停车场管理系统在实际运行中的效率、准确性以及用户体验。
通过对系统的各项功能进行测试,我们期望能够得出系统的性能指标,并提出可能的改进措施。
实验方法:1. 硬件与软件配置:首先,记录实验所用停车场管理系统的硬件和软件配置,包括但不限于摄像头分辨率、传感器类型、处理单元性能以及软件版本等。
2. 功能性测试:对停车场管理系统的各项功能进行测试,包括车辆识别、空位检测、费用计算、支付方式等。
3. 效率评估:通过模拟不同车流量的情况,记录车辆进出停车场的时间,分析系统处理速度和响应时间。
4. 用户体验调查:通过问卷和现场访谈的方式,收集使用者对停车场管理系统的满意度和改进建议。
实验结果:1. 功能性:实验数据显示,车辆识别准确率达到98%,空位检测准确率为95%。
费用计算无误差,支持多种支付方式,包括现金、银行卡和移动支付。
2. 效率:在高峰时段,车辆平均等待时间为30秒,非高峰时段为10秒。
系统响应时间稳定在2秒以内。
3. 用户体验:大部分用户对新的停车场管理系统表示满意,特别是对快速通行和多种支付方式给予高度评价。
但也有少数用户反映,在系统出现故障时,应急措施不够完善。
结论与建议:根据实验结果,新的停车场管理系统在功能性和效率方面表现良好,用户反馈总体正面。
建议在未来的版本中,加强对系统故障的应急处理方案,并对用户提出的改进建议进行深入分析,以进一步提升用户体验。
同时,建议定期进行系统维护和升级,确保系统长期稳定运行。
停车场管理实验报告2篇[停车场管理实验报告1]一、实验目的本次实验的目的是设计一个适用于停车场管理的有效系统,该系统将实现停车场的自动拍照、车辆识别、计费以及车位管理等功能。
该系统可以帮助停车场管理员实现对停车场的管理和运营。
二、实验原理与方法1. 车辆识别技术:使用深度学习技术对车辆图片进行分类识别,从而实现对车辆的识别,具体方法为:1)采集车辆图片,对车辆图片进行图像处理,去除噪声和背景干扰;2)使用卷积神经网络训练模型,通过建立车辆图片库对车辆进行分类;3)对每张停车车辆的图片进行识别,判断车辆类型和车牌号码,实现进出车辆的自动记录。
2. 计费方式:对于停车的车辆,根据时间和车型计费,计费方式为:1)分段计费,每隔30分钟计费一次;2)按车型分类计费,小车和大车计费规则不同,大车计费更高;3)计费方案可以根据车位所在区域和周边车位情况进行调整。
3. 车位管理:车位管理模块包括停车位预约和空车位查询功能,实现停车场的车位管理,具体方法为:1)对车位进行编号,分区域管理;2)通过车位预约功能实现用户对停车的预约;3)通过查询车位状态实现空车位的查询。
三、实验过程本次实验中,我们基于深度学习的车辆识别技术和计费方式进行了系统设计和开发。
1. 车辆识别模块车辆识别模块使用优化的卷积神经网络模型识别车辆图片,准确率较高。
在实际应用中,我们将该模块集成到摄像头设备中,实现对车辆的自动接收和输入。
2. 计费模块计费方式的实现主要涉及时间和车型两个方面。
我们采用了分段计费和按车型分类计费两种策略,并根据室内和室外车位的不同特点进行了适当调整。
具体计费规则如下:1)小车:每隔30分钟收费2元,首小时收费3元,之后每小时加收1元;2)大车:每隔30分钟收费4元,首小时收费6元,之后每小时加收2元。
3. 车位管理模块车位管理模块实现了车位编号、分组和预定等功能,并提供了实时车位状态查询。
同时,我们还可以引入图像检测技术对车位进行状态检测,实时更新车位信息。
一、实习背景随着我国经济的快速发展,汽车保有量逐年攀升,城市停车难问题日益突出。
为解决这一问题,政府及相关部门加大了对停车场建设的投入,各类停车场项目纷纷上马。
为了深入了解停车场项目的运作流程,提升自己的专业技能,我于2023年7月至9月期间在XX市XX停车场项目进行了为期两个月的实习。
二、实习单位及项目简介实习单位为XX市XX停车管理有限公司,负责XX市多个停车场项目的建设与运营。
本次实习的项目为XX市中心城区公共停车场项目,总投资约1.2亿元,占地面积约5000平方米,预计建设停车位800个。
三、实习内容1. 项目前期准备在实习初期,我主要参与了项目的前期准备工作,包括:(1)了解项目背景及政策法规,掌握相关建设标准;(2)协助编制项目可行性研究报告,包括市场分析、投资估算、效益分析等;(3)与政府部门沟通,办理项目立项、规划、环评等手续。
2. 项目设计阶段在项目设计阶段,我主要负责以下工作:(1)协助设计师进行停车场平面布置设计,确保停车位数量及布局合理;(2)参与停车设施、消防、电气等专业的施工图设计;(3)与设计院、监理单位进行技术交底,确保设计质量。
3. 项目施工阶段在项目施工阶段,我主要参与以下工作:(1)协助项目经理进行施工现场管理,确保施工进度、质量和安全;(2)监督施工过程中的技术规范执行情况,发现问题及时反馈;(3)参与施工过程中的材料验收、隐蔽工程验收等。
4. 项目运营阶段在项目运营阶段,我主要参与以下工作:(1)协助停车场管理人员进行日常运营管理,包括车辆进出管理、收费管理等;(2)收集停车场运营数据,为运营决策提供依据;(3)参与停车场收费系统、监控系统等设施的建设与维护。
四、实习收获1. 专业知识提升通过本次实习,我对停车场项目的建设、运营等环节有了更加深入的了解,掌握了相关专业知识,为今后从事相关工作奠定了基础。
2. 实践能力提高在实习过程中,我参与了项目的各个环节,锻炼了自己的实践能力,提高了自己的沟通协调、组织管理等方面的能力。
数据结构停车场管理实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构中的栈和队列等知识,提高解决实际问题的能力。
二、实验环境编程语言:C++开发工具:Visual Studio三、实验原理1、停车场采用栈结构来存储停放的车辆信息。
栈具有先进后出的特点,符合车辆先进入停车场后离开的逻辑。
2、停车场外的便道采用队列结构来存储等待进入停车场的车辆。
队列具有先进先出的特点,符合车辆按到达顺序进入停车场的需求。
四、实验内容1、设计数据结构定义栈和队列的数据结构,包括存储车辆信息的结构体。
实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
2、功能实现车辆进入停车场:当有车辆进入停车场时,将车辆信息压入栈中。
车辆离开停车场:当有车辆离开停车场时,从栈中弹出相应车辆,并计算停车费用。
显示停车场状态:实时显示停车场内车辆的信息。
处理便道上的车辆:当停车场有空位时,将便道上的车辆依次入停车场。
3、界面设计设计简单的命令行交互界面,方便用户输入操作指令。
五、实验步骤1、定义数据结构```cppstruct Car {int carNumber;int arrivalTime;int departureTime;};class Stack {private:Car stackArray;int top;int capacity;public:Stack(int size) {capacity = size;stackArray = new Carcapacity; top =-1;}~Stack(){delete stackArray;}bool isFull(){return top == capacity 1;}bool isEmpty(){return top ==-1;}void push(Car car) {if (!isFull()){stackArray++top = car;} else {std::cout <<"停车场已满,无法进入!"<< std::endl;}}Car pop(){if (!isEmpty()){return stackArraytop;} else {std::cout <<"停车场为空,无法离开!"<< std::endl; return {-1, -1, -1};}}Car peek(){if (!isEmpty()){return stackArraytop;} else {std::cout <<"停车场为空!"<< std::endl; return {-1, -1, -1};}}};class Queue {private:Car queueArray;int front;int rear;int capacity;public:Queue(int size) {capacity = size;queueArray = new Carcapacity;front = rear =-1;}~Queue(){delete queueArray;}bool isFull(){return (rear + 1) % capacity == front;}bool isEmpty(){return front ==-1;}void enqueue(Car car) {if (!isFull()){if (isEmpty()){front = 0;}rear =(rear + 1) % capacity; queueArrayrear = car;} else {std::cout <<"便道已满,无法等待!"<< std::endl;}}Car dequeue(){if (!isEmpty()){Car car = queueArrayfront;if (front == rear) {front = rear =-1;} else {front =(front + 1) % capacity;}return car;} else {std::cout <<"便道为空!"<< std::endl;return {-1, -1, -1};}}Car frontElement(){if (!isEmpty()){return queueArrayfront;} else {std::cout <<"便道为空!"<< std::endl;return {-1, -1, -1};}}};```2、主函数实现```cppint main(){int parkingLotCapacity = 10; //假设停车场容量为 10 Stack parkingLot(parkingLotCapacity);Queue waitingQueue(parkingLotCapacity);int choice;while (true) {std::cout <<"1、车辆进入停车场" << std::endl;std::cout <<"2、车辆离开停车场" << std::endl;std::cout <<"3、显示停车场状态" << std::endl;std::cout <<"4、退出" << std::endl;std::cout <<"请选择操作:";std::cin >> choice;switch (choice) {case 1: {int carNumber;std::cout <<"请输入车辆号码:";std::cin >> carNumber;Car car ={carNumber, time(NULL),-1};if (!parkingLotisFull()){parkingLotpush(car);std::cout <<"车辆"<< carNumber <<"进入停车场" <<std::endl;} else {waitingQueueenqueue(car);std::cout <<"停车场已满,车辆"<< carNumber <<"在便道等待" << std::endl;}break;}case 2: {int carNumber;std::cout <<"请输入要离开的车辆号码:";std::cin >> carNumber;Car car;bool found = false;for (int i = parkingLottop; i >= 0; i) {if (parkingLotstackArrayicarNumber == carNumber) {car = parkingLotpop();cardepartureTime = time(NULL);found = true;break;}}if (found) {int parkingTime = difftime(cardepartureTime, cararrivalTime);double parkingFee = parkingTime 2; //假设每单位时间停车费为2 元std::cout <<"车辆"<< carNumber <<"离开停车场,停车时间:"<< parkingTime <<"秒,停车费用:"<<parkingFee <<"元" << std::endl;if (!waitingQueueisEmpty()){Car waitingCar = waitingQueuedequeue();parkingLotpush(waitingCar);std::cout <<"便道上的车辆"<< waitingCarcarNumber <<"进入停车场" << std::endl;}} else {std::cout <<"未找到要离开的车辆" << std::endl;}break;}case 3: {std::cout <<"停车场内车辆:"<< std::endl;for (int i = parkingLottop; i >= 0; i) {std::cout << parkingLotstackArrayicarNumber <<"";}std::cout << std::endl;std::cout <<"便道上等待的车辆:"<< std::endl;if (!waitingQueueisEmpty()){for (int i = waitingQueuefront; i!= waitingQueuerear; i =(i + 1) %waitingQueuecapacity) {std::cout << waitingQueuequeueArrayicarNumber <<"";}std::cout << waitingQueuequeueArraywaitingQueuerearcarNumber<< std::endl;} else {std::cout <<"无" << std::endl;}break;}case 4:return 0;default:std::cout <<"无效的选择,请重新输入" << std::endl;}}return 0;}```六、实验结果1、车辆正常进入停车场,并在停车场已满时在便道等待。
第1篇一、实验背景随着城市化进程的加快,机动车保有量逐年攀升,停车难问题日益突出。
为探究停车设施供应的有效途径,提高城市停车资源利用率,本研究通过模拟实验,对停车设施供应策略进行评估。
二、实验目的1. 分析不同停车设施供应策略对停车难问题的缓解效果。
2. 评估停车设施供应对城市交通的影响。
3. 为城市停车设施供应提供参考依据。
三、实验方法1. 实验设计:选择某城市中心区域作为实验区域,模拟不同停车设施供应策略下的停车状况。
2. 实验数据:收集实验区域内的道路、停车场、人口、车辆等数据,包括停车位数量、分布、收费标准等。
3. 实验工具:运用GIS、交通仿真软件等工具,模拟不同停车设施供应策略下的停车状况。
四、实验内容1. 停车设施供应策略1.1 增加公共停车场供应:新建、扩建公共停车场,提高公共停车泊位数量。
1.2 立体化停车:推广立体停车设施,提高土地利用率。
1.3 优化路内停车:合理规划路内停车泊位,提高泊位利用率。
1.4 智能化停车:运用智能停车管理系统,提高停车效率。
2. 实验模拟1.1 模拟不同停车设施供应策略下的停车需求。
1.2 模拟不同停车设施供应策略下的停车泊位利用率。
1.3 模拟不同停车设施供应策略下的城市交通状况。
五、实验结果与分析1. 增加公共停车场供应1.1 实验结果表明,增加公共停车场供应可以有效缓解停车难问题,提高城市交通运行效率。
1.2 然而,新建、扩建公共停车场需要大量资金投入,且建设周期较长。
2. 立体化停车1.1 立体化停车可以有效提高土地利用率,缓解停车难问题。
1.2 但立体化停车设施的建设成本较高,且需要一定的技术支持。
3. 优化路内停车1.1 优化路内停车泊位可以提高泊位利用率,缓解停车难问题。
1.2 然而,路内停车存在安全隐患,且容易造成交通拥堵。
4. 智能化停车1.1 智能化停车可以提高停车效率,降低停车成本。
1.2 但智能化停车设施的建设和维护需要一定的技术支持。
一、实训背景随着城市化进程的加快,停车难问题日益突出。
为提高停车场管理水平,培养具备现代管理理念和技术技能的停车场管理人员,我校特组织停车场实训课程。
本次实训旨在通过实际操作,使学生了解停车场的基本概念、管理流程、设备操作及安全注意事项,为今后从事停车场管理工作打下坚实基础。
二、实训目的1. 使学生掌握停车场的基本概念、管理流程、设备操作及安全注意事项;2. 培养学生具备良好的职业道德和团队合作精神;3. 提高学生解决实际问题的能力;4. 为学生今后从事停车场管理工作奠定基础。
三、实训内容1. 停车场概述1.1 停车场的定义、类型及作用;1.2 停车场的规划与设计;1.3 停车场的管理模式及发展趋势。
2. 停车场管理流程2.1 停车场管理的基本原则;2.2 停车场的收银、巡查、车辆调度、设施维护等环节;2.3 停车场的突发事件处理。
3. 停车场设备操作3.1 停车场收费设备(如:IC卡、感应卡、车牌识别等)的操作;3.2 停车场监控设备的操作;3.3 停车场消防设备的操作。
4. 停车场安全管理4.1 停车场安全管理制度;4.2 停车场消防安全;4.3 停车场交通安全;4.4 停车场治安管理。
四、实训过程1. 实训前期准备1.1 实习单位选择:根据实训要求,选择具有代表性的停车场作为实习基地;1.2 实习人员分组:将学生分成若干小组,每组由一名组长负责组织协调;1.3 实习内容安排:制定详细的实习计划,明确实习时间、内容、要求等。
2. 实训过程2.1 理论学习:在实习基地,由停车场管理人员为学生讲解停车场管理理论知识;2.2 实际操作:学生在停车场管理人员的指导下,进行收费、巡查、设备操作等实际操作;2.3 小组讨论:各小组就实习过程中遇到的问题进行讨论,提出解决方案;2.4 总结交流:实训结束后,各小组进行总结交流,分享实习心得。
五、实训成果1. 学生对停车场管理有了更深入的了解,掌握了停车场的基本概念、管理流程、设备操作及安全注意事项;2. 学生具备了一定的职业道德和团队合作精神,能够适应停车场管理工作的要求;3. 学生提高了解决实际问题的能力,为今后从事停车场管理工作打下了坚实基础;4. 实习基地对学生的实习表现给予了高度评价,为学生提供了良好的实践机会。
数据结构实验报告——实验二停车厂模拟管理程序的设计与实现本实验的目的是进一步理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。
一、【问题描述】设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路的车辆再按原次序进入车场。
在这里假设汽车不能从便道上开走,试设计这样一个停车厂模拟管理程序。
为了以下描述的方便,停车厂的停车场用“停车位”进行叙述,停车厂的便道用“便道”进行叙述。
二、【数据结构设计】1、为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码和汽车的当前状态,所以为汽车定义一个新的类型CAR,具体定义如下:typedef struct{char *license_plate; //汽车牌照号码,定义为一个字符指针类型char state; //汽车当前状态,字符s表示停放在停车位上,//字符p表示停放在便道上,每辆车的初始状态用字符i来进行表示}2、由于车位是一个狭长的通道,所以不允许两辆车同时出入停车位,当有车到来要进入停车位的时候也要顺次停放,当某辆车要离开时,比它后到的车要先暂时离开停车位,而且越后到的车就越先离开停车位,显然这和栈的“后进先出”特点相吻合,所以可以使用一个栈来描述停车位。
由于停车位只能停放有限的几辆车,而且为了便于停车厂的管理,为每个车位要分配一个固定的编号,不妨设为1、2、3、4、5(可利用数组的下标),分别表示停车位的1车位、2车位、3车位、4车位。
5车位,针对这种情况使用一个顺序栈比较方便,具体定义如下:#define MAX_STOP 5typedef struct{CAR STOP[MAX_STOP]; //各汽车信息的存储空间int top; //用来指示栈顶位置的静态指针}STOPPING;3、当停车场的停车位上都已经停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次存放在便道上,为便道上的每个位置也分配一个固定的编号,当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位,由于问题描述中限制了便道上的汽车不能从便道上开走,即便道上的汽车只有在停车位上停放过之后才能离开停车厂,这样越早进入便道的汽车就越早进入停车位,而且每次进入停车位的汽车都是处于便道“最前面”的汽车,显然,这和队列的先进先出特点相吻合,所以,这里使用一个顺序队来描述便道,可以利用数组的下标表示便道的位置,具体定义如下:#define MAX_PA VE 100 /*便道不限制停放车辆的数目,设为足够大*/typedef struct{CAR PA VE[MAX_PA VE]; //各汽车信息的存储空间int front,rear; //用来指示队头和队尾位置的静态指针}PA VEMENT;4、当某辆车要离开停车厂的时候,比它后进停车位的车要为它让路,而且当它开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出开走请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中。
对辅助栈也采用顺序栈,具体定义与停车位栈类似,如下:typedef struct{CAR BUFFER[MAX_STOP]; //各汽车信息的存储空间int top; //用来指示栈顶位置的静态指针}BUFFER;当然,辅助栈直接利用在2中定义的类型STOPPING也是可以的。
由于程序的各函数要对这些数据结构中的数据进行操作,而且每次操作的结果都要动态反应到以上数据结构中,所以在程序设计的时候使用以上新类型定义的变量都采用全局变量的形式。
三、【功能(函数)设计】1、本程序从总体上分为四个大的功能模块:分别为:程序功能介绍和操作提示模块、汽车进入停车厂车位的管理模块、汽车离开停车厂车位的管理模块、查看停车厂停车状态的查询模块,具体功能描述如下:1)程序功能介绍和操作提示模块:此模块给出程序欢迎信息,介绍本程序的功能,并给出程序功能所对应的键盘操作的提示,具体屏幕显示如下所示:函数原型为void welcome( );2)汽车进入停车厂车位的管理模块:此模块用来登记停车厂的汽车的车牌号和对该车的调度过程并修改该车的状态,其中调度过程要以屏幕信息的形式反馈给用户来指导用户对车辆的调度。
例如,当前停车位上1、2、3车位分别停放着牌照为JF001、JF002、JF003的汽车,便道上无汽车,当牌照为JF004的汽车到来后屏幕应给出如下提示信息:函数原型为void come( );此函数还要调用其他对于栈和队列的基本操作。
3)汽车离开停车厂停车位的管理模块:此模块用来为提出离开停车厂的车辆做调度处理,并修改相关车辆的状态,其中调度过程要以屏幕信息的形式反馈给用户来指导用户对车辆的调度,当有车离开停车厂后应该立刻检查便道上是否有车,如果有车的话立即让便道上的第一辆汽车停入停车位。
例如,当前停车位上1,2,3,4,5车位分别停放着牌照为JF001、JF002、JF003、JF004、JF005的汽车,便道上的1,2位置分别停放着牌照为JF006、JF007、JF008的汽车,当接收到JF003要离开的信息时,屏幕应给出如下提示信息:函数原型为void leave( );此函数还要调用其他对于栈和队列的基本操作。
4)查看停车厂停车状态的查询模块:此模块用来在屏幕上显示停车位和便道上各位置的状态,例如,当前停车位上1,2,3,4,5车位分别停放着牌照为JF001、JF002、JF003、JF004、JF005的汽车,便道上的1,2位置分别停放着牌照为JF006、JF007的汽车,当接受到查看指令后,屏幕上应显示:函数原型为void display( );此函数还要调用其他对于栈和队列的基本操作。
2、以上四个总体功能模块要用到的栈和队列的基本操作所对应的主要函数3、由于程序应该能够随时处理用户所提出的各种操作请求,所以在主函数中用一个DO_WHILE循环结构随时监控键盘的按键操作,遇到相应的按键就转到对应函数继续运行,运行完该函数继续监控键盘按键,如此往复,直到接到“退出”指令程序才能结束。
部分编码如下:do{welcome();cin>>key;if(key=='C'||key=='c'){come();}else if(key=='L'||key=='l'){leave();check();}else if(key=='S'||key=='s')display();else welcome();}while((key!='Q')&&(key!='q'));四、【界面设计】本程序的界面力求简洁、友好,每一步需要用户操作的提示以及每一次用户操作产生的调度结果都以中文的形式显示在屏幕上,使用户对要做什么和已经做了什么一目了然。
文字表述精练,准确。
具体设计可参阅功能设计中的相关部分,这里就不再赘述。
五、【编码实现】略。
详见具体源代码。
六、【运行与测试】对于测试用例的设计注重所定义的数据结构的边界以及各种数据结构共存的可能性。
例如:1、连续有7辆车到来,牌照号分别为JF001、JF002、JF003、JF004、、JF005、JF006、JF007,前5辆车应该进入停车位1-5车位,第6、7辆车应停入便道的1、2位置上。
2、1中的情况发生后,让牌照号为JF003的汽车从停车厂开走,应显示JF005、JF004的让路动作和JF006从便道到停车位上的动作。
3、随时检查停车位和便道的状态,不应该出现停车位有空位而便道上还有车的情况。
4、其他正常操作的一般情况。
5、程序容错性的测试,当按键输入错误的时候是否有错误提示给用户指导用户正确操作,并作出相应处理保证程序健康的运行。
经过反复的运行和测试,程序的容错性能良好,界面简洁友好,运行稳定可靠,符合实际操作规范,基本达到了模拟停车厂管理的要求。
七、【实验完成后的思考】1、通过本程序熟练掌握了栈和队列的定义和使用方法,对使用C语言编码来验证数据结构的理论知识有了更深层次的理解,达到了实验目的。
2、通过在设计过程中的讨论和思考,对使用现有知识利用计算机来解决现实生活中的实际问题确立了信心,对软件工程思想和模块化程序思想有了比较清晰的理解,为今后的程序设计奠定了一定的心理和技术上的准备。
3、由于时间仓促和个人能力有限,程序中还有一些需要完善的地方,例如:对停放到停车厂的汽车按时间的收费管理,程序界面可以使用图形方式使之更美观,使用鼠标或菜单方式使之能够适应更多人的使用习惯。
在今后的实验中要多多练习这方面的能力。
实验人:```实验完成日期:2011年10月20日实验报告提交日期:2011年10月26日附程序代码:// test.cpp : 定义控制台应用程序的入口点。
//#include"stdafx.h"#include<string>#include<iostream>#define MAX_STOP 5#define MAX_PAVE 100using namespace std;typedef struct{string license_plate; //汽车牌照号码,定义为一个字符指针类型char state; //汽车当前状态,字符s表示停放在停车位上,//字符p表示停放在便道上,每辆车的初始状态用字符i来进行表示}CAR;typedef struct{CAR STOP[MAX_STOP]; //各汽车信息的存储空间int top; //用来指示栈顶位置的静态指针}STOPPING;typedef struct{CAR PAVE[MAX_PAVE]; //各汽车信息的存储空间int front,rear; //用来指示队头和队尾位置的静态指针}PAVEMENT;typedef struct{CAR BUFFER[MAX_STOP]; //各汽车信息的存储空间int top; //用来指示栈顶位置的静态指针}BUFFER;STOPPING *s;BUFFER *b;PAVEMENT *p;void welcome( ){cout<<" 欢迎使用停车场管理系统"<<endl <<" 有车到来时请按c 键"<<endl<<" 有车要走时请按l 键"<<endl<<" 显示停车场状态请按s 键"<<endl <<" 要退出程序请按q 键"<<endl<<" 请选择您要做的操作"<<endl;}STOPPING *init_stopping( ) //初始化“停车位栈”{s=new STOPPING;if(!s)return NULL;else{s->top=-1;return s;}}int push_stopping(CAR car){if(s->top==MAX_STOP-1)return 0;else{s->top++;s->STOP[s->top]=car;return 1;}}int pop_stopping(CAR *car)if(s->top==-1)return 0;else{*car=s->STOP[s->top];s->top--;return 1;}}BUFFER *init_buff( ) //初始化“辅助栈”{b=new BUFFER;b->top=-1;return b;}int push_buff(CAR car){if(b->top==MAX_STOP-1)return 0;else{b->top++;b->BUFFER[b->top]=car;return 1;}}int pop_buff(CAR *car){if(b->top==-1)return 0;else{*car=b->BUFFER[b->top];b->top--;return 1;}}PAVEMENT *init_pavement( ) //初始化“便道队列”{p=new PAVEMENT;p->front=p->rear=MAX_PAVE-1;return p;}int In_pavement(CAR car){if((p->rear+1)%MAX_PAVE==p->front)return 0;else{p->rear=(p->rear+1)%MAX_PAVE;p->PAVE[p->rear]=car;return 1;}}int Out_pavement(CAR *car){if(p->rear%MAX_PAVE==p->front)return 0;else{p->front=(p->front+1)%MAX_PAVE;*car=p->PAVE[p->front];return 1;}}int car_come(CAR car) //将pos指定的汽车信息插入“停车位栈”,并修改该车状态{car.state='s';return push_stopping(car);}int car_leave() //将pos指定的汽车信息从“停车位栈”删除,并修改该车状态CAR *car=new CAR();int a=pop_stopping(car);cout<<car->license_plate<<"离开了了停车场"<<endl;car->state='i';return a;}int stop_to_buff() //将pos指定的汽车信息从“停车位栈”移动到“辅助栈”{CAR *car=new CAR();if(pop_stopping(car)){if(push_buff(*car)){cout<<car->license_plate<<"由停车场进入了辅助"<<endl;return 1;}elsereturn 0;}elsereturn 0;}int buff_to_stop() //将pos指定的汽车信息从“辅助栈”移动到“停车位栈”{CAR *car=new CAR();if(pop_buff(car)){if(push_stopping(*car)){cout<<car->license_plate<<"由辅助进入了停车场"<<endl;return 1;}elsereturn 0;}elsereturn 0;}int pave_to_stop() //将pos指定的汽车信息从“便道队列”移动到“停车位栈”{CAR *car=new CAR();if(Out_pavement(car)){if(push_stopping(*car)){cout<<car->license_plate<<"由便道进入了停车场"<<endl;return 1;}elsereturn 0;}elsereturn 0;}int come(){CAR car;car.state='i';cout<<"请输入新到车辆的车牌号"<<endl;cin>>car.license_plate;if(s->top==MAX_STOP-1)return In_pavement(car);elsereturn car_come(car);}void leave(){string license;int i=0;CAR car;cout<<"请输入将离开车的车牌号"<<endl;cin>>license;for(i=0;i<=s->top;i++)if(s->STOP[i].license_plate==license)break;if(i>s->top){cout<<"没有该车辆"<<endl;}else if(i==s->top){car_leave();}else{int m=s->top;for(int j=i+1;j<=m;j++)stop_to_buff();car_leave();m=b->top;for(int k=0;k<=m;k++)buff_to_stop();}}void check(){while((s->top<MAX_STOP-1)&&(p->rear%MAX_PAVE!=p->front))pave_to_stop();}void display(){cout<<"停车位的情况"<<endl;int max=s->top;int i=0;for(i=0;i<=max;i++)cout<<i+1<<"车位"<<"——"<<s->STOP[i].license_plate<<endl;cout<<"便道的情况"<<endl;for (i = (p->front+1)%MAX_PAVE; (p->rear +1)%MAX_PAVE!= i%MAX_PAVE; i=(i+1)%MAX_PAVE) cout<<i+1<<"位置"<<"——"<<p->PAVE[i].license_plate<<endl;}int main(){init_buff();init_pavement();init_stopping();char key;do{welcome();cin>>key;if(key=='C'||key=='c'){come();}else if(key=='L'||key=='l'){leave();check();}else if(key=='S'||key=='s')display();else welcome();}while((key!='Q')&&(key!='q')); }。