实验题目停车场管理系统

合集下载

停车场模拟管理系统

停车场模拟管理系统

实验二停车场模拟管理系统一题目内容:设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路的车辆再按原次序进入车场。

在这里假设汽车不能从便道上开走,试设计这样一个停车场模拟管理程序。

二问题分析:(1)为了便于区分每辆汽车并了解每辆汽车当前所处的位置,需要记录汽车的牌照号码和汽车的当前状态,所以为汽车定义一个新的类型CAR(2)由于车位是一个狭长的通道,所以不允许两辆车同时进入停车位,当有车到来要进入停车位的时候车要顺次停放,当某辆车要离开时,比它后到的车要先暂时离开停车位,而且越后到的车就越先离开停车位,显然这和栈的“后进先出”特点相吻合,所以可以使用一个栈来描述停车位。

由于停车位只能停放有限的几辆车,而且为了便于停车场的管理,要为每个车位分配一个固定的编号,不妨设为1、2、3、4、5(可利用数组的下标),分别表示停车位的1车位、2车位、3车位、4车位、5车位,针对这种情况使用一个顺序栈比较方(3)当某辆车要离开停车场的时候,比它后进停车位的车要为它让路,而且当它开走之后,让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中,对辅助栈也采用顺序栈,具体定义与停车位栈类似,(4)功能函数STOPPING * init_stopping() 初始化“停车位栈”BUFFER * init_buff() 初始化“辅助栈”PA VEMENT * init_pavement() 初始化“便道队列”Int car_come(int pos) 将pos指定的汽车信息输入“停车位栈”,并修改该车状态Int car_leave(int pos) 将pos指定的汽车信息从“停车位栈”删除,并修改该车状态Int stop_to_buff(int pos) 将pos指定的汽车信息从“停车位栈”移动到“辅助栈”Int buff_to_stop(int pos) 将pos指定的汽车信息从“辅助栈”移动到“停车位栈”Int pave_to_stop(int pos) 将pos指定的汽车信息从“便道队列”移动到“停车位栈”Int car_disp(int pos) 将pos指定的汽车信息显示在屏幕上三,程序设计// 停车场管理.cpp : Defines the entry point for the console application.//#include<iostream.h>#include"stdio.h"#include <stdlib.h>#include<string.h>#include <memory.h>#include <time.h>#include <fstream.h>///////////////////////#define STACKSIZE1 4/*停车场容量STACKSIZE1-1个位*/#define STACKSIZE2 10/*临时停车场容量*/#define maxqueue 4 //只能存maxqueue-1个在便道#define null 0/////////////////////#include"Carinfo.h"#define LEN sizeof(struct Carinfo)#include"Sqstack.h"#include"tempstack.h"#include"Queue.h"#include"Reach.h"#include"Leave.h"#include"Disppark.h"#include"Disppave.h"#include"putininfo.h"//////////////////////////*------------------------------车辆登记--------------------------------*/void putininfo(Carinfo *car,Sqstack *park){// char ch[128];// char timestr[128];if(!car){cout<<"分配空间失败!"<<endl;}else{cout<<"分配空间成功!可以登记停车。

停车场模拟管理系统实验报告

停车场模拟管理系统实验报告

停车场模拟管理系统实验报告实验报告:停车场模拟管理系统一、引言停车场是现代城市交通管理中不可或缺的一部分,如何高效地管理停车场成为城市交通规划和管理的重要课题之一、为了更好地理解停车场系统的运作原理,并学习相关管理策略,我们设计了停车场模拟管理系统实验。

二、实验目的1.了解停车场系统的工作流程与每个角色的职责;2.掌握停车场管理系统的设计与实现方法;3.学习利用计算机模拟系统来辅助管理停车场。

三、实验方法与步骤1.系统需求分析:明确系统主要功能,确定系统用户和使用场景,梳理系统流程;2.系统设计:根据需求分析,设计系统的功能模块、数据库表结构、界面设计等;3.系统实现:使用编程语言开发系统,编写相应的代码实现各个功能模块;4.系统测试与优化:测试系统的各项功能是否正常工作,进行反复测试并修复潜在的问题;5.系统上线与使用:将系统部署到服务器上,供用户正式使用。

四、实验结果与分析我们设计的停车场模拟管理系统主要包括以下功能:1.车辆进入停车场:当车辆驶入停车场时,系统记录车辆信息,并分配一个唯一的停车位;2.车辆离开停车场:车辆离开停车场时,系统根据停车时间计算停车费用,并更新车辆的状态信息;3.车位管理:系统可以查看当前停车场车位的使用情况,根据需要修改停车位的状态;4.停车记录查询:系统可以查询指定车辆的停车记录,包括进入停车场的时间、离开停车场的时间以及停车费用;5.收费管理:系统可以提供不同计费规则的选择,并根据规则计算车辆的停车费用;6.用户管理:系统可以管理停车场的员工和管理员账号,设置不同的权限和角色。

通过对实际停车场运营流程的模拟,我们可以观察到以下结果:1.系统能够准确记录每辆车进入和离开停车场的时间,方便车主查询;2.停车场车位使用情况能够实时更新,帮助管理员有效管理停车资源;3.不同计费规则可以灵活设置,可以根据不同需求调整停车费用;4.员工和管理员账号权限分离,保证了系统的安全性和管理的有序性。

最新停车场管理实验报告

最新停车场管理实验报告

最新停车场管理实验报告实验目的:本次实验旨在评估和分析最新的停车场管理系统在实际运行中的效率、准确性以及用户体验。

通过对系统的各项功能进行测试,我们期望能够得出系统的性能指标,并提出可能的改进措施。

实验方法:1. 硬件与软件配置:首先,记录实验所用停车场管理系统的硬件和软件配置,包括但不限于摄像头分辨率、传感器类型、处理单元性能以及软件版本等。

2. 功能性测试:对停车场管理系统的各项功能进行测试,包括车辆识别、空位检测、费用计算、支付方式等。

3. 效率评估:通过模拟不同车流量的情况,记录车辆进出停车场的时间,分析系统处理速度和响应时间。

4. 用户体验调查:通过问卷和现场访谈的方式,收集使用者对停车场管理系统的满意度和改进建议。

实验结果:1. 功能性:实验数据显示,车辆识别准确率达到98%,空位检测准确率为95%。

费用计算无误差,支持多种支付方式,包括现金、银行卡和移动支付。

2. 效率:在高峰时段,车辆平均等待时间为30秒,非高峰时段为10秒。

系统响应时间稳定在2秒以内。

3. 用户体验:大部分用户对新的停车场管理系统表示满意,特别是对快速通行和多种支付方式给予高度评价。

但也有少数用户反映,在系统出现故障时,应急措施不够完善。

结论与建议:根据实验结果,新的停车场管理系统在功能性和效率方面表现良好,用户反馈总体正面。

建议在未来的版本中,加强对系统故障的应急处理方案,并对用户提出的改进建议进行深入分析,以进一步提升用户体验。

同时,建议定期进行系统维护和升级,确保系统长期稳定运行。

停车系统实验报告

停车系统实验报告

一、实验背景随着城市化进程的加快,汽车数量不断增加,停车难问题日益突出。

为了提高停车效率,减少交通拥堵,实现停车场管理的智能化,我们设计并实现了一个基于数据结构的停车场管理系统。

本系统采用栈和队列数据结构模拟停车场的运行过程,实现了车辆进出、停车位置分配、费用计算等功能。

二、实验目的1. 理解并掌握栈和队列数据结构在停车场管理中的应用。

2. 设计并实现一个停车场管理系统,实现车辆进出、停车位置分配、费用计算等功能。

3. 体会数据结构在实际问题中的应用价值。

三、实验内容1. 系统设计(1)数据结构设计停车场:采用顺序栈实现,栈顶表示停车场最北端,栈底表示停车场最南端。

便道:采用链队列实现,队首表示便道最北端,队尾表示便道最南端。

汽车信息:定义一个结构体,包含车牌号、到达时间、离开时间、停车费用等属性。

(2)功能模块设计进出停车场:根据车辆到达或离开的时间,判断车辆是进入停车场还是离开停车场。

停车位置分配:根据停车场和便道的实际情况,为车辆分配停车位置。

费用计算:根据车辆在停车场停留的时间,计算停车费用。

输出结果:输出每辆车到达后的停车位置、离开时的费用和停留时间。

2. 系统实现(1)数据结构实现顺序栈:使用数组实现,提供入栈、出栈、判空等操作。

链队列:使用链表实现,提供入队、出队、判空等操作。

(2)功能模块实现进出停车场:根据车辆到达或离开的时间,判断车辆是进入停车场还是离开停车场。

停车位置分配:根据停车场和便道的实际情况,为车辆分配停车位置。

费用计算:根据车辆在停车场停留的时间,计算停车费用。

输出结果:输出每辆车到达后的停车位置、离开时的费用和停留时间。

3. 系统测试(1)功能测试测试车辆进出停车场功能。

测试停车位置分配功能。

测试费用计算功能。

(2)性能测试测试系统在高并发情况下的性能。

四、实验结果与分析1. 功能测试结果经过测试,系统各项功能均能正常运行,满足设计要求。

2. 性能测试结果在高并发情况下,系统运行稳定,性能良好。

课程设计停车场管理系统

课程设计停车场管理系统

课程设计停车场管理系统一、课程目标知识目标:1. 让学生理解停车场管理系统的基本原理和功能需求。

2. 使学生掌握利用所学编程语言设计简单的停车场管理系统。

3. 帮助学生了解数据库在停车场管理系统中的应用。

技能目标:1. 培养学生运用所学知识,如流程图绘制、代码编写和调试等,解决实际问题的能力。

2. 提高学生团队协作、沟通表达和项目管理的能力。

情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发他们探索新技术、新方法的热情。

2. 培养学生面对实际问题时,积极思考、勇于创新的态度。

3. 增强学生的环保意识,让他们认识到智能停车场系统对缓解交通压力、提高生活质量的重要性。

课程性质:本课程为信息技术学科,以项目式教学为主,结合教材内容,使学生能够将理论知识与实际应用相结合。

学生特点:考虑到学生所在年级,他们在前期课程中已掌握了基本的编程知识和数据库应用,具备一定的自学能力和团队协作精神。

教学要求:在教学过程中,教师应注重引导学生自主探究、动手实践,鼓励学生提出问题、解决问题。

同时,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得实质性的进步。

通过本课程的学习,使学生能够达到以上设定的课程目标,为后续相关课程打下坚实基础。

二、教学内容1. 教学大纲:a. 停车场管理系统概述:介绍停车场管理系统的基本概念、功能和应用场景。

b. 系统需求分析:讲解如何进行需求分析,明确系统所需实现的功能和性能要求。

c. 系统设计:包括数据库设计、界面设计和模块设计,阐述各部分的设计原则和实现方法。

d. 编程实现:利用所学编程语言(如Python、Java等),实现停车场管理系统的核心功能。

e. 系统测试与优化:教授测试方法,分析测试结果,提出优化策略。

2. 教学内容安排与进度:a. 概述(1课时):引导学生了解停车场管理系统的背景和意义。

b. 需求分析(2课时):指导学生进行实际需求分析,明确系统目标。

停车场管理系统实习报告

停车场管理系统实习报告

停车场管理系统实习报告一、实习背景及目的随着我国经济的快速发展和城市化进程的推进,城市交通问题日益凸显,特别是停车问题。

为了缓解停车难问题,提高停车场管理效率,本次实习我选择了停车场管理系统作为研究对象。

实习的目的是了解停车场管理系统的现状,掌握停车场管理系统的运作模式,探讨如何优化停车场管理系统,提高停车效率和管理水平。

二、实习内容及过程1. 停车场管理系统的了解在实习过程中,我首先对停车场管理系统的基本概念、组成部分和运作原理进行了学习。

停车场管理系统主要包括车位信息实时更新、车牌识别、车位预约、自动计费、支付处理等功能。

通过这些功能,停车场管理系统可以实现对车辆的快速进出、车位的高效利用和管理。

2. 停车场管理系统的实际操作为了更深入地了解停车场管理系统,我参与了实际操作。

在操作过程中,我学习了如何使用车位探测器收集车位信息,如何通过车牌识别系统快速识别车辆,以及如何处理预约车位、自动计费和支付等业务。

此外,我还学习了如何通过管理系统对停车场进行实时监控,确保车位的高效利用和管理。

3. 停车场管理系统的优化探讨在实际操作过程中,我发现停车场管理系统存在一些问题,如车位信息更新不及时、支付方式单一、客户服务不足等。

针对这些问题,我提出了以下优化建议:(1)引入智能算法,提高车位信息更新的实时性,减少误差。

(2)增加多种支付方式,如微信支付、支付宝支付等,方便顾客支付。

(3)加强客户服务,如设立客户服务中心,提供导航、咨询等服务。

(4)开展停车场共享计划,将空闲车位共享给周边商户和居民,提高车位利用率。

三、实习收获及反思通过本次实习,我对停车场管理系统有了更深入的了解,认识到了停车场管理的重要性。

同时,我也学会了如何使用停车场管理系统进行实际操作,掌握了相关技能。

实习过程中,我发现停车场管理系统还存在一些问题,这让我意识到优化停车场管理系统的重要性。

在今后的学习和工作中,我将不断探索停车场管理系统的优化方法,为提高停车场管理水平和停车效率做出贡献。

实验二、停车场管理系统

实验二、停车场管理系统

实验二:停车场管理问题一、问题描述1、实验题目:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车停在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。

若停车场内已经停满n辆车,那么后来的车只能在门外的便道上等候。

一旦有车开走,则排在便道上的第一辆车即可进入。

当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原来的次序进入车场。

每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。

2、基本要求:为停车场编制按上述要求进行管理的模拟程序。

3、测试数据:设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‟表示输入结束。

例如:(…A‟,1,5)表示1号牌照车在5这个时刻到达;(…D‟,1,15)表示1号牌照车在15这个时刻离去。

二、需求分析1、本程序是模拟现实生活中的停车场管理系统,有较强的实用性,及较高的可靠性。

2、该程序具有友好的用户界面,操作多样,管理方面。

3、用户根据提示选择相应的操作,并根据提示输入每辆车的信息。

三、概要设计1、停车场的管理流程分析:①当车辆进入停车场时,首先检查停车场是否已满,若未满,车辆进入停车场,若已满,车辆进入便道等候。

②当车辆要求离开时,先让在它之后进入的车辆退出停车场为它让路,再让该车退出停车场,之后,让路的所有车辆再按其原来进入停车场的次序进入停车场。

再检查便道上是否还有车等候,有车则让最先等候的那辆车进入停车场。

2、数据结构分析由于停车场只有一个大门,当停车场内某辆车要离开时,在它之后的车辆必须先退出停车场为它让路,先进停车场的后退出,符合“先进后出”的特点,所以用一个栈来模拟停车场。

人机交互实验报告- 停车场管理系统

人机交互实验报告- 停车场管理系统

停车场管理系统一、实验目的和要求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自身充当用户角色分析该系统的用户为偶然型用户(需停车在停车场的用户),既不需要计算机应用领域的专业知识,遍布各种年龄层次、文化背景、职业特征和爱好等。

停车场管理系统及技术

停车场管理系统及技术
D.车位占用传感器
4.以下哪些是停车场管理系统可能采用的支付方式?()
A.现金支付
B.无线射频识别(RFID)支付
C.移动应用程序支付
D.信用卡支付
5.停车场管理系统在设计和实施过程中需要考虑哪些因素?()
A.停车场规模
B.车流量
C.停车需求
D.用户便利性
6.停车场管理系统中的安全措施可以包括以下哪些?()
第四部分主观题(参考)
1.停车场管理系统通过实时车位信息、智能导航、快速支付等功能提升用户体验。例如,通过手机APP实时显示空余车位,提前预约车位,减少寻找时间,提高效率。
2.关键因素包括:车流量分析、车位数量与布局、支付系统兼容性、安全监控、数据分析能力。这些因素有助于提升停车效率,确保安全,优化管理,提高用户满意度。
B. Apple Pay、Google Wallet、Samsung Pay
C.以上都是
D.以上都不是
10.以下哪种情况不会触发停车场管理系统的报警功能?()
A.车位已满
B.车辆超时停车
C.车辆未支付
D.车辆提前离场
11.停车场管理系统中的车位预约功能主要依赖于以下哪种技术?()
A.互联网
B.移动通信
2.车牌识别技术可以100%准确地识别所有车牌。()
3.停车场管理系统中的车位引导系统能够实时显示空余车位的数量和位置。()
4.停车场收费系统只能接受一种支付方式。()
5.在实施停车场管理系统时,不需要考虑与周边交通环境的协调。()
6.停车场管理系统的数据统计功能可以为停车场运营提供决策支持。()
7.闸机在停车场管理系统中仅用于车辆的出入控制。()
A.停车场入口控制器
B.停车场出口控制器

数据结构-停车场管理系统实验报告

数据结构-停车场管理系统实验报告

数据结构-停车场管理系统实验报告数据结构停车场管理系统实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构的知识,包括栈、队列、链表等,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程语言为C++,开发环境为Visual Studio 2019。

三、需求分析1、停车场内有固定数量的停车位。

2、车辆进入停车场时,记录车辆信息(车牌号、进入时间)。

3、车辆离开停车场时,计算停车费用并输出相关信息。

4、能够显示停车场内车辆的停放情况。

四、数据结构设计1、为了实现车辆的先进先出,选择队列来存储停车场内的车辆信息。

2、用栈来存储临时停放的车辆信息,以便在停车场已满时进行处理。

五、算法设计1、车辆进入停车场检查停车场是否已满。

如果未满,将车辆信息加入队列,并记录进入时间。

2、车辆离开停车场在队列中查找要离开的车辆。

计算停车时间和费用。

将车辆从队列中删除。

3、显示停车场内车辆停放情况遍历队列,输出车辆信息。

六、主要代码实现```cppinclude <iostream>include <string>include <ctime>using namespace std;//车辆结构体struct Car {string licensePlate; //车牌号time_t entryTime; //进入时间};//队列类class Queue {private:Car data;int front, rear, capacity;public:Queue(int size) {capacity = size;data = new Carcapacity;front = rear = 0;}~Queue(){delete data;}bool isFull(){return (rear + 1) % capacity == front;}bool isEmpty(){return front == rear;}void enqueue(Car car) {if (isFull()){cout <<"停车场已满!"<< endl; return;}datarear = car;rear =(rear + 1) % capacity;}Car dequeue(){if (isEmpty()){cout <<"停车场为空!"<< endl;return Car();}Car car = datafront;front =(front + 1) % capacity;return car;}void display(){if (isEmpty()){cout <<"停车场内没有车辆。

数据结构实验报告模拟停车场管理

数据结构实验报告模拟停车场管理

数据结构实验报告模拟停车场管理实验目的:通过模拟停车场管理的过程,理解数据结构的应用和实际工程问题的解决思路。

实验内容:1.设计停车场类和车辆类,并实现相关操作方法。

2.模拟停车场管理的过程,包括车辆的进入和离开。

3.根据实际需求设计停车场管理算法,如何选择停车位和调度车辆等。

实验步骤:1.设计停车场类停车场类需要保存停车位的信息,可以使用数组或链表实现。

需要提供以下方法:- void addCar(Car car):将车辆添加到停车场,如果停车场已满,则禁止入场。

- void removeCar(Car car):将车辆从停车场移除,并更新停车位信息。

- int getAvailableSpaces(:返回停车场中当前可用的停车位数量。

2.设计车辆类车辆类需要保存车辆的信息,如车牌号、车型等。

3.实现停车场管理算法停车场管理需要考虑车辆进入和离开的顺序,以及停车位的选择等问题。

可以使用队列或堆栈等数据结构来保存车辆的进出顺序。

停车位的选择可以根据具体算法进行,如先到先得、最近最便等原则。

4.完成模拟停车场管理过程的代码根据实际需求,编写代码模拟车辆进入和离开停车场的过程。

可以通过输入车辆信息和操作指令来模拟。

5.测试与优化对停车场管理算法进行测试,并根据实际情况进行优化。

可以通过增加数据量、调整车辆进出顺序等方式进行测试,并根据测试结果进行优化。

实验结果:经过实验测试,停车场管理系统可以良好地处理车辆的进入和离开,并正确计算可用停车位的数量。

通过合理的停车位选择算法,确保了车辆进出的顺序。

实验总结:通过本次实验,我们学习了如何利用数据结构来实现停车场管理系统。

停车场管理系统是一种常见的实际应用,对于解决停车难问题具有重要意义。

在实验过程中,我们掌握了设计和实现停车场类、车辆类以及停车场管理算法的方法,加深了对数据结构的理解和应用。

在实验过程中,我们还发现停车场管理算法可以通过不同的策略进行优化,如最大化停车利用率、最小化顾客等待时间等。

智能停车系统实验报告(3篇)

智能停车系统实验报告(3篇)

第1篇一、实验目的随着城市化进程的加快,城市交通压力日益增大,停车难问题成为城市管理的一大难题。

为了解决这一问题,本研究旨在设计并实现一套智能停车系统,通过利用现代信息技术,提高停车场的运营效率,降低用户停车成本,缓解城市交通压力。

二、实验内容本次实验主要内容包括以下几个方面:1. 系统需求分析:分析停车场管理中存在的问题,确定系统功能需求。

2. 系统设计:根据需求分析,设计智能停车系统的整体架构、模块划分、功能实现等。

3. 系统实现:利用编程语言和开发工具,实现智能停车系统的各项功能。

4. 系统测试:对系统进行功能测试、性能测试、稳定性测试等,确保系统正常运行。

三、实验步骤1. 系统需求分析- 分析停车场管理中存在的问题,如车位利用率低、停车效率低、停车费用高、车位信息不透明等。

- 确定系统功能需求,包括车位管理、停车缴费、车位引导、用户管理、系统维护等。

2. 系统设计- 整体架构:采用分层架构,包括数据层、业务逻辑层、表现层等。

- 模块划分:将系统划分为多个模块,如用户模块、车位模块、缴费模块、引导模块等。

- 功能实现:利用编程语言和开发工具,实现各模块的功能。

3. 系统实现- 用户模块:实现用户注册、登录、修改密码等功能。

- 车位模块:实现车位分配、查询、预约等功能。

- 缴费模块:实现在线缴费、历史缴费记录查询等功能。

- 引导模块:实现车位引导、路径规划等功能。

- 系统维护:实现系统日志管理、数据备份等功能。

4. 系统测试- 功能测试:测试系统各项功能是否按照设计要求实现。

- 性能测试:测试系统在高峰时段的运行效率,确保系统稳定运行。

- 稳定性测试:测试系统在极端条件下的稳定性,确保系统安全可靠。

四、实验结果与分析1. 功能实现通过本次实验,成功实现了智能停车系统的各项功能,包括用户管理、车位管理、停车缴费、车位引导等。

用户可以通过手机APP或网页端实现车位查询、预约、缴费等功能,提高了停车效率。

停车场管理系统C语言实现

停车场管理系统C语言实现

一.问题描述1.实验题目:设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出;汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列大门在最南端,最先到达的第一辆车停放在车场的最北端;若停车场内已经停满n辆车,那么后来的车只能在门外的便道上等候;一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用;试为停车场编制按上述要求进行管理的模拟程序;要求:根据各结点的信息,调用相应的函数或者语句,将结点入栈入队,出栈或者出队;二.需求分析1.程序所能达到的基本可能:程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理;栈以顺序结构实现,队列以链表结构实现;同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车;输入数据按到达或离去的时刻有序;当输入数据包括数据项为汽车的“到达”‘A’表示信息,汽车标识牌照号以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去”‘D’表示信息,汽车标识牌照号以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用便道上停留的时间不收费;当输入数据项为‘P’,0,0时,应输出停车场的车数;当输入数据项为‘W’, 0, 0时,应输出候车场车数;当输入数据项为‘E’, 0, 0,退出程序;若输入数据项不是以上所述,就输出"ERROR";2.输入输出形式及输入值范围:程序运行后进入循环,显示提示信息:“Please input the state,number and time of the car:”,提示用户输入车辆信息“到达”或者“离开”,车牌编号,到达或者离开的时间;若车辆信息为“到达”,车辆信息开始进栈模拟停车场,当栈满,会显示栈满信息:“The parking place is full”,同时车辆进队列模拟停车场旁便道,并显示该进入便道车辆的车牌编号,让用户知道该车的具体位置;若车辆信息为“离开”,会显示该车进入停车场的时间以及相应的停车费用,若该车较部分车早进停车场,这部分车需先退出停车场,暂时进入一个新栈为其让道,会显示进入新栈的车辆的车牌编号及其入停车场的时间,当待离开车离开停车场后,这部分车会重新进入停车场,同时便道上的第一辆车进入停车场;若输入‘P ’,0,0,会显示停车场的车数;若输入‘W ’,0,0,会显示便道上的车数;若输入‘E ’,0,0,程序会跳出循环,同时程序结束;若输入为其他字母,程序会显示“ERROR ”报错;若便道上没有车辆停靠,会显示便道为空的信息:用户每输入一组数据,程序就会根据相应输入给出输出;输入值第一个必须为字母,后两个为数字;3.测试数据要求:用户输入字母时,输入大写或小写,都可以被该程序识别,正常运行;但要求用户输入数据时,三个数据项之间必须用逗号相分隔开;三.概要设计为了实现上述功能,该程序以栈模拟停车场以及临时停放为给要离去的汽车让路而从停车场退出来的汽车的场地,以队列模拟车场外的便道,因此需要栈和队列这两个抽象数据类型;1.栈抽象数据类型定义:ADT SqStack{数据对象:D={char d c b a d c b a i i i i i i i i ∈∈∈∈int,int,int,|,,,, i=1,2,3....,n,n 0≥}数据关系:R={i i i d b a ,,|∈i i i d b a ,,D,∈i i i d b a ,,struct car};基本操作:Judge_Outputs,q,r ;列抽象数据类型定义:ADT LinkQueue{数据对象:D={∈i i i i a c b a |,,Qnode ,∈i b Qnode,int ∈i c ,i=1,2,3....,n,n 0≥};数据关系:R=φ;基本操作:Judge_Outputs,q,r;要算法流程图:I.Judge_Output算法流程图:II.A_cars算法流程图:III.D_cars算法流程图:4.本程序保护模块:主函数模块栈单元模块:实现栈的抽象数据类型队列单元模块:实现队列的抽象数据类型调用关系:四.详细设计1.相关头文件库的调用说明:include<>include<>define MAXSIZE 14define n 2define fee 102.元素类型、结点类型和结点指针类型:struct car{ char bb;int num;int time;};struct rangweicar{int num;int time;};typedef struct stackk{struct rangweicar HMAXSIZE;int topp;}SqStackk;define QNODE struct QnodeQNODE { int data;QNODE next;};3.栈类型和队列类型:typedef struct stack{struct car Gn;int top;}SqStack;typedef struct linkqueue{QNODE front,rear;int geshu;}LinkQueue;b=='E'||r.bb=='e'printf"STOP\n";else ifr.bb=='P'||r.bb=='p'printf"The number of parking cars is %d\n",s->top+1; else ifr.bb=='W'||r.bb=='w'printf"The number of waiting cars is %d\n",q->geshu; else ifr.bb=='A'||r.bb=='a'A_carss,q,r;else ifr.bb=='D'||r.bb=='d'D_carss,q,r;elseprintf"ERROR\n";}A_carsSqStack s,LinkQueue q,struct car a {QNODE t;ifs->top=n-1{s->top++;s->Gs->top.bb=;s->Gs->top.num=;s->Gs->top.time=;}else{printf"The parking place is full\n";t=QNODE mallocsizeofQNODE;t->data=;t->next=NULL;q->rear->next=t;q->rear=t;printf"the number of the car in the access road is:%d\n",q->rear->data;q->geshu++;}}int D_carsSqStack s,LinkQueue q,struct car d{int i,j,l;float x,y;QNODE p;SqStackk k;if==s->Gs->top.num{x=s->Gs->top.time;y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;ifq->geshu==0{printf"The queue is empty\n";return 0;}else{p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 1;}}else{fori=0;i<s->top;i++{ifs->Gi.num= continue;else break;}ifi>=s->top{printf"ERROR\n";return -1;}x=s->Gi.time;y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y; k=SqStackk mallocsizeofSqStackk;k->topp=-1;forj=s->top;j>i;j--{k->topp++; k->Hk->topp.num=s->Gj.num;k->Hk->topp.time=s->Gj.time;s->top--;}forl=0;l<=k->topp;l++{printf"the informationnumber and time in the new stack is:\n"; printf"%d,%d\n",k->Hl.num,k->Hl.time;}s->top--;whilek->topp>=0{s->top++;s->Gs->top.bb='A';s->Gs->top.num=k->Hk->topp.num;s->Gs->top.time=k->Hk->topp.time;k->topp--;}ifq->geshu==0{printf"The access road is empty\n";return 2;}else{s->top++;p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 3;}}}4.主函数的伪码:main{SqStack s;LinkQueue q;QNODE p;struct car aaMAXSIZE;int i;s=SqStack mallocsizeofSqStack;s->top=-1;q=LinkQueue mallocsizeofLinkQueue;p=QNODE mallocsizeofQNODE;p->next=NULL;q->front=q->rear=p;q->geshu=0;printf"\n";printf" \n";printf" 停车场管理系统\n";printf" \n";printf"\n";fori=0;i<MAXSIZE;i++{printf"Please input the state,number and time of the car:\n";scanf"%c,%d,%d",&aai.bb,&aai.num,&aai.time;getchar;Judge_Outputs,q,&aai;ifaai.bb=='E'||aai.bb=='e' break;}}5.函数调用关系:五.测试分析:1.出现问题及解决办法:该程序是四个程序调试中最顺利的一个,只在一个地方上出了问题,就是输入字符时由于回车键也是字符,回车键总会被读入,导致经常输出“ERROR”;后来找到原因后在scanf函数后紧接着加了一个getchar;语句后就恢复了正常;2.方法优缺点分析:优点:用栈和队列来模拟停车场让整个问题显得简单,易于实现;缺点:栈和队列这两个数学模型用在停车场管理上还是有失妥当的,现实中停车场出口入口不可能为同一处,不可能当一辆车要离开,在它后面进来的车必须为它让路,因此无法用栈的“后进先出”原则来模拟;而且没有考虑便道上的车在等待过程中可以中途开走等情况,而这些都无法用队列的“先进先出”原则来模拟;3.主要算法的时间和空间复杂度分析:1由于算法Judge_Output函数根据判断条件,每次只选择一个程序段执行,所以其时间复杂度是O1;2由于算法A_cars函数根据判断条件,将数据入栈或入队列,所以其时间复杂度也是O1;3由于算法D_cars函数在出栈数据不在最顶端时需将n个数据先出该栈,再入新栈,再回旧栈的操作,故其时间复杂度是On;4所有算法的空间复杂度都是O1;六.使用说明程序运行后用户根据提示一次输入车辆的状态信息,车牌编号,时间,程序会根据车辆的状态信息调用相应的函数,并输出用户想得到的信息;七.调试结果输入数据:‘A’,1,5,‘A’,2,10,‘D’,1,15,‘A’,3, 20,‘A’,4,25,‘A’,5,30,‘D’,2,35,‘D’,4,40,‘P’,0,0,‘W’,0,0,‘F’,0,0,‘E’,0,0;输出数据:1号车停放时间为10小时,收费100元;2号车停放时间为25小时,收费250元;4号车停放5小时,收费50元;此时停车场有两辆车,便道上无车;若停车场已满,则会显示停车场已满的信息;若便道上无车等待停车,会显示便道上无车的信息;若中途有车离开,需其后的车让道,会显示进入临时停车场的车辆的信息;若输入‘F’,0,0,输出“ERROR”;若输入‘E’,0,0,程序结束;运行结果截屏:八.附录源程序文件清单:include<> /调用的头文件库声明/include<>define MAXSIZE 14define n 2define fee 10struct car /用该结构体来存放车的状态,编号和时间信息/ { char bb;int num;int time;};typedef struct stack /用该栈来模拟停车场/{struct car Gn;int top;}SqStack;struct rangweicar /用该结构体来存放临时让出的车辆的编号以及时间信息/ {int num;int time;};typedef struct stack /用该栈来模拟临时让出的车辆的停靠场地/ {struct rangweicar HMAXSIZE;int topp;}SqStackk;define QNODE struct QnodeQNODE { int data; /链队结点的类型/QNODE next;};typedef struct linkqueue /用该链队来模拟便道/{QNODE front,rear;int geshu;}LinkQueue;void Judge_OutputSqStack s,LinkQueue q,struct car r /该算法通过传递来的车辆信息调{ 用相关函数实现操作/ ifr.bb=='E'||r.bb=='e' /若车辆状态为‘E’,终止程序/printf"STOP\n";else ifr.bb=='P'||r.bb=='p' /若车辆状态为‘P’,输出停车场车辆数/ printf"The number of parking cars is %d\n",s->top+1;else ifr.bb=='W'||r.bb=='w' /若车辆状态为‘W’,输出便道车辆数/ printf"The number of waiting cars is %d\n",q->geshu;else ifr.bb=='A'||r.bb=='a' /若车辆状态为‘A’,调用A_cars函数/A_carss,q,r;else ifr.bb=='D'||r.bb=='d' /若车辆状态为‘D’,调用D_cars函数/D_carss,q,r;elseprintf"ERROR\n"; /若车辆状态为其他字母,报错/}A_carsSqStack s,LinkQueue q,struct car a /该算法实现对车辆状态为到达的车辆的操{QNODE t; 作/ifs->top=n-1 /若停车场还没有满,则车进停车场,并存入车辆的状态,车牌编{s->top++; 号和到达时间信息/s->Gs->top.bb=;s->Gs->top.num=;s->Gs->top.time=;}else{printf"The parking place is full\n"; /若停车场已满,车进便道,并显示该车的车牌编t=QNODE mallocsizeofQNODE; 号,同时记录便道车辆数目/t->data=;t->next=NULL;q->rear->next=t;q->rear=t;printf"the number of the car in the access road is:%d\n",q->rear->data;q->geshu++;}}int D_carsSqStack s,LinkQueue q,struct car d /该算法实现车辆状态为离开的车{int i,j,l; 辆的操作/float x,y;QNODE p;SqStackk k;if==s->Gs->top.num /若待离开车为最后进停车场的车的情况/{x=s->Gs->top.time;y=feex; /直接计算停车时间,费用并离去/printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;ifq->geshu==0 /若便道上无车,函数返回/{printf"The queue is empty\n";return 0;}Else /若便道上有车,第一辆车进停车场/{p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data; /并存入其车牌编号及进停车场的时间/s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front; /若此时便道上无车,返回1/return 1;}}Else /待离开的车不是最后进停车场的那辆车的情况/ {fori=0;i<s->top;i++ /先找到待离开车在停车场中的位置/ {ifs->Gi.num= continue;else break;}ifi>=s->top{printf"ERROR\n";return -1;}x=s->Gi.time; /计算待离开车的停车时间并计算费用/y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;k=SqStackk mallocsizeofSqStackk; /设立一个新栈临时停放为该车离开而让k->topp=-1; 路的车辆/forj=s->top;j>i;j--{k->topp++; k->Hk->topp.num=s->Gj.num;k->Hk->topp.time=s->Gj.time;s->top--;}forl=0;l<=k->topp;l++{printf"the informationnumber and time in the new stack is:\n";printf"%d,%d\n",k->Hl.num,k->Hl.time;} /显示在新栈中的车辆信息/ s->top--;whilek->topp>=0 /将新栈中的车重新开入停车场中/{s->top++;s->Gs->top.bb='A';s->Gs->top.num=k->Hk->topp.num;s->Gs->top.time=k->Hk->topp.time;k->topp--;}ifq->geshu==0 /若便道上无车,则返回2,无车开入停车场中/ {printf"The access road is empty\n";return 2;}Else /若便道上有车,则第一辆车开入停车场中/{s->top++;p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 3;}}}main{SqStack s;LinkQueue q;QNODE p;struct car aaMAXSIZE;int i;s=SqStack mallocsizeofSqStack; /对停车场初始化/s->top=-1;q=LinkQueue mallocsizeofLinkQueue;p=QNODE mallocsizeofQNODE; /对便道初始化/p->next=NULL;q->front=q->rear=p;q->geshu=0;printf"\n";printf" \n";printf" 停车场管理系统\n";printf" \n";printf"\n";fori=0;i<MAXSIZE;i++ /输入车辆信息/ {printf"Please input the state,number and time of the car:\n"; scanf"%c,%d,%d",&aai.bb,&aai.num,&aai.time; getchar;Judge_Outputs,q,&aai;ifaai.bb=='E' break;}}。

停车场管理系统实习报告

停车场管理系统实习报告

一、实习背景随着我国经济的快速发展,汽车保有量逐年攀升,停车难问题日益凸显。

为解决这一问题,停车场管理系统应运而生。

本次实习旨在通过对停车场管理系统的学习和实践,了解停车场管理的基本流程,掌握系统操作技能,提高自己的实践能力。

二、实习内容1. 停车场管理系统概述停车场管理系统主要由车辆进出管理、车位管理、收费管理、报表统计等模块组成。

系统通过自动化设备(如车牌识别、道闸、地感线圈等)实现车辆进出、收费、车位管理等功能,提高停车场管理效率。

2. 实习过程(1)系统学习实习初期,我主要学习停车场管理系统的基本原理和操作流程。

通过阅读相关资料和请教同事,我对停车场管理系统的功能模块、操作方法有了初步了解。

(2)系统操作在实习过程中,我参与了停车场管理系统的实际操作。

具体包括:1)车辆进出管理:通过车牌识别设备,实现车辆快速进出停车场,提高通行效率。

2)车位管理:实时显示停车场车位使用情况,方便管理人员了解车位分布,合理调配车位。

3)收费管理:根据车辆类型、停放时间等因素,自动计算停车费用,实现收费自动化。

4)报表统计:生成各类报表,如收入报表、进出车辆报表等,为管理层提供决策依据。

(3)问题解决在实习过程中,我遇到了一些问题,如系统操作不熟练、设备故障等。

通过请教同事、查阅资料和与供应商沟通,我成功解决了这些问题。

3. 实习成果通过本次实习,我取得了以下成果:(1)掌握了停车场管理系统的基本原理和操作流程。

(2)熟悉了各类自动化设备的使用方法。

(3)提高了自己的实践能力,为今后从事停车场管理工作打下了基础。

三、实习心得1. 理论与实践相结合本次实习让我深刻体会到理论与实践相结合的重要性。

在学习理论知识的基础上,通过实际操作,我对停车场管理系统有了更深入的了解。

2. 团队合作精神在实习过程中,我与同事共同解决问题,相互学习,共同进步。

这使我认识到团队合作精神在停车场管理工作中的重要性。

3. 良好的沟通能力在实习过程中,我学会了如何与同事、供应商沟通,解决问题。

停车场管理系统课程设计

停车场管理系统课程设计

一、课程设计内容1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 每辆车的信息包括车牌号, 层号, 车位号, 停车时间共4项. 其中停车时间按分钟计算2. 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.txt”中( 数组的对应元素也要进行赋值 )3. 停车操作: 当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.txt”中, 并将在此之前的所有车的停车时间加5.4. 收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元. (停车费用可设置一个变量进行保存), 同时从文件”car.txt”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零). 按用户的选择来判断是否要输出停车收费的总计.5. 输出停车场中全部车辆的信息.6. 退出系统.实验程序流程图停车输入2输入0 开始 输出提示信息,进入选项1-停车 2-取车 3-退出系统输入1 进入管理系统 进入停车流程 退出管理系统 车离开停车场开始 进入停车场管理系统 判断一楼是否有空位 车停入一楼 车停入二楼 输入停车信息,车牌号,车位,停车让时间(预设为5 ) 车进入停车场Y N取车开始进入管理系统输入取车的信息(车牌号或车位号)弹出取车信息(车牌号,车位号,停车费用)车离开停车场实验源程序#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#define N 12void park();//停车void getout();//取车并计算停车费用int x=4;int Time=0;struct C{char car_number[8];//车牌号int fooler;//层数int carport;//车位号int time;//停车时间}Car[N]={{"031098X",1,1,20},{"223X334",1,2,15},{"47328J3",1,3,10},{"3232G34",1, 4,5}};//初始化void main(){char choose,ch='\0';FILE*fp=NULL;fp=fopen("car.txt","aw");if(fp==NULL){printf("\n 打开文件失败!\n");return;}fprintf(fp," 车牌号码层数车位号停车时间\n");for(int i=0;i<=3;i++){fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Ca r[i].time);}do{printf("请输入选择的编号:(0--2)\n");system("cls");printf("*********************************\n"); printf("1--- 停车\n");printf("2--- 取车,并计算停车费用\n");printf("0--- 退出\n");printf("********************************\n"); choose=getch();switch(choose){case '1':park();break;case '2':getout();break;case '0':exit(0);default : printf("您输入的为非法选项!\n");}printf("要继续吗?(Y or N)");scanf("%c",&ch);}while (ch=='Y'||ch=='y') ;}void park(){FILE*fp=NULL;fp=fopen("car.txt","w");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("请输入车牌号码(以#开头):");do{//gets(Car[x].car_number);getchar();gets(Car[x].car_number);// scanf("%s",&Car[x].car_number);}while(strcmp(Car[x].car_number," ")==0);for(int j=0;j<=11;j++){if(Car[j].fooler==0){if(j<6)Car[x].fooler=1;else if (j>=6)Car[x].fooler=2;Car[x].carport=++j;break;}}Car[x].time=Time;for(int i=0;i<=x;i++){ Car[i].time+=5;}printf("登记成功!\n");printf(" 车牌号码层数车位号停车时间\n");printf(" %5s%5d%5d%10d\n",Car[x].car_number,Car[x].fooler,Car[x].carport,Car[x] .time);fprintf(fp," 车牌号码层数车位号停车时间\n");for(i=0;i<=x;i++)fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Ca r[i].time);x++;}void getout(){struct C temp={0};double M=0;FILE*fp=NULL;fp=fopen("car.txt","w");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("请输入您停车的车位号:");//改成车位号比较方便计算(1234车位号已经初始化了)// getchar();//吃掉一个字符// gets(temp.car_number);scanf("%d",&temp.carport);// for(int i=0;i<=x;i++)//{//if(!strcmp(temp.car_number,Car[x].car_number))// break;//}for(int i=0;i<=x;i++){if(temp.carport==Car[i].carport)break;}if(i>x){printf("无此辆车的记录!\n");return ;}else{M=(double)Car[i].time*0.2;printf("停车费用为:%5.1f\n",M);}Car[i].fooler=0;fprintf(fp," 车牌号码层数车位号停车时间\n");for(i=0;i<=x;i++){while(Car[i].fooler!=0)fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Ca r[i].time);return ;}}。

数据结构课程设计停车场管理系统

数据结构课程设计停车场管理系统

试验二停车场管理班级: A0712学号: 12 姓名: 冷清淼成绩: __________指导教师签名: __________一、问题描述设停车场是一种可停放n辆车旳狭长通道, 且只有一种大门可供汽车进出。

在停车场内, 汽车按抵达旳先后次序, 由北向南依次排列(假设大门在最南端)。

若停车场内已停满n辆车, 则后来旳汽车需在门外旳便道上等待, 当有车开走时, 便道上旳第一辆车即可开入。

当停车场内某辆车要离开时, 在它之后进入旳车辆必须先退出停车场为它让路, 待该辆车开出大门后, 其他车辆再按原次序返回车场。

每辆车离开停车场时, 应按其停留时间旳长短交费(在便道上停留旳时间不收费)。

设计规定:1. 模拟上述管理过程。

规定以次序栈模拟停车场, 以链队列模拟便道。

2.从终端读入汽车抵达或拜别旳数据, 每组数据包括三项:(1)是“抵达”还是“离开”;(2)汽车牌照号码;(3)“抵达”或“离开”旳时刻。

3. 与每组输入信息对应旳输出信息为: 假如是抵达旳车辆, 则输出其在停车场中或便道上旳位置;假如是拜别旳车辆, 则输出其在停车场中停留旳时间和应交旳费用。

二、算法阐明1. 数据构造阐明(1)用到两个堆栈: 一种为车场栈;另一种为临时栈temptypedef struct NODE{CarNode *stack[MAX+1];int top;}SeqStackCar; /*模拟车场*/一种队列构造, 存储便道车辆信息:typedef struct Node{QueueNode *head;QueueNode *rear;}LinkQueueCar; /*模拟便道*/2. 算法阐明(1) 功能模块阐明:停车场管理系统具有三个模块, 即:车辆抵达、离开、列表显示图1(2)以模块为单位分析算法1.“抵达”模块: 抵达时有两种状况, 即车场与否满, 未满则直接进入停车场;满时, 到便道等待。

如图2。

图22.“离开”模块:离开时, 当车库为空时, 提醒没有车, 结束;否则车辆离开。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验题目:停车场管理系统设计者王莉,谭潇沸一、要解决的问题停车场是一条可以停放n辆车的狭窄通道,且只有一个大门汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。

要求:以栈模拟停车场,以队列车场外的便道,按照从终端输入的数据序列进行模拟管理。

每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。

对每一组数据进行操作后的信息为:若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应缴纳的费用(在便道上的停留时间不收费)。

栈以顺序结构实现,队列以链表结构实现。

二、算法基本思想描述由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。

由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,我设计用顺序存储结构来存储停车场内的车辆信息,并给车辆按进栈顺序编号,当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。

这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车。

当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素设计成汽车的车牌号,并以链表的形式存储。

另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间和车辆离开停车场时的时间,然后计算、显示费用情况。

三、详细设计1. 数据结构的设计(1)车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进站时间和离开停车的时间,定义如下:typedef struct node{char num[10]; //车牌号码Time reach; //到站时间Time leave; //离开时间}CarNode;(2)时间、栈和队列的定义时间是由小时和分钟表示的,有两部分数据,所以,类似于复数的表示一样,设计两个变量分别存储小时和分钟。

如:typedef struct time{int hour;int min;}Time;停车场内用栈表示:typedef struct NODE{CarNode *stack[MAX+1]; //栈用顺序表示int top;}SeqStackCar;便道上的车辆表示:typedef struct car{CarNode *data; // 便道上的车用链表表示struct car *next;}QueueNode;typedef struct Node{QueueNode *head; // 设置头指针、尾指针。

QueueNode *rear;}LinkQueueCar;2. 算法的设计思想及流程图(1)主要函数的功能说明1、 void InitStack(SeqStackCar *); //车辆节点进栈当栈未满时,就把到达的车辆进栈。

2、 int InitQueue(LinkQueueCar *); //车辆节点进队列当栈满了时,车辆就进入便道上的队列中3、 int Arrival(SeqStackCar *,LinkQueueCar *); //车辆到达登记车辆到达时,先登记车辆车牌号码。

然后再判断停车场有没有停满,没停满就进栈,停满了就停在便道上,即进队列。

4、 void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); //车辆离开处理通过输入离开车辆的位置处理,然后调用PRINT(CarNode *p,int room);函数进行收费。

然后再判断便道上有没有车,如果有,就把便道上的车进停车场内。

5、 void List(SeqStackCar,LinkQueueCar); //显示车场内和便道上的车辆情况用个switch();函数选择显示车场内或是便道上的车辆情况。

包括对下面两个子函数的调用: void List1(SeqStackCar *S);void List2(LinkQueueCar *W); //分别为显示车场和便道上的车辆情况6、 void PRINT(CarNode *p,int room); // 车辆离开是的收费这个函数由车辆离开的函数调用,以分钟计时算费,但只能计算当天之内的费用,如果第二天的话会导致计费为负或减少。

即只能当天停,当天开走。

(2)模块结构及流程图开始初始化两个栈Enter 和Temp 及一个队列Wait 。

进入主菜单车到达 车离开退出Room 前车辆进临时栈对room 计费便道车信息车场内信息判便道是否有车车场是否为空列表显示栈Enter 元素出栈 队列中元素进栈队列Wait 中元素出队元素进栈Enter便道车进车场元素进队列Wait判断栈是否为满结束退出列表显示是否否是 否是(3)主要模块算法描述本程序最主要的算法就是车辆到达登记的和车辆离开的。

○1车辆到达:int Arrival(SeqStackCar *Enter,LinkQueueCar *W)首先定义一个栈和队列的结构体指针为:*p , *t 。

然后申请一个车辆信息的内存空间,并把它赋给栈指针。

车辆到达时就输入车牌号,并通过if(Enter->top<MAX)来判断该车是进车场内还是进便道上,如果是进车场内就把top 加1,显示在车场内的位置,还要输入进车场的时间,然后把该节点进栈。

如果是else 就显示该车要停在便道上,并进行进队列的操作。

○2车辆离开:void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) 定义一个整型变量room 记录要离开车辆的位置,定义两个栈指针和一个队列指针,用个if(Enter->top>0) 确保栈不空,然后用个while(1) 确保输入的车辆离开位置的合法性。

如果不和法,显示输入有误,要重新输入。

通过while(Enter->top>room) 判断离开车辆的位置,如果是中间位置,就要再用一个栈前面临时开出来的车,等要开出的车开出后,再把临时栈的车看进车场内,并要调用PRINT(p,room); 这个函数计算显示费用。

然后还要用if((W->head!=W->rear)&&Enter->top<MAX) 语句判断便道上有没有车,如果有车就要显示进车场的车的车牌号,并登记进入时间。

并要进行相应的出队列和进栈操作。

测试数据及测试结果停车场系统的登录界面车辆到达登记信息车辆离开时,输入离开时间,然后计算、显示费用,如果便道上有车,则显示要进入车场内的车牌号码,同时登记时间。

分别显示车场内和便道上的车辆信息情况源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 3 // 停车场最大容量为3辆,便于观察#define price 0.05typedef struct time{ // 定义时间结构体int hour;int min;}Time;typedef struct node{ // 定义车辆信息结构体char num[10];Time reach;Time leave;}CarNode;typedef struct NODE{CarNode *stack[MAX+1];int top;}SeqStackCar;/*模拟车站*/typedef struct car{CarNode *data;struct car *next;}QueueNode;typedef struct Node{QueueNode *head;QueueNode *rear;}LinkQueueCar; /*模拟通道*/void InitStack(SeqStackCar *); /*初始化栈*/int InitQueue(LinkQueueCar *); /*初始化便道*/int Arrival(SeqStackCar *,LinkQueueCar *);/*车辆到达时的操作*/void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);/*车辆离开时的操作*/void List(SeqStackCar,LinkQueueCar);/*显示存车信息*/void main(){SeqStackCar Enter,Temp;LinkQueueCar Wait;int ch;system("color 1A");InitStack(&Enter);/*初始化车站*/InitStack(&Temp);/*初始化让路的临时栈*/InitQueue(&Wait); /*初始化通道*/while(1){printf("\n §※§※§※§※§※§欢迎使用停车场系统.§※§※§※§※§※§\t\n\n");printf("\n\t※◎※◎※◎※◎ 1. 车辆到达登记.※◎※◎※◎※◎\t\n");printf("\n\t※◎※◎※◎※◎ 2. 车辆离开登记.※◎※◎※◎※◎\t\n");printf("\n\t※◎※◎※◎※◎ 3. 车辆列表显示.※◎※◎※◎※◎\t\n");printf("\n\t※◎※◎※◎※◎ 4. 退出系统.※◎※◎※◎※◎\t\n\n");while(1){printf(" 请选择: ");scanf("%d",&ch);if(ch>=1&&ch<=4)break;else printf("\n 输入有误,请重新选择:1~4: ");}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);/*退出主程序*/default: break;}}}// 自定义函数void InitStack(SeqStackCar *s){ // 栈的初始化int i;s->top=0;for(i=0;i<=MAX;i++)s->stack[s->top]=NULL;}int InitQueue(LinkQueueCar *Q){ /*初始化便道*/Q->head=(QueueNode *)malloc(sizeof(QueueNode));if(Q->head!=NULL){Q->head->next=NULL;Q->rear=Q->head;return(1);}else return(-1);}void PRINT(CarNode *p,int room){ // 车辆收费int A1,A2,B1,B2;printf("\n车辆离开的时间:");scanf("%d:%d",&(p->leave.hour),&(p->leave.min));printf("\n离开车辆的车牌号为:");puts(p->num);printf("\n其到达时间为: %d:%d",p->reach.hour,p->reach.min);printf("\n离开时间为: %d:%d",p->leave.hour,p->leave.min);A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;printf("\n应交费用为: %2.1f元",((B1-A1)*60+(B2-A2))*price);free(p);}// 车辆的到达登记int Arrival(SeqStackCar *Enter,LinkQueueCar *W){CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode));//flushall();printf("\n请输入车牌号(例:豫B1234):");//gets(p->num);scanf("%s",&(p->num));if(Enter->top<MAX){Enter->top++;printf("\n车辆在车场第%d位置.",Enter->top);printf("\n车辆到达时间:");scanf("%d:%d",&(p->reach.hour),&(p->reach.min));Enter->stack[Enter->top]=p;return(1);}else{printf("\n该车须在便道等待!有车位时进入车场");t=(QueueNode *)malloc(sizeof(QueueNode));t->data=p;t->next=NULL;W->rear->next=t;W->rear=t;return(1);}}void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) { //车辆的离开int room;CarNode *p,*t;QueueNode *q;if(Enter->top>0) // 判断车场是否为空{while(1){printf("\n请输入车在车场的位置/1--%d/:",Enter->top);scanf("%d",&room);if(room>=1&&room<=Enter->top) break;else printf("\n 输入有误,请重输: ");}while(Enter->top>room) // 把要删除的车辆的前面的车开出来,进临时栈。

相关文档
最新文档