电梯模拟1文档格式.docx

上传人:b****9 文档编号:13020518 上传时间:2022-10-02 格式:DOCX 页数:22 大小:182.25KB
下载 相关 举报
电梯模拟1文档格式.docx_第1页
第1页 / 共22页
电梯模拟1文档格式.docx_第2页
第2页 / 共22页
电梯模拟1文档格式.docx_第3页
第3页 / 共22页
电梯模拟1文档格式.docx_第4页
第4页 / 共22页
电梯模拟1文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

电梯模拟1文档格式.docx

《电梯模拟1文档格式.docx》由会员分享,可在线阅读,更多相关《电梯模拟1文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

电梯模拟1文档格式.docx

intnow;

//乘客当前所在的位置

intdis;

//乘客的目地地

intwait;

//最长的等待的时间

intwaitnow;

//已经等待的时间

structpassage*next;

}Passage;

虽然电梯中的状态是由枚举类型来实现的,但是在整个程序的运行过程中,我还是为电梯设置了一个结构体类型,以便保存更多的信息:

typedefstructlift

intcount_C;

//计数电梯已到达的层数

intcount_A;

//系统的总时间计数器记得必须初始化为0

intflag_in[High];

//九个楼层有无请求的标志哪个楼层如果有请求该标志置1

intnum;

//等待队列中的人数记得要进行初始化为0

intpeople;

//电梯中人数

intflag_out[High];

}Lift;

(2)算法设计

顾名思义本程序在运行的过程中用到的算法便是—“电梯算法”,电梯算法借鉴了磁盘寻道C-LOOK算法,即电梯向一个方向运行,直到这个方向上没有服务为止。

2.2设计表示

(1)、函数调用关系图及其说明如下 :

(2)函数接口说明:

函数中的参数均是使用的全局变量的传递,因而在函数间进行传递的过程中比较简单,下面就将主要函数及他们之间的参数的关系列出如下:

intOutOrIn(Lift&

L,Passage*Queue,Passage*LiftQ);

//进和出电梯的总函数

intUpdate(Lift&

//刷新的函数

intRun(Lift&

//整个电梯各种状态转换的函数

intOpenTheDoor(Lift&

L);

//开门主要是用于解决其中的时间问题

intCloseTheDoor(Lift&

//关门

intIn(Lift&

//进入主要是解决每个人进入电梯的时间问题

intOut(Lift&

//出去

intTest(Lift&

//电梯测试关门还是开门的函数

intRequest(Lift&

L,Passage*Queue);

2.3详细设计

3、调试分析

该程序的调试过程较为轻松,基本在算法实现的基础上没有出现什么错误,因而在调试的过程中并无什么深刻印象。

4、用户手册

点击运行程序,在弹出的窗口中,会提示要输入的信息:

1、提示信息为:

“请输入图中的顶点数和弧数以及图的标志和弧的标志:

”按要求输入即可,本题即输入911va

2、提示信息为“请完成该邻接表的输入”:

由于邻接表的输入信息一般较多,而且均是采用的链表来存储,因而该部分的输入要特别的小心

3、在完成上面两步的输入后按enter键便能得到程序的运行结果,即输出完成整项工程至少需要多少时间和影响工程进度的关键活动

思路和原理:

1.确定电梯的类型。

其中包括:

电梯所在层,电梯内人数,电梯当前状态,电梯运行时期,电梯计时器,每层的Up按钮,每层的Down按钮,电梯内的目标层按钮,同时,还需要造一个乘客栈,将要去不同楼层的人放在不同的栈中。

2.确定乘客类型。

乘客编号,乘客将要去的楼层数,该乘客进入时间,所能容忍的等待时间以及该乘客进入的楼层。

3.通过进行乘客的进出电梯活动来将两者联系起来。

首先,每层都有两个等待队列:

上楼队列和下楼队列。

其次,此活动包括乘客时间与电梯事件,通过相同的参数将其相连接。

乘客事件包括:

新乘客进入事件,乘客放弃事件放弃,乘客进出事件。

电梯事件包括:

判断电梯的状态。

4.按时序显示系统状态的变化过程:

发生的全部人和电梯的动作序列。

根据实验要求,定义时间:

上升时间,下降时间,开门关门时间,进出电梯时间,最高层,最低层。

算法设计:

1.设定乘客栈的抽象数据类型定义

ADTStack{

数据对象:

数据关系:

基本操作:

InitStack(S);

操作结果:

构造一个空栈

DestroyStack(&

S);

初始条件:

栈S已存在

操作结果:

销毁栈S

ClearStack(&

栈s已存在

把S置为空

StackEmpty(S);

栈s已存在。

若栈S为空,则返回TRUE,否则返回FALSE

StackLength(S);

初始条件:

返回栈S的长度

GetTop(S,&

e);

初始条件:

返回栈顶元素

Push(&

S,e);

操作结果:

在栈S的栈顶插入新的栈顶元素e。

Pop(&

S,&

删除S的栈顶元素,并以e返回其值。

PrintStack(&

输出栈

乘客类型

ADTClient

D={ai∈乘客信息,I=1,2,…,n,n≥0}

R={<

ai-1,ai>

|ai-1,ai∈D,i=2,…,n}

PrintClientInfo(Clientconst&

e,ClientStatuss)

输出乘客信息。

CreatClient(Client*&

p)

生成新的乘客。

DestoryClient(Client*&

该乘客离开系统。

GoAbove(Clientconst&

e)

判断该乘客是否去往高层。

CInfloor(Clientconst&

返回乘客进入的楼层。

CInTime(Clientconst&

返回乘客进入时间。

COutfloor(Clientconst&

}

电梯类型

表示电梯的各个属性和所有动作。

ADTElevator

D={ai∈电梯信息,I=1,2,…,n,n≥0}

InitEle(Elevator&

E)

初始化电梯类型。

DestoryEle(Elevator&

销毁电梯类型。

EleDecide(Elevator&

E,WQueuew[Maxfloor+1][2])

电梯动作决策。

ElevatorRun(Elevator&

E,WQueuew[Maxfloor+1][2]){

电梯状态转换。

CountOver(Elevator&

判断电梯计时是否完成。

EleFloor(Elevatorconst&

返回电梯所在的层。

EleStatus(Elevatorconst&

返回电梯状态。

RequireAbove(Elevatorconst&

判断是否有高层请求。

RequireBelow(Elevatorconst&

判断是否有低层请求。

EleAchieved(Elevator&

判断电梯是否要停于当前层。

EleOpenDoor(Elevator&

判断电梯是否要开门。

实现电梯和乘客之间的相互作用。

包括:

InOut(Elevator&

进行乘客的进出电梯活动。

NewClient(Elevator&

E,WQueuew[5][2])

进入新乘客。

PrintStatus(Elevator&

输出当前状态。

Print(Elevator&

E,Actiona)

输出电梯动作信息。

具体实现:

电梯类型基本操作:

voidInitEle(Elevator&

E){

inti;

E.floor=1;

//电梯初始停在第一层

E.status=Waiting;

E.Count=OverTime;

E.Stage=Down;

E.ClientNumber=0;

for(i=0;

i<

=Maxfloor;

i++){

E.CallUp[i]=0;

E.CallDown[i]=0;

E.CallCar[i]=0;

}

i++)InitStack(E.S[i]);

StatusCountOver(Elevator&

E){//判断电梯计时是否完成

if(E.Count){

E.Count--;

returnFALSE;

returnTRUE;

voidDestoryEle(Elevator&

E){//销毁电梯类型

i++)DestroyStack(E.S[i]);

intEleFloor(Elevatorconst&

E){//返回电梯所在的层

returnE.floor;

EleStatusEleStatus(Elevatorconst&

E){

returnE.status;

StatusRequireAbove(Elevatorconst&

E){//判断是否有高层请求

for(inti=E.floor+1;

i++)

if(E.CallCar[i]||E.CallDown[i]||E.CallUp[i])returnTRUE;

returnFALSE;

StatusRequireBelow(Elevatorconst&

E){//判断是否

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1