概述
关于交通灯管理系统设计的思考:
一、需求:
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方法:
根据红绿灯逻辑及需求,依次循环改变路线的状态。
最后
以上就是耍酷洋葱为你收集整理的关于交通灯管理系统设计的思考:的全部内容,希望文章能够帮你解决关于交通灯管理系统设计的思考:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复