数据结构课程设计停车场管理报告
《数据结构》停车场系统设计报告--停车场管理系统_
《数据结构》停车场系统设计报告--停车场管理系统_一、系统总体原则1.1、系统的安全性:停车场管理系统要求引入多重安全措施,确保其系统数据的安全,以防止非法黑客进行攻击;系统本身要具备安全保护机制,确保核心系统重要功能不能被破坏。
1.2、系统功能:停车场管理系统要具备通行证管理,车辆管理,收费管理,维修管理,系统权限控制和固定车位管理等多种功能。
1.3、系统数据管理:停车场管理系统要实现对用户信息,车辆信息,收费信息,维修信息和工作日志等数据的便捷管理;支持数据注入,报表输出,日志查询,备份恢复等。
二、系统数据结构2.1、用户信息结构:用户类型、用户名、密码、真实姓名、联系电话、优惠折扣比、优惠申请次数等2.2、车辆信息结构:车牌号、车牌颜色、停放位置、停放时间、收费金额等2.3、收费信息结构:收费时间、车牌号、应缴金额、实缴金额、优惠金额、收费员等2.4、维修信息结构:维修时间、车牌号、维修内容、维修费用、维修人等2.5、工作日志结构:日志类型、生成时间、触发时间、操作内容、操作人等三、系统模块设计通行证管理模块:能够管理停车场的客户信息,支持优惠折扣的设置,支持多种客户角色的分配及权限管理。
车辆管理模块:能够管理停车场的车辆信息,支持分配停车位、跟踪车辆停放时间以及出入位置,以实现计算停车费用。
收费管理模块:能够实现车辆停放费用的计费与收取,支持优惠计算功能,支持收费记录的查询与管理。
维修管理模块:能够管理停车场的车辆维修信息,能够针对每辆车的维修记录进行查询、录入和管理。
系统权限控制模块:支持可根据多种角色分配权限,以实现系统模块及功能的控制,保证信息安全性。
固定车位管理模块:能够支持固定车位信息的管理,可支持用户管理固定车位,以便系统自动识别用户并提供优惠处理。
四、系统实现方案4.1 前端 : 对停车场系统进行交互式操作,支持web,客户端,短信等界面,实现用户的操作及查询;前端应用可跨平台进行。
数据结构课程设计——停车场
数据结构课程设计——停车场在当今社会,随着汽车数量的不断增加,停车场的管理变得日益重要。
一个高效、合理的停车场管理系统不仅能够提高停车场的使用效率,还能为车主提供更好的服务体验。
在本次数据结构课程设计中,我们将深入探讨如何设计一个实用的停车场管理系统。
一、需求分析首先,我们需要明确停车场管理系统的基本需求。
一般来说,它应该具备以下功能:1、车辆的入场登记,包括车辆的车牌号、入场时间等信息。
2、车辆的出场结算,根据停车时间计算停车费用。
3、实时显示停车场内的车位使用情况,以便车主了解是否有空闲车位。
4、能够支持不同类型的车辆,如小型车、中型车、大型车等,并根据车辆类型收取不同的费用。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和管理停车场的相关信息。
1、对于车辆信息的存储,我们可以使用链表。
链表的优点是插入和删除操作比较方便,可以快速地对车辆的入场和出场进行处理。
2、对于车位的管理,我们可以使用栈或者队列。
如果采用栈的方式,先进后出,适合模拟停车场的一端进出;如果采用队列的方式,先进先出,更符合一些实际场景中车辆按顺序入场和出场的情况。
3、为了快速查找车辆的信息,我们还可以使用哈希表,通过车牌号作为键,快速获取车辆的相关数据。
三、系统设计1、入场流程当车辆入场时,系统会获取车辆的车牌号、车型和入场时间等信息。
将这些信息存储到链表中,并在车位管理的数据结构(如栈或队列)中为车辆分配一个车位。
同时,更新停车场内的车位使用情况。
2、出场流程车辆出场时,根据车牌号在链表中查找车辆的入场时间等信息,计算停车时间和费用。
然后在车位管理的数据结构中释放车位,并更新车位使用情况。
3、车位显示实时统计车位管理数据结构中的空闲车位数量,并展示给车主,让他们能够提前了解停车场的空位情况。
4、费用计算根据车辆的车型和停车时间,按照预设的收费标准计算停车费用。
四、算法实现1、车辆入场算法```cvoid vehicleEntry(char plateNumber, int vehicleType) {Vehicle newVehicle =(Vehicle )malloc(sizeof(Vehicle));strcpy(newVehicle>plateNumber, plateNumber);newVehicle>vehicleType = vehicleType;newVehicle>entryTime = time(NULL);//将车辆信息插入链表insertVehicle(newVehicle);//为车辆分配车位allocateParkingSpace(newVehicle);updateParkingStatus();}```2、车辆出场算法void vehicleExit(char plateNumber) {Vehicle vehicle = searchVehicle(plateNumber);if (vehicle == NULL) {printf("未找到该车辆信息\n");return;}double parkingFee = calculateFee(vehicle);//释放车位releaseParkingSpace(vehicle);//从链表中删除车辆信息deleteVehicle(vehicle);updateParkingStatus();printf("车牌号:%s,停车费用:%2f 元\n", plateNumber, parkingFee);}```3、车位分配算法(以栈为例)void allocateParkingSpace(Vehicle vehicle) {if (top < MAX_PARKING_SPACES 1) {parkingSpaces++top = vehicle;vehicle>parkingSpaceNumber = top + 1;} else {printf("停车场已满\n");}}```4、车位释放算法```cvoid releaseParkingSpace(Vehicle vehicle) {if (top >= 0 && parkingSpacestop == vehicle) {parkingSpacestop = NULL;top;} else {printf("车位释放错误\n");}}```五、系统测试在完成系统的开发后,我们需要进行充分的测试以确保系统的稳定性和正确性。
数据结构停车场管理系统数据结构设计
数据结构停车场管理系统数据结构设计在智能化时代的今天,停车问题成为了城市管理的一大难题。
为了解决车辆日益增多的停车需求,设计一个高效的停车场管理系统显得尤为重要。
本文将围绕数据结构的设计来探讨停车场管理系统的实现。
一、需求分析停车场管理系统的主要功能是提供用户停车、缴费、查询等服务,同时需要为管理人员提供车辆调度、收费统计等功能。
为了实现这些功能,我们需要从需求角度对数据结构进行设计。
1. 用户管理停车场管理系统需要记录每个用户的停车信息,包括车辆信息、停车时间等。
为了高效查询用户信息,可以使用哈希表作为数据结构,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。
2. 车辆管理为了维护停车场内的车辆信息,我们可以使用链表作为数据结构来管理车辆。
每个节点可以保存一个车辆的信息,如车牌号、停车时间等,同时连接下一个车辆节点。
3. 车位管理停车场需要管理可用车位和已停车位。
为了高效分配车位,可以使用堆作为数据结构来存储可用车位信息。
堆可以根据剩余车位数量进行自动排序,当有车辆进入停车场时,从堆中取出最小的剩余车位。
4. 收费管理停车场管理系统需要计算用户停车时间并进行费用结算。
为了高效计算停车时间,可以使用栈作为数据结构来记录每个用户进入停车场的时间。
栈可以实现先进后出的特点,正好符合车辆停车的实际情况。
当用户离开停车场时,可以根据进入时间计算停车时间并进行费用结算。
5. 查询与统计为了用户能够方便地查询自己的停车信息,可以使用二叉查找树作为数据结构,将用户的车牌号作为键值进行存储。
二叉查找树可以在O(log n)的时间复杂度内完成查询操作。
另外,为了方便管理人员进行统计工作,可以使用散列表来存储车辆的停车信息,以便根据不同条件进行统计分析。
二、系统设计基于以上需求分析,我们可以得出停车场管理系统的数据结构设计如下:1. 用户管理使用哈希表来存储用户信息,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。
数据结构课程设计报告书 停车场管理系统
#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100/*预设停车场有100个车位*/#define D 1.2/*预设车辆停车费为1.2元每小时*/ #define NUMBER 100void menu();void start();void parkingplace();void drive();struc car{int carnumber;int cararrave;int carleave;int carplace;}car[NUMBER];struct park;{int null;}parkingplace[N-1];void main (){menu();/*菜单*/}void menu(){int n;do{puts("****MENU***");puts("1、停车");puts("2、开车");puts("3、退出");puts("4、初始化");printf("请选择你需要的服务(1-4):");scanf("%d",&n);}switch(n){case 1:parking;break;/*停车函数*/case 2:drive;brea ;/*开车函数*/case 3:exit;break;/*退出*/case 4:start;break;/*初始化*/}}void start()/*初始化*/{int i,j;for(i=0;j<N;i++)parking[i].null=0;/*停车场设置为空*/printf("已初始化");menu();}void parkingplace()/*车辆进入函数*/{int i,a,h=0;printf(“请输入该车系序号(从0开始):”);scanf(“%d”,&a);for(i=0;i<N;i++){if(parking[i].park==0)/*无车标记*/if(parking[i].park==1)/*有车标记*/h=h+1;}if(h==N)printf(“停车场内已满!”);else{car[a].carplace=h;parkingplace[h].null=1;printf(“该车应该停在停车场内”);printf(“请输入该车进停车场时间:”);scanf(“d%”,&car[a].cararrave);}void drive()/*车辆离开函数*/{int i,k,time;double(“请输入车辆次序号【】”);scanf(“%d”,&i);printf(“请输入离开时间:”);scanf(“%d”,&car[i]carleave);fee=D*(car[i].carleave-car[i].cardrrave);time=car[i].carleave-car[i].cardrrave;printf(“次序号为%d的车停时间%d小时,应收费%f元”,i,time,fee); }。
数据结构课程设计 停车场模拟管理系统报告(含源码)
数据结构课程设计停车场模拟管理系统报告(含源码)《数据结构课程设计》报告专业:软件工程班级: T1123-03学号:姓名: XXX课设题目:停车场模拟管理系统指导教师:马春江成绩:2013-07-03目录一、设计题目 (1)二、设计目的 (1)三、总体设计 (1)(一)问题描述 (1)(二)设计要求 (2)(三)数据结构 (2)四、详细设计 (2)(一)分析与实现 (2)(二)系统模块设计 (3)(三)界面设计 (4)五、设计结果与分析 (6)六、总结(收获和不足) (6)(一)课设的不足 (6)(二)课设的收获 (7)附录程序源码 (7)参考文献: (19)指导教师意见 (20)一、设计题目停车场模拟管理系统。
二、设计目的利用所学的知识,模拟设计一个停车场管理系统。
通过程序设计,了解停车场的工作情况以及是怎么实现停车的,模拟车辆的进入停车场、离开停车场的情况,和收费情况。
三、总体设计(一)问题描述假设停车场可以停放n辆车的狭长通道,而且只有一个入口出口,汽车进入停车场的停放按照先进先放的顺序,依次排满车道。
当停车场已经停满时(已存放了n辆汽车),想进入停车场的车就只能在便道上等待,等到停车有车离开时,便道上的第一辆车进入停车场。
当停车场内的某辆车要离开时,在它后面的车必须离开让出一条道路来,待车开走后,让路的车依次进入停车场,车辆离开时,按时间缴纳费用。
(二)设计要求用栈模拟停车场,用队列模拟停车场外面的等车便道,按照终端输入数据的方式进行模拟管理。
输入1,表示车辆到达;输入2,表示车辆离开;输入3,表示列表显示停车场内外情况;输入4,表示系统帮助;输入5,表示查询车辆;输入0,表示退出程序。
车辆进入停车时,要输入车牌号码和到达时间;车辆离开时,要输入停车场车位号和离开时间,并显示应收费额;车辆查询时,要输入车牌号码;系统帮助,则是一些关于本系统的操作介绍。
(三)数据结构本课程设计使用的数据结构有:顺序栈和链式队列。
数据结构-停车场管理系统实验报告
数据结构-停车场管理系统实验报告数据结构停车场管理系统实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构的知识,包括栈、队列、链表等,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程语言为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 <<"停车场内没有车辆。
数据结构设计-停车场管理系统
数据结构设计-停车场管理系统数据结构设计停车场管理系统在现代社会,随着汽车数量的不断增加,停车场的管理变得日益重要。
一个高效、准确且便捷的停车场管理系统对于提高停车场的运营效率、提升用户体验以及保障停车场的安全都具有重要意义。
而在实现这样一个系统的过程中,数据结构的设计起着关键的作用。
首先,让我们来明确一下停车场管理系统的基本需求。
它需要能够记录车辆的进入和离开时间,计算停车费用,管理车位的占用和空闲状态,提供车位的查询和预订功能,以及处理异常情况,如超时未缴费等。
为了满足这些需求,我们需要选择合适的数据结构来存储和操作相关的数据。
对于车辆信息的存储,我们可以使用一个链表或者数组来实现。
每个车辆的信息可以包括车牌号码、进入时间、预计离开时间、实际离开时间、停车费用等。
链表的优点是插入和删除操作比较方便,适合车辆频繁进出的情况;而数组则在随机访问方面具有优势,可以快速获取特定车辆的信息。
车位的管理是停车场系统的核心部分之一。
我们可以将停车场看作一个二维的矩阵,每个位置表示一个车位。
使用一个布尔型的二维数组来表示车位的占用状态,True 表示占用,False 表示空闲。
这样,在查询空闲车位时,只需要遍历这个数组即可。
为了提高查询效率,我们还可以对车位进行分区,比如按照楼层、区域等划分,然后分别管理每个分区的车位状态。
在计算停车费用时,需要根据车辆的停车时间来确定。
可以使用时间戳来记录车辆的进入和离开时间,然后通过计算时间差来得到停车时长。
停车费用的计算规则可以根据不同的时间段设置不同的费率,例如,白天和晚上的费率可能不同,周末和工作日的费率也可能有所差异。
为了实现车位的预订功能,我们可以使用一个优先级队列或者堆来管理预订请求。
预订请求包含预订时间、预计停车时长等信息。
根据预订时间和预计停车时长,可以对预订请求进行排序,优先处理先到的请求。
当车辆进入停车场时,系统首先查询空闲车位,如果有空闲车位,则记录车辆信息,并更新车位状态。
数据结构实验报告模拟停车场管理
数据结构实验报告模拟停车场管理实验目的:通过模拟停车场管理的过程,理解数据结构的应用和实际工程问题的解决思路。
实验内容:1.设计停车场类和车辆类,并实现相关操作方法。
2.模拟停车场管理的过程,包括车辆的进入和离开。
3.根据实际需求设计停车场管理算法,如何选择停车位和调度车辆等。
实验步骤:1.设计停车场类停车场类需要保存停车位的信息,可以使用数组或链表实现。
需要提供以下方法:- void addCar(Car car):将车辆添加到停车场,如果停车场已满,则禁止入场。
- void removeCar(Car car):将车辆从停车场移除,并更新停车位信息。
- int getAvailableSpaces(:返回停车场中当前可用的停车位数量。
2.设计车辆类车辆类需要保存车辆的信息,如车牌号、车型等。
3.实现停车场管理算法停车场管理需要考虑车辆进入和离开的顺序,以及停车位的选择等问题。
可以使用队列或堆栈等数据结构来保存车辆的进出顺序。
停车位的选择可以根据具体算法进行,如先到先得、最近最便等原则。
4.完成模拟停车场管理过程的代码根据实际需求,编写代码模拟车辆进入和离开停车场的过程。
可以通过输入车辆信息和操作指令来模拟。
5.测试与优化对停车场管理算法进行测试,并根据实际情况进行优化。
可以通过增加数据量、调整车辆进出顺序等方式进行测试,并根据测试结果进行优化。
实验结果:经过实验测试,停车场管理系统可以良好地处理车辆的进入和离开,并正确计算可用停车位的数量。
通过合理的停车位选择算法,确保了车辆进出的顺序。
实验总结:通过本次实验,我们学习了如何利用数据结构来实现停车场管理系统。
停车场管理系统是一种常见的实际应用,对于解决停车难问题具有重要意义。
在实验过程中,我们掌握了设计和实现停车场类、车辆类以及停车场管理算法的方法,加深了对数据结构的理解和应用。
在实验过程中,我们还发现停车场管理算法可以通过不同的策略进行优化,如最大化停车利用率、最小化顾客等待时间等。
数据结构用栈和队列创建停车场管理系统实验报告
数据结构用栈和队列创建停车场管理系统实验报告一、实验背景及目的随着城市化进程的不断加速,车辆数量急剧增长,停车难成为了城市发展中的一个重要问题。
为了解决这一问题,需要建立高效的停车场管理系统。
数据结构中的栈和队列是常用的数据结构,可以用来创建停车场管理系统。
本次实验旨在通过使用栈和队列来创建一个停车场管理系统,并测试其功能。
二、实验原理及方法1. 停车场管理系统基本原理停车场管理系统主要包括三个部分:入口、出口和停车位。
当车辆到达入口时,需要检查是否有空余的停车位;如果有,则将其分配一个位置并记录下来;否则,需要让其等待直到有空余位置。
当车辆离开时,需要释放该位置并更新记录。
2. 使用栈和队列创建停车场管理系统(1)使用栈来模拟停车位由于每个停车位只能容纳一辆汽车,可以使用栈来模拟每个停车位。
当有新的汽车进入时,将其压入栈中;当汽车离开时,则将其从栈中弹出。
(2)使用队列来模拟等待区由于等待区可以容纳多辆汽车,可以使用队列来模拟等待区。
当有新的汽车到达时,将其加入队列尾部;当有车位空余时,则从队列头部取出一辆汽车进入停车场。
3. 实验步骤(1)创建停车场管理系统的数据结构:使用栈和队列分别来模拟停车位和等待区。
(2)实现停车场管理系统的基本操作:包括汽车进入、离开、查询空余停车位等操作。
(3)测试停车场管理系统的功能:模拟多辆汽车进出停车场,检查系统是否能够正确地分配和释放停车位,并且能够正确地记录空余停车位数。
三、实验结果与分析本次实验使用栈和队列创建了一个简单的停车场管理系统,并测试了其基本功能。
在测试过程中,我们模拟了多辆汽车进出停车场,并检查了系统能否正确地分配和释放停车位。
实验结果表明,该系统可以正常工作,并且能够正确地记录空余停车位数。
四、实验总结通过本次实验,我们学习了如何使用栈和队列来创建一个简单的停车场管理系统。
同时,我们也深刻认识到数据结构在实际应用中的重要性。
在今后的学习中,我们将继续深入学习数据结构,并探索其更广泛的应用。
数据结构设计报告停车场管理系统方案
数据结构设计报告停车场管理系统方案数据结构设计报告:停车场管理系统方案一、引言随着汽车数量的不断增加,停车场管理成为了一个重要的问题。
一个高效、准确、便捷的停车场管理系统对于提高停车场的运营效率、服务质量以及用户体验都具有重要意义。
本报告将详细介绍一种停车场管理系统的数据结构设计方案,旨在为相关开发人员提供参考。
二、需求分析(一)基本功能需求1、车辆的入场登记,包括车辆信息、入场时间等。
2、车辆的出场结算,根据停车时间计算费用。
3、车位的实时监控,显示空闲车位数量和位置。
4、数据的存储和查询,如车辆历史停车记录等。
(二)性能需求1、系统响应迅速,车辆入场和出场操作能够在短时间内完成。
2、数据的准确性和完整性,确保停车信息不丢失、不错误。
(三)用户需求1、为停车场管理人员提供简洁、直观的操作界面。
2、为车主提供清晰的停车引导和费用信息。
三、数据结构设计(一)车辆信息结构体```ctypedef struct {char licensePlate20; //车牌号time_t entryTime; //入场时间time_t exitTime; //出场时间float parkingFee; //停车费用} Vehicle;```(二)车位信息结构体```ctypedef struct {int parkingSpaceNumber; //车位编号int status; // 0:空闲 1:占用} ParkingSpace;```(三)停车场结构体```ctypedef struct {ParkingSpace parkingSpaces; //车位数组int totalSpaces; //总车位数Vehicle vehicles; //车辆数组int totalVehicles; //车辆总数} ParkingLot;```(四)数据存储1、使用文件存储停车场的基本信息,如总车位数等。
2、使用数据库存储车辆的停车记录,便于查询和统计。
数据结构课程设计停车场管理报告
数据结构课程设计《停车场管理》班级:姓名:学号:设计日期:2012年7月2日——2012年7月11日1)需求分析本次的数据结构课程设计所选的题目是停车场管理系统。
根据题目要求,已知停车场是一个可停放n辆汽车的狭长通道,只有一个大门可供汽车出入,由此可将停车场的类型定义为栈,其容量为n。
当停车场已经停满n辆车后,后来的车辆只能在便道上等待。
当停车场内有车开走,便道上的第一辆汽车便可以进入停车场中。
根据其先入先出的特点,可以将便道的类型定义为队列,容量不限。
由题目可知,需停车辆的信息包括:车牌号码、汽车“到达”“离去”的信息、“到达”“离去”的时刻等。
按照从终端读入的数据序列进行模拟管理。
每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。
车辆牌照号码为整型数据,车辆到达或离开的时刻同样为整型数据。
输入车辆到达应该输出的信息为:汽车在停车场内或便道上的停车位置;输入车辆离开应该输出的信息为汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
停车场管理系统主要实现以下几个功能:(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。
(2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。
(3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。
实现停车场的调度功能。
该程序设计可以完整的模拟停车场的管理过程。
2)概要设计停车场管理系统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。
栈的主要特点是”后进先出”,即后进栈的元素先处理。
停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度。
队列是限定仅能在表的一端进行插入,在表的另一端进行删除的线性表。
队列中可以插入的一端称为队尾,可以删除的一端称为队首。
把一个元素插入队列中的操作为进队,队列中删除一个元素的操作为出队。
数据结构 停车场管理报告
实验二:停车场管理(栈和队列应用)班级学号姓名一、实验目的1 掌握队列和栈顺序存储结构和链式存储结构,以便在实际背景下灵活运用。
2 掌握栈和队列的特点,即先进后出与先进先出的原则。
3 掌握栈和队列的基本运算。
二、实验内容1 问题描述设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短来交费。
如果停留在便道上的车未进入停车场就要离去,允许其离开,不收停车费,并且仍然保持在便道上等待的车辆次序。
编制一个程序模拟该停车场的管理。
2 实现要求要求程序输出每辆车到达后的停车位置(停车场或便道),以及某辆车离开停车场时应该交纳的费用和它在停车场内停留的时间。
3 实现提示汽车的模拟输入信息格式可以为:(到达/离开,汽车牌照号码,到达/离开的时间)。
用栈和队列来模拟停车场和便道。
三、实验结果:头文件#define MAXSIZE 3#define price 0.4typedef struct time {int hour;int min;}Time;typedef struct car {char num[10];Time reach;Time leave;}CarNode;typedef struct SNode {CarNode *data1[MAXSIZE+1];int top;}SeqStackCar;typedef struct QNode {CarNode *data2;struct QNode *next;}QueueNode;typedef struct LQNode {QueueNode *front;QueueNode *rear;}LinkQueueCar;void InitStack(SeqStackCar *s);int InitQueue(LinkQueueCar *Q);void Display(CarNode *p,int place);int Arrival(SeqStackCar *s,LinkQueueCar *LQ);void Leave1(SeqStackCar *s1,SeqStackCar *s2,LinkQueueCar *LQ); void Leave2(LinkQueueCar *LQ);void List1(SeqStackCar *s);void List2(LinkQueueCar *LQ);源文件#include "car.h"#include<iostream>using namespace std;int i=0;void InitStack(SeqStackCar *s){int i;s->top=0;for(i=0;i<=MAXSIZE;i++)s->data1[s->top]=NULL;}int InitQueue(LinkQueueCar *Q){Q->front=new QueueNode;if(Q->front!=NULL){Q->front->next=NULL;Q->rear=Q->front;return 1;}elsereturn 0;}void Display(CarNode *p,int place){int A1,A2,B1,B2,time;cout<<"请输入离开的时间:";cin>>p->leave.hour;cin>>p->leave.min;while(p->leave.hour<p->reach.hour||p->leave.hour>23){cout<<"error!"<<endl;cout<<"请输入离开的时间:";cin>>p->leave.hour;cin>>p->leave.min;}cout<<endl;cout<<"离开车辆的车牌号为:";cout<<p->num<<endl;cout<<"其到达时间为: "<<p->reach.hour<<":"<<p->reach.min<<endl;cout<<"其离开时间为: "<<p->leave.hour<<":"<<p->leave.min<<endl;A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;time=(B1-A1)*60+(B2-A2);cout<<"该车停在停车场中的时间:"<<time<<"分钟!"<<endl;cout<<"应交费用为: "<<time*price<<"元!"<<endl;cout<<endl;}int Arrival(SeqStackCar *s,LinkQueueCar *LQ){CarNode *p;QueueNode *t;p=new CarNode;cout<<"请输入车牌号(例:A1234):";cin>>p->num;if(s->top<MAXSIZE){s->top++;cout<<"车辆在车场第"<<s->top <<"位置!"<<endl;cout<<"请输入到达时间:";cin>>p->reach.hour;cin>>p->reach.min;while(p->reach.hour<0||p->reach.hour>23||p->reach.min<0||p->reach.min>59) {cout<<"error!"<<endl;cout<<"请输入到达时间:";cin>>p->reach.hour;cin>>p->reach.min;}s->data1[s->top]=p;return 1;}else{cout<<"该车停在便道上!"<<endl;t= new QueueNode;t->data2=p;t->next=NULL;LQ->rear->next=t;LQ->rear=t;i++;cout<<"车辆在便道"<<i<<"个位置!"<<endl;return 1;}}void Leave1(SeqStackCar *s1,SeqStackCar *s2,LinkQueueCar *LQ) {int place;CarNode *p,*t;QueueNode *q;if(s1->top>0){while(1){cout<<"请输入车在车场的位置1--"<<s1->top<<":";cin>>place;if(place>=1&&place<=s1->top) break;}while(s1->top>place){s2->top++;s2->data1[s2->top]=s1->data1[s1->top];s1->data1[s1->top]=NULL;s1->top--;}p=s1->data1[s1->top];s1->data1[s1->top]=NULL;s1->top--;while(s2->top>=1){s1->top++;s1->data1[s1->top]=s2->data1[s2->top];s2->data1[s2->top]=NULL;s2->top--;}Display(p,place);if((LQ->front!=LQ->rear)&&s1->top<MAXSIZE){q=LQ->front->next;t=q->data2;s1->top++;cout<<"便道的"<<t->num<<"号车进入车场第"<<s1->top<<"位置!"<<endl;cout<<"请输入到达的时间:";cin>>t->reach.hour;cin>>t->reach.min;if(t->reach.hour<0||t->reach.hour>23||t->reach.min<0||t->reach.min>59){cout<<"error!"<<endl;cout<<"请输入到达时间:";cin>>t->reach.hour;cin>>t->reach.min;}LQ->front->next=q->next;if(q==LQ->rear)LQ->rear=LQ->front;s1->data1[s1->top]=t;delete q;}elsecout<<"便道里没有车!"<<endl;}elsecout<<"停车场里没有车!"<<endl;}void Leave2(LinkQueueCar *LQ){QueueNode *q;CarNode *t;if(LQ->front!=LQ->rear){q=LQ->front->next;t=q->data2;LQ->front->next=q->next;if(q==LQ->rear)LQ->rear=LQ->front;delete q;cout<<"便道上车牌号为"<<t->num<<"的车从便道上离开!"<<endl;}elsecout<<"便道里没有车!"<<endl;}void List1(SeqStackCar *s){int i;if(s->top>0){cout<<" 位置到达时间车牌号"<<endl;for(i=1;i<=s->top;i++){cout<<" "<<i<<" "<<s->data1[i]->reach.hour<<":"<<s->data1[i]->reach.min<<" "<<s->data1[i]->num<<endl;}}elsecout<<"停车场里没有车!"<<endl;}void List2(LinkQueueCar *LQ){QueueNode *p;p=LQ->front->next;if(LQ->front!=LQ->rear){cout<<"便道上车的车牌号为:"<<endl;while(p!=NULL){cout<<p->data2->num<<endl;p=p->next;}}elsecout<<"便道上没有车!"<<endl;}测试文件#include "car.h"#include<iostream>using namespace std;void main(){SeqStackCar s1,s2;LinkQueueCar LQ; int m;InitStack(&s1);InitStack(&s2);InitQueue(&LQ);while(1){cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;cout<<"1.车辆到达2.离开停车场3.离开便道4.停车场列表5.便道列表6.退出系统"<<endl;cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;cin>>m;switch(m){case 1:Arrival(&s1,&LQ);break;case 2:Leave1(&s1,&s2,&LQ);break;case 3:Leave2(&LQ);break;case 4:List1(&s1);break;case 5:List2(&LQ);break;case 6:exit(0);default: break;}}}(两运行结果:个图表联在一起)四、实验总结1.学会了栈和队列的综合使用,更加灵活运用栈和队列。
数据结构停车场收费系统管理实践报告
数据结构停车场收费系统管理实践报告停车场收费系统,这个话题一提起来,大家都不陌生。
说实话,谁没在大街小巷的停车场为了一块停车费而头疼过呢?尤其是在城市里,停车位稀缺,收费又是天价,弄得有时候进个停车场就像进了赌场,不知道到底会“亏”多少。
今天就聊聊我最近搞的一次“停车场收费系统管理实践”,说实话,整个过程就像是看一部高能悬疑片,既有趣又有点小紧张。
停车场的管理,说白了,就是得搞清楚停车位的利用率,然后合理收费,确保不亏本。
这听起来简单,但要做好,光靠脑袋里的想法可不行。
得用点“硬核”的东西,比如数据结构。
说到这里,很多人可能开始懵了:数据结构?那是啥?别担心,数据结构就是一堆有序的、按照特定规则组织起来的数据,简单点说,就是停车场的“内部管理”嘛。
比如你停车时,停车场会分配一个车位给你,那些车位就得按照一定的规则排序,不然你想找个位置就得像大海捞针一样。
我们做的这个停车场收费系统,首先就要搞清楚如何让停车位、车主和收费三个元素高效地“打交道”。
你想,假如停车场没有规则,那就乱套了,车位没人用,车主也找不到地方停车,收费自然就乱七八糟了。
搞清楚了这些,系统的基础架构就稳了。
说到收费,最常见的就是按时间收费。
我们通过程序算出来每个车主停车的时长,再按照预设的费用标准进行结算。
这里就得用到“链表”这个数据结构了。
车主的停车信息就像一颗颗“珠子”串在一起,每个珠子里面有车主的停车时间、车牌号、停车收费等数据。
如果一个车主停车时间很长,那收费就得按时间增加,反之,停车时间短,自然收费也少。
这种管理方式非常高效,不容易出错,而且能够快速计算每个车主的停车费。
哎,说实话,我一开始听到链表这俩字儿时,还挺疑惑的,感觉好像很“高大上”,但一弄明白后,才发现原来就是个简单又实用的东西,跟停车场的条理化管理一样,处理起来简洁又明了。
再说到停车收费的“智能化”,以前我们去停车场,不是排队等着人工收费,就是站在收费亭前一脸懵逼,不知道到底该怎么付。
数据结构课程设计报告停车场管理系统
数据结构课程设计报告停车场管理系统课程设计报告课程名称数据结构课程设计课题名称停车场管理系统专业信息管理与信息系统班级 09级1班学号 200903110112姓名洪俊斌指导教师赵锦元、李峰、罗敬2011年 1 ⽉ 9 ⽇湖南⼯程学院课程设计任务书课程名称数据结构课题停车场管理系统专业班级信息管理0901班学⽣姓名洪俊斌学号200903110112指导⽼师赵锦元、李峰、罗敬审批任务书下达⽇期2011 年1 ⽉ 3 ⽇任务完成⽇期2011 年1 ⽉20 ⽇⼀、设计内容与设计要求1.设计内容:[问题描述] 设停车场只是⼀个可停放⼏辆汽车的狭长通道,且只有⼀个⼤门可供汽车进出,还有⼀个等停的的狭长通道。
汽车在停车场内按车辆的先后顺序依次排列,若车站内已停满汽车,则后来的汽车只能在门外的通道上等停,⼀旦停车场内有车开⾛,则排在通道上的第⼀辆车即可进⼊;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开⼊的车辆必须先退出车站为它让路,待该车辆开出⼤门,为它让路的车辆再按原来次序进⼊车场。
在这⾥假设汽车不能从便道上开⾛,试设计这样⼀个停车场模拟管理程序。
[基本功能](1)车辆成批⼊站。
当⼀个停车场刚开始投⼊运⾏的时候,会有很多车进来,因此,要设计⼀个函数来实现车辆批量进站。
并要检测车辆的数⽬是否超过规定的最⼤容量,给出相关提⽰信息。
(2)单个车辆⼊站。
当系统正常投⼊运⾏后,会有零散的车辆进进出出,因此,设计⼀个函数实现单个车辆⼊站。
(3)车站内信息实时显⽰。
车站内信息包括两个部分:停车场内停放的车辆以及在外⾯通道上等停的车辆。
(4)车辆出站。
当停车场内车辆出站后,检查通道上是否有车等停,如果有,则要把排在最前⾯的车调⼊停车场内。
2.设计要求:1).设计正确,⽅案合理。
2).界⾯友好,使⽤⽅便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
数据结构课程设计——停车场
数据结构课程设计——停车场管理一、需求分析:1、问题描述:设停车场是一个可停放n辆汽车的狭长通道,且只有一个门可供出入。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆汽车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原顺序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
应用个简单的栈与队列实现该功能。
2、基本要求(1)以顺序栈模拟停车场,以链队列模拟便道。
(2)当车辆到达时,输入车辆车牌号、达到时间,得到车辆在停车场的位置。
车牌号格式要正确,达到时间为00:00到24:00之间。
(3)当车辆离开时,输入车辆在停车场位置及离开时间,离开时间应在该车进入时间之后。
等待车辆按顺序进入停车场,并输入进入时间,进入时间应在上辆离开车辆离开时间之后。
(4)打印出离开车辆的车牌号、到达时间、离开时间、停留时间及应缴费用。
(5)显示停车场和便道车辆信息。
二、概要设计1、数据结构:typedef 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; /*模拟通道*/2、模块本程序首先定义了用来模拟停车场的堆栈模块和用来模拟便道的链队列模块为全局变量,然后编写主函数,在主函数中实现对其他各个模块的调用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计《停车场管理》班级::学号:设计日期:2012年7月2日——2012年7月11日1)需求分析本次的数据结构课程设计所选的题目是停车场管理系统。
根据题目要求,已知停车场是一个可停放n辆汽车的狭长通道,只有一个大门可供汽车出入,由此可将停车场的类型定义为栈,其容量为n。
当停车场已经停满n辆车后,后来的车辆只能在便道上等待。
当停车场有车开走,便道上的第一辆汽车便可以进入停车场中。
根据其先入先出的特点,可以将便道的类型定义为队列,容量不限。
由题目可知,需停车辆的信息包括:车牌、汽车“到达”“离去”的信息、“到达”“离去”的时刻等。
按照从终端读入的数据序列进行模拟管理。
每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。
车辆牌照为整型数据,车辆到达或离开的时刻同样为整型数据。
输入车辆到达应该输出的信息为:汽车在停车场或便道上的停车位置;输入车辆离开应该输出的信息为汽车在停车场停留的时间和应交纳的费用(在便道上停留的时间不收费)。
停车场管理系统主要实现以下几个功能:(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。
(2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。
(3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。
实现停车场的调度功能。
该程序设计可以完整的模拟停车场的管理过程。
2)概要设计停车场管理系统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。
栈的主要特点是”后进先出”,即后进栈的元素先处理。
停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度。
队列是限定仅能在表的一端进行插入,在表的另一端进行删除的线性表。
队列中可以插入的一端称为队尾,可以删除的一端称为队首。
把一个元素插入队列中的操作为进队,队列中删除一个元素的操作为出队。
队列存取操作符合:先进先出。
停车场的车辆到达停车和车辆的离开的管理方式就是采用队列的“先进先出”的移动的思想。
停车场的入口就是队列的队首,停车场的出口就是队列的队尾。
停车场管理系统流程图如图1所示。
图1 停车场管理系统流程图3.详细设计1.全局变量及编译预处理语句#define ERROR 0#define OK 1#define NULL 0int count=0; //队列是否为空的标志int times;stack s,temp; //初始化栈LinkQueue Q; //初始化队列2.车辆信息类型typedef struct node{int passport; //存储车辆牌照信息int time; //存储进场时间信息}node;3.栈类型(停车场)typedef struct stack{node *base;node *top;int stacksize;}stack;void initstack(stack &S,int n){ //构造空栈S.base=(node *)malloc(n*sizeof(node));S.top=S.base;S.stacksize=n;}void push(stack &S,node e){ //入栈函数if((S.top-S.base)>=S.stacksize){EnQueue(Q,e);} //如果栈满,调用入队函数else {S.top->passport=e.passport;S.top->time=e.time;S.top++;}}int pop(stack &S,node &e){ //出栈函数if(S.top==S.base)return ERROR; //如果栈空,返回ERROR--S.top;e.passport=S.top->passport;e.time=S.top->time;return OK;}4.队列类型(便道)typedef struct Qnode{node Qdata;struct Qnode *next;}Qnode;typedef struct {Qnode *front;Qnode *rear;}LinkQueue;void EnQueue(LinkQueue &Q,node e){ //入队函数Qnode *q;q=(Qnode *)malloc(sizeof(Qnode));q->Qdata.passport=e.passport;q->Qdata.time=e.time;q->next=NULL;if(count==0){Q.front=q;count++;} //若创建节点前队空,头指针指向节点Q.rear->next=q;Q.rear=q;}void DeQueue(LinkQueue &Q,node &e){ //出队函数if(Q.rear==NULL){}else {e.passport=Q.front->Qdata.passport;e.time=Q.front->Qdata.time;Q.front=Q.front->next;if(Q.front==NULL){Q.rear=Q.front;count=0;}}}5.主函数及其他函数的C++算法void main(){int n,exit;float money;char info;int pass;Q.front=NULL ;Q.rear=(Qnode *)malloc(sizeof(Qnode));Q.rear->next=Q.rear;printf("欢迎使用停车场管理系统\n本停车场容量为:");cin>>n;initstack(s,n);initstack(temp,n);printf("停车场费率为:");cin>>money;while(exit!=OK){printf("\n请输入车辆数据\nA到达 D离去 E结束:"); cin>>info;printf("请输入车辆牌照:");cin>>pass;if(info=='A'||info=='E')printf("请输入车辆进场时间:"); if(info=='D')printf("请输入车辆离场时间:");cin>>times;if(info=='E'){exit=OK;}else if(info=='A'){int i,j;node a;a.passport=pass;a.time=times;push(s,a);for(i=1;i<=n;i++){if(s.base[i-1].passport==a.passport){printf("停车位置(停车场):%d\n",i);}}Qnode *tp;tp=Q.front;if(tp==NULL){}else{j=1;while(tp!=Q.rear){tp=tp->next;j++;}printf("停车位置(便道):%d\n",j);}}else if(info=='D'){node d;int tp,counter=0;do{counter++;tp=pop(s,d);while(tp!=ERROR){if(d.passport==pass){float m;m=(times-d.time)*money;printf("停留时间:%d您需交费:%f\n",times-d.time,m); while(temp.base!=temp.top){pop(temp,d);push(s,d);}wait(s);d.passport=9999;tp=ERROR;}else{push(temp,d);d.passport=0;tp=ERROR;}}}while(d.passport==0||counter>n);}else if(info!='A'&&info!='D'&&info!='E'){}}}void wait(stack &S){if((S.top-S.base)==(S.stacksize-1)&&count!=0){node temp;DeQueue(Q,temp);temp.time=times;push(S,temp);}4}.调试分析(1)一开始在调试程序时遇到了存错误,经过DEBUG,找到了引起存错误的原因:即在建立队头指针与队尾指针时没有对指针进行初始化(没有为指针动态分配空间)。
问题得到解决。
(2)在Wait函数中的If语句处,一开始的算法有些问题,导致实现的功能与设想的有出入,无法得到正确的结果。
原条件为: S.top-S.base==S.stacksize后改为: (S.top-S.base)==(S.stacksize-1)&&count!=0该函数的功能得以正确实现。
(3)在EnQueue函数中,一开始用的是建立实体结点,用队头队尾指针指向该实体的方法来创建队列。
在调试过程中发现,忽略了生存期,导致队列并没有被创建。
改为创建指针,并为指针分配空间,再给头指针和尾指针赋值的方式解决问题。
虽然指针也有生存期,但为它分配的空间却并没有被收回,于是队列创建成功,问题解决。
(4)本程序中:车辆到达,离去时的时间复杂度均为:O(n)。
本程序空间复杂度为:O(n)。
(5)前面运行一切正常,但是最后无法结束退出。
经调试后解决。
5).用户手册1、运行程序进入停车场管理界面,首先输入停车场容量和停车场费率。
2、然后根据车辆到达和离去的实际情况输入A或D。
例如车辆到达输入A,然后输入车辆车牌及到达时刻。
此时便会显示车辆停放的信息(在停车场,当停车场停满后,车辆会停放在便道上)。
3、车辆离开输入D,然后输入车辆及离开时刻。
此时会显示离开车辆的停车时间以及应缴纳的费用。
4、输入E结束本程序。
6)测试结果测试数据:设n=2输入数据:2输出:停车场容量为:2停车场费率为:1.5元/分钟A,1,5 停车位置(停车场):1A,2,10 停车位置(停车场):2D,1,15 停留时间:10分钟需交费:15.00元A,3,20 停车位置(停车场):2A,4,25 停车位置(便道):1A,5,30 停车位置(便道):2D,2,35 停留时间:25分钟需交费:37.50元D,4,40 停留时间:5分钟需交费:7.50元E,0,07)附录(源程序代码)#include <stdio.h>#include <stdlib.h>#include <iostream.h>#include <malloc.h>#define ERROR 0#define OK 1#define NULL 0typedef struct node{int passport;int time;}node;typedef struct stack{node *base;node *top;int stacksize;}stack;typedef struct Qnode{node Qdata;struct Qnode *next;}Qnode;typedef struct {Qnode *front;Qnode *rear;}LinkQueue;int count=0;int times;stack s,temp;LinkQueue Q;void initstack(stack &S,int n){S.base=(node *)malloc(n*sizeof(node));S.top=S.base;S.stacksize=n;}void EnQueue(LinkQueue &Q,node e);void DeQueue(LinkQueue &Q,node &e);void push(stack &S,node e){if((S.top-S.base)>=S.stacksize){EnQueue(Q,e);} else {S.top->passport=e.passport;S.top->time=e.time;S.top++;}}int pop(stack &S,node &e){if(S.top==S.base)return ERROR;--S.top;e.passport=S.top->passport;e.time=S.top->time;return OK;}void wait(stack &S){if((S.top-S.base)==(S.stacksize-1)&&count!=0){ node temp;DeQueue(Q,temp);temp.time=times;push(S,temp);}}void EnQueue(LinkQueue &Q,node e){Qnode *q;q=(Qnode *)malloc(sizeof(Qnode));q->Qdata.passport=e.passport;q->Qdata.time=e.time;q->next=NULL;if(count==0){Q.front=q;count++;}Q.rear->next=q;Q.rear=q;}void DeQueue(LinkQueue &Q,node &e){if(Q.rear==NULL){}else {e.passport=Q.front->Qdata.passport;e.time=Q.front->Qdata.time;Q.front=Q.front->next;if(Q.front==NULL){Q.rear=Q.front;count=0;} }}int main(){int n,exit;float money;char info;int pass;Q.front=NULL;Q.rear=(Qnode *)malloc(sizeof(Qnode));Q.rear->next=Q.rear;printf("欢迎使用停车场管理系统\n本停车场容量为:");cin>>n;initstack(s,n);initstack(temp,n);printf("停车场费率为:");cin>>money;while(exit!=OK){printf("\n请输入车辆数据\nA到达 D离去 E结束:");cin>>info;if(info=='E'){return 0;}printf("请输入车辆牌照:");cin>>pass;if(info=='A')printf("请输入车辆进场时间:");if(info=='D')printf("请输入车辆离场时间:");cin>>times;if(info=='A'){int i,j;node a;a.passport=pass;a.time=times;push(s,a);for(i=1;i<=n;i++){if(s.base[i-1].passport==a.passport){printf("停车位置(停车场):%d\n",i);}}Qnode *tp;tp=Q.front;if(tp==NULL){}else{j=1;while(tp!=Q.rear){tp=tp->next;j++;}printf("停车位置(便道):%d\n",j);}}else if(info=='D'){node d;int tp,counter=0;do{counter++;tp=pop(s,d);while(tp!=ERROR){if(d.passport==pass){float m;m=(times-d.time)*money;printf("停留时间:%d分钟您需交费:%2.2f元\n",times-d.time,m);while(temp.base!=temp.top){pop(temp,d);push(s,d);}wait(s);d.passport=9999;tp=ERROR;}else{push(temp,d);d.passport=0;tp=ERROR;}}}while(d.passport==0||counter>n);}else if(info!='E'){}}}参考文献:数据结构(C语言版)严蔚敏吴伟民编著清华大学数据结构实验教程(C语言版)王国钧唐国民编著清华大学。