实验题目停车场管理系统

合集下载

停车场模拟管理系统

停车场模拟管理系统

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

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

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

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

  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) // 把要删除的车辆的前面的车开出来,进临时栈。

相关文档
最新文档