您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 数据结构设计--电梯模拟系统
目录1.引言..............................................................................................................................................22.需求分析.......................................................................................................................................23.概要设计.....................................................................................................................................23.1数据结构描述....................................................................................................................23.2模块设计............................................................................................................................33.3电梯的模拟流程图............................................................................................................34详细设计及实现............................................................................................................................44.1全局变量的定义................................................................................................................44.2人具体情况的定义............................................................................................................44.3队、栈的类型....................................................................................................................54.4.电梯类型...........................................................................................................................54.5系统类的定义....................................................................................................................55.调试分析.......................................................................................................................................76.结论及体会...................................................................................................................................7参考文献...........................................................................................................................................8附录..................................................................................................................................................8电梯模拟系统1.引言现代社会水平发展迅速,楼房越建越高,电梯就成为了人们生活中必不可少的工具,因此对电梯的运行系统进行了解研究是有一定意义的。本文用在c++的环境下模拟了电梯的运行情况,对电梯的运行情况有了一定的了解。2.需求分析(1)以堆栈Lift模拟电梯,以队Qup[],Qdnow[]两个数组模拟等候电梯的人排的队。进入系统的人进入队列,进入电梯的人从队列中删除并且进入栈中,离开系统的人也从队列中删除。(2)用户输入楼的的层数,运行的时间,以及进入电梯中人的信息,系统将自动运行,直到把所有的人送到要去的地方,或者到运行的时间为止。(3)系统有自动与手动两种操作方式,由用户自己选择,系统中的显示均是以图形模拟的方式显示的。(4)系统能够在运行时输出相关的人的各种信息,如来自哪一层,要去哪一层,用了多少时间等等。3.概要设计3.1数据结构描述设定栈的抽象数据类型定义:ADTStack{数据对象:}0,,,2,1,{nniElemSetaDi数据关系:},,2,1,,|,{111niDaaaaRiiii约定na端为栈顶,1a端为栈底。}ADTStack设定队的抽象数据类型定义:ADTQueue{数据对象:}0,,,2,1,{nniElemSetaDi数据关系:},,2,1,,|,{111niDaaaaRiiii约定na端为队列头,1a端为队列尾。}ADTQueue3.2模块设计(1)全局变量的定义(2)人具体情况的定义(3)队、栈的类型(4)电梯类型(5)系统类的定义3.3电梯的模拟流程图编程序前要了解电梯的运行情况,作出具体的流程图,以便更好的编写程序。下面给出的是电梯简单的运行模拟图。电梯初始化判断函数是否有人上或高层有人下是否有人向下或低层有人上电梯向上有人去低层或低层有人下电梯向下有人去高层或高层有人下电梯向下是否是是否电梯向上是图1电梯的模拟运行流程图4详细设计及实现4.1全局变量的定义对于全局来说,需知道最多楼层和某一时间电梯所在楼层、电梯状态,首先定义出这些变量,Floor_now定义电梯所在楼层,state定义电梯状态,MaxF定义最多楼层,t1、t2定义时间变量。intid;intR_W;intimgF;intFloor_now;//电梯所在楼层intstate;//电梯状态intt1;//时间变量intt2;intMaxF;//最多楼层intt;inttt;charhand_auto;4.2人具体情况的定义使用电梯的人要求有具体的所在楼层和目的楼层,根据具体情况乘坐电梯的人都有一定的容忍时间,一旦等电梯花费时间超过限度,人将放弃坐电梯,maxwaittime定义最长容忍时间,Nfloor定义所在楼层,ToFloor定义为乘坐电梯者的目的楼层。typedefstructpop{intmaxwaittime;//最长容忍时间intNFloor;//所在楼层intToFloor;//目的楼层intID;intontim;}people;4.3队、栈的类型4.4.电梯类型每个使用电梯的人都在一个固定的层等待电梯,都有一个目标层。电梯有最大的承载数,电梯停下的时候有人出入,也需要记录。电梯何时停下需要有函数判断,Maxman定义最大承载数,Liftman定义为电梯里的人,stop[50]定义需要停的楼层,run()是关于电梯运行的函数,wait()是关于电梯是否静止等待的函数,Stop()是关于电梯在楼层间停靠的函数,open_shut()是电梯开门关门的函数。在run()运行函数中调用Stop()函数判断是否有停靠的楼层,如果有在调用open_shut()电梯开门关门的函数。classlift//电梯类{public:intMaxman;//最大承载数intLiftman;//电梯里的人intstop[50];//需要停的楼层voidrun();//电梯运行voidwait();//电梯静止等待voidStop();//电梯在楼层间停靠voidopen_shut();//电梯开门关门};liftLift;voidlift::open_shut()//电梯开关门函数voidlift::Stop()//判断电梯停靠的函数voidlift::wait()//电梯等待函数voidlift::run()//运行函数4.5系统类的定义先对系统进行初始化定义,在模拟系统中,可以系统随机产生,也可以人为的设定。initQ()函数初始化上下行队列,initF()初始化楼层,initL()初始化电梯,voidleave(people*)函数表示人离开系统。syst::State()函数首先判断电梯状态,电梯停或向上,从高层开始判断,判断是否有人去高层或高层有人想上若高层无人等待乘电梯也没人去高层电梯向下,电梯停靠在目标层,打开电梯门。在判断电梯状态,电梯开始循环工作。在电梯的模拟系统中用syst::img(intos)函数通过图形模拟输出,用syst::Word(intcon=1)输出状态语句,使得模拟结果更加形象易懂。lasssyst{public:voidrand_man(int);//随即产生人voidinitQ();//初始化上下行队列voidinitF();//初始化楼层voidinitL();//初始化电梯voidinitAll();//构造函数voidleave(people*);//人离开系统voidout_in();voidState();voidhelp();voidCout_S();voidimg(int);voidWord(int);syst(){f=0;man=0;}voidsyst::leave(people*p)voidsyst::out_in()voidsyst::rand_man(intn=8)voidsyst::initAll()voidsyst::initF()voidsyst::initL()voidsyst::initQ()voidsyst::Cout_S()voidsyst::img(intos)//图形模拟输出voidsyst::Word(intcon=1)//输出语句voidmain()//主函数{system(pause);sys.help();sys.initAll();sys.rand_man();while(1){Lift.run();Lift.wait();}}5.调试分析1.程序中主要函数只有一个state函数,也是核心程序,它比较难,因为考虑的方面比较多,不可能一次就搞定,要经过很多次的运行原型程序才能不断的完善。2.队栈的操作在程序中是关键之处,不过并没有用到队栈的全部操作,所以,文中只是写了部分操作的代码。3.程序中大部分的代码是输出函数部分,因为论文中主要是以图模拟的方式显示结果,所以程序中的输出全
本文标题:数据结构设计--电梯模拟系统
链接地址:https://www.777doc.com/doc-6171529 .html