版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计书明书一、咨询题描述用面向对象方法和面向对象程序设计语言,实现满足下述要求的一个高层建筑电梯活动仿真程序。1.咨询题域概述某国际展览中心共40层,设有载客电梯10部〔用E0~E9标识〕。2.限定条件〔1〕电梯的运行规那么是:E0、E1:可到达每层。E2、E3:可到达1、25~40层。E4、E5:可到达1~25层。E6、E7:可到达1、2~40层中的偶数层。E8、E9:可到达1~39层中的奇数层。〔2〕每部电梯的最大乘员量均为K人〔K值能够依据仿真情况在10~18人之间确定〕。〔3〕仿真开始时,各电梯随机地处于其符合运行规那么的任意一层,为空梯。〔4〕仿真开始后,有N人〔0<N<1000〕在M分钟〔0<M<10〕内随机地到达该国际展览中心的1层,开始乘梯活动。〔5〕每位乘客初次所要到达的楼层是随机的,令其在适宜的电梯处等待电梯到来。〔6〕每位乘客乘坐适宜的电梯到达指定楼层后,随机地停留10-120秒后,再随机地往往另一楼层,依此类推,当每人乘坐过L次〔每人的L值不同,在产生乘客时随机地在1~10次之间确定〕电梯后,第L+1次为下至底层并结束乘梯行为。到所有乘客结束乘梯行为时,本次仿真结束。〔7〕电梯运行速度为S秒/层〔S值能够依据仿真情况在1~5之间确定〕,每人上下时刻为T秒〔T值能够依据仿真情况在2~10之间确定〕。〔8〕电梯运行的方向由先发出请求者决定,不准许后发出请求者改变电梯的当前运行方向,除非是未被请求的空梯。〔9〕当某层有乘客按下乘梯电钮时,优先考虑离该层最近的、满足条件〔8〕、能够最快到达目标层的电梯。〔10〕不准许电梯超员。3.开发结果的行为特征〔1〕产生事件的周期为1秒,每次可产生0个或多个事件。〔2〕各随机事件由互不相关的伪随机数发生器决定。〔3〕设计一个易于理解的界面,动态显示各梯的载客与运行情况,动态显示各楼层的人员停留情况与要求乘梯情况;动态显示从仿真开始到目前的时刻。〔4〕显示时用应表示出不同的乘客及其当前所要求往往的楼层。例如,12-32表示标识为12的乘客要求往往32层。〔5〕统计各梯的运行与空闲时刻;统计各人发出乘梯要求后的等待时刻;仿真结束后显示这些时刻。〔6〕参数K、N、M、S、T应从命令行输进。〔7〕〔选做〕考虑有些乘客〔随机决定〕携带的物品体积较大,需占用1~2人的电梯空间〔随机决定〕,且上下梯的时刻比其他乘客长一倍的情况,再进行相应的仿真〔注重,不是所有的乘客都携带较大体积的物品〕。这时,显示乘客及所往往的楼层时要能够识不出是否携带了较大体积的物品。二、分析与设计模型1.分析过程〔1〕依据咨询题域中所描述的内容,能够生成一张“电梯楼层可达表〞,其中“1〞表示它所在列所对应的电梯可到达它所在行对应的楼层,如下所示:E0E1E2E3E4E5E6E7E8E9F11111111111F2111111F3111111F4111111F5111111F6111111F7111111F8111111F9111111F10111111F11111111F12111111F13111111F14111111F15111111F16111111F17111111F18111111F19111111F20111111F21111111F22111111F23111111F24111111F2511111111F26111111F27111111F28111111F29111111F30111111F31111111F32111111F33111111F34111111F35111111F36111111F37111111F38111111F39111111F40111111〔2〕依据咨询题域中所描述的内容,在系统中识不出了三种不同的事物,分不是乘客,电梯和楼层。开始仿真后,关于某一个乘客,要是他不在楼层中,那么就一定在电梯中。如此就能够将楼层和电梯都瞧作是包含容器和其他数据和标志的对象,在这些对象的容器中存放应该实是根基乘客。〔3〕将楼层瞧作是容器时,发现楼层对象内部的容器能够按作用分为两大类,一类是存放在该层随机停留的乘客的容器,另一类是存放在该层等待电梯的乘客的容器。其中,第二类容器又能够按照乘客是向上依旧向下分为两类,一类是存放等待向上乘客的容器,另一类是存放等待向下乘客的容器。总结起来,楼层内部的容器共能够分为三类:随机停留容器、等待向上容器和等待向下容器。依据楼层包含这三种容器中的哪几种的不同,能够将楼层分为三类:底层楼层。乘客在底层楼层中只能够随机停留或者乘梯向上运动,因此底层楼层只包含两种容器:随机停留容器和等待向上容器。中间楼层乘客在中间楼层能够随机停留,同时乘客既能够乘梯向上运动,又能够乘梯向下运动,因此中间楼层中包含三种容器:随机停留容器、等待向上容器和等待向下容器。顶层楼层乘客在顶层楼层中只能够随机停留或者乘梯向下运动,因此顶层楼层只包含两种容器:随机停留容器和等待向下容器。又因为每个楼层的可到达电梯是不同的,因此在楼层类型的内部定义一个vector,初始化的时候该vector为空,然后通过查瞧楼层电梯可达表再填充该vector的内容,里面存储了所有可到达该楼层的电梯的信息。〔4〕将电梯瞧作是容器时,所有电梯都能够使用一个类型来表示了。在电梯类型中,定义一个vector,初始化的时候该vector为空,然后通过查瞧楼层电梯可达表再填充该vector的内容,里面存储了该电梯可到达的所有楼层的信息。〔5〕关于乘客来讲,乘客当前在某一楼层,打算往另一楼层。乘客明白当前所在楼层的所有电梯中有哪些能够到达自己想要往的楼层,同时会对这些所有能够可到达的电梯都发出与自己目标方向相同的乘梯请求。当某一电梯到达乘客所在楼层时,假设该电梯可到达乘客要往的楼层,同时现在的运动方向与乘客的目标方向相同,同时现在排在该乘客前方的乘客没有上该电梯,同时该电梯不满时,乘客才会上该电梯。要是乘客正在等待上电梯,而同时又有另一部满足条件的电梯到达,同时现在没有人上下,那么乘客就直截了当上另一部电梯,而不是等待原来那部电梯。如此就能够保证乘客总是能够乘坐最早到达该层的的电梯,而不是死等某一固定电梯到达。2.系统中重要类的识不依据上述分析,在系统中识不出来的要紧有三个类:电梯类Elevator,楼层类Floor和乘客类Passenger。其中Elevator类是对各类电梯的抽象,它封装了各类电梯的数据结构和方法。Floor类是一个虚基类,在该类中定义了各类操作的公共接口;由Floor类派生出三个子类,分不为BottomFloor类,MiddleFloor类和TopFloor类,分不为对底层楼层、中间楼层和顶层楼层的抽象,分不封装了底层楼层、中间楼层和顶层楼层的数据机构和方法。Passenger类是对不同乘客的抽象,它封装了乘客的数据结构和方法。3.系统中的类图4.类间交互过程在系统中定义乘客、楼层和电梯三种对象。乘客按下该楼层乘梯按钮发出乘梯请求,楼层将该乘梯请求通知相应电梯,电梯响应请求,到达该楼层时通知该楼层电梯到达,该楼层通知等待的乘客电梯到达。乘客上电梯后电梯离开,通知楼层电梯离开,楼层通知所有在该层等待的乘客电梯离开。乘客在电梯内设置目标楼层号,电梯载乘客到达目标楼层后通知乘客电梯到达,乘客下电梯。5.乘客及电梯的状态迁移图〔1〕乘客的状态迁移图乘客有11种不同的状态,分不是“仿真开始前〞,“随机停留〞,“等待电梯到达〞,“等待上电梯〞,“正在上电梯〞,“等待电梯运行〞,“随电梯向目标层运动〞,“随电梯在非目标层停止〞,“等待下电梯〞,“正在下电梯〞和“仿真结束〞。这些状态只有在时钟每秒触发的时候才会发生相应转换,要是乘客的当前状态没有转为另一个状态,那么表示乘客维持当前状态不变。对某一个乘客仿真开始前,乘客的状态是“仿真开始前〞。当乘客进进大楼,对乘客的仿真开始,乘客的状态置为“随机停留〞。当乘客的当前状态为“随机停留〞,同时乘客的仿真次数还没有到达设定的最大值,那么当乘客的停留时刻到,要是现在没有符合乘客乘梯要求的电梯到达,乘客的状态转为“等待电梯到达〞;要是现在有符合乘客乘梯要求的电梯到达,同时现在电梯中没有人上下,那么乘客的状态改为“正在上电梯〞;要是现在电梯中有人正在下电梯或者乘客前方的人正在上电梯,那么乘客的状态改为“等待上电梯〞。当乘客的当前状态为“等待上电梯〞,而现在已没有人再下电梯,同时前面的乘客也都差不多上了电梯,那么乘客的状态转为“正在上电梯〞;而要是乘客的当前状态为“等待上电梯〞,而电梯已满同时离开,那么乘客的状态转为“等待电梯到达〞。当乘客的当前状态为“正在上电梯〞,要是差不多完成上电梯活动,同时后面的乘客不再上电梯,那么乘客的状态转为“随电梯向目标层运动〞;要是后面的乘客仍然在上电梯,那么乘客的状态转为“等待电梯运动〞。当乘客的当前状态为“等待电梯运动〞,而所有乘客都差不多完成上电梯活动,电梯开始运动,乘客的状态改为“随电梯向目标层运动〞。当乘客的当前状态为“随电梯向目标层运动〞,电梯在某层停下,要是该层不是乘客的目标层,那么乘客的状态转为“随电梯停留〞;要是该层是乘客的目标层,要是前面有人下电梯,那么乘客的状态转为“等待下电梯〞;要是前面没有人下电梯,乘客的状态转为“正在下电梯〞。要是乘客的当前状态为“等待下电梯〞,前面乘客差不多下电梯完毕,那么乘客状态转为“正在下电梯〞。要是乘客的当前状态为“正在下电梯〞,同时差不多下电梯结束,那么乘客的当前状态转为“随机停留〞。要是乘客的当前状态为“随机停留〞,同时乘客的仿真次数差不多到达了设定的最大值,那么乘客的状态转为“结束仿真〞。〔2〕电梯状态迁移图仿真开始前,电梯的状态为“停止〞。当仿真开始后,电梯的状态为“停止〞,要是电梯按照运行规那么查寻到的目标楼层是当前楼层上方的楼层,那么电梯的状态转为“向上运动〞;要是目标楼层是下方的楼层,那么电梯的当前状态转为“向下运动〞;要是目标楼层确实是根基“当前楼层〞,那么电梯的状态转为“在某层停留〞。要是电梯的当前状态为“向上运动〞,电梯差不多到达目标层,那么电梯的状态转为“在某层停留〞。要是电梯的当前状态为“向下运动〞,电梯差不多到达目标层,那么电梯的状态转为“在某层停留〞。要是电梯的当前状态为“在某层停留〞,上下乘客结束,电梯查寻下一目标层,要是下一目标层为上方楼层,那么电梯的状态转为“向上运动〞;要是下一目标层为下方楼层,那么电梯的状态转为“向下运动〞;要是寻不到目标楼层,那么讲明电梯现在没有乘客使用,电梯的状态转为“停止〞。三、标识符命名规那么1.类的命名规那么类的命名形式为“类名的意义单词〞,类名中单词的首字母大写。例如:Elevator,Floor,Passenger。2.成员函数命名规那么类中成员函数的命名规那么为“x_代表成员函数的功能的单词组合〞,其中x为字母e时,表示为Elevator电梯类的成员函数;x为字母f时,表示为Floor楼层类的成员函数;x为字母p时,表示为Passenger乘客类的成员函数。单词组合中每个单词首字母大写。比方:e_FindDestinationFloor(),f_NoticeElevatorLeaveUp(),p_GetInBuilding()。3.数据成员命名规那么类中数据成员的命名规那么为“x_表示其功能与含义的单词组合〞,其中x为字母e时,表示为Elevator电梯类的数据成员;x为字母f时,表示为Floor楼层类的数据成员;x为字母p时,表示为Passenger乘客类的数据成员。单词组合中每个单词首字母大写。如e_CurrentPassengerAmount,f_FloorNumber,p_RandomStayingTime。4.局部变量命名规那么局部变量用小写单词表示,成员函数参数使用“X_表示其功能与含义的单词组合〞,其中X为字母E时,表示为Elevator电梯类的成员函数的参数;X为字母F时,表示为Floor楼层类的成员函数的参数;X为字母P时,表示为Passenger乘客类的成员函数的数据成员。单词组合中每个单词首字母大写。如E_FloorNumber,F_ElevatorNumber,P_ElevatorNumber。总之,系统中所有标识符都做到了见其名能知其义。四、系统中重要类及方法的讲明1.Elevator类的讲明它是系统中各种电梯的抽象。有如下属性和方法:对该类的讲明如下:classElevator{private: staticinte_TimeNeedPerFloor; //电梯每上或下一层所需要的时刻 staticinte_MaxPassengerAmount; //电梯的最大容客量 inte_ElevatorNumber; //电梯编号 inte_CurrentPassengerAmount; //电梯内当前乘客数目 ElevatorStatee_CurrentState; //电梯当前状态 Directione_Direction; //电梯运行方向 Directione_ArrivedDirection; //电梯下一步的运行方向 inte_CurrentFloorNumber; //当前楼层编号 inte_DestinationFloorNumber; //目标楼层编号 inte_NextFloorNumber; //下一楼层编号 inte_TimeNeedToNextFloor; //到下一楼层所需要的时刻 inte_TimeNeedToNextFloorStepCounter; //从当前楼层动身向下一楼层运动差不多通过的时刻〔计数器〕 inte_StayFreeTimeCounter; //电梯在某层停留时没有人上下的时刻计数器 boole_bBusy; //是否有人上下的标志 boole_bFull; //电梯是否已满的标志 inte_TotalRunTime; //总运行时刻 inte_TotalStopTime; //总停止时刻 inte_NearestDestinatedFloorNumber; //电梯内乘客所要到达的楼层中最近的楼层 inte_NearestRequestedFloorNumber; //查寻到的最近的发出乘梯请求的楼层 inte_FarestRequestedFloorNumber; //查寻到的最远的发出乘梯请求的楼层 inte_ElevatorRelatedFloorSize; //电梯可到达楼层的数目 vector<ElevatorRelatedFloor>e_RelatedFloorVector; //电梯可到达楼层及其相应的标志public: Elevator(intE_ElevatorNumber); //构造函数 ~Elevator(); //析构函数 staticvoide_SetTimeNeedPerFloor(intE_TimeNeedPerFloor); //设置电梯运行速度〔多少秒一层〕的函数接口 staticvoide_SetMaxPassengerAmount(intE_MaxPassengerAmount); //设置电梯最大容客量的函数接口 voide_Simulation(); //电梯仿真函数接口 voide_GetSummary(); //仿真结束后显示电梯运行时刻与空闲时刻的函数接口 voide_PrintCurrentState(); //打印电梯当前状态的函数接口 voide_FindDestinationFloor(); //按照既定运行规那么查寻电梯下一目标楼层的函数接口 voide_AddRelatedFloor(intE_FloorNumber,Floor*E_FloorPtr); //添加电梯可到达楼层的函数接口 voide_MakeUpRequest(intE_FloorNumber); //响应楼层向上乘梯请求的函数接口 voide_MakeDownRequest(intE_FloorNumber); //响应楼层向下乘梯请求的函数接口 voide_NoticeElevatorArriveUp(intE_FloorNumber); //通知E_FloorNumber楼层此电梯到达同时接着向上运动的函数接口 voide_NoticeElevatorArriveDown(intE_FloorNumber); //通知E_FloorNumber楼层此电梯到达同时接着向下运动的函数接口 voide_NoticeElevatorLeaveUp(intE_FloorNumber); //通知E_FloorNumber楼层此电梯离开同时接着向上运动的函数接口 voide_NoticeElevatorLeaveDown(intE_FloorNumber); //通知E_FloorNumber楼层此电梯离开同时接着向下运动的函数接口 voide_AddPassenger(intE_FloorNumber,Passenger*E_PassengerPtr); //向电梯中添加乘客的函数接口,乘客上电梯时调用该函数 voide_RemovePassenger(intE_FloorNumber,Passenger*E_PassengerPtr); //从电梯中删除乘客的函数接口,乘客下电梯时调用该函数 voide_SetDestinationFloor(intE_DestinationFloorNumber); //设置目标楼层的函数接口,乘客设置目标楼层时调用该函数 voide_SetElevatorBusy(); //乘客上下电梯时调用该函数,表示电梯现在被占用,其他乘客不能访咨询 voide_SetElevatorFree(); //乘客上下电梯时调用该函数,表示电梯现在没有被占用,其他乘客能够访咨询 inte_GetTotalRunTime(); //猎取电梯总运行时刻的函数接口 inte_GetTotalStopTime(); //猎取电梯总停止时刻的函数接口 ElevatorStatee_GetCurrentState(); //猎取电梯当前状态的函数接口 inte_GetCurrentFloorNumber(); //猎取电梯当前所在楼层的函数接口 boole_IsFull(); //判定电梯当前是否已满的函数接口 boole_IsBusy(); //判定电梯当前是否被占用的函数接口 voide_RemoveInvalidPassenger(); //由电梯自己调用,删除差不多下电梯的失效乘客};2.Floor类的讲明2.1Floor基类Floor类是一个虚基类,它定义了楼层所提供的操作的接口,如下所示:对该类的讲明如下:classFloor{public: virtualvoidf_Simulation()=0; //楼层仿真函数接口 virtualvoidf_PrintCurrentState()=0; //打印楼层当前状态的函数接口 virtualintf_GetFloorNumber()=0; //猎取楼层号的函数接口 virtualvoidf_MakeRequest(intF_ElevatorNumber,DirectionF_RequestDir)=0; //发出请求函数接口,供乘客发出乘梯请求时调用 virtualvoidf_NoticeElevatorArrive(intF_ElevatorNumber,DirectionF_ElevatorDir)=0; //通知在本层等待的乘客电梯到达 virtualvoidf_NoticeElevatorLeave(intF_ElevatorNumber,DirectionF_ElevatorDir)=0; //通知在本层等待的乘客电梯离开 virtualvoidf_AddPassengerToStayingContainer(Passenger*F_PassengerPtr)=0; //添加乘客到停留容器里,供乘客进进停留容器时调用 virtualvoidf_RemovePassengerFromStayingContainer(Passenger*F_PassengerPtr)=0; //从停留容器中移除乘客,供乘客停留时刻到时进进等待容器时调用 virtualvoidf_AddPassengerToWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir)=0; //添加乘客到等待容器,供乘客停留时刻到时进进等待容器时调用 virtualvoidf_RemovePassengerFromWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir)=0; //从等待容器中移除乘客,供乘客进进电梯时调用 virtualvoidf_AddRelatedElevator(intF_ElevatorNumber,Elevator*F_ElevatorPtr)=0; //添加可到达该层的电梯信息以相应的标志};由Floor类派生出BottomFloor、MiddleFloor和TopFloor这三个子类,接下来分不介绍。2.2BottomFloor底层楼层类BottomFloor类是对底层楼层〔1楼〕的抽象,它有如下的数据结构和操作:对该类的讲明如下:classBottomFloor:publicFloor{ intf_FloorNumber; //楼层号 intf_RelatedElevatorSize; //可到达该楼层的电梯的数目 vector<BottomFloorRelatedElevator>f_RelatedElevatorVector; //可到达该楼层的电梯列表 intf_StayingContainerSize; //该层中停留容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerStayingContainer; //该层中停留容器〔停留乘客列表〕 intf_WaitingUpContainerSize; //该层中等待向上容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerWaitingUpContainer; //该层中等待向上容器〔等待向上乘客列表〕public: BottomFloor(intF_FloorNumber); //构造函数 ~BottomFloor(); //析构函数 voidf_Simulation(); //楼层仿真函数接口 voidf_PrintCurrentState(); //打印楼层当前状态的函数接口 intf_GetFloorNumber(); //猎取楼层号的函数接口 voidf_AddRelatedElevator(intF_ElevatorNumber,Elevator*F_ElevatorPtr); //添加可到达该层的电梯信息以及相应的标志 voidf_NoticeElevatorArrive(intF_ElevatorNumber,DirectionF_ElevatorDir); //通知在本层等待的乘客电梯到达 voidf_NoticeElevatorLeave(intF_ElevatorNumber,DirectionF_ElevatorDir); //通知在本层等待的乘客电梯离开 voidf_MakeRequest(intF_ElevatorNumber,DirectionF_RequestDir); //发出请求函数接口,供乘客发出乘梯请求时调用 voidf_AddPassengerToStayingContainer(Passenger*F_PassengerPtr); //添加乘客到停留容器里,供乘客进进停留容器时调用 voidf_RemovePassengerFromStayingContainer(Passenger*F_PassengerPtr); //从停留容器中移除乘客,供乘客停留时刻到时进进等待容器时调用 voidf_AddPassengerToWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir); //添加乘客到等待容器,供乘客停留时刻到时进进等待容器时调用 voidf_RemovePassengerFromWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir); //从等待容器中移除乘客,供乘客进进电梯时调用 voidf_AddPassengerToWaitingUpContainer(Passenger*F_PassengerPtr); //添加乘客到等待向上容器,供乘客停留时刻到时进进等待向上容器时调用 voidf_RemovePassengerFromWaitingUpContainer(Passenger*F_PassengerPtr); //从等待向上容器中移除乘客,供乘客进进电梯时调用 voidf_MakeUpRequest(intF_ElevatorNumber); //发出向上请求函数接口,供乘客发出向上乘梯请求时调用 voidf_NoticeElevatorArriveUp(intF_ElevatorNumber); //通知在本层等待的乘客电梯到达同时接下来会向上运动 voidf_NoticeElevatorLeaveUp(intF_ElevatorNumber); //通知在本层等待的乘客电梯离开同时接下来会向上运动 voidf_NoticePassengerElevatorArriveUp(); //通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达同时接下来会向上运动,这是留给楼层调用的函数接口,当电梯到达某层楼,同时接下来将会向上运动时楼层调用该函数通知乘客 voidf_RemoveInvalidPassengerFromStayingContainer(); //由楼层自己调用,删除差不多离开随机停留容器的失效乘客 voidf_RemoveInvalidPassengerFromWaitingContainer(); //由楼层自己调用,删除差不多离开等待容器的失效乘客 voidf_RemoveInvalidPassengerFromWaitingUpContainer(); //由楼层自己调用,删除差不多离开等待向上容器的失效乘客};2.3MiddleFloor中间楼层类MiddleFloor类是对中间楼层〔2至39楼〕的抽象,它有如下的数据结构和操作:对该类的讲明如下:classMiddleFloor:publicFloor{ intf_FloorNumber; //楼层号 intf_RelatedElevatorSize; //可到达该楼层的电梯的数目 vector<MiddleFloorRelatedElevator>f_RelatedElevatorVector; //可到达该楼层的电梯列表 intf_StayingContainerSize; //该层中停留容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerStayingContainer; //该层中停留容器〔停留乘客列表〕 intf_WaitingUpContainerSize; //该层中等待向上容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerWaitingUpContainer; //该层中等待向上容器〔等待向上乘客列表〕 intf_WaitingDownContainerSize; //该层中等待向下容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerWaitingDownContainer; //该层中等待向下容器〔等待向下乘客列表〕public: MiddleFloor(intF_FloorNumber); //构造函数 ~MiddleFloor(); //析构函数 voidf_Simulation(); //楼层仿真函数接口 voidf_PrintCurrentState(); //打印楼层当前状态的函数接口 intf_GetFloorNumber(); //猎取楼层号的函数接口 voidf_AddRelatedElevator(intF_ElevatorNumber,Elevator*F_ElevatorPtr); //添加可到达该层的电梯信息以及相应的标志 voidf_NoticeElevatorArrive(intF_ElevatorNumber,DirectionF_ElevatorDir); //通知在本层等待的乘客电梯到达 voidf_NoticeElevatorLeave(intF_ElevatorNumber,DirectionF_ElevatorDir); //通知在本层等待的乘客电梯离开 voidf_MakeRequest(intF_ElevatorNumber,DirectionF_RequestDir); //发出请求函数接口,供乘客发出乘梯请求时调用 voidf_AddPassengerToStayingContainer(Passenger*F_PassengerPtr); //添加乘客到停留容器里,供乘客进进停留容器时调用 voidf_RemovePassengerFromStayingContainer(Passenger*F_PassengerPtr); //从停留容器中移除乘客,供乘客停留时刻到时进进等待容器时调用 voidf_AddPassengerToWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir); //添加乘客到等待容器,供乘客停留时刻到时进进等待容器时调用 voidf_RemovePassengerFromWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir); //从等待容器中移除乘客,供乘客进进电梯时调用 voidf_AddPassengerToWaitingUpContainer(Passenger*F_PassengerPtr); //添加乘客到等待向上容器,供乘客停留时刻到时进进等待向上容器时调用 voidf_RemovePassengerFromWaitingUpContainer(Passenger*F_PassengerPtr); //从等待向上容器中移除乘客,供乘客进进电梯时调用 voidf_AddPassengerToWaitingDownContainer(Passenger*F_PassengerPtr); //添加乘客到等待向下容器,供乘客停留时刻到时进进等待向下容器时调用 voidf_RemovePassengerFromWaitingDownContainer(Passenger*F_PassengerPtr); //从等待向下容器中移除乘客,供乘客进进电梯时调用 voidf_MakeUpRequest(intF_ElevatorNumber); //发出向上请求函数接口,供乘客发出向上乘梯请求时调用 voidf_MakeDownRequest(intF_ElevatorNumber); //发出向下请求函数接口,供乘客发出向下乘梯请求时调用 voidf_NoticeElevatorArriveUp(intF_ElevatorNumber); //通知在本层等待的乘客电梯到达同时接下来会向上运动 voidf_NoticeElevatorArriveDown(intF_ElevatorNumber); //通知在本层等待的乘客电梯到达同时接下来会向下运动 voidf_NoticeElevatorLeaveUp(intF_ElevatorNumber); //通知在本层等待的乘客电梯离开同时接下来会向上运动 voidf_NoticeElevatorLeaveDown(intF_ElevatorNumber); //通知在本层等待的乘客电梯离开同时接下来会向下运动 voidf_NoticePassengerElevatorArriveUp(); //通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达同时接下来会向上运动,这是留给楼层调用的函数接口,当电梯到达某层楼,同时接下来将会向上运动时楼层调用该函数通知乘客 voidf_NoticePassengerElevatorArriveDown(); //通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达同时接下来会向下运动,这是留给楼层调用的函数接口,当电梯到达某层楼,同时接下来将会向下运动时楼层调用该函数通知乘客 voidf_RemoveInvalidPassengerFromStayingContainer(); //由楼层自己调用,删除差不多离开随机停留容器的失效乘客 voidf_RemoveInvalidPassengerFromWaitingContainer(); //供楼层自己调用,删除等待向上和等待向下容器中的失效乘客 voidf_RemoveInvalidPassengerFromWaitingUpContainer(); //由楼层自己调用,删除差不多离开等待向上容器的失效乘客 voidf_RemoveInvalidPassengerFromWaitingDownContainer(); //由楼层自己调用,删除差不多离开等待向下容器的失效乘客};2.4TopFloor顶层楼层类TopFloor类是对顶层楼层〔40楼〕的抽象,它有如下的数据结构和操作:对该类的讲明如下:classTopFloor:publicFloor{ intf_FloorNumber; //楼层号 intf_RelatedElevatorSize; //可到达该楼层的电梯的数目 vector<TopFloorRelatedElevator>f_RelatedElevatorVector; //可到达该楼层的电梯列表 intf_StayingContainerSize; //该层中停留容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerStayingContainer; //该层中停留容器〔停留乘客列表〕 intf_WaitingDownContainerSize; //该层中等待向下容器中乘客的数目 list<FloorRelatedPassenger>f_PassengerWaitingDownContainer; //该层中等待向下容器〔等待向下乘客列表〕public: TopFloor(intF_FloorNumber); //构造函数 ~TopFloor(); //析构函数 voidf_Simulation(); //楼层仿真函数接口 voidf_PrintCurrentState(); //打印楼层当前状态的函数接口 intf_GetFloorNumber(); //猎取楼层号的函数接口 voidf_AddRelatedElevator(intF_ElevatorNumber,Elevator*F_ElevatorPtr); //添加可到达该层的电梯信息以及相应的标志 voidf_NoticeElevatorArrive(intF_ElevatorNumber,DirectionF_ElevatorDir); //通知在本层等待的乘客电梯到达 voidf_NoticeElevatorLeave(intF_ElevatorNumber,DirectionF_ElevatorDir); //通知在本层等待的乘客电梯离开 voidf_MakeRequest(intF_ElevatorNumber,DirectionF_RequestDir); //发出请求函数接口,供乘客发出乘梯请求时调用 voidf_AddPassengerToStayingContainer(Passenger*F_PassengerPtr); //添加乘客到停留容器里,供乘客进进停留容器时调用 voidf_RemovePassengerFromStayingContainer(Passenger*F_PassengerPtr); //从停留容器中移除乘客,供乘客停留时刻到时进进等待容器时调用 voidf_AddPassengerToWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir); //添加乘客到等待容器,供乘客停留时刻到时进进等待容器时调用 voidf_RemovePassengerFromWaitingContainer(Passenger*F_PassengerPtr,DirectionF_PassengerDir); //从等待容器中移除乘客,供乘客进进电梯时调用 voidf_AddPassengerToWaitingDownContainer(Passenger*F_PassengerPtr); //添加乘客到等待向下容器,供乘客停留时刻到时进进等待向下容器时调用 voidf_RemovePassengerFromWaitingDownContainer(Passenger*F_PassengerPtr); //从等待向下容器中移除乘客,供乘客进进电梯时调用 voidf_MakeDownRequest(intF_ElevatorNumber); //发出向下请求函数接口,供乘客发出向下乘梯请求时调用 voidf_NoticeElevatorArriveDown(intF_ElevatorNumber); //通知在本层等待的乘客电梯到达同时接下来会向下运动 voidf_NoticeElevatorLeaveDown(intF_ElevatorNumber); //通知在本层等待的乘客电梯离开同时接下来会向下运动 voidf_NoticePassengerElevatorArriveDown(); //通知在本层等待的乘客本楼层有哪些电梯停留、有哪些电梯到达同时接下来会向下运动,这是留给楼层调用的函数接口,当电梯到达某层楼,同时接下来将会向下运动时楼层调用该函数通知乘客 voidf_RemoveInvalidPassengerFromStayingContainer(); //由楼层自己调用,删除差不多离开随机停留容器的失效乘客 voidf_RemoveInvalidPassengerFromWaitingContainer(); //由楼层自己调用,删除差不多离开等待容器的失效乘客 voidf_RemoveInvalidPassengerFromWaitingDownContainer(); //由楼层自己调用,删除差不多离开等待向下容器的失效乘客};3.Passenger类的讲明对该类的讲明如下:classPassenger{private: staticFloor*p_FloorPtrArray[TotalFloorNumber]; //包含所有楼层指针的指针数组 staticElevator*p_ElevatorPtrArray[TotalElevatorNumber]; //包含所有电梯指针的指针数组 staticboolFloorElevatorArriveTable[TotalFloorNumber][TotalElevatorNumber];//包含楼层电梯可达信息的楼层电梯可达表 staticintp_InOutTime; //乘客上下电梯所需时刻 staticintp_PassengerGetInTotalNumber; //差不多进行仿确实乘客数目 staticintp_PassengerGetOutTotalNumber; //差不多结束仿确实乘客数目 intp_PassengerNumber; //乘客编号 intp_CurrentFloorNumber; //乘客当前所在楼层编号 Floor*p_CurrentFloorPtr; //乘客当前所在楼层指针 intp_DestinationFloorNumber; //乘客目标楼层编号 Directionp_Direction; //乘客的方向 intp_DestinationElevatorNumber; //乘客所选择乘坐的目标电梯编号 Elevator*p_DestinationElevatorPtr; //乘客所选择乘坐的目标电梯指针 PassengerStatep_CurrentState; //乘客的当前状态 intp_TotalSimulationTime; //乘客的总仿真次数 intp_CurrentSimulationTime; //乘客的当前仿真次数 intp_TotalWaitingTime; //乘客总等待时刻 intp_CurrentWaitingTime; //乘客当前等待时刻 intp_RandomStayingTime; //乘客的随机停留时刻 intp_CurrentStayingTime; //乘客当前停留时刻 intp_InOutStep; //乘客上下电梯步伐计数器 intp_RelatedElevatorListSize; //可供乘客选择的能够到达目标楼层的电梯〔可用电梯〕的数目 list<PassengerRelatedElevator>p_RelatedElevatorList; //可供乘客选择的能够到达目标楼层的电梯〔可用电梯〕列表public: Passenger(intP_PassengerNumber); //构造函数 ~Passenger(); //析构函数 static voidp_CreateFloorElevatorTable(bool*P_BoolPtr); //创立包含楼层电梯可达信息的楼层电梯可达表的函数接口 static voidp_CreateFloorTable(Floor**P_FloorPtr); //创立包含所有楼层指针的指针数组的函数接口 static voidp_CreateElevatorTable(Elevator**P_ElevatorPtr); //创立包含所有电梯指针的指针数组的函数接口 staticvoidp_SetInOutTime(intP_InOutTime); //设置乘客上下电梯所需时刻的函数接口 staticintp_GetInOutTime(); //猎取乘客上下电梯所需时刻的函数接口 staticintp_GetPassengerGetInNumber(); //猎取当前差不多进行仿确实乘客的数目的函数接口 staticintp_GetPassengerGetOutNumber(); //猎取当前差不多结束仿确实乘客的数目的函数接口 voidp_Simulation(); //乘客仿真函数接口 voidp_GetSummary(); //乘客仿真结束后显示乘客等待时刻的函数接口 voidp_PrintCurrentState(); //打印乘客当前状态的函数接口 voidp_CreateRelatedElevatorList(); //创立可供乘客选择的能够到达目标楼层的电梯〔可用电梯〕列表的函数接口 voidp_DestroyRelateElevatorList(); //删除可供乘客选择的能够到达目标楼层的电梯〔可用电梯〕列表的函数接口 voidp_MakeUpRequest(); //对楼层中的可到达目标层的所有电梯〔可用电梯〕发出向上乘梯请求的函数接口 voidp_MakeDownRequest(); //对楼层中的可到达目标层的所有电梯〔可用电梯〕发出向下乘梯请求的函数接口 voidp_NoticeElevatorArriveUp(intP_ElevatorNumber); //猎取可到达乘客目标楼层的电梯〔可用电梯〕向上运动同时到达乘客所在层信息的函数接口 voidp_NoticeElevatorArriveDown(intP_ElevatorNumber); //猎取可到达乘客目标楼层的电梯〔可用电梯〕向下运动同时到达乘客所在层信息的函数接口 voidp_NoticeElevatorLeaveUp(intP_ElevatorNumber); //猎取可到达乘客目标楼层的电梯〔可用电梯〕向上运动同时离开乘客所在层信息的函数接口 voidp_NoticeElevatorLeaveDown(intP_ElevatorNumber); //猎取可到达乘客目标楼层的电梯〔可用电梯〕向下运动同时离开乘客所在层信息的函数接口 voidp_SetDestinationFloor(); //在电梯中设置目标层的函数接口 voidp_GetInBuilding(); //仿真开始乘客进进大楼的函数接口 voidp_GetOutBuilding(); //仿真结束乘客离开大楼的函数接口};4.重要的数据结构〔1〕表示方向的枚举类型typedefenum{ DirectionUp=0, //表示方向向上 DirectionDown=1, //表示方向向下 DirectionStay=2 //表示既不向上也不向下,在某层停留或停止}Direction;〔2〕表示乘客状态的枚举类型typedefenum{ BeforeSimulation=0, //表示该乘客还未进进大楼,仿真还未开始 StayForRandomTime=1, //表示乘客的状态为在某层随机停留 WaitForElevatorArrive=2, //表示没有电梯到达,乘客的状态为等电梯到达 WaitToGetInElevator=3, //表示电梯到达,乘客的状态为等待上电梯〔等待前方乘客先上电梯〕 GetInElevator=4, //表示轮到乘客自己上电梯,乘客的当前状态为正在上电梯 WaitElevatorToRun=5, //表示乘客差不多进进电梯〔等待后面的人上电梯〕,乘客的当前状态为等待电梯运行 RunWithElevator=6, //表示乘客的当前状态为随电梯运行 StopWithElevator=7, //表示电梯在某层停下〔非本乘客的目标层〕,乘客的当前状态为随电梯停留 WaitToGetOutElevator=8, //表示电梯在本乘客的目标层停下,乘客的当前状态为等待下电梯〔等待前面的人先下电梯〕 GetOutElevator=9, //表示轮到乘客自己下电梯,乘客的当前状态为正在下电梯 AfterSimulation=10 //表示乘客仿真次数已足够,乘客的仿真结束}PassengerState;〔3〕表示表示可到达乘客目标楼层的电梯〔可用电梯〕及其相应状态的结构体structPassengerRelatedElevator{ intp_ElevatorNumber; //表示可到达乘客目标楼层的电梯号 Elevator*p_ElevatorPtr; //表示编号为p_ElevatorNumber的电梯〔可用电梯〕所对应的指针 boolp_bArrivedUp; //表示编号为p_ElevatorNumber的电梯〔可用电梯〕是否向上运动同时到达乘客所在层的标志 boolp_bArrivedDown; //表示编号为p_ElevatorNumber的电梯〔可用电梯〕是否向下运动同时到达乘客所在层的标志};〔4〕表示电梯状态的枚举类型typedefenum{ Stop=0, //表示电梯当前状态为停止〔在某层停留,但并没有乘客上下〕 GoUp=1, //表示电梯当前状态为向上运动 GoDown=2, //表示电梯当前状态为向下运动 Stay=3 //表示电梯当前状态为在某层停留〔上下乘客〕}ElevatorState;〔5〕表示电梯可到达楼层及其相应状态的结构体structElevatorRelatedFloor{ inte_FloorNumber; //表示电梯可到达楼层的楼层号 Floor*e_FloorPtr; //表示e_FloorNumber楼层的楼层指针 boole_bDestinated; //表示e_FloorNumber楼层是否为电梯内某一乘客的目的楼层的标志 boole_bRequestedUp; //表示电梯是否被e_FloorNumber楼层请求向上的标志 boole_bRequestedDown; //表示电梯是否被e_FloorNumber楼层请求向下的标志 boole_bArrivedUp; //表示电梯是否到达e_FloorNumber楼层同时下一运动方向向上的标志 boole_bArrivedDown; //表示电梯是否到达e_FloorNumber楼层同时下一运动方向向下的标志 inte_PassengerContainerFloorSize; //表示目标楼层为e_FloorNumber的乘客的数目 list<Passenger*>e_PassengerContainerFloor; //表示目标楼层为e_FloorNumber的乘客的列表};〔6〕表示可到达底层楼层的电梯信息以及相应标志的结构体structBottomFloorRelatedElevator{ intf_ElevatorNumber; //电梯编号 Elevator*f_ElevatorPtr; //电梯指针 boolf_bRequestedUp; //该楼层是否以对编号为f_ElevatorNumber的电梯发出向上请求 boolf_bArrivedUp; //编号为f_ElevatorNumber的电梯是否差不多到达该楼层同时运行方向向上};〔7〕表示可到达中间楼层的电梯信息以及相应标志的结构体structMiddleFloorRelatedElevator{ intf_ElevatorNumber; //电梯编号 Elevator*f_ElevatorPtr; //电梯指针 boolf_bRequestedUp; //该楼层是否以对编号为f_ElevatorNumber的电梯发出向上请求 boolf_bRequestedDown; //该楼层是否以对编号为f_ElevatorNumber的电梯发出向下请求 boolf_bArrivedUp; //编号为f_ElevatorNumber的电梯是否差不多到达该楼层同时运行方向向上 boolf_bArrivedDown; //编号为f_ElevatorNumber的电梯是否差不多到达该楼层同时运行方向向下};〔8〕表示可到达顶层楼层的电梯信息以及相应标志的结构体structTopFloorRelatedElevator{ intf_ElevatorNumber; //电梯编号 Elevator*f_ElevatorPtr; //电梯指针 boolf_bRequestedDown; //该楼层是否以对编号为f_ElevatorNumber的电梯发出向下请求 boolf_bArrivedDown; //编号为f_ElevatorNumber的电梯是否差不多到达该楼层同时运行方向向下};〔9〕表示电梯内的乘客指针对象的结构体structElevatorRelatedPassenger{ boole_bPassengerPtrValid; //表示该指针是否有效 Passenger*PassengerPtr; //表示指向乘客对象的指针};5.重要的操作方法讲明需要讲明的方法有:〔1〕voidPassenger::p_Simulation();//乘客仿真函数接口此方法的要紧内容确实是根基完成乘客对象的状态转换,在分析与设计局部的乘客状态迁移图局部差不多进行了讲明,此处略过。〔2〕voidElevator::e_Simulation();//电梯仿真函数接口此方法的要紧内容确实是根基完成电梯对象的状态转换,在分析与设计局部的电梯状态迁移图局部差不多进行了讲明,此处略过。〔3〕voidElevator::e_FindDestinationFloor(); //按照既定运行规那么查寻电梯下一目标楼层的函数接口因为在电梯对象内部存储着一张表格,该表格记录了哪些楼层对该电梯发出了向上的乘梯申请,哪些楼层对该电梯发出了向下的乘梯申请,那些楼层是当前电梯内乘客的目标层。例如下表:楼层编号发出向上请求发出向下请求为乘客目标层n1…151113111假设电梯当前在其中某一层,电梯查寻目标楼层的规那么如下:当电梯的运动方向为静止〔不向上也不向下〕时:不妨设电梯的当前运动方向为向上。当电梯的运动方向为向上时:首先按照向上查寻电梯当前所在楼层及其之上楼层是否存在某层为乘客的目标层或者对电梯发出了向上请求,要是存在,寻出符合要求的最近的楼层为目标层;要是不存在,那么查寻该层及其之上是否存在某层对电梯发出了向下请求,要是存在,寻出符合要求的最远的楼层为目标层;要是不存在,那么向下查寻,查寻该层之下是否存在楼层对该电梯发出向下请求,要是存在,那么寻出符合条件的最近的楼层为目标层;要是不存在,那么查寻该层之下是否存在楼层对该电梯发出向上的乘梯请求,要是存在,那么寻出符合条件的最远的楼层为目标层;要是不存在,那么寻不到目标层,设置电梯方向为静止,状态为停止。当电梯的运动方向为向下时:首先按照向下查寻电梯当前所在楼层及其之下的楼层是否存在某层为乘客的目标层或者对电梯发出了向下请求,要是存在,寻出符合要求的最近的楼层为目标层;要是不存在,那么查寻该层及其之下是否存在某层对电梯发出了向上请求,要是存在,寻出符合要求的最远的楼层为目标层;要是不存在,那么向上查寻,查寻该层之上是否存在楼层对该电梯发出向上请求,要是存在,那么寻出符合条件的最近的楼层为目标层;要是不存在,那么查寻该层之上是否存在楼层对该电梯发出向下的乘梯请求,要是存在,那么寻出符合条件的最远的楼层为目标层;要是不存在,那么寻不到目标层,设置电梯方向为静止,状态为停止。五、系统仿真流程当完成了类设计后,剩下来就应是系统逻辑局部的实现了。关于系统整体来讲,应该有一个事件侦测体系,用来对系统每个乘客和电梯的状态的侦测,以便发送或者修改必要的信息,该侦测体系的周期定为1秒钟(用睡眠函数实现),然后用串行的方式来模拟系统的并行运行。要是把思路总结一下,应该是跟动画片的原理是一样的:将多个固定和静止的画面定时、按顺序地放映出来,就变成了活动的画面。因此,能够在程序中定义一个主循环,在该循环外进行必要的初始化,进进后每秒钟执行一次,以遍历方式一一鼓舞当前差不多产生的对象,由它们依据自己的当前状态和相关的状态变化规那么,决定是否需要改变、改变成什么样的状态,以及按照上述行为特征的设计展示必要的对象状态。仿真流程的代码如下:intmain(){ //***************************************************初始化局部***************************************************** //0.***********************************定义局部变量,要求用户输进K,N,M,S,T等数据 inti,j,k,m; intCurrentPassengerGetInNumber; intCurrentPassengerGetOutNumber; intNextTimePassengerTotalGetInNumber; intCurrentSimulationTime; intK,N,M,S,T; cout<<"请输进K,N,M,S,T的值,用空格隔开\n"; cin>>K>>N>>M>>S>>T; //1.***********************************定义全局的电梯楼层可达表 boolArriveTable[TotalFloorNumber][TotalElevatorNumber]= { /*E0*//*E1*//*E2*//*E3*//*E4*//*E5*//*E6*//*E7*//*E8*//*E9*/ /*F0*/ false,false,false,false,false,false,false,false,false,false, /*F1*/ true,true,true,true,true,true,true,true,true,true, /*F2*/ true,true,false,false,true,true,true,true,false,false, /*F3*/ true,true,false,false,true,true,false,false,true,true, /*F4*/ true,true,false,false,true,true,true,true,false,false, /*F5*/ true,true,false,false,true,true,false,false,true,true, /*F6*/ true,true,false,false,true,true,true,true,false,false, /*F7*/ true,true,false,false,true,true,false,false,true,true, /*F8*/ true,true,false,false,true,true,true,true,false,false, /*F9*/ true,true,false,false,true,true,false,false,true,true, /*F10*/ true,true,false,false,true,true,true,true,false,false, /*F11*/ true,true,false,false,true,true,false,false,true,true, /*F12*/ true,true,false,false,true,true,true,true,false,false, /*F13*/ true,true,false,false,true,true,false,false,true,true, /*F14*/ true,true,false,false,true,true,true,true,false,false, /*F15*/ true,true,false,false,true,true,false,false,true,true, /*F16*/ true,true,false,false,true,true,true,true,false,false, /*F17*/ true,true,false,false,true,true,false,false,true,true, /*F18*/ true,true,false,false,true,true,true,true,false,false, /*F19*/ true,true,false,false,true,true,false,false,true,true, /*F20*/ true,true,false,false,true,true,true,true,false,false, /*F21*/ true,true,false,false,true,true,false,false,true,true, /*F22*/ true,true,false,false,true,true,true,true,false,false, /*F23*/ true,true,false,false,true,true,false,false,true,true, /*F24*/ true,true,false,false,true,true,true,true,false,false, /*F25*/ true,true,true,true,true,true,false,false,true,true, /*F26*/ true,true,true,true,false,false,true,true,false,false, /*F27*/ true,true,true,true,false,false,false,false,true,true, /*F28*/ true,true,true,true,false,false,true,true,false,false, /*F29*/ true,true,true,true,false,false,false,false,true,true, /*F30*/ true,true,true,true,false,false,true,true,false,false, /*F31*/ true,true,true,true,false,false,false,false,true,true, /*F32*/ true,true,true,true,false,false,true,true,false,false, /*F33*/ true,true,true,true,false,false,false,false,true,true, /*F34*/ true,true,true,true,false,false,true,true,false,false, /*F35*/ true,true,true,true,false,false,false,false,true,true, /*F36*/ true,true,true,true,false,false,true,true,false,false, /*F37*/ true,true,true,true,false,false,false,false,true,true, /*F38*/ true,true,true,true,false,false,true,true,false,false, /*F39*/ true,true,true,true,false,false,false,false,true,true, /*F40*/ true,true,true,true,false,false,true,true,false,false }; bool*PtrArriveTable=&ArriveTable[0][0]; //2.***********************************定义楼层指针数组〔Floor指针数组1-40〕,存储各Floor指针 Floor*FloorPtr[TotalFloorNumber]; //3.***********************************定义电梯指针数组〔Elevator指针数组0-9〕,存储各Elevator指针 Elevator*ElevatorPtr[TotalElevatorNumber]; //4.***********************************生成40层楼,填充楼层指针数组〔与Elevator相关的vector未填充〕 FloorPtr[1]=(Floor*)newBottomFloor(1); for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林师范大学《数字调色技术》2021-2022学年第一学期期末试卷
- 吉林师范大学《量子力学II》2021-2022学年第一学期期末试卷
- 危险废物管理制度在制造业的必要性
- 医疗机构卫生管理制度制定方案
- 医务科远程医疗服务发展方案
- 酒店物业管理效率提升方案
- 吉林师范大学《常微分方程》2021-2022学年第一学期期末试卷
- 大型活动防汛安全实施方案
- 吉林大学《田径基础》2021-2022学年第一学期期末试卷
- 2024年网吧经营合同范文
- 汉语词性专题练习(附答案)
- 北师大版二年级数学上册第九单元《除法》知识点梳理复习ppt
- 店长转正考核(员工评价)
- 9-2 《第三方过程评估淋蓄水检查内容》(指引)
- 铁路企业高技能人才队伍建设的对策与措施
- 亚马逊品牌授权书(英文模板)
- TTJCA 0007-2022 住宅室内装饰装修工程施工验收规范
- 构造柱工程施工技术交底
- 流体力学笔记整理
- 现代简约风格发展趋势
- 路缘石滑模施工工法
评论
0/150
提交评论