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

数据结构停车场课程设计一、课程目标知识目标:1. 理解数据结构中图和树的概念,掌握它们在解决实际问题中的应用。
2. 学习并掌握停车场系统的逻辑结构,能运用所学数据结构设计停车场的模拟系统。
3. 了解不同数据结构在处理停车场问题时的效率差异,能够分析其时间复杂度和空间复杂度。
技能目标:4. 能够运用所学知识,设计并实现一个简单停车场的管理系统,包括车辆入场、出场、查找空车位等基本功能。
5. 通过课程设计活动,提升学生利用数据结构解决实际问题的编程能力,加强代码的逻辑性和可读性。
6. 培养学生将理论知识应用于实际问题的能力,通过团队协作完成课程设计任务。
情感态度价值观目标:7. 激发学生对计算机科学和数据结构的兴趣,增强其对复杂问题探究的积极态度。
8. 培养学生的团队协作精神,学会在团队中分工合作、共同解决问题。
9. 增强学生的创新意识,鼓励学生大胆尝试不同的解决方案,体会科技创新对现实生活的影响。
课程性质分析:本课程设计属于高中信息技术或计算机科学课程,以实践性和应用性为主,旨在通过实际问题的解决,加深学生对数据结构知识的理解和运用。
学生特点分析:高中生具有一定的数据结构基础和编程能力,思维活跃,对实际问题具有较强的探究欲望,但需要进一步引导他们将理论知识与实际问题相结合。
教学要求:教师应引导学生将所学知识综合运用到停车场系统设计中,注重理论与实践相结合,鼓励学生创新思维和团队合作,通过具体的学习成果来衡量学生掌握情况。
二、教学内容1. 数据结构基本概念复习:回顾图和树的基本概念,包括相关术语、性质及常用算法。
教材章节:第五章“图”,第六章“树”2. 停车场系统需求分析:介绍停车场系统的基本功能,如车辆入场、出场、查找空车位等。
教材章节:项目实战部分3. 数据结构选择与应用:探讨不同数据结构在停车场系统中的应用,如邻接表、邻接矩阵、二叉树等。
教材章节:第五章、第六章应用实例4. 停车场系统设计:详细讲解如何利用数据结构设计停车场系统,包括数据模型、算法实现等。
数据结构—停车场管理系统

数据结构—停车场管理系统数据结构—停车场管理系统1.引言本文档描述了一个停车场管理系统的设计和实现。
停车场管理系统是一个用于管理停车场内车辆进出、计费等相关事务的系统。
该系统通过数据结构的应用实现了高效的车辆管理和计费功能。
2.系统概述2.1 目标停车场管理系统的目标是提供一个高效、准确和可靠的车辆管理和计费系统,使停车场管理人员能够更好地管理停车场内的车辆。
2.2 功能该系统的主要功能包括:●车辆进入管理:记录进入停车场的车辆信息,包括车牌号码、进入时间等●车辆离开管理:记录离开停车场的车辆信息,包括车牌号码、离开时间等,并计算相应的停车费用●停车位管理:记录停车场内所有车位的使用情况,包括已使用和空闲的车位信息●支付管理:根据停车时长计算停车费用,并提供支付功能●统计报表:停车场内车辆进出、停车时长、收入等相关统计报表3.系统设计3.1 数据结构选择为了实现停车场管理系统的高效运行,选择以下数据结构:●链表:用于管理车辆进出的顺序,支持快速插入和删除操作●哈希表:用于存储车辆信息,通过车牌号码作为键,快速检索和访问各个车辆的信息●栈:用于管理停车场内的车位,支持快速分配和释放车位●队列:用于统计报表时的数据存储和处理3.2 系统架构停车场管理系统的整体架构如下所示:●用户界面:提供用户操作界面,包括车辆进入、离开、支付以及查询等功能●车辆管理模块:负责处理车辆进入和离开的相关逻辑,包括记录车辆信息、计算停车费用等●停车位管理模块:负责管理停车场内车位的分配和释放,包括查找空闲车位、更新车位状态等●统计报表模块:负责停车场内各种统计报表,包括车辆进出统计、停车时长统计、收入统计等4.系统实现4.1 用户界面实现用户界面可以通过文本命令行交互或者图形用户界面来实现,具体实现方式根据实际需求决定。
4.2 车辆管理模块实现车辆管理模块可以通过链表来实现车辆进出的顺序管理。
每次车辆进入时,创建一个新的节点插入链表末尾;每次车辆离开时,从链表中删除对应节点。
《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_一、系统总体原则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.管理员管理停车场信息。
二、数据结构设计1.车辆信息结构体在车辆进入停车场时,需要记录车辆的信息,包括车牌号、车辆类型、进入时间等。
因此,我们可以定义一个车辆信息结构体,如下所示:struct CarInfo{string plateNumber; //车牌号string carType; //车辆类型string enterTime; //进入时间int parkingTime; //停车时间float parkingFee; //停车费用};2.停车场结构体停车场是一个重要的管理对象,需要记录停车场的信息,包括停车场容量、当前停车量、车位状态等。
因此,我们可以定义一个停车场结构体,如下所示:struct ParkingLot{int capacity; //停车场容量int currentCount; //当前停车量bool *parkingStatus; //车位状态CarInfo *parkingCar; //停车车辆信息};其中,parkingStatus数组表示每个车位的状态,true表示该车位已经被占用,false表示该车位空闲;parkingCar数组存储每个车位停放的车辆信息。
3.查询车辆信息结构体管理员需要查询车辆信息,因此我们可以定义一个查询车辆信息结构体,如下所示:struct QueryCarInfo{string plateNumber; //车牌号string enterTime; //进入时间string leaveTime; //离开时间float parkingFee; //停车费用};4.管理员结构体管理员需要管理停车场信息,包括设置停车场容量、添加车辆、删除车辆等。
数据结构停车场管理系统数据结构设计

数据结构停车场管理系统数据结构设计在智能化时代的今天,停车问题成为了城市管理的一大难题。
为了解决车辆日益增多的停车需求,设计一个高效的停车场管理系统显得尤为重要。
本文将围绕数据结构的设计来探讨停车场管理系统的实现。
一、需求分析停车场管理系统的主要功能是提供用户停车、缴费、查询等服务,同时需要为管理人员提供车辆调度、收费统计等功能。
为了实现这些功能,我们需要从需求角度对数据结构进行设计。
1. 用户管理停车场管理系统需要记录每个用户的停车信息,包括车辆信息、停车时间等。
为了高效查询用户信息,可以使用哈希表作为数据结构,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。
2. 车辆管理为了维护停车场内的车辆信息,我们可以使用链表作为数据结构来管理车辆。
每个节点可以保存一个车辆的信息,如车牌号、停车时间等,同时连接下一个车辆节点。
3. 车位管理停车场需要管理可用车位和已停车位。
为了高效分配车位,可以使用堆作为数据结构来存储可用车位信息。
堆可以根据剩余车位数量进行自动排序,当有车辆进入停车场时,从堆中取出最小的剩余车位。
4. 收费管理停车场管理系统需要计算用户停车时间并进行费用结算。
为了高效计算停车时间,可以使用栈作为数据结构来记录每个用户进入停车场的时间。
栈可以实现先进后出的特点,正好符合车辆停车的实际情况。
当用户离开停车场时,可以根据进入时间计算停车时间并进行费用结算。
5. 查询与统计为了用户能够方便地查询自己的停车信息,可以使用二叉查找树作为数据结构,将用户的车牌号作为键值进行存储。
二叉查找树可以在O(log n)的时间复杂度内完成查询操作。
另外,为了方便管理人员进行统计工作,可以使用散列表来存储车辆的停车信息,以便根据不同条件进行统计分析。
二、系统设计基于以上需求分析,我们可以得出停车场管理系统的数据结构设计如下:1. 用户管理使用哈希表来存储用户信息,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。
数据结构课程设计停车场管理系统

数据结构课程设计停车场管理系统
停车场管理系统是一种体现现代化管理的车库管理系统,它可以有效地控制车辆的入库、出库和停车费收取等。
停车场管理系统的设计原则是以业务实用性为基础,以车辆的安全和管理的效率为核心,以车主的方便为目标,以信息安全和财务支持为基础,以及以智慧停车场的发展为发展方向来设计。
停车场管理系统是一个基于互联网的系统,可以实现停车场的网络化管理,它可以实现停车场车辆的实时管理,可以实现停车场数据的实时上传和下载,可以实现停车场费用的实时收取,可以实现停车场财务的实时总结等功能,可以提高停车场的管理效率,提升停车场的运营水平。
总之,停车场管理系统是一个具有较强实用性的系统,它可以有效地控制车辆的入库、出库和停车费收取等,并可以实现停车场的网络化管理,提高停车场的管理效率,提升停车场的运营水平。
只要系统管理人员根据实际情况,灵活有效地调整系统的参数和指标,停车场管理系统将会发挥出最大的作用。
课程设计停车场管理系统

课程设计停车场管理系统一、课程目标知识目标:1. 让学生理解停车场管理系统的基本原理和功能需求。
2. 使学生掌握利用所学编程语言设计简单的停车场管理系统。
3. 帮助学生了解数据库在停车场管理系统中的应用。
技能目标:1. 培养学生运用所学知识,如流程图绘制、代码编写和调试等,解决实际问题的能力。
2. 提高学生团队协作、沟通表达和项目管理的能力。
情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发他们探索新技术、新方法的热情。
2. 培养学生面对实际问题时,积极思考、勇于创新的态度。
3. 增强学生的环保意识,让他们认识到智能停车场系统对缓解交通压力、提高生活质量的重要性。
课程性质:本课程为信息技术学科,以项目式教学为主,结合教材内容,使学生能够将理论知识与实际应用相结合。
学生特点:考虑到学生所在年级,他们在前期课程中已掌握了基本的编程知识和数据库应用,具备一定的自学能力和团队协作精神。
教学要求:在教学过程中,教师应注重引导学生自主探究、动手实践,鼓励学生提出问题、解决问题。
同时,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得实质性的进步。
通过本课程的学习,使学生能够达到以上设定的课程目标,为后续相关课程打下坚实基础。
二、教学内容1. 教学大纲:a. 停车场管理系统概述:介绍停车场管理系统的基本概念、功能和应用场景。
b. 系统需求分析:讲解如何进行需求分析,明确系统所需实现的功能和性能要求。
c. 系统设计:包括数据库设计、界面设计和模块设计,阐述各部分的设计原则和实现方法。
d. 编程实现:利用所学编程语言(如Python、Java等),实现停车场管理系统的核心功能。
e. 系统测试与优化:教授测试方法,分析测试结果,提出优化策略。
2. 教学内容安排与进度:a. 概述(1课时):引导学生了解停车场管理系统的背景和意义。
b. 需求分析(2课时):指导学生进行实际需求分析,明确系统目标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二停车场管理班级:A0712 学号:12 姓名:冷清淼成绩:__________指导教师签名:__________ 一、问题描述设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。
在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。
若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。
每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。
设计要求:1.模拟上述管理过程。
要求以顺序栈模拟停车场,以链队列模拟便道。
2.从终端读入汽车到达或离去的数据,每组数据包括三项:(1)是“到达”还是“离开”;(2)汽车牌照号码;(3)“到达”或“离开”的时刻。
3.与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。
二、算法说明1.数据结构说明(1)用到两个堆栈:一个为车场栈;另一个为临时栈temptypedef struct NODE{CarNode *stack[MAX+1];int top;}SeqStackCar; /*模拟车场*/(2)一个队列结构,存储便道车辆信息:typedef struct Node{QueueNode *head; QueueNode *rear;}LinkQueueCar; /*模拟便道*/2.算法说明(1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示停车场系统车辆到达车辆离开列表显示321图1 (2)以模块为单位分析算法1、“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。
如图2。
车辆到达停车场是否满结束进入停车场进入便道是否图22.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。
如图3。
车辆离开停车场是否空结束车辆离开提示没有车是否否便道是否有车是车进入车场图33. “显示”模块:显示模块有两个显示选项,即:车场与便道。
如图4。
列表显示判断输入值结束显示车场列表显示便道列表2.便道1.车场图4三、测试结果(一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程序的正确性和强壮性)1.第一组测试用例(1)测试输入:停车场的车辆离开,如下表:服务选择车牌号/车位到达/离开时间1 QH058 15:251 AB123 18:451 EA642 23:152 2 0:302 1 0:65(错误)(2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。
(3)正确输出:第一次离开的是AB123,应交费3.45元。
第二次时,当在输入65时,应该提示输入错误,重输。
(4)实际输出:(5)错误原因:第一个错误是在计算时,一个数字错了;第二个是没有对时间格式控制。
(6)当前状态:已改正2.第二组测试用例(1)测试输入:连续6辆车到达,如下表:服务选择车牌号到达时间1 A8828 7:561 S2296 8:251 WW666 8:451 HK456 15:501 GH999 12:301 DD555 13:40(2)测试目的:测试到达方法与列表显示方法能否正确完成。
(3)正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便道等候。
(4)实际输出:(5)错误原因:没有作出时间先后的判断,而是先输入先进入。
(6)当前状态:待修改3.第三组测试用例(1)测试输入:接上一步输入离开信息,下表:服务选择离开车位离开时间便道车进入时间2 3 13:30 13:40(2)测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。
(3)正确输出:输出3号车位的车辆离开信息清单,便道1号车进入停车场。
(4)实际输出:(5)错误原因:没有错误。
(6)当前状态:通过(二)测试结果分析此停车管理系统基本可能实现一个小的停车场的管理,其“到达”与“离开”方法都相对比较完整,以及结算清单明了。
尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以避免了。
但在输入数据时,要按照严格的格式输入,否则有可能出现死去或崩溃。
若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。
会慢慢完善。
附录:源代码///系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。
//在此系统中,车库容量设置为5,便于测试。
在实际使用中可以对容量大小按实际情况设置。
#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 5 /*车库容量,可以根据实际情况改变*/#define price 0.01 /*一辆车每分钟费用,可变*/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; /*模拟便道*//*方法声明*/void InitStack(SeqStackCar *); /*初始化栈*/int InitQueue(LinkQueueCar *); /*初始化便道*/int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/void List(SeqStackCar,LinkQueueCar); /*显示信息*/void PRINT(CarNode *p,int room); /*输出离开车辆的信息清单*/void main(){system("color F2"); /*设置系统颜色,本系统为白底绿字f2*/SeqStackCar 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<<"!说明:请注意正确输入时间,在输入“时”后,按“ENTER”或者“空格”,再输入“分”。
不要为非数字!"<<endl;cout<<"请选择所需要的服务! (1-4)."<<endl;while(1){cin>>ch;if(ch>=1&&ch<=4)break;else cout<<"输入错误!请选择:(1-4)."<<endl;}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);}int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达*/{CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode));flushall();cout<<"请输入车牌号(例:A1234):"<<endl;gets(p->num);if(Enter->top<MAX) /*车场未满,车进车场*/{Enter->top++;cout<<"车辆在车场第"<<Enter->top <<"位置!"<<endl;cout<<"请输入到达时间:(小时:分钟)"<<endl;cin>>p->reach.hour;while(p->reach.hour<0||p->reach.hour>23) //控制时间格式正确{cout<<"输入错误!"<<endl;cout<<"请重输入到达时间的时(0-23)!"<<endl;cin>>p->reach.hour;}cin>>p->reach.min;while(p->reach.min<0||p->reach.min>59) //控制分钟输入正确{cout<<"输入错误!"<<endl;cout<<"请重输入到达时间的分(0-59)!"<<endl;cin>>p->reach.min;}Enter->stack[Enter->top]=p;return(1);}else /*车场已满,车进便道*/{cout<<"车场已满,请在便道等待!"<<endl;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;QueueNode *q;/*判断车场内是否有车*/if(Enter->top>0) /*有车*/{while(1) /*输入离开车辆的信息*/{cout<<"请输入车在车场的位置1--"<<Enter->top<<":";cin>>room;if(room>=1&&room<=Enter->top) break;}while(Enter->top>room) /*车辆离开*/{Temp->top++; /*临时通道栈顶指针*/Temp->stack[Temp->top]=Enter->stack[Enter->top];Enter->stack[Enter->top]=NULL;Enter->top--;}p=Enter->stack[Enter->top];Enter->stack[Enter->top]=NULL;Enter->top--;while(Temp->top>=1) /*判断临时通道上是否有车*/{Enter->top++;Enter->stack[Enter->top]=Temp->stack[Temp->top];Temp->stack[Temp->top]=NULL;Temp->top--;}PRINT(p,room);if((W->head!=W->rear)&&Enter->top<MAX) /*车站是未满*/{ /*便道的车辆进入车场*/q=W->head->next;p=q->data; /*p指向链队头*/Enter->top++;cout<<"便道的"<<p->num<<"号车进入车场第"<<Enter->top<<"位置!"<<endl;cout<<"请输入现在的时间如(小时:分钟):"<<endl;cin>>p->reach.hour;if(p->reach.hour<0||p->reach.hour>23){cout<<"输入错误!"<<endl;cout<<"请重输入到达时间的时(0-23)!"<<endl;cin>>p->reach.hour;}cin>>p->reach.min;if(p->reach.min<0||p->reach.min>59){cout<<"输入错误!"<<endl;cout<<"请重输入到达时间的分(0-59)!"<<endl;cin>>p->reach.min;}Enter->stack[Enter->top]=p;W->head->next=q->next;if(q==W->rear) W->rear=W->head;free(q); /*释放q地址*/}else cout<<"便道里没有车!"<<endl; /*便道没车*/}else cout<<"车场里没有车!"<<endl; /*车场没车*/}void PRINT(CarNode *p,int room) /*输出离开车辆的信息清单*/{int A1,A2,B1,B2;cout<<"请输入离开的时间:(小时:分钟)"<<endl;cin>>p->leave.hour;while(p->leave.hour<0||p->leave.hour>23){cout<<"输入错误!"<<endl;cout<<"请重输入离开的时间的时(0-23)"<<endl;cin>>p->leave.hour;B1=p->leave.hour;}cin>>p->leave.min;if(p->leave.min<0||p->leave.min>59){cout<<"输入错误!"<<endl;cout<<"请重输入到达时间的分(0-59)!"<<endl;cin>>p->leave.min;}cout<<endl<<"离开车辆的车牌号为:"<<endl;puts(p->num);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;cout<<"应交费用为: "<<(((B1-A1)*60+(B2-A2))+1440)%1440*price<<"元!"<<endl;free(p);}void List1(SeqStackCar *S) /*列表显示车场信息*/{cout<<"您选择的是车场停车情况!"<<endl;int i;if(S->top>0) /*判断车站内是否有车*/{cout<<" 位置到达时间车牌号"<<endl;for(i=1;i<=S->top;i++){cout<<" "<<i<<" "<<S->stack[i]->reach.hour<<":"<<S->stack[i]->reach.min<<" "<<S->stack[i]->num<<endl;}}else cout<<"车场里没有车!"<<endl;}void List2(LinkQueueCar *W) /*列表显示便道信息*/{cout<<"您选择的是便道停车情况!"<<endl;int j=1;QueueNode *p;p=W->head->next;if(W->head!=W->rear) /*判断通道上是否有车*/{cout<<"等待车辆的车牌号码为:"<<endl;while(p!=NULL){//cout<<j;//puts(p->data->num);cout<<j<<" "<<p->data->num<<endl;p=p->next;j++;} //开始时显示不正确,没有按照正常输出}else cout<<"便道里没有车!";}void List(SeqStackCar S,LinkQueueCar W) /*列表界面*/ {int flag,tag;flag=1;while(flag) /*列表显示循环控制*/{cout<<"请选择您要显示信息! (1-3):"<<endl;cout<<"※--1.车场--※"<<endl;cout<<"※--2.便道--※"<<endl;cout<<"※--3.返回--※"<<endl;while(1){cin>>tag;if(tag>=1||tag<=3) break;else cout<<"输入错误!请选择(1-3):"<<endl;}switch(tag){case 1:List1(&S);break; /*列表显示车场信息*/case 2:List2(&W);break; /*列表显示便道信息*/case 3:flag=0;break;default: break;}}}。