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

数据结构课程设计停车场管理系统设计报告2停车场管理系统设计报告一、引言停车场管理系统是一种用于管理和控制停车场内停车位的软件系统。
本报告旨在详细描述设计一个停车场管理系统的过程,并介绍系统的功能、架构、模块设计以及相关技术细节。
二、系统概述本停车场管理系统旨在提供一个高效、智能化的停车场管理解决方案,以便实现停车场资源的合理利用和车辆流量的有效管理。
系统主要包括以下功能模块:1. 车辆入场管理:记录车辆的入场时间、车牌号码等信息,并分配合适的停车位。
2. 车辆出场管理:记录车辆的出场时间,计算停车费用,并提供支付方式。
3. 停车位管理:实时监测和管理停车位的占用情况,提供可用停车位的查询功能。
4. 数据统计与分析:根据车辆进出记录,生成报表,分析车流量、停车时长等数据。
5. 系统设置:包括管理员账号管理、停车场信息设置等。
三、系统架构本停车场管理系统采用三层架构,包括表现层、业务逻辑层和数据访问层。
1. 表现层:用户通过图形界面与系统进行交互,输入车辆信息、查询停车位、支付停车费用等。
2. 业务逻辑层:负责处理用户请求,实现车辆入场、出场管理,停车位管理以及数据统计与分析功能。
3. 数据访问层:负责与数据库进行交互,实现数据的存取和管理。
四、模块设计1. 车辆入场管理模块该模块主要包括车辆信息录入、停车位分配和入场记录保存等功能。
用户在系统界面输入车辆信息后,系统将分配一个合适的停车位,并将车辆信息和入场时间保存至数据库中。
2. 车辆出场管理模块该模块主要包括出场记录查询、停车费用计算和支付功能。
用户通过输入车牌号码查询出场记录,系统将根据停车时间计算停车费用,并提供多种支付方式供用户选择。
3. 停车位管理模块该模块实时监测和管理停车位的占用情况,提供可用停车位的查询功能。
系统将通过查询数据库中的停车位信息,实时更新停车位的占用状态,并在系统界面显示可用停车位的数量。
4. 数据统计与分析模块该模块根据车辆进出记录,生成报表,分析车流量、停车时长等数据。
数据结构停车场课程设计

数据结构停车场课程设计一、课程目标知识目标: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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计停车场管理系统停车场管理专业班级:XXXXXXX 学号:XXXXXXX 姓名:XXXXXXX 指导教师:XXXXXXX 课程设计时间:XXXXXXX计算机专业数据结构课程设计任务书学生姓名XXXXXX专业班级XXXXXX学号XXXXXX题目停车场管理系统课题性质工程设计课题来源XXXXXX 指导教师XXXXXX同组姓名XXXXXX主要内容任务要求1、系统应具备的功能:(1)停车场的车位管理(2)停车场的停车管理(3)停车场的记费管理2、数据结构设计3、主要算法设计4、编程及上机实现5、撰写课程设计报告参考文献1.《数据结构(C语言版)》,严蔚敏、吴伟民,清华大学出版社,1997.2.谭浩强. C语言程序设计(第三版)[M]. 北京:清华大学出版社,20053.廖雷、罗代忠. C语言程序设计基础实验教程[M]. 北京:高等教育出版社,20054.谭浩强. C程序设计解题与上机指导(第三版) [M]. 北京:清华大学出版社,2005 .审查意见指导教师签字:教研室主任签字:年月日实验题目:停车场管理系统一、要解决的问题停车场是一条可以停放n辆车的狭窄通道,且只有一个大门汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满n辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。
要求:以栈模拟停车场,以队列车场外的便道,按照从终端输入的数据序列进行模拟管理。
每一组数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、以及到达或离去的时刻。
对每一组数据进行操作后的信息为:若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时间和应缴纳的费用(在便道上的停留时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
二、基本要求(1)界面友好,函数功能要划分好(2)总体设计应画一流程图(3)程序要加必要的注释(4)要提供程序测试方案。
三、算法基本思想描述由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。
由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,我设计用顺序存储结构来存储停车场内的车辆信息,并给车辆按进栈顺序编号,当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。
这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车。
当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素设计成汽车的车牌号,并以链表的形式存储。
另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间和车辆离开停车场时的时间,然后计算、显示费用情况。
四、详细设计1. 数据结构的设计(1)车辆信息的表示车辆可看成是一个节点,设计成一个结构体,车辆信息包括:车牌号码,车辆的进站时间和离开停车的时间,定义如下:typedef struct node{char num[10]; //车牌号码Time reach; //到站时间Time leave; //离开时间}CarNode;(2)时间、栈和队列的定义时间是由小时和分钟表示的,有两部分数据,所以,类似于复数的表示一样,设计两个变量分别存储小时和分钟。
如:typedef struct time{i nt hour;i nt min;}Time;停车场内用栈表示:typedef struct NODE{C arNode *stack[MAX+1]; //栈用顺序表示int top;}SeqStackCar;便道上的车辆表示:typedef struct car{C arNode *data; // 便道上的车用链表表示struct car *next;}QueueNode;typedef struct Node{Q ueueNode *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);voidList2(LinkQueueCar *W); //分别为显示车场和便道上的车辆情况6、 void PRINT(CarNode *p,int room); // 车辆离开是的收费这个函数由车辆离开的函数调用,以分钟计时算费,但只能计算当天之内的费用,如果第二天的话会导致计费为负或减少。
即只能当天停,当天开走。
(2)模块结构及流程图下图为程序的主流程图,比较清晰的显示了程序的整个运行过程。
如:图 1.开初始化两个进入主车到车离退Room 对便道车场判便道车场列表栈Enter 队列中元队列元素进栈便道车元素进判断栈结束退出是否 否是否 是(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{ // 定义时间结构体i nt hour;i nt min;}Time;typedef struct node{ // 定义车辆信息结构体c har num[10];Time reach;Time leave;}CarNode;typedef struct NODE{C arNode *stack[MAX+1];int top;}SeqStackCar;typedef struct car{C arNode *data;struct car *next;}QueueNode;typedef struct Node{Q ueueNode *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(){S eqStackCar Enter,Temp;LinkQueueCar Wait;int ch;s ystem("color 4A");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;case2: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));i f(Q->head!=NULL){Q->head->next=NULL;Q->rear=Q->head;return(1);}else return(-1);}void PRINT(CarNode *p,int room){ // 车辆收费i nt A1,A2,B1,B2;p rintf("\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){C arNode *p;QueueNode *t;p=(CarNode*)malloc(sizeof(CarNode));flushall();printf("\n请输入车牌号(例:豫B1234):");gets(p->num);i f(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);}e lse{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) {//车辆的离开i nt room;CarNode *p,*t;QueueNode *q;i f(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) // 把要删除的车辆的前面的车开出来,进临时栈。