我是靠谱客的博主 耍酷洋葱,最近开发中收集的这篇文章主要介绍关于交通灯管理系统设计的思考:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于交通灯管理系统设计的思考:

一、需求:
 1、异步随机生成按照各个路线行驶的车辆。

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

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

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

 5、每辆车通过路口时间为1秒(提示:可通过线程Sleep的方式模拟)。
 
 6、随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。

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


二、需求分析:
 
 1、对于一条单行道(如南北)的车辆来说,它有三个方向的需求:由南向北(直行)、由南向西(左拐)、由南向右(右拐)
    而对于一个十字路口,东西、南北各有两个单行道,故一共有12个方向的需求。
 2、简化处理:
  (1)、由于在车辆的右拐不受信号灯控制,因为右拐的车辆与其当前垂直的车辆方向并没有方向上的冲突,故可以在当前垂直
  方向上的车辆直行的时候同时允许右拐。 故,忽略右拐。因而同一个单行道上的车辆只有两种需求(直行和左拐弯)
  (2)、对于同一单行道上的直行和左拐,交替考虑。
  (3)、由于由南而来 和由北而来的车流 的对称性,我们只考虑其中一种(如南北流),同样,东西方向上的我们只考虑东西
   流。那么,我们只需要考虑由南而来的车流(直行,左转)和由东而来的车流(直行,左转)。4个方向。
  (4)、对于拐弯: 南-->西、冬-->南 他们是冲突的。 对于直行:南-->北、东-->西 他们也是冲突的。
         即:有两个层次的冲突,直行和拐弯冲突,而对于直行和拐弯,他们又有上述的两个冲突。
  (5)、冲突的解决:
   规则:首先直行,直行中的两个直行交替
         然后拐弯,拐弯中的两个拐弯交替

三、系统的分析设计与实现:

 (1)、整个系统所涉及到的对象有:
   汽车、路线、红绿灯、红绿灯控制系统。
               他们之间的逻辑关系为:
   红绿灯系统控制路线的连通状态,汽车则是在它所需求的路线在连通状态下才进入该路线。
 (2)、联系需求分析设计:
  · 一个路线类,具有4个对象,每个路线类对象都包含一个红绿灯对象。
  · 一个汽车类,设计若干个对象,根据路线的状态,载入路线对象中。
  · 一个红绿灯类,该类有两个状态。
  · 一个红绿灯控制系统类对象,可以按需求分析中的逻辑改变各个路线中的红绿灯状态。
 (3)、红绿灯Lamp的设计:
  成员域:Enum stateType,数组中含有"Red"、"Green"
   String state = null
  成员方法:
   setLampRed() : 用于设置红绿灯状态为Red
   setLampGreen(): 用于设置红绿灯的状态为Green
   getLampState() 获取红绿灯的状态

 (4)、汽车类的设计:
     对于汽车类来说,不需要什么操作。
  
 (4)、路线类的设计:
  成员域:
   Vector<汽车> car ;用于装载汽车。
   Lamp ; 红绿灯类,用于判别该路线的装态。
  成员方法:
   Vector<汽车> () : 当路线为绿灯时,用于装载汽车类对象。
   getLamp() : 访问红绿灯的状态。
 (5)、红绿灯控制系统的设计: 红绿灯的控制,其实就是控制路线的红绿灯状态。
  
  成员域:4个路线类对象,分别对应着4条实际路线。
   红绿灯对象:
   汽车对象:
  main方法:
   根据红绿灯逻辑及需求,依次循环改变路线的状态。
   

最后

以上就是耍酷洋葱为你收集整理的关于交通灯管理系统设计的思考:的全部内容,希望文章能够帮你解决关于交通灯管理系统设计的思考:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部