数据结构课程设计实习报告(模拟电梯)-附源代码[精品].docVIP

数据结构课程设计实习报告(模拟电梯)-附源代码[精品].doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计实习报告(模拟电梯)-附源代码[精品]

数据结构课程设计报告 学号:****** 班级:****** 姓名:****** 指导老师:****** 日期:2015 题号 题目:电梯模拟 需求分析 模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。 乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。 模拟时钟从0开始计时,时间单位t=0.1秒。人和电梯的各种动作均要消耗一定的时间单位,规定:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。 电梯调度规则: 就近原则:电梯的主要调度策略是首先响应沿当前行进方向上最近端的请求直到满足最远端请求。若该方向上无请求时,就改变移动方向。 在就近原则无法满足的情况下,首先满足更高层的请求。 电梯的最大承载人数为12人,电梯人数达到12人后,在有人出电梯之前,不接受进入电梯的请求。 乘客上下电梯时先出后进。出电梯的时间固定是25t(与人数无关),进电梯时乘客是按队列的顺序依次进入,每次只能进入一人且每个人花费的时间都为25t。 电梯在关门期间(电梯离开之前)所在层提出请求的乘客同样允许进入。 电梯的运行速度为2t/层。 【基本要求】 根据提供的文本文档(包含随机的乘电梯人数),通过自己编的程序读取文件,获得乘电梯的需求,按时序输出系统状态的变化过程,即发生的全部人和电梯的动作序列。 【选作内容】 电梯模似器具有一个简单的图形用户界面。用动画显示电梯的升降,人进出电梯。设计有下列对象:电梯、人、电梯控制板及其上各种按钮、定时器等。 【实现提示】 每层设置一个队列,用来存储从文件中读取的当前层的乘客信息,并按时间的先后顺序进行排序。 附:测试数据(以txt文档读取) 2.设计 2.1 设计思想 数据与操作的特性 模拟电梯,以实际生活中的电梯为参考,应有两个对象:电梯、乘客。对于人这一对象,应包含乘客自身的信息;对于电梯这一对象,应具备添加乘客、删除乘客、访问乘客信息(获取乘客的去向等)、上升、下降、开关门等基本操作来实现相应的功能。此外,对于等候在电梯外面的乘客队列,应有添加乘客、删除乘客(进入电梯或等待超时离开)、获取乘客信息(如到达时间等)等基本操作以实现相应的功能。 整个系统运行的时间是以电梯的运作为轴,往前推进,知道服务完成,返回本垒层候命,此时程序结束(当然,理论上程序是无期限地执行下去);系统的空间开发与电梯层数、乘客人数成正比,电梯层数确定后,空间开发便与请求服务的乘客数有关,并处于动态开发(“人来人去”,空间的开辟与释放是动态的)。 可见,时空的要求不是特别紧迫,资源的开发不会很大,效率也会有所保证。 数据结构设计 由(1)中的数据与操作的特性分析,应用类与对象、抽象数据类型(ADT)的设计思想,下面详细说明这两点。 电梯与乘客都设计为类,其操作涉及到队列、链表的数据结构。对于乘客,每层设置一个队列,用来存储从文件中读取的当前层的乘客信息,并按先来后到的顺序进行排序。对于电梯里面的乘客,我是用一个链表来存储的。且这些数据结构均采用抽象数据类型,在使用的时候生成需要的实例。 涉及的数据结构: 这两种数据结构大体上是相同的,只是操作上有所!他们的逻辑结构与物理结构图示如下: 电梯类以及相应的功能函数: 乘客类以及相应的功能函数: 算法设计 系统的总体设计思路: 首先,在电梯运作这一模块,“三个已知”才能保证电梯的正常运作,“三个已知”分别是:电梯当前楼层、电梯运作方向(U、D表示,分别为上、下)以及有请求的楼层。因为电梯调度是这样的(以例子来说明):假如当前电梯方向是向上,那么电梯就会在该方向上一直,碰到请求层则服务,服务完继续向上,直到某一层,当且仅当该层以上的楼层没有请求(请求包括上电梯请求和下电梯请求),电梯才会停止(当下面也没有请求时)或者换方向向下运行(下方有请求);向下的情形跟向上是一样的。所以,电梯调度算法的一个重要“已知”就是其运作方向,应一直有所记录。 其次,电梯里面的乘客这一模块,我记录在一个单独的链表里,电梯类的数据成员里只记录该链表的大小(即为梯内人数),而没有乘客这一对象。 此外,等候在每层的乘客,均存储在每层的等待队列之中。 系统的信息交流: 电梯与乘客链表(记录梯内乘客)之间发生的信息交流就是乘客数以及程序去向楼层这些数据;乘客链表与等待队列之间发生的信息交流是有人进电梯时,将该人添加到乘客链表中并从等待队列中删除;电梯与等待队列之间发生的信息交流是电梯当前

您可能关注的文档

文档评论(0)

bodkd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档