java中demo接人,java电梯仿真(java实验设计)源程序清单

//Main.java

import java.util.Scanner;

import java.util.Timer;

import java.util.TimerTask;

import java.util.Random;

public class Main{

static int m,n;

int time=0; //计时,判断人的出现时间

static int OVER=0; //判断所有的模拟结束,over表示结束的人数

DianTi E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10;

static DianTi d[]=new DianTi[10];

static People p[]=new People[1001]; //人的对象数组,

int t[]; //存放各个人出现的时间

int i=0; //创建人时,需要记录下已经出现的人数

public static void main(String args[]){

new Main();

}

public Main(){

Scanner in=new Scanner(System.in);

System.out.println("请输入电梯上乘客最大人数:");

DianTi.Max=in.nextInt(); //输入最大人数 Max 10-18

System.out.print("请输入产生的乘客人数:\n");

n=in.nextInt(); //n个人,在m分钟 n:0-1000,m:0-10分钟

System.out.print("请输入本模拟过程人出现的总时间:\n");

m=in.nextInt();

System.out.print("请输入电梯走一层所用的时间:\n");

DianTi.S=in.nextInt(); //电梯走的速度:每秒S层1-5

System.out.print("请输入每个人上下电梯的时间:\n");

People.T=in.nextInt(); //每个人上下电梯用时2-10s

System.out.println("信息如下:最大乘客量:"+DianTi.Max+";电梯的速度是:每层"+DianTi.S+"秒");

init();

time();

//System.out.println("OVER");

}

public void init(){ //初始化电梯和随机时间产生人

//分别创建是个电梯,初始化可以到达的楼层号

E0=new DianTi();

int k=0;

while(k==0){k=(int) (40*Math.random());}

E0.lev=k; //电梯初始状态为任意随机楼层

E1=new DianTi();

k=0;

while(k==0){k=(int) (40*Math.random());}

E1.lev=k;

E2=new DianTi();

E3=new DianTi();

for(int i=2;i<25;i++)

{ E2.a[0][i]=0;

E3.a[0][i]=0;

}

k=0;

while(k==0||(k>1&&k<25)){k=(int) (40*Math.random());}

E2.lev=k;

k=0;

while(k==0||(k>1&&k<25)){k=(int) (40*Math.random());}

E3.lev=k;

E4=new DianTi();

E5=new DianTi();

for(int i=26;i<41;i++)

{ E4.a[0][i]=0;

E5.a[0][i]=0;

}

k=0;

while(k==0||k>25){k=(int) (40*Math.random());}

E4.lev=k;

k=0;

while(k==0||k>25){k=(int) (40*Math.random());}

E5.lev=k;

E6=new DianTi();

E7=new DianTi();

for(int i=1;i<20;i++)

{

E6.a[0][2*i+1]=0;

E7.a[0][2*i+1]=0;

}

k=2*(int) (20*Math.random());

if(k==0)E6.lev=1;

else E6.lev=k;

k=2*(int) (20*Math.random());

if(k==0)E7.lev=1;

else E7.lev=k;

E8=new DianTi();

E9=new DianTi();

for(int i=1;i<=20;i++)

{ E8.a[0][2*i]=0;

E9.a[0][2*i]=0;

}

k=2*(int) (20*Math.random())+1;

E8.lev=k;

k=2*(int) (20*Math.random())+1;

用面向对象方法和面向对象程序设计语言,实现满足下述要求的一个高层建筑电梯活动 仿真程序。 问题域概述 某国际展览心共 40 层,设有载客电梯10 部(用E0~E9 标识)。 限定条件 (1) 电梯的运行规则是: E0、E1:可到达每层。 E2、E3:可到达1、25~40 层。 E4、E5:可到达1~25 层。 E6、E7:可到达1、2~40 层的偶数层。 E8、E9:可到达1~39 层的奇数层。 (2) 每部电梯的最大乘员量均为K 人(K 值可以根据仿真情况在10~18 人之间确定)。 (3) 仿真开始时,各电梯随机地处于其符合运行规则的任意一层,为空梯。 (4) 仿真开始后,有N 人(0<N<1000)在M 分钟(0<M<10)内随机地到达该国际 展览心的1 层,开始乘梯活动。 (5) 每位乘客初次所要到达的楼层是随机的,令其在合适的电梯处等待电梯到来。 (6) 每位乘客乘坐合适的电梯到达指定楼层后,随机地停留10-120 秒后,再随机 地去往另一楼层,依此类推,当每人乘坐过L 次(每人的L 值不同,在产生乘客时随机地 在1~10 次之间确定)电梯后,第L+1 次为下至底层并结束乘梯行为。到所有乘客结束乘梯 行为时,本次仿真结束。 (7) 电梯运行速度为S 秒/层(S 值可以根据仿真情况在1~5 之间确定),每人上下时 间为T 秒(T 值可以根据仿真情况在2~10 之间确定)。 (8) 电梯运行的方向由先发出请求者决定,不允许后发出请求者改变电梯的当前运 行方向,除非是未被请求的空梯。 (9) 当某层有乘客按下乘梯电钮时,优先考虑离该层最近的、满足条件(8)、能够 最快到达目标层的电梯。 (10) 不允许电梯超员。 开发结果的行为特征 (1) 产生事件的周期为1 秒,每次可产生0 个或多个事件。 (2) 各随机事件由互不相关的伪随机数发生器决定。 (3) 设计一个易于理解的界面,动态显示各梯的载客与运行情况,动态显示各楼层 的人员停留情况与要求乘梯情况;动态显示从仿真开始到目前的时间。 (4) 显示时用应表示出不同的乘客及其当前所要求去往的楼层。例如,12-32 表示标 识为12 的乘客要求去往32 层。 (5) 统计各梯的运行与空闲时间;统计各人发出乘梯要求后的等待时间;仿真结束 后显示这些时间。 (6) 参数K、N、M、S、T 应从命令行输入。 (7) (选做)考虑有些乘客(随机决定)携带的物品体积较大,需占用1~2 人的电 梯空间(随机决定),且上下梯的时间比其他乘客长一倍的情况,再进行相应的仿真(注意, 不是所有的乘客都携带较大体积的物品)。这时,显示乘客及所去往的楼层时要能够识别出 是否携带了较大体积的物品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值