资源描述:
《数据结构课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、安徽科技学院计算机科学与技术专业数据结构课程设计报告学院:安徽科技学院班级:**********组长:zhuimeng340学号:********成员:*******************************开课学期:2008.12.8----2008.12.22实验日期:2008.12.8----2008.12.22指导教师:*************************实验名称电梯模拟实验场所南实验楼六楼1.概要设计:------>1.问题描述设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”构成的集合,虽
2、然它们彼此交互作用,但它们的行为是基本独立的。在离散的模拟中,以模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。-------->2.基本要求(1)模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。(2)乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。(
3、3)模拟时钟从0开始.时间单位为0.1秒。人和电梯的各种动作均要耗费一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t,如果电梯在某层静止时间超过300t,则驶回1层候命。(4)按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列-------->3.与电梯有关的信息以及功能的实现1)相关库文件#include#include#include//计算时间用的#include#include
4、//开辟空间有的2)电梯的相关信息的定义intdijiceng;//电梯所在层数intrenshu;//需要进入或出去的人数floatmnsj;//需进入电梯的人向电梯发出命令的时间floatt=0.1;//设置单位时间为0.1秒3)数据存储的结构程序设计采用的数据结构是队列,存储方式是链式存储。练队列的存储结构描述为:typedefstructQNode{intdijiceng;intrenshu;floatmnsj;structQNode*next;}QNode,*QueuePtr;//定义一个练队列,定义其结构体typedef
5、struct{QueuePtrfront;//队头指针QueuePtrrear;//队尾指针}LinkQueue;------------->4功能模块简介AintInitQueue(LinkQueue&Q)初始化队列(Q)这是建立队列重要的一步,要注意给头队尾开辟空间。BintEnQueue(LinkQueue&Q,intx,inty,floatz)入队列,将层数人数时间等信息存入队列中,并保存电梯的相关信息。Cintquchuyuansu(LinkQueue&Q,intfloor)取信息,将队列中对头的信息取出,检查你要服务的命令是否正确。Dint
6、DeQueue(LinkQueue&Q,intx,inty,floatz)删除对头信息,将队列中执行过的信息删除并执行下个命令。Efloatup(intfloor,intx,floattime)floatdown(intfloor,intx,floattime)判断电梯是上行还是下行,并计算到达目的楼层的时间。-------->5程序的功能1.电梯不运行是停在本垒层即第一层;2.进电梯的服务;3.出电梯的服务;4.电梯的上行下行;5.当前运行任务的输出;6.运行过程中时间的计算。---------->流程图1,主函数需要完成的任务主函数进电梯服务信息存
7、入名为M的栈中出电梯服务信息存入名为Q的栈中电梯开门关门时间的计算对进栈,出栈,上行下行等函数的调用是否需要服务的判断2.该程序运行流程主函数判断是否需要服务(serive==1)程序不运行,电梯不提供服务。假如serive=0Serive=1,程序运行,电梯提供服务。输入有几层需要服务n=?输入需要服务层的信息(进电梯:层数,人数,命令时间)调用EnQueue(LinkQueue&Q,intx,inty,floatz)函数调用EnQueue(LinkQueue&Q,intx,inty,floatz)函数输入需要服务层的信息(出电梯:层数,人数,命令时
8、间)显示将要需要服务的信息,调用intquchuyuansu(LinkQueue&Q,intf