停车场管理系统实验报告
- 格式:doc
- 大小:314.50 KB
- 文档页数:15
停车场模拟管理系统实验报告实验报告:停车场模拟管理系统一、引言停车场是现代城市交通管理中不可或缺的一部分,如何高效地管理停车场成为城市交通规划和管理的重要课题之一、为了更好地理解停车场系统的运作原理,并学习相关管理策略,我们设计了停车场模拟管理系统实验。
二、实验目的1.了解停车场系统的工作流程与每个角色的职责;2.掌握停车场管理系统的设计与实现方法;3.学习利用计算机模拟系统来辅助管理停车场。
三、实验方法与步骤1.系统需求分析:明确系统主要功能,确定系统用户和使用场景,梳理系统流程;2.系统设计:根据需求分析,设计系统的功能模块、数据库表结构、界面设计等;3.系统实现:使用编程语言开发系统,编写相应的代码实现各个功能模块;4.系统测试与优化:测试系统的各项功能是否正常工作,进行反复测试并修复潜在的问题;5.系统上线与使用:将系统部署到服务器上,供用户正式使用。
四、实验结果与分析我们设计的停车场模拟管理系统主要包括以下功能:1.车辆进入停车场:当车辆驶入停车场时,系统记录车辆信息,并分配一个唯一的停车位;2.车辆离开停车场:车辆离开停车场时,系统根据停车时间计算停车费用,并更新车辆的状态信息;3.车位管理:系统可以查看当前停车场车位的使用情况,根据需要修改停车位的状态;4.停车记录查询:系统可以查询指定车辆的停车记录,包括进入停车场的时间、离开停车场的时间以及停车费用;5.收费管理:系统可以提供不同计费规则的选择,并根据规则计算车辆的停车费用;6.用户管理:系统可以管理停车场的员工和管理员账号,设置不同的权限和角色。
通过对实际停车场运营流程的模拟,我们可以观察到以下结果:1.系统能够准确记录每辆车进入和离开停车场的时间,方便车主查询;2.停车场车位使用情况能够实时更新,帮助管理员有效管理停车资源;3.不同计费规则可以灵活设置,可以根据不同需求调整停车费用;4.员工和管理员账号权限分离,保证了系统的安全性和管理的有序性。
停车场管理实验报告一、实验目的:通过对停车场管理的实际操作,掌握停车场管理的基本流程、技巧和方法,提高停车场管理的效率和质量。
二、实验原理:停车场管理是指对停放在停车场内的车辆进行有序管理和监督的过程。
其主要内容包括车辆的进出登记,停车位的分配,车辆停放位置的调整等。
通过合理的管理和监督,可以提高停车场的利用率,缩短停车时间,避免车辆拥堵,提高停车场的收益。
三、实验步骤:1.登记车辆信息:对每辆进入停车场的车辆进行登记,包括车辆的品牌、颜色、车牌号等信息。
2.分配停车位:根据停车场的空余停车位数量和车辆的类型,为车辆分配合适的停车位。
3.调整停车位置:当车辆数量较多时,根据实际情况进行停车位置的调整,以便保证每辆车都能停放到合适的位置。
4.缴费离场:当车主停车结束后,需要缴纳相应的停车费用,收取费用后放行车辆。
四、实验结果:通过实验,我们发现采用合理的停车场管理方法可以提高停车场的利用率和效益。
在实验过程中,我们按照停车场管理的基本流程进行操作,及时登记车辆信息,合理分配停车位,并根据实际情况进行停车位置的调整。
通过合理管理和调整,车辆停放得更加有序,效率和质量得到了显著提高。
五、实验总结:本实验通过对停车场管理的实际操作,使我们更加深入地了解和掌握了停车场管理的基本流程、技巧和方法。
合理的停车场管理可以提高停车场的利用率和效益,减少车辆拥堵,为车主提供更好的服务。
在今后的实践中,我们需要进一步学习和掌握停车场管理的相关知识和技巧,不断提高停车场管理的水平和质量。
六、实验感想:通过这次停车场管理实验,我对停车场管理的重要性有了更深刻的认识。
合理的停车场管理对于提高停车场利用率和效益具有重要意义。
在实际操作过程中,需要注重细节,如及时登记车辆信息,合理分配停车位以及根据实际情况调整停车位置。
我希望通过今后的学习和实践,不断提升自己的停车场管理能力,为社会交通管理贡献力量。
停车场管理实验报告第一篇:实验简介本次实验是关于停车场管理的,旨在探讨停车场的管理方法以及利用计算机技术对停车场进行智能管理的可行性。
实验过程中,我们首先对停车场的基本情况进行了调查和分析,并确定了停车场的布局和车位数量。
然后,我们设计了一个基于计算机视觉技术的车牌识别系统,能够自动识别汽车牌照,并将其和相应的车位绑定。
最后,我们开发了一个基于云端的管理系统,能够实时监控停车场的使用情况,统计收益和预测流量,优化停车场管理。
通过本次实验,我们希望能够提高停车场的利用率,降低管理成本,提高用户体验。
第二篇:实验步骤1. 调查和分析首先,我们对停车场的周边环境、车流量、停车需求等进行了调查和分析,并根据调查结果确定了停车场的布局和车位数量。
2. 设计车牌识别系统我们采取了基于计算机视觉技术的车牌识别系统,能够自动识别汽车牌照,并将其和相应的车位绑定。
该系统主要分为以下三个部分:(1)摄像头:采用高清摄像头,能够自动对焦和自动曝光,提高识别准确率。
(2)软件系统:采用OpenCV图像处理库进行开发,能够自动识别车牌,并提取车牌号码信息。
(3)数据存储:采用MySQL数据库进行存储,能够存储车牌号码和相应的车位信息,方便管理。
3. 开发管理系统我们开发了一个基于云端的管理系统,能够实时监控停车场的使用情况,统计收益和预测流量,优化停车场管理。
该系统主要包括以下功能:(1)实时监控:通过车牌识别系统和摄像头,能够实时监控停车场内的车辆,并提供车位信息和空余位置。
(2)预约停车:用户可以通过手机或网站进行预约停车,并预定相应的车位。
(3)收费管理:管理人员可以通过系统对停车场的收费进行监控和管理,能够统计收益和优化停车场营运。
4. 测试和优化最后,我们进行了系统的测试和优化,并对系统的性能进行了评估和改进,确保停车场管理系统的稳定和可靠性。
第三篇:实验结果与展望经过长时间的实验和努力,我们开发出了一套基于计算机视觉技术的停车场管理系统,能够实现车辆自动识别和智能管理。
最新停车场管理实验报告实验目的:本次实验旨在评估和分析最新的停车场管理系统在实际运行中的效率、准确性以及用户体验。
通过对系统的各项功能进行测试,我们期望能够得出系统的性能指标,并提出可能的改进措施。
实验方法:1. 硬件与软件配置:首先,记录实验所用停车场管理系统的硬件和软件配置,包括但不限于摄像头分辨率、传感器类型、处理单元性能以及软件版本等。
2. 功能性测试:对停车场管理系统的各项功能进行测试,包括车辆识别、空位检测、费用计算、支付方式等。
3. 效率评估:通过模拟不同车流量的情况,记录车辆进出停车场的时间,分析系统处理速度和响应时间。
4. 用户体验调查:通过问卷和现场访谈的方式,收集使用者对停车场管理系统的满意度和改进建议。
实验结果:1. 功能性:实验数据显示,车辆识别准确率达到98%,空位检测准确率为95%。
费用计算无误差,支持多种支付方式,包括现金、银行卡和移动支付。
2. 效率:在高峰时段,车辆平均等待时间为30秒,非高峰时段为10秒。
系统响应时间稳定在2秒以内。
3. 用户体验:大部分用户对新的停车场管理系统表示满意,特别是对快速通行和多种支付方式给予高度评价。
但也有少数用户反映,在系统出现故障时,应急措施不够完善。
结论与建议:根据实验结果,新的停车场管理系统在功能性和效率方面表现良好,用户反馈总体正面。
建议在未来的版本中,加强对系统故障的应急处理方案,并对用户提出的改进建议进行深入分析,以进一步提升用户体验。
同时,建议定期进行系统维护和升级,确保系统长期稳定运行。
一、引言随着城市化进程的加速和汽车数量的激增,停车难问题日益凸显。
传统的停车场管理模式已无法满足现代城市对停车效率和服务质量的要求。
智能停车场系统作为一种创新的解决方案,应运而生。
本实训报告旨在通过对智能停车场系统的设计与实现,探讨其在提高停车场管理效率、优化用户体验方面的应用价值。
二、实训目标1. 理解智能停车场系统的基本原理和技术架构。
2. 掌握智能停车场系统的硬件设备和软件设计方法。
3. 通过实际操作,熟悉智能停车场系统的安装、调试和维护。
4. 分析智能停车场系统的应用价值,为未来城市停车管理提供参考。
三、实训内容1. 智能停车场系统概述智能停车场系统是一种集车辆识别、车位管理、计费收费、信息查询等功能于一体的综合性管理系统。
它主要包括以下模块:(1)车辆识别模块:通过车牌识别、RFID等技术,实现车辆身份的快速识别。
(2)车位管理模块:实时监测车位占用情况,为用户提供空闲车位信息。
(3)计费收费模块:根据车辆类型、停放时间等因素,自动计算停车费用。
(4)信息查询模块:提供停车场实时信息查询,包括车位占用情况、收费标准等。
2. 硬件设备(1)车牌识别一体机:用于车辆身份识别,自动抓拍车牌照片。
(2)车位检测传感器:用于监测车位占用情况,实时反馈给管理系统。
(3)计费设备:包括自动收费机、移动支付终端等,实现车辆缴费。
(4)显示屏:用于显示停车场实时信息,如空闲车位数量、收费标准等。
3. 软件设计(1)数据库设计:设计停车场数据库,存储车辆信息、车位信息、收费记录等。
(2)系统功能模块设计:包括车辆识别、车位管理、计费收费、信息查询等功能模块。
(3)系统界面设计:设计用户友好的操作界面,方便用户进行操作。
4. 实训过程(1)安装与调试:根据设计图纸,安装硬件设备,并进行系统调试。
(2)系统功能测试:对系统功能进行测试,确保系统正常运行。
(3)系统运行与维护:在实际运行过程中,对系统进行维护和优化。
一、实验背景随着城市化进程的加快,汽车数量不断增加,停车难问题日益突出。
为了提高停车效率,减少交通拥堵,实现停车场管理的智能化,我们设计并实现了一个基于数据结构的停车场管理系统。
本系统采用栈和队列数据结构模拟停车场的运行过程,实现了车辆进出、停车位置分配、费用计算等功能。
二、实验目的1. 理解并掌握栈和队列数据结构在停车场管理中的应用。
2. 设计并实现一个停车场管理系统,实现车辆进出、停车位置分配、费用计算等功能。
3. 体会数据结构在实际问题中的应用价值。
三、实验内容1. 系统设计(1)数据结构设计停车场:采用顺序栈实现,栈顶表示停车场最北端,栈底表示停车场最南端。
便道:采用链队列实现,队首表示便道最北端,队尾表示便道最南端。
汽车信息:定义一个结构体,包含车牌号、到达时间、离开时间、停车费用等属性。
(2)功能模块设计进出停车场:根据车辆到达或离开的时间,判断车辆是进入停车场还是离开停车场。
停车位置分配:根据停车场和便道的实际情况,为车辆分配停车位置。
费用计算:根据车辆在停车场停留的时间,计算停车费用。
输出结果:输出每辆车到达后的停车位置、离开时的费用和停留时间。
2. 系统实现(1)数据结构实现顺序栈:使用数组实现,提供入栈、出栈、判空等操作。
链队列:使用链表实现,提供入队、出队、判空等操作。
(2)功能模块实现进出停车场:根据车辆到达或离开的时间,判断车辆是进入停车场还是离开停车场。
停车位置分配:根据停车场和便道的实际情况,为车辆分配停车位置。
费用计算:根据车辆在停车场停留的时间,计算停车费用。
输出结果:输出每辆车到达后的停车位置、离开时的费用和停留时间。
3. 系统测试(1)功能测试测试车辆进出停车场功能。
测试停车位置分配功能。
测试费用计算功能。
(2)性能测试测试系统在高并发情况下的性能。
四、实验结果与分析1. 功能测试结果经过测试,系统各项功能均能正常运行,满足设计要求。
2. 性能测试结果在高并发情况下,系统运行稳定,性能良好。
停车场管理实验报告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. 车位管理模块车位管理模块实现了车位编号、分组和预定等功能,并提供了实时车位状态查询。
同时,我们还可以引入图像检测技术对车位进行状态检测,实时更新车位信息。
停车场管理系统实习报告一、实习背景及目的随着我国经济的快速发展和城市化进程的推进,城市交通问题日益凸显,特别是停车问题。
为了缓解停车难问题,提高停车场管理效率,本次实习我选择了停车场管理系统作为研究对象。
实习的目的是了解停车场管理系统的现状,掌握停车场管理系统的运作模式,探讨如何优化停车场管理系统,提高停车效率和管理水平。
二、实习内容及过程1. 停车场管理系统的了解在实习过程中,我首先对停车场管理系统的基本概念、组成部分和运作原理进行了学习。
停车场管理系统主要包括车位信息实时更新、车牌识别、车位预约、自动计费、支付处理等功能。
通过这些功能,停车场管理系统可以实现对车辆的快速进出、车位的高效利用和管理。
2. 停车场管理系统的实际操作为了更深入地了解停车场管理系统,我参与了实际操作。
在操作过程中,我学习了如何使用车位探测器收集车位信息,如何通过车牌识别系统快速识别车辆,以及如何处理预约车位、自动计费和支付等业务。
此外,我还学习了如何通过管理系统对停车场进行实时监控,确保车位的高效利用和管理。
3. 停车场管理系统的优化探讨在实际操作过程中,我发现停车场管理系统存在一些问题,如车位信息更新不及时、支付方式单一、客户服务不足等。
针对这些问题,我提出了以下优化建议:(1)引入智能算法,提高车位信息更新的实时性,减少误差。
(2)增加多种支付方式,如微信支付、支付宝支付等,方便顾客支付。
(3)加强客户服务,如设立客户服务中心,提供导航、咨询等服务。
(4)开展停车场共享计划,将空闲车位共享给周边商户和居民,提高车位利用率。
三、实习收获及反思通过本次实习,我对停车场管理系统有了更深入的了解,认识到了停车场管理的重要性。
同时,我也学会了如何使用停车场管理系统进行实际操作,掌握了相关技能。
实习过程中,我发现停车场管理系统还存在一些问题,这让我意识到优化停车场管理系统的重要性。
在今后的学习和工作中,我将不断探索停车场管理系统的优化方法,为提高停车场管理水平和停车效率做出贡献。
停车场管理系统一、实验目的和要求1. 实验目的(1) 熟悉图形用户界面的设计原则(2) 利用一种设计工具完成图形化的用户界面设计(3) 熟悉可用性评估的基本方法2. 实验要求(1) 采用OVID方法进行系统分析及层次结构设计,并记录全过程,;(2) 完成本实验要求的界面设计,体现界面设计的一般原则;(3) 进行可用性评估,不断完善;(4) 撰写本实验的实验报告。
二、实验仪器和设备微型计算机 + Win7 + Visual Studio + Visio + SQL Server + ……三、实验过程A.说明:(1)设计开发者在设计开发的时候都要搜集用户需求并记录分析,不断修改完善停车场管理系统的界面设计;(2)用户负责提出合理化需求和建议,并评估系统的可用性。
分工:(1)设计开发者:张海权;(2)用户:吴跟强B.停车场管理系统界面设计部分:1.概述部分:为了更好的管理停车场,实现相关功能,体现人机交互的特点,本人从用户角度出发,和设计开发者不断的交流,完善停车场管理系统,从而更好的实现停车场的界面设计。
2.停车场提出需求:(1)信息需求。
车场的信息主要有车场名称,车位总数,空车位数,停泊位数,预约位数。
车辆列表(车牌号,车位,累积小时)。
车场中每个车位区的车位图,每个车位区的空车位的状态。
例如:某停车场有200个车位,当前空车位192,停泊位数7,预约位数1,……(2)显示需求。
车辆出场时,面板显示车辆车牌号码,入场日期和时间,以及累计时间,并显示计时收费金额,系统支持打印发票。
车辆入场或预约入场时,要记录车牌号码,入场日期,入场时间,预约时长等,并指定车位。
操作员可以根据区位,来选择查看车位图(A区~J区),有车和空车位用不同的符号表示,并在车位区状态栏上显示数量。
面板显示全部车辆列表,并可查询检索车辆。
例如:值班员张小刚正在处理2016年6月12日入场的车辆“苏A0909X”,该车入场时间是10:32,累计时间1.2小时,计时收费6.0元,使用A05车位,A车位区状态栏自动显示该车位置信息,以及所在车位区4个位有车,20个位是空车位,……2.1自身充当用户角色分析该系统的用户为偶然型用户(需停车在停车场的用户),既不需要计算机应用领域的专业知识,遍布各种年龄层次、文化背景、职业特征和爱好等。
数据结构停车场管理实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构中的栈和队列等知识,提高解决实际问题的能力。
二、实验环境编程语言: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、车辆正常进入停车场,并在停车场已满时在便道等待。
华北水利水电学院数据结构实验报告2011~2012学年第二学期2011级计算机专业班级:****学号:*****姓名:****-实验二栈和队列及其应用一、实验目的:1.掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。
2.掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。
二、实验内容:1.链栈的建立、入栈、出栈操作。
2.环形队列的建立、入队、出队操作.3.停车场管理。
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去"信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费).栈以顺序结构实现,队列以链表(带头结点)实现。
需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。
输入数据按到达或离去的时刻有序。
栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
设n=2,输入数据为:(‘A',1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3, 20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。
每一组输入数据包括三个数据项:汽车“到达”或“离去"信息、汽车牌照号码及到达或离去的时刻,其中,‘A'表示到达;‘D'表示离去,‘E’表示输入结束。
三、实验要求:1.C/ C++完成算法设计和程序设计并上机调试通过。
2.撰写实验报告,提供实验结果和数据.3.写出算法设计小结和心得.四、程序源代码:1。
#include<iostream.h〉#include<stdlib.h〉typedef struct stnode{int data;stnode *next;}LinkStack;//创建一个栈头结点,无头结void InitStack(LinkStack *&ls){ls=NULL;}//进栈,相当于头插法void Push(LinkStack *&ls,int x){LinkStack *p;p=(LinkStack *)malloc(sizeof(LinkStack));p—〉data=x;p-〉next=NULL;p—>next=ls;ls=p;}//出栈void Pop(LinkStack *&ls){if(ls==NULL)return;LinkStack *p;int x;p=ls;while(p){x=p—>data;ls=p->next;cout<<x<〈” ";free(p);p=ls;}cout〈<”出栈成功!!”<<endl;}//创建栈void CreatStack(LinkStack *&ls){InitStack(ls);int i=1,num;cout〈<”以000表示输入结束!!”<<endl; while(1){cout〈〈”请输入第"〈〈i〈〈"个元素:”;cin>>num;if(num==000)break;Push(ls,num);i++;}cout〈〈”进栈成功!!”<〈endl;}void main(){LinkStack *ls,*p;CreatStack(ls);Pop(ls);}2。
#include〈iostream。
h〉#define QueueSize 100typedef struct sqqueue{int data[QueueSize];int front,rear;}SqQueue;//初始化队列void InitQueue(SqQueue &qu){qu。
rear=qu。
front=0;}//进队int EnQueue(SqQueue &sq,int x){if((sq。
rear+1)%QueueSize==sq.front)return 0;sq。
rear=(sq。
rear+1)%QueueSize;sq.data[sq.rear]=x;return 1;}//出队void DeQueue(SqQueue &sq){int x;if(sq。
front==sq。
rear)return;while(sq。
front!=sq.rear){sq。
front=(sq.front+1)%QueueSize;x=sq。
data[sq。
front];cout〈〈x<〈" ”;}cout<〈”出队成功!!”〈〈endl;}//创建队void CreatQueue(SqQueue &sq){InitQueue(sq);int num,i=1;cout<<”以000表示输入结束!!”<〈endl;while(1){cout〈<”请输入第”<〈i<<”个元素:"; cin>〉num;if(num==000)break;EnQueue(sq,num);i++;}cout<〈”进队成功!!”〈<endl;}void main(){SqQueue sq;CreatQueue(sq);DeQueue(sq);}3.#include<iostream.h〉#include〈stdlib.h>#include〈stdio。
h〉#define MAX 2#define price 0。
05typedef struct node{int hour;int min;}Time;//时间结点typedef struct Node{char num[10];//车牌号Time reach;//时间Time leave;}CarNode;//车辆信息结点typedef struct NODE{CarNode *stack[MAX];int top;}CarStack;//顺序栈模拟车站typedef struct QNode//队列{CarNode *data;QNode *next;}QueueNode;//链队结点类型typedef struct pqrt{QueueNode *front,*rear;//设置头指针尾指针}LinkQueueCar;//模拟通道//初始化栈void InitStack(CarStack *cs);//初始化队列(便道)int InitQueue(LinkQueueCar *qc);//车辆到达int Arrival(CarStack *Enter,LinkQueueCar *qc);//车辆离开void Leave(CarStack *Enter,CarStack *Temp,LinkQueueCar *qc);//显示车库信息void List(CarStack s,LinkQueueCar w);void main(){CarStack Enter,Temp;LinkQueueCar Wait;int ch;InitStack(&Enter);InitStack(&Temp);InitQueue(&Wait);while(1){cout<〈”欢迎光临”<<endl;cout<〈"-—-—-—-———-—--—-—————-—”<〈endl;cout〈〈”1。
车辆到达”<〈endl;cout<<”2。
车辆离开”<〈endl;cout<〈”3。
车场显示”〈〈endl;cout<<"4.退出程序"〈〈endl;cout<<”——————-—-—-———-——--——--"〈〈endl;cout〈〈”请选择所需的服务!”〈〈endl;while(1){cin>〉ch;if(ch〉=1&&ch<=4)break;}switch(ch){case 1:Arrival(&Enter,&Wait);break;case 2:Leave(&Enter,&Temp,&Wait);break;case 3:List(Enter,Wait);break;case 4:exit(0);break;default:break;}}}void InitStack(CarStack *cs){cs—>top=—1;//初始化栈for(int i=0;i<MAX;i++)cs->stack[cs—>top]=NULL;}int InitQueue(LinkQueueCar *qc)//初始化队列{//qc=(LinkQueueCar *)malloc(sizeof(LinkQueueCar));这句话不能要?????qc—>front=(QueueNode *)malloc(sizeof(QueueNode));if(qc—〉front!=NULL){qc->front—>next=NULL;//带头结点的qc—〉rear=qc-〉front;//一定要注意赋值顺序不能反了!!!!!!!!!!return 1;}elsereturn —1;}//打印车站车离开的信息void Print(CarNode *p,int room){int A1,A2,B1,B2;//车辆收费cout<〈”请输入离开时间:/**:**/”〈〈endl;cout<〈"请输入离开时间的时(0-23):”;cin〉>p—〉leave.hour;while(p—>leave。