停车场管理

阅读 / 问答 / 标签

停车场管理系统录入的车辆信息可以批量删除吗?

易泊停车系统可以操作

停车场管理制度规定

停车场管理制度规定:(一)凡进入本小区停车场的车辆,必须遵守本管理规定,服从管理人员指挥及按指定的位置停放。(二)业主的非营运车辆须办理出入证方可进入、停放在小区内,进入小区的车辆,应将出入证放在车辆前挡风玻璃左侧明显处,凡无证车辆禁止驶入小区(三)外来车辆进入小区内,必须有保安通知并征得业主同意以后方可放行,否则不准进入。8:00--16:00时,外来车辆在小区内停放二小时以上每次收取停车费3元;当日16:00--次日8:00时,外来车辆在小区内不允许停放。(四)为安全有序地停放车辆,避免出现事故,要严格按照院内的停车位停放车辆。车辆在转弯时,要注视反视镜,避免发生碰撞事故。(五)车辆出入停车场时,车速不得超过五公里,按照交通标志指示行驶,因违章行驶造成车辆碰撞,有违章司机负责双方车辆的修复及赔偿。(六)在停车场内行驶或停放车辆过程中造成车场设施设备和其他物品的损坏,责任人照价赔偿。(七)各车主驾车驶入停车场期间有责任向管理人员出示停车凭证,车场实行有偿收费,按照京价(收)字[2002]194号文件规定的收费标准,临时停车小型车每两小时1元,大型车每两小时2元;按月租用停车位小型车每月 元,大型车每月 元;按年租用停车位小型车每年报告 元,大型车每年 元;地下停车场、停车楼等停车地点临时停车小型车每两小时 元,大型车每两小时 元;按月租用停车位小型车每月 元,大型车每月 元;按年租用停车位小型车每年报告 元,大型车每年 元。(八)禁止出租车入内,遇有乘载老、弱、病、残以及携带过重物品的,视情况可以放行,但10分钟内必须离开。(九)车辆应停泊在各自的车位,不得占用他人的车位,不得跨线停车,不得在行驶通道及非停车区域内停车,避免阻碍其他车辆通行或停泊。(十)车辆进场停妥后,车主应拉紧手掣、熄火、带下头贵重财物、锁好门窗后再进行离开。本停车场仅此提供停车场地,恕不保管任何财物,如有丢失物品或车辆损伤事件,请及时报告当地派出所进行处理。(十一)小区内禁止鸣笛,车辆进入停车场内,应将防盗鸣叫器设为低音,避免滋扰居民生活。(十二)严禁载易燃、易爆、易腐、剧毒、枪支、弹药等违禁物品的车辆泊入本停车场内。如车主虚报或违反本停车场规定而造成的一切后果,车主须承担全部责任外,还报请司法部门追究车主的法律责任。(十三)进入停车场的车辆必须完好,残缺或漏油、漏水车不得进入停车场。(十四)禁止在院内停车位上冲洗车辆,禁止随地乱扔垃圾或废弃物,保持车场内清洁卫生。(十五)严禁在小区住家内加油、家电池水、修车、洗车、吸烟及动用明火。(十六)小区内禁止2.5吨以上的货车、大型客车以及装有易燃、易爆、剧毒等危险品的车辆入内(搬家车、消防车、工程车等特殊情况除外)。 (十七)各车位业主或使用人只可将车位用作停泊中小型客货车及小汽车,所有大型车辆及摩托车、自行车均不得停泊于此车位中,每一车位只限泊车一辆。 (十八)各车主的车辆必须停泊于指定车位内,不得在车位周围装上围栏、门闸或锁链。(十九)司机驾车停车必须服从物业保安人员的指导和管理,对屡次违反停车场管理规定,指正无效或拒不服从管理者,物业管理公司有权收回车辆出入证。(二十)各车主均有责任维护停车场公共设施不受破坏,任何车辆对停车场造成的一切损失或导致他人受伤或损失,必须承担全部责任。管理公司亦有权在事件未处理完毕之前拒绝该车辆离开事故现场。(二十一)各车主个人或车辆资料如有更改或遗失车辆出入凭证,必须及早通知管理公司,以避免造成误会及引起损失。(二十二)如本车场有任何事故发生,管理公司有权采取适当的临时应变措施,以尽量减少车主之损失,在紧急情况下,管理公司有权要求车主将其车辆暂时驶离停车场,或在未通知车主前将任何车辆拖至安全地点,除因停车场员工故意造成车辆损坏外,管理公司恕不负赔偿。(二十三)管理公司有权对违例泊车作出按照停车场的收费标准双倍收计停车费或报请主管部门锁车、拖车处理,一切费用将由车主承担,而由此引进的任何损失,管理公司一概不负责。(二十四)该停车场只提供车辆场地停放,如车辆有划花、损坏、遗失等管理公司概不负责。(二十五)根据物业管理有关法规规定,保安人员通过值班和巡逻,避免停放在小区内的车辆受损坏,不承担保管和保险责任。xx市xx物业管理有限责任司 年 月 日

停车场管理系统由哪些组成?

停车场管理系统包含了:交通设施,减速带,挡车器,橡胶路锥。方锥,橡胶护墙角(防撞胶条),车位锁(遥控车位锁),道闸机,反光道钉,轮廓标,标线标牌,广角镜,防撞桶,信号灯(太阳能信号灯),导向灯(太阳能导向灯),警示柱,水马,隔离栏(隔离墩),反光膜等产品。

智能停车场管理系统开发方案 智能的停车场管理系统怎么开发

智能停车场管理系统开发方案 智能的停车场管理系统怎么开发。智能停车场管理系统,是现代化停车场车辆收费及设备自动化管理的统称。是将停车场完全置于计算机统一管理下的高科技机电一体化产品。他以感应卡IC卡或ID卡(最新技术有两卡兼容的停车场)为载体,通过智能设备使感应卡记录车辆及持卡人进出的相关信息,同时对其信息加以运算、传送并通过字符显示、语音播报等人机界面转化成人工能够辨别和判断的信号,从而实现计时收费、车辆管理等目的操作方法01一、智能停车场管理系统开发前景根据交通相关部门数据统计显示,全国的机动车数总量超过了2.5亿。人均车拥有基数的提高,导致机动车辆越来越多,这给交通带来了巨大的压力,停车也变得越来越困难,特别是在一线大城市,这个现象越来越严重,而停车场管理系统就能够解决大家停车难的问题。中国智能停车场市场前景光明,市场份额有60多亿元,每年还在以20%的速度递增,国内停车场本身起步较晚,停车场数量很缺乏,因此,市场上对停车场管理系统的需求不断增加。机动车数量的增加、停车难的问题和智能停车场的市场前景广阔,就使得智能停车场管理系统开发前景越来越广阔,智能停车场管理系统一定会高速发展。02二、智能停车场管理系统开发的意义智能停车场管理系统开发的意义很大,通过开发公司开发的这款停车场管理系统,可以有效的管理车辆的进出,最大化、合理的利用停车位,避免停车位的资源浪费,也能够有效的缓解停车场难的问题。03三、智能停车场系统开发的功能1、语音提示、对讲功能。2、对出入车辆的图像进行对比。3、刷卡功能和出入功能。4、停车场系统软件识别IC感应卡。5、按时计费,当车辆开始进入停车场时开始进行计费,之后离开时进行费用计算。6、车辆布控管理。对于长期欠费或公安机关调查的嫌疑车辆、违法车辆、涉案车辆可设置为黑名单,进行布控管理。当前端卡口采集车辆信息与黑名单数据库中的布控车辆信息匹配时,在系统界面上进行提示,或使用声光报警。7、出入时对于车辆进行车牌识别。系统可对所有出入的机动车辆进行图像捕获,支持地感线圈检测及视频检测等多种检测方式。系统还需支持多种检测方式间的备份,当地感线圈检测设备出现故障时,系统可自动转换为视频检测模式,能够降低漏拍的几率。8、对所有车辆进行多方位实时监控。系统应当采用高清智能网络摄像机,确保对通过车辆的高清晰抓拍,司乘人员面部特征、车牌等重要信息一览无余。同时通过先进的补光以及成像控制技术,实现在强顺光、强逆光、夜间等各种光照条件下,对机动车车牌、车型等进行全天候有效识别。对于抓拍到的车辆图片,系统可识别车牌号、车牌颜色、车型、车身颜色等车辆信息。9、显示停车数量提示,有多少空位、是否满位的提示。10、自动开闸。系统支持白名单车辆设置,可实现当此类车辆进出时,直接联动道闸开启,无需人工方式控制,车辆通行后,道闸自动下落,保证在车辆通行压力比较大的上下班高峰期间,固定车辆的快速通行和车主的良好驾车体验。11、支持使用手机刷卡,可以使用手机进行缴费。

停车场管理系统有哪些?

深圳的都做的不错

求地下商场安全管理制度和地下停车场管理制度。越全面越好。

我好象有吧.但需要找找看..有就发给你

哪位高手能帮我用C语言(不是C++哦)和数据结构做个停车场管理系统?包括实验报告!拜托啦!!!!!!

把扩展名改成CPP,然后编译连接///////////////////////////////下面这个程序是我大二上数据结构课时交的作业,现在正好电脑里面放着,所以就给你,应该满足你老师的要求了.编译环境是 VC++ 6.0 如果不会用的话就在问题补充里说,那个"例"是我临时给你打上去的,随便写了点,你要看不懂例子不会输命令就问我./*****************************************************************/#include <conio.h>#include <malloc.h>#include <stdio.h>#include <stdlib.h>#include <windows.h>// 清空当前屏幕#define ClearScreen() system( "cls" )// 显示字符串 szPrompt 并等待用户按下任意键#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()typedef struct carinformation // 车辆信息{ char szRegistrationMark[64]; // 车牌号 char szArrivalTime[16]; // 到达时间 char szEntranceTime[16]; // 进入停车场(开始计费)时间 char szDepartureTime[16]; // 离开时间} TCARINFORMATION, *LPTCARINFORMATION;typedef struct carstack{ LPTCARINFORMATION lpCarInformation; // 车辆信息 int nTop; // 栈顶元素下标 int nStackSize; // 栈容量} TCARSTACK, *LPTCARSTACK;// 初始化栈 lpCarStack, 将其容量设置为 nSizevoid InitStack( LPTCARSTACK &lpCarStack, int nSize ){ lpCarStack = ( LPTCARSTACK ) malloc( sizeof ( TCARSTACK ) ); lpCarStack->lpCarInformation = ( LPTCARINFORMATION ) malloc( nSize * sizeof ( TCARINFORMATION ) ); lpCarStack->nTop = -1; lpCarStack->nStackSize = nSize;}// 车辆信息 carinfo 入栈 lpCarStackvoid Push( LPTCARSTACK &lpCarStack, TCARINFORMATION carinfo ){ lpCarStack->nTop++; lpCarStack->lpCarInformation[lpCarStack->nTop] = carinfo;}// 车辆信息从栈 lpCarStack 中弹出并存入 carinfovoid Pop( LPTCARSTACK &lpCarStack, TCARINFORMATION &carinfo ){ carinfo = lpCarStack->lpCarInformation[lpCarStack->nTop]; lpCarStack->nTop--;}// 若栈 lpCarstack 空,返回 TRUE;否则,返回 FALSEBOOL IsStackEmpty( LPTCARSTACK lpCarStack ){ return lpCarStack->nTop == -1;}// 若栈 lpStackFull 满,返回 TRUE;否则,返回 FALSEBOOL IsStackFull( LPTCARSTACK lpCarStack ){ return lpCarStack->nTop == ( lpCarStack->nStackSize - 1 );}// 销毁栈 lpCarStack,将指针 lpCarStack 置为 NULLvoid DestroyStack( LPTCARSTACK &lpCarStack ){ free( lpCarStack->lpCarInformation ); free( lpCarStack ); lpCarStack = NULL;}typedef struct carnode // 链队结点信息{ TCARINFORMATION carinfo; // 车辆信息 struct carnode *lpNext; // 指向下一个元素的指针} TCARNODE, *LPTCARNODE;typedef struct carqueue // 链队{ LPTCARNODE lpHead; // 头结点 LPTCARNODE lpRear; // 指向当前队尾的指针 int nEffectiveSize; // 当前队中元素个数} TCARQUEUE, *LPTCARQUEUE;// 初始化链队 lpCarQueuevoid InitQueue( LPTCARQUEUE &lpCarQueue ){ lpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE ) ); lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ) ); lpCarQueue->lpHead->lpNext = NULL; lpCarQueue->lpRear = lpCarQueue->lpHead; lpCarQueue->nEffectiveSize = 0;}// 车辆信息 carinfo 入队 lpCarQueuevoid EnQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION carinfo ){ LPTCARNODE lpCarNode = ( LPTCARNODE ) malloc( sizeof( carnode ) ); lpCarNode->carinfo = carinfo; lpCarNode->lpNext = NULL; lpCarQueue->lpRear->lpNext = lpCarNode; lpCarQueue->lpRear = lpCarQueue->lpRear->lpNext; lpCarQueue->nEffectiveSize++;}// 队头元素从链队 lpCarQueue 中出队并存入 carinfovoid DeQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION &carinfo ){ LPTCARNODE lpTemp = lpCarQueue->lpHead->lpNext; carinfo = lpTemp->carinfo; lpCarQueue->lpHead->lpNext = lpTemp->lpNext; free( lpTemp ); lpCarQueue->nEffectiveSize--;}// 若链队 lpCarQueue 为空,返回 TRUE;否则,返回 FALSEBOOL IsQueueEmpty( LPTCARQUEUE lpCarQueue ){ return lpCarQueue->nEffectiveSize == 0;}// 销毁链队 lpCarQueuevoid DestroyQueue( LPTCARQUEUE &lpCarQueue ){ LPTCARNODE lpNextCarNode = NULL; for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead; lpCarNode != NULL; lpCarNode = lpNextCarNode ) { lpNextCarNode = lpCarNode->lpNext; free( lpCarNode ); } free( lpCarQueue ); lpCarQueue = NULL;}// 将字符串时间格式转换为数字(分钟)格式,例如 12:36 将被转换为 756 ( 12 * 60 + 36 )int ConvertTimeFormat( char *lpTime ){ int nHour = 0; int nMinute = 0; sscanf( lpTime, "%d:%d", &nHour, &nMinute ); return nHour * 60 + nMinute;}// 根据在停车场内的停留时间 nContinuanceMinutes (分钟)计算费用double CalculateExpense( int nContinuanceMinutes ){ return nContinuanceMinutes * ( 5.0 / 60 );}int main( void ){ int nParkCapability = 0; // 停车场容量 putchar( " " ); printf( "请输入停车场容量:" ); scanf( "%d", &nParkCapability ); LPTCARSTACK lpCarStack = NULL; // 停车场,用栈模拟 InitStack( lpCarStack, nParkCapability ); LPTCARQUEUE lpCarQueue = NULL; // 便道,用链队模拟 InitQueue( lpCarQueue ); char cCommandType = NULL; // 命令类型 char szUserInput[128] = { NULL }; // 用户输入 do { ClearScreen(); putchar( " " ); puts( "--------------------" ); puts( "[命令类型]" ); puts( "A - 车辆到达" ); puts( "D - 车辆离开" ); puts( "E - 停止输入" ); puts( "O - 显示当前停车场和便道使用情况" ); putchar( " " ); puts( "例:" ); puts( "A,冀A1234,14:26" ); puts( "D,冀A1234,16:51" ); puts( "E" ); puts( "O" ); putchar( " " ); printf( "请输入命令:" ); scanf( "%s", szUserInput ); puts( "--------------------" ); char szCarInformation[128] = { NULL }; sscanf( szUserInput, // 将命令类型与车辆信息分开存放 "%c,%s", &cCommandType, // 用户输入的前半部分,即命令类型 szCarInformation // 用户输入的后半部分,即车辆信息 ); char *lpCommaLocation = NULL; // 车辆信息字符串中的逗号位置 for ( lpCommaLocation = szCarInformation; *lpCommaLocation != ""; lpCommaLocation++ ) { if ( *lpCommaLocation == "," ) { break; } } *lpCommaLocation = ""; TCARINFORMATION carinfo = { NULL }; // 存储本次用户输入的车辆信息 strcpy( carinfo.szRegistrationMark, szCarInformation ); if ( cCommandType == "A" ) { strcpy( carinfo.szArrivalTime, lpCommaLocation + 1 ); if ( FALSE == IsStackFull( lpCarStack ) ) { strcpy( carinfo.szEntranceTime, carinfo.szArrivalTime ); Push( lpCarStack, carinfo ); printf( "已进入停车场第 %d 个车位 ", lpCarStack->nTop + 1 ); printf( "车牌号: %s ", carinfo.szRegistrationMark ); printf( "进入时间: %s ", carinfo.szEntranceTime ); puts( "是否收费: 是" ); } else { EnQueue( lpCarQueue, carinfo ); printf( "停车场已满,已停放在便道的第 %d 个车位 ", lpCarQueue->nEffectiveSize ); printf( "车牌号: %s ", carinfo.szRegistrationMark ); printf( "停放时间: %s ", carinfo.szArrivalTime ); puts( "是否收费: 否" ); } } else if ( cCommandType == "D" ) { strcpy( carinfo.szDepartureTime, lpCommaLocation + 1 ); LPTCARSTACK lpTempCarStack = NULL; InitStack( lpTempCarStack, nParkCapability ); TCARINFORMATION carinfoOut = { NULL }; BOOL bIsCarFound = FALSE; while ( FALSE == IsStackEmpty( lpCarStack ) ) { Pop( lpCarStack, carinfoOut ); if ( 0 != strcmp( carinfoOut.szRegistrationMark, carinfo.szRegistrationMark ) ) { Push( lpTempCarStack, carinfoOut ); } else { bIsCarFound = TRUE; break; } } while ( FALSE == IsStackEmpty( lpTempCarStack ) ) { TCARINFORMATION tempcarinfo = { NULL }; Pop( lpTempCarStack, tempcarinfo ); Push( lpCarStack, tempcarinfo ); } if ( FALSE == bIsCarFound ) { printf( "车牌号为 %s 的车未进入停车场. ", carinfo.szRegistrationMark ); Pause( "-------------------- 按任意键输入下一条信息... " ); continue; } strcpy( carinfoOut.szDepartureTime, carinfo.szDepartureTime ); int nEntranceTime = ConvertTimeFormat( carinfoOut.szEntranceTime ); int nDepartureTime = ConvertTimeFormat( carinfoOut.szDepartureTime ); int nContinuanceMinutes = nDepartureTime - nEntranceTime; printf( "计费时段: %s - %s (共 %d 分钟) ", carinfoOut.szEntranceTime, carinfoOut.szDepartureTime, nContinuanceMinutes ); double rExpense = CalculateExpense( nContinuanceMinutes ); printf( "应交纳的费用: %.1lf 元 ", rExpense ); if ( FALSE == IsQueueEmpty( lpCarQueue ) ) { TCARINFORMATION tempcarinfo = { NULL }; DeQueue( lpCarQueue, tempcarinfo ); strcpy( tempcarinfo.szEntranceTime, carinfoOut.szDepartureTime ); Push( lpCarStack, tempcarinfo ); puts( "--------------------" ); printf( "停放在便道的第 1 个车位,车牌号为 %s 的车已进入停车场 ", tempcarinfo.szRegistrationMark ); } } else if ( cCommandType == "E" ) { puts( "********************" ); puts( "陈赛 - Build20090507 " ); puts( "********************" ); break; } else if ( cCommandType == "O" ) { ClearScreen(); putchar( " " ); puts( "[停车场使用情况] " ); puts( "[车位] [车牌号] [到达时间] [进入(开始计费)时间] "); for ( int i = 0; i <= lpCarStack->nTop; i++ ) { printf( "%d %s %s %s ", i + 1, lpCarStack->lpCarInformation[i].szRegistrationMark, lpCarStack->lpCarInformation[i].szArrivalTime, lpCarStack->lpCarInformation[i].szEntranceTime ); } putchar( " " ); putchar( " " ); putchar( " " ); puts( "[便道使用情况] " ); puts( "[车位] [车牌号] [到达时间] [进入(开始计费)时间] "); int nNum = 0; for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead->lpNext; lpCarNode != NULL; lpCarNode = lpCarNode->lpNext ) { nNum++; printf( "%d %s %s %s ", nNum, lpCarNode->carinfo.szRegistrationMark, lpCarNode->carinfo.szArrivalTime, lpCarNode->carinfo.szEntranceTime ); } putchar( " " ); } else { puts( "输入信息有误.第一个字符只能为 "A" 或 "D" 或 "E" 或 "O" (区分大小写)." ); } Pause( "-------------------- 按任意键输入下一条信息. " ); } while ( TRUE ); DestroyStack( lpCarStack ); DestroyQueue( lpCarQueue ); Pause( " 按任意键退出程序... " ); return 0;}

营业执照里的经营范围有一条“停车场管理服务”请问英语怎么翻译?谢谢

Parking lot management service

数据结构 停车场管理 JAVA(急!!!)

import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.Scanner;import java.util.Stack;import java.util.Vector;import java.util.regex.MatchResult;public class Test { private CarStop carStop = new CarStop(3); private CarTunnel tunnel = new CarTunnel(); public void test(){ //存放车辆信息,因为不是顺序输入的,所以放到Map中 HashMap<Integer, Car> carMap = new HashMap<Integer, Car>(); //最早进入车库的时间和最晚出车库的时间 int startTime, endTime; startTime = Integer.MAX_VALUE; endTime = Integer.MIN_VALUE; Scanner scanner = new Scanner(System.in); //("A"或者"D"或者"E", int, int) while(scanner.hasNext("\((A|D|E),(\d+),(\d+)\)")){ scanner.next("\((A|D|E),(\d+),(\d+)\)"); MatchResult r = scanner.match(); Car car; //如果输入A if (r.group(1).equalsIgnoreCase("A")){// 该车已经记录过 if (carMap.keySet().contains(Integer.parseInt(r.group(2)))){// 取出来设置到达时间 car = carMap.get(Integer.parseInt(r.group(2))); car.arrive = Integer.parseInt(r.group(3)); }else{// 否则就记录该车 car = new Car(Integer.parseInt(r.group(2)), Integer.parseInt(r.group(3))); carMap.put(car.no, car); } if (car.arrive < startTime) startTime = car.arrive; if (car.leave > endTime) endTime = car.leave;// 出库时间和到达时间同样处理 }else if (r.group(1).equalsIgnoreCase("D")){ if (carMap.keySet().contains(Integer.parseInt(r.group(2)))){ car = carMap.get(Integer.parseInt(r.group(2))); car.leave = Integer.parseInt(r.group(3)); }else{ car = new Car(Integer.parseInt(r.group(2)), 0, Integer.parseInt(r.group(3))); carMap.put(car.no, car); } if (car.arrive < startTime) startTime = car.arrive; if (car.leave > endTime) endTime = car.leave; }else if (r.group(1).equalsIgnoreCase("E")){ break; } }// 把记录过的车做成数组并且排序 Car[] cars = new Car[carMap.size()]; cars = carMap.values().toArray(cars); Arrays.sort(cars, new Comparator<Car>(){// 排序顺序是到达时间>出库时间>车牌 public int compare(Car c1, Car c2) { if (c1.arrive!=c2.arrive) return c1.arrive - c2.arrive; if (c1.leave!=c2.leave) return c1.leave - c2.leave; return c1.no - c2.no; } }); for (int time=startTime; time<=endTime; time++){ System.out.println("TIME:" + time); for (int k=0;k<cars.length;k++){ Car car = cars[k]; //如果有车在没有进入停车场的时候就已经到了出库时间 if (car.leave == time && carStop.isFull() && !carStop.contains(car)){ for (int i=tunnel.size()-1;i>=0;i--){ Car c = tunnel.get(i); if (c.equals(car)){ for (int j=i+1;j<tunnel.size();j++){ System.out.println(car + "为" + car + "让路,重新进入等待区"); } tunnel.remove(car); System.out.println(car + "没进入过停车场就离开了"); }else{ System.out.println(car + "为" + car + "让路"); } } }else{// 如果有车子现在到达 if (car.arrive == time){// 停车场不满 if (!carStop.isFull()) {// 进入停车场 carStop.push(car);// 开始计费 car.chargeStart = time; System.out.println(car + "进入停车场并且开始计费"); }else{// 停车场满,等待 System.out.println(car + "到达,在等待区等待"); tunnel.push(car); } } } } //deal with cars in stop //the case cars leave at same time is not included // 按照后进先出的顺序看有没有车要离开 for (int k=carStop.size() - 1; k>=0; k--){ Car car = carStop.elementAt(k); //准备离开 if (car.leave == time){ Car otherCar;// 所有在他后面进来的车准备让路 while ((otherCar = carStop.pop())!=car){// 进入等待区的最前面 tunnel.unshift(otherCar); System.out.println(otherCar + "准备为" + car + "让路"); } for (int m=tunnel.size()-1;m>=0;m--){ System.out.println(tunnel.elementAt(m) + "为" + car + "让路"); } System.out.println(otherCar + "离开,停车时间:" + (otherCar.leave - otherCar.chargeStart)); for (int m=0; m<tunnel.size(); m++){ System.out.println(tunnel.elementAt(m) + "让路完毕,重新进入等待区"); } Car waitingCar; //停车场有空位,等待序列最前面的车入库 while ( !carStop.isFull() && (waitingCar = tunnel.shift())!=null ){ carStop.push(waitingCar);// 停车计时开始 if (waitingCar.chargeStart == -1) { System.out.println(waitingCar + "停车计时时间改为:" + time); waitingCar.chargeStart = time; } System.out.println(waitingCar + "进入停车场"); } } } } } public static void main(String[] args){ new Test().test(); }}@SuppressWarnings("serial")class CarTunnel extends Vector<Car>{ public CarTunnel(){ super(); } public Car shift(){ if (size() == 0) return null; return remove(0); } public void unshift(Car car){ super.add(0, car); } public void push(Car car){ super.add(car); } public Car pop(){ if (size() == 0) return null; return remove(size()-1); }}@SuppressWarnings("serial")class CarStop extends Stack<Car>{ private int size; public CarStop(int size){ this.size = size; } public boolean isFull(){ return size() == size; } public Car pop(){ return super.pop(); } public Car push(Car car){ if (size() <= size){ return super.push(car); }else{ return null; } }}class Car{ public int no; public int arrive; public int leave; public int chargeStart = -1; public Car(int no, int timeIn, int timeOut){ this.no = no; this.arrive = timeIn; this.leave = timeOut; } public Car(int no, int timeIn){ this(no, timeIn, -1); } public String toString(){ return String.format("Car(%d)", no); }}结果:(A,6,31)(A,5,30)(A,4,20)(A,3,16)(A,2,15)(A,1,10)(D,1,50)(D,2,30)(D,3,31)(D,4,25)(D,5,32)(D,6,40)(E,0,0)TIME:10Car(1)进入停车场并且开始计费TIME:11TIME:12TIME:13TIME:14TIME:15Car(2)进入停车场并且开始计费TIME:16Car(3)进入停车场并且开始计费TIME:17TIME:18TIME:19TIME:20Car(4)到达,在等待区等待TIME:21TIME:22TIME:23TIME:24TIME:25Car(4)没进入过停车场就离开了TIME:26TIME:27TIME:28TIME:29TIME:30Car(5)到达,在等待区等待Car(3)准备为Car(2)让路Car(5)为Car(2)让路Car(3)为Car(2)让路Car(2)离开,停车时间:15Car(3)让路完毕,重新进入等待区Car(5)让路完毕,重新进入等待区Car(3)进入停车场Car(5)停车计时时间改为:30Car(5)进入停车场TIME:31Car(6)到达,在等待区等待Car(5)准备为Car(3)让路Car(6)为Car(3)让路Car(5)为Car(3)让路Car(3)离开,停车时间:15Car(5)让路完毕,重新进入等待区Car(6)让路完毕,重新进入等待区Car(5)进入停车场Car(6)停车计时时间改为:31Car(6)进入停车场TIME:32Car(6)准备为Car(5)让路Car(6)为Car(5)让路Car(5)离开,停车时间:2Car(6)让路完毕,重新进入等待区Car(6)进入停车场TIME:33TIME:34TIME:35TIME:36TIME:37TIME:38TIME:39TIME:40Car(6)离开,停车时间:9TIME:41TIME:42TIME:43TIME:44TIME:45TIME:46TIME:47TIME:48TIME:49TIME:50Car(1)离开,停车时间:40