




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java课程设计报告组号:第四组课题名称:模拟电梯调度班级:09计一课题组成员姓名及学号:09030101课程设计日期:2011.6.202011.6.24地点:秋白楼B720一正文 1)课程设计目的与要求 目的掌握线程的应用及线程在多媒体中的使用,了解线程的运行机制和线程的新建、就绪、运行、挂起、死亡五种状态,对线程由新的认识和巩固。熟练java的动画编程,理解repaint()方法的调用过程及如何通过改写update()方法和双缓冲技术消除动画中出现的闪烁现象。理解java的容器和组件的应用。掌握java的事件处理机制:实现ActionListener接口,对事件源添加侦听器,实现acti
2、onPerformed()方法用以处理事件源所产生的事件。另外使组员能够针对具体的有一定代表性的小型综合应用类课题设计、分析,全面掌握面向对象的思想、JAVA语言的应用技巧、方法,从而使组员进一步理解和掌握利用JAVA开发综合系统的过程,学会用java开发工具,同时培养组员的合作意识和团队精神,培养学生对实际系统的采用面向对象的方法进行分析与设计能力,从而使学生提高JAVA语言运用与开发的综合能力。 需求分析模拟电梯调度:有一栋三层的楼房,楼内有三个电梯。要求电梯实现可以正常上下,和到达目的楼层后即停留并且实现开门及关门动作。电梯需有多层停留功能即:当对同一个电梯需要其在多层都有下客时,电梯要
3、在有下客动作的楼层停留然后自动去下一个有下客动作的楼层,而不需要乘客在次发出请求。电梯具有距离发出请求的楼层最近的电梯响应请求的功能即:当某一楼层有乘客需要使用电梯时,由距离该楼层最近的电梯去响应,而不是任意一个电梯都可以响应。(注:当存在距离该楼层最近的电梯且该电梯正在远离该楼层运动时该电梯不响应,当存在多个电梯距离该楼层最近时由编号低的电梯响应而不是全都响应。2)本人在课程设计中承担的任务 在课程设计中我主要负责事件处理,并判断该事件是何种事件,需要做出怎样的响应。同时确定各电梯的工作状态,以及判断该事件是否应该得到响应若响应该事件那么应由哪一个电梯去响应。当然我所做的还有判断哪一个电梯距
4、离发出请求的楼层最近,此时由距离该楼层最近的电梯响应请求,若距离最近的电梯处于远离该楼层的运动状态时则由下一个最近的电梯响应,若存在多个电梯距离最近,那么由编号低的响应。总的来说我的工作是考虑各种情况下给控制电梯各种动作(上、下、开门、关门、电梯响应、楼层)的变量赋予正确的值以实现电梯的正常运作。3)程序中使用的数据结构及符号说明 由于电梯有三个楼层也有三层,所以要实现各电梯之间互不影响就需要由不同的变量去控制电梯的动作。这也是为什么程序中变量较多的原因。下面是对本段程序中使用到得变量的解释说明:Object str:获取的组件信息赋予str(按钮名)。String st:获取的组件信息赋予s
5、t(按钮上的内容)。int a,b,c:三个临时变量,主要用于记录各电梯当前位置(y1,y2,y3)与产生请求的楼层的差值,用以判断哪一个电梯距离该楼层最近。int y1,y2,y3:记录各电梯的位置,同时通过加1减1控制电梯的上下,y1对应第一个电梯y2对应第二个电梯y3对应第三个电梯。int number:记录电梯有效信息,有4个元素(本程序中第一个元素未用),number1=1时说明第一个电梯响应number2=2时说明第二个电梯响应number3=3时说明第三个电梯响应。number值为0时未响应即电梯未有动作。int s:控制电梯的上下动作,s=1时电梯向上运动s=-1电梯向下运动。
6、int n1,n2,n3:记录各电梯中所响应的楼层信息,n1、n2、n3各对应一二三号电梯,且各有三个元素各对应于一二三层楼。n1、n2、n3中元素值为1说明对应楼层有响应即电梯到达该楼层时要停留并开关门。值为0说明无响应。boolean moving1,moving2,moving3:记录电梯的状态,moving1、moving2、moving3各对应一二三号电梯。值为true时电梯处于动作状态(上下或开关门),值为false时电梯处于静止状态。boolean open1,open2,open3:电梯的开门关门控制变量,open1、open2、open3各控制一二三号电梯的开关门动作。值为t
7、rue时允许电梯开门,值为false时允许电梯关门。int a1,a2,a3,b1,b2,b3,c1,c2,c3:记录各电梯响应的楼层信息,与n1,n2,n3用处差不多,但不可少。a1、a2、a3分别对应n10、 n11、n12以此类推b,c对应n2,n3。其主要目的是当电梯到达最后一个目的楼层后将电梯的有效信息number的值设置为0。这是n1,n2,n3无法做到的,应为在到达相应的目的楼层后n1,n2,n3中的相应值也就设置为0了。Button bt1 :各组件(各楼层及各电梯的按钮)。4)程序流程图由于此程序中情况众多,因此流程图中的判断框较多也较复杂。下面给出一个较简单的流程图。取得按
8、钮名NYYYNN开始一层二层三层得到最近电梯NYY取得按钮内容updownS=1S=-1a,b,c取得对应值n1,n2,n3赋值结束5)程序运行时的初值和运行结果 程序开始运行时,未点击任何按钮所以对于我的程序部分来说不存在初始值,只有y1=440,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=false,moving3=false n1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,0此时三个电梯均处于第一层。下面分几种情况分别说明一下程序实现的电梯调度的过程:.若开始时
9、点击bt1即第一层的up按钮,则通过计算得出三个电梯均距离第一层最近,所以由一号电梯响应请求。此时open1=true,number1=1随即一号电梯门打开并关上,此时点击一号电梯上的楼层按钮,比如bt5即第三层。此时各变量值为:S=1y1=440,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=true,moving2=false,moving3=falsen1=0,0,1,n2=0,0,0,n3=0,0,0,number=0,1,0,0随即电梯向上移动到达三楼后open1=true,number1=1开门并关门此时:S=1y1
10、=140,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=false,moving3=falsen1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,0此时再点击bt1,则通过计算得出二号和三号电梯距离第一层最近,所以由二号电梯响应请求。此时open2=true,number2=2随即二号电梯门打开并关上,此时点击二号电梯上的楼层按钮,比如bt24即第二层。此时各变量值为:S=1y1=140,y2=440,y3=440open1=false,open2=false,open3=
11、falsemoving1=false,moving2=true,moving3=falsen1=0,0,0,n2=0,1,0,n3=0,0,0,number=0,0,2,0随即电梯向上移动到达二楼后open2=true,number2=2开门并关门此时:S=1y1=140,y2=290,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=false,moving3=false n1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,0此时点击bt21即第二层的up按钮,则通过计算的出二号电梯距离第
12、二层最近,所以由二号电梯响应请求。此时open2=true,number2=2随即二号电梯门打开并关上,此时点击二号电梯上的楼层按钮,比如bt25即第三层。此时各变量值为:S=1y1=140,y2=290,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=true,moving3=false n1=0,0,0,n2=0,0,1,n3=0,0,0,number=0,0,2,0随即电梯向上移动到达三楼后open2=true,number2=2开门并关门此时:S=1y1=140,y2=140,y3=440open1=fals
13、e,open2=false,open3=falsemoving1=false,moving2=false,moving3=false n1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,0.若开始时点击bt1,则通过计算得出三个电梯均距离第一层最近,所以由一号电梯响应请求。此时open1=true,number1=1随即一号电梯门打开并关上,此时点击一号电梯上的楼层按钮,比如bt5即第三层。此时各变量值为:S=1y1=440,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=true,moving2=fa
14、lse,moving3=falsen1=0,0,1,n2=0,0,0,n3=0,0,0,number=0,1,0,0随即电梯开始向上移动,若在一号电梯向上移动并且过了第二层但没到第三层时点击bt21即二楼的up按钮,则经过计算得到一号电梯距离二楼最近,但是由于一号电梯正处于远离二楼的运动状态中所以一号电梯不响应请求,由二号电梯响应,此时:S=1290y1140,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=true,moving2=true,moving3=falsen1=0,0,1,n2=0,1,0,n3=0,0,0,numb
15、er=0,1,2,0随即二号电梯向上移动,显然一号电梯比二号电梯早到达目的楼层,当一号电梯到达目的楼层时open1=true,number1=1,open2=false,number2=2,一号电梯开门并关门此时:S=1y1=140,290y2440,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=true,moving3=false n1=0,0,0,n2=0,1,0,n3=0,0,0,number=0,0,2,0当二号电梯到达目的楼层时open2=true,number2=2,此时二号电梯开门并关门此时:S=1y
16、1=140,y2=290,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=false,moving3=false n1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,0 .若开始时点击按钮bt1,则由一号电梯响应请求此时open1=true,number1=1随即一号电梯门打开并关上,此时点击一号电梯上的楼层按钮,比如bt5和bt4即第三层和第二层。此时各变量值为:S=1y1=440,y2=440,y3=440open1=false,open2=false,open3=falsemovin
17、g1=true,moving2=false,moving3=falsen1=0,1,1,n2=0,0,0,n3=0,0,0,number=0,1,0,0随即电梯开始向上移动,到达二楼后此时open1=true,number1=1,n1=1,n12=1电梯开始开门并关门此时:S=1y1=290,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=true,moving2=false,moving3=falsen1=0,0,1,n2=0,0,0,n3=0,0,0,number=0,1,0,0随即电梯又开始向上移动,到达三楼即最后一个目的楼
18、层后open1=true,number1=1电梯开门并关门此时:S=1y1=140,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=false,moving3=falsen1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,0 .若开始时点击bt22即第一层的down按钮,则通过计算得出三个电梯均距离第一层最近,所以由一号电梯响应请求。此时open1=false,number1=1随即电梯开始向上移动,此时各变量值为:S=1y1=440,y2=440,y3=440open1=f
19、alse,open2=false,open3=falsemoving1=true,moving2=false,moving3=falsen1=0,1,0,n2=0,0,0,n3=0,0,0,number=0,1,0,0到达二楼时open1=true,number1=1电梯开门并关门,此时点击二号电梯上的楼层按钮,比如bt3即一楼此时各变量值为:S=-1y1=290,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=true,moving2=false,moving3=falsen1=1,0,0,n2=0,0,0,n3=0,0,0,n
20、umber=0,1,0,0随即电梯开始向下运动,到达一楼时open1=true,number1=1电梯开门并关门,此时:S=-1y1=440,y2=440,y3=440open1=false,open2=false,open3=falsemoving1=false,moving2=false,moving3=falsen1=0,0,0,n2=0,0,0,n3=0,0,0,number=0,0,0,06)代码分析 int a=0,b=0,c=0; str=e.getSource(); /获取所点击的按钮名 if(str=bt1) /发出请求的楼层是1楼 a=(y1-440); /计算一号电梯距离
21、1楼得距离 if(moving1=true&a0) /一号电梯处于远离1楼得运动状态时a=1000即 a=1000; 保证a最大 a=Math.abs(a); b=(y2-440); /计算二号电梯距离1楼得距离 if(moving2=true&b0) /一号电梯处于远离1楼得运动状态时a=1000即 b=1000; 保证b最大 b=Math.abs(b); c=(y3-440); /计算二号电梯距离1楼得距离 if(moving3=true&c0) /一号电梯处于远离1楼得运动状态时a=1000即 c=1000; 保证c最大 c=Math.abs(c); if(str=bt21|str=bt
22、22)/发出请求的楼层是2楼 a=(y1-290); if(moving1=true&a0) a=1000; /保证a最大 a=Math.abs(a); b=(y2-290); if(moving2=true&b0) b=1000; /保证b最大 b=Math.abs(b); c=(y3-290); if(moving3=true&c0) c=1000; /保证c最大 c=Math.abs(c); if(str=bt32) /发出请求的楼层是3楼 a=(y1-140); if(moving1=true&a0) a=1000; a=Math.abs(a); b=(y2-140); if(movi
23、ng2=true&b0) b=1000; b=Math.abs(b); c=(y3-140); if(moving3=true&cb) /进行比较最终得出a,b,c中的最小值 if(bc) number3=3; /若c最小则将3赋予number3即三号电梯响应请求 if(bc) number2=2; if(b=c) number2=2; if(ac) number3=3; if(ac) number3=3; if(a140) /一号电梯在三楼以下 s=1; /一号电梯向上 n12=1; /记录三楼有请求 if(number2=2&(str=bt32) /二号电梯响应且请求楼层为三层 if(y2
24、140) s=1; n22=1; if(number3=3&(str=bt32) /三号电梯响应且请求楼层为三层 if(y3140) s=1; n32=1; 以上一段程序主要是在当确定了响应请求的电梯后,找出请求发出的楼层。并通过判断电梯的位置来决定电梯是否需要向上或者向下到达该楼层,同时记录该楼层。这一段只是请求楼层为3楼时的代码,请求楼层为1楼2楼时的代码与其相似,这里就不再列出。 if(str=bt1)&(y1=440|y2=440|y3=440) /请求楼层为1楼,且有电梯处于该楼层 if(number1=1&moving1=false) /若1号电梯响应且其处于静止状态 open1=
25、true; /1号电梯允许开门 if(number2=2&moving2=false) /若2号电梯响应且其处于静止状态 open2=true; /2号电梯允许开门 if(number3=3&moving3=false) /若3号电梯响应且其处于静止状态 open3=true; /3号电梯允许开门 if(str=bt21|str=bt22)&(y1=290|y2=290|y3=290) /请求楼层为2楼,且有电梯处于该楼层 if(number1=1&moving1=false) open1=true; if(number2=2&moving2=false) open2=true; if(number3=3&moving3=false) open3=true; if(str=bt32)&(y1=140|y2=140|y3=140) /请求楼层为2楼,且有电梯处于该楼层 if(number1=1&moving1=false) open1=true; if(number2=2&moving2=false) open2=true; if(number3=3&moving3=false) open3=true; 以上一段程序主要是考虑当在发出请求的楼层存在静止的电梯时,直接由该电梯响应请求并立即允许该电梯开门。上面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 亲情中华活动方案
- 人与自然亲子活动方案
- 人保宣传活动方案
- 人员关怀活动方案
- 人大工作年初活动方案
- 池州职业技术学院《经典导读》2023-2024学年第二学期期末试卷
- 江西中医药高等专科学校《当代西方社会学理论》2023-2024学年第二学期期末试卷
- 内江卫生与健康职业学院《药理学理论》2023-2024学年第二学期期末试卷
- 喀什理工职业技术学院《机械程训练》2023-2024学年第二学期期末试卷
- 西南医科大学《护理与医疗保健》2023-2024学年第二学期期末试卷
- 《德意志意识形态》讲解课件
- 电力拖动自动控制系统-运动控制系统期末试卷附答案共6套
- 医疗器械随货同行单模版
- 康复科实习生入科教育
- GB∕T 17466.1-2019 家用和类似用途固定式电气装置的电器附件安装盒和外壳 第1部分:通用要求
- 青岛市 主要片区 项目 拆迁补偿方案 链接
- Q∕GDW 11612.2-2018 低压电力线高速载波通信互联互通技术规范 第2部分:技术要求
- 《国际贸易实务》全书电子教案完整版教学设计
- JTT888-2020公共汽车类型划分及等级评定_(高清-最新)
- DR曝光参考条件
- 房地产营销策略外文翻译文献
评论
0/150
提交评论