交通灯管理系统

来源:互联网 发布:网络兼职赚钱是真的吗 编辑:程序博客网 时间:2024/05/21 17:03

---------------------- android培训java培训、期待与您交流!----------------------

交通灯管理系统的项目需求:

1.       异步随机生成按照各个路线行驶的车辆。

2.       信号灯忽略黄灯,只考虑红灯和绿灯

3.       应考虑左转车辆控制信号灯,右转车辆不受信号灯的控制

4.       具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑(注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆)

5.       每辆车通过路口时间为1秒(提示:可通过线程sleep的方式模拟)。

6.       随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。

7.       不要求实现GUI,只考虑系统逻辑实现,可通过log方式展现程序运行结果。

系统设计思路:

         首先要理清信号灯控制车辆行驶的逻辑顺序。由题意可以知道共有12条路线。同一时刻,相反方向的路线行驶逻辑一模一样的,而右转向不受信号灯的控制,可以假定控制系统中也存在右转向信号灯,只是它的状态一直为绿色。这样一个周期内变换的方向就只有4种情况。假定以南向北(S2N)行驶方向开始,往后依次为:南向西(S2W),东向西(E2W),东向南(E2S)。后面又是南向北,进入下一周期,如此循环。具体如下图:

 

面向对象的分析与设计

面向对象设计的一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。

由题面意思,可以看出有车,路线,红绿灯。

       车辆根据自己所在路线对应的信号灯状态及前面是否有车确定是否行驶,创建车辆本身并没有什么实际意义,它只是存在路线上的一个标号。为了体现车辆行驶逻辑,还需要一个信号灯控制系统,总结起来,需要路线信号灯控制器三个对象。

灯(Lamp:每个交通灯都维护一个状态(红或绿),它能够返回当前时刻的显示状态,并且有变红和变绿的方法。相同状态的反向灯。当前灯由绿变红后,下一个变绿的灯。灯的数量与线路的数量是一样的,可以采用枚举来表示,这样就不容易出错。类的大体编写如下:

public enum Lamp{//定义枚举类灯

//只可能存在的灯:将灯的名词取为路线方向,方便对比。

     S2N,S2W,E2W,E2S,//南2北,南2西,东2西,东2南路线对应的灯

    N2S,N2E,W2E,W2N,//与上行同状态的反向灯

    S2E,E2N,N2W,W2S;//假设存在的右转向灯,始终为绿色。

//灯中存在的信息:

         String  opposite//当前灯对应同状态的反向灯.

         String  next//当前灯对应的下一个要亮的灯。

         boolean lighted//当前灯状态

//灯中的方法:

         public boolean isLighted(){...}//获取当前路线对应灯状态

public void light(){...}//使灯变绿

public Lamp blackOut(){..}//使当前灯变红,下一个灯变绿,并返回下一个灯

}

路线(Road):

      总共有12条路线,每条路线上存在的车辆,将车辆数量用集合存起来。因为每条路上的车都是随机加入进来的,需要用一个单独的线程来给每条线路随机加入车辆。当路线对应控制灯的状态为绿时,每过一秒中减少一辆并打印(前提是路上有车)。类的大体编写如下:

public class Road{//定义路线

//路中包含的数据

         List<String> vehicle//用集合存储路线上存在的车。

String name;//道路名称

//构造方法

         Road(name){//创建线路时,将线路名称传递进来

                   //1.在构造方法中用单独的线程随机加入车辆;2.用另一个单独的线程控制车辆的减少。

         }

}

信号灯控制器:

public class LampController{

         Lamp  currentLamp;//初始绿灯

         //在构造方法中设定红绿灯状态时间,各信号灯状态交替的逻辑顺序。

}

创建系统工作的主方法,在主方法中创建12条路线,同时创建一个信号灯控制器。主线程运行后,三个子线程就会一直运行下去,并打印交通灯红绿变换状态和车辆行驶情况。

---------------------- android培训java培训、期待与您交流!----------------------

详情请查看:http://edu.csdn.net/heima

原创粉丝点击