java课程设计报告(模拟电梯系统)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java课程设计报告

组号:第四组

课题名称:模拟电梯调度

班级:09计一

课题组成员姓名及学号:

09030101

课程设计日期:2011.6.20-2011.6.24

地点:秋白楼B720

一.正文

1)[课程设计目的与要求]

○1目的

掌握线程的应用及线程在多媒体中的使用,了解线程的运行机制和线程的新建、就绪、运行、挂起、死亡五种状态,对线程由新的认识和巩固。熟练java的动画编程,理解repaint()方法的调用过程及如何通过改写update()方法和双缓冲技术消除动画中出现的闪烁现象。理解java的容器和组件的应用。掌握java的事件处理机制:实现ActionListener接口,对事件源添加侦听器,实现actionPerformed()方法用以处理事件源所产生的事件。另外使组员能够针对具体的有一定代表性的小型综合应用类课题设计、分析,全面掌握面向对象的思想、JAVA语言的应用技巧、方法,从而使组员进一步理解和掌握利用JAVA开发综合系统的过程,学会用java开发工具,同时培养组员的合作意识和团队精神,培养学生对实际系统的采用面向对象的方法进行分析与设计能力,从而使学生提高JAVA语言运用与开发的综合能力。

○2需求分析

模拟电梯调度:有一栋三层的楼房,楼内有三个电梯。要求电梯实现可以正常上下,和到达目的楼层后即停留并且实现开门及关门动作。

电梯需有多层停留功能即:当对同一个电梯需要其在多层都有下客时,电梯要在有下客动作的楼层停留然后自动去下一个有下客动作的楼层,而不需要乘客在次发出请求。

电梯具有距离发出请求的楼层最近的电梯响应请求的功能即:当某一楼层有乘客需要使用电梯时,由距离该楼层最近的电梯去响应,而不是任意一个电梯都可以响应。(注:当存在距离该楼层最近的电梯且该电梯正在远离该楼层运动时该电梯不响应,当存在多个电梯距离该楼层最近时由编号低的电梯响应而不是全都响应。

2)[本人在课程设计中承担的任务]

在课程设计中我主要负责事件处理,并判断该事件是何种事件,需要做出怎样的响应。同时确定各电梯的工作状态,以及判断该事件是否应该得到响应若响应该事件那么应由哪一个电梯去响应。当然我所做的还有判断哪一个电梯距离发出请求的楼层最近,此时由距离该楼层最近的电梯响应请求,若距离最近的电梯处于远离该楼层的运动状态时则由下一个最近的电梯响应,若存在多个电梯距离最近,那么由编号低的响应。总的来说我的工作是考虑各种情况下给控制电梯各种动作(上、下、开门、关门、电梯响应、楼层)的变量赋予正确的值以实现电梯的正常运作。

3)[程序中使用的数据结构及符号说明]

由于电梯有三个楼层也有三层,所以要实现各电梯之间互不影响就需要由不同的变量去控制电梯的动作。这也是为什么程序中变量较多的原因。

下面是对本段程序中使用到得变量的解释说明:

Object str:获取的组件信息赋予str(按钮名)。

String st:获取的组件信息赋予st(按钮上的内容)。

int a,b,c:三个临时变量,主要用于记录各电梯当前位置(y1,y2,y3)与产生请求的楼层的差值,用以判断哪一个电梯距离该楼层最近。

int y1,y2,y3:记录各电梯的位置,同时通过加1减1控制电梯的上下,y1对应第一个电梯y2对应第二个电梯y3对应第三个电梯。

int number[]:记录电梯有效信息,有4个元素(本程序中第一个元素未用),number[1]=1时说明第一个电梯响应number[2]=2时说明第二个电梯响应

number[3]=3时说明第三个电梯响应。number[]值为0时未响应即电梯

未有动作。

int s:控制电梯的上下动作,s=1时电梯向上运动s=-1电梯向下运动。

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各控

制一二三号电梯的开关门动作。值为true时允许电梯开

门,值为false时允许电梯关门。

int a1,a2,a3,b1,b2,b3,c1,c2,c3:记录各电梯响应的楼层信息,与n1[],n2[],n3[]

用处差不多,但不可少。a1、a2、a3分别对应n1[0]、

n1[1]、n1[2]以此类推b,c对应n2,n3。其主要目

的是当电梯到达最后一个目的楼层后将电梯的有

效信息number[]的值设置为0。这是

n1[],n2[],n3[]无法做到的,应为在到达相应的目

的楼层后n1[],n2[],n3[]中的相应值也就设置为

0了。

Button bt1···:各组件(各楼层及各电梯的按钮)。

4)[程序流程图]

由于此程序中情况众多,因此流程图中的判断框较多也较复杂。下面给出一个较简单的流程图。

5)[程序运行时的初值和运行结果]

程序开始运行时,未点击任何按钮所以对于我的程序部分来说不存在初始值,只有y1=440,y2=440,y3=440

open1=false,open2=false,open3=false

moving1=false,moving2=false,moving3=false

n1[]={0,0,0},n2[]={0,0,0},n3[]={0,0,0},number[]={0,0,0,0}

此时三个电梯均处于第一层。

下面分几种情况分别说明一下程序实现的电梯调度的过程:

○1.若开始时点击bt1即第一层的up按钮,则通过计算得出三个电梯均距离第一层最

近,所以由一号电梯响应请求。此时open1=true,number[1]=1随即一号电梯门打开并关上,此时点击一号电梯上的楼层按钮,比如bt5即第三层。此时各变量值为:

S=1

y1=440,y2=440,y3=440

open1=false,open2=false,open3=false

moving1=true,moving2=false,moving3=false

n1[]={0,0,1},n2[]={0,0,0},n3[]={0,0,0},number[]={0,1,0,0}

随即电梯向上移动到达三楼后open1=true,number[1]=1开门并关门此时:

S=1

y1=140,y2=440,y3=440

open1=false,open2=false,open3=false

moving1=false,moving2=false,moving3=false

n1[]={0,0,0},n2[]={0,0,0},n3[]={0,0,0},number[]={0,0,0,0}

此时再点击bt1,则通过计算得出二号和三号电梯距离第一层最近,所以由二号电梯响应请求。此时open2=true,number[2]=2随即二号电梯门打开并关上,此时点击二号电梯上的楼层按钮,比如bt24即第二层。此时各变量值为:

S=1

y1=140,y2=440,y3=440

open1=false,open2=false,open3=false

moving1=false,moving2=true,moving3=false

n1[]={0,0,0},n2[]={0,1,0},n3[]={0,0,0},number[]={0,0,2,0}

随即电梯向上移动到达二楼后open2=true,number[2]=2开门并关门此时:

S=1

y1=140,y2=290,y3=440

open1=false,open2=false,open3=false

moving1=false,moving2=false,moving3=false

n1[]={0,0,0},n2[]={0,0,0},n3[]={0,0,0},number[]={0,0,0,0}

此时点击bt21即第二层的up按钮,则通过计算的出二号电梯距离第二层最近,所以由二号电梯响应请求。此时open2=true,number[2]=2随即二号电梯门打开并关上,此时点击二号电梯上的楼层按钮,比如bt25即第三层。此时各变量值为:

S=1

y1=140,y2=290,y3=440

open1=false,open2=false,open3=false

相关文档
最新文档