黑马程序员_交通灯管理系统 黑马程序员论坛

黑马程序员_交通灯管理系统 黑马程序员论坛

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

现实生活中,交通灯在公路上随处可见,尤其是在十字路口,更需要交通灯来管理巨大的车流。这道题目就是设计一个交通灯。

模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:

Ø异步随机生成按照各个路线行驶的车辆。例如:

由南向而来去往北向的车辆 ---- 直行车辆

由西向而来去往南向的车辆---- 右转车辆

由东向而来去往南向的车辆---- 左转车辆

。。。

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

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

Ø具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。

注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆。

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

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

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

一、现实路况分析

首先抛开交通灯,先分析一下十字路口车辆行驶的规律。看下图,


以向南的公路为例,车辆可以向3个方向前进(2意为to):S2W,S2N,S2E。每个方向的公路都有3个前进方向,总共有12条方向。但是仔细分析就会发现,S2N和N2S其实是同一车流,只能由北向南开或者只能由南向北都是不可能的。所以,严格意义上,总共是4种车流:

1.S2N、N2S

2.E2W、W2E

3.S2W、N2E

4.W2N、E2S

二、需求分析

下图是一个真实的十字路口的交通灯,也是目前最常用的形式。有3个灯组成,每个灯都可以独立现实红、黄、绿,并指示相应的方向:左转、右转、直行。

按照需求分析如下:

1. 按照需要,只有红灯和绿灯,不考虑黄灯。也可以理解为亮(绿灯)与不亮(红灯)。

2. 由于提示不用考虑右转,所以应该假设右转灯始终为绿色(亮灯)。

3. 现实生活中,某个方向上,例如南北,总是先直行然后左转,左转完毕后东西方向上的直行和左转。如此循环执行。

4. 通过左转灯和直行灯的不同组合开控制车流,每辆车只要看自己面前的灯即可,不用考虑其他方向的灯。不考虑汽车想要行驶的方向,汽车受灯控制:红灯停绿灯行。

5. 每辆车通过的时间为1秒,也就是说,绿灯如果亮5秒,会有5辆车通过。

三、面向对象分析和设计

可能出现的对象有:交通灯、交通灯控制器、汽车和路。

汽车看到灯变绿后,不能马上前进,还要确定前面没有汽车才能前进,也就是只有第一辆车才能前进。如何确定前面是否有车?应该询问路,路上储存车的集合,也有增加和减少汽车的方法。本题关注的不是车辆移动过程,而是车辆通过路口的过程,所以车辆不需要单独设计成对象,只要将其用字符串表示,即“1号车通过”、“2号车通过”。这里的路,也可以理解为车流。

这也是面向对象编程的经验:谁拥有数据,谁就要对外提供操作数据的方法。例如,人在黑 板上画圆,画圆的动作是由黑板做出的,人只是在调用方法。

综合上面的分析,只需要3个类:交通灯(Lamp类)、控制系统(LampController类)和路(Road类)。

Road类的设计:

每条路线内都有一个集合,元素为车辆。

绿灯时,每秒减少一辆车;红灯时,随机增加车辆。

因为有12条路线,需要有12个Road对象。

每条路线每秒都要检查对应的灯是否为绿(亮),是的话即移除集合中的第一辆车,表示汽车通过路口。

Lamp类的设计:

每个灯在一段时间内只有一个状态:绿或红,每个灯都有变绿或 者变红的方法,并且可以返回下一个灯。因为只有2个状态,可以使用布尔值的真假表示:真(绿)、假(红)。

因为有12条线路,所有有12个交通灯。不考虑右转,所以4个右转灯始终是绿灯,车辆可以随时右转。

除了右转,还有8个方向,考虑对面而行可以合为一个方向,实际只有4个方向的车流。实际编程时,每个方向的车流只需要使用一个灯表示即可(主灯),所以只需要4个灯来控制车流。这4个灯会依次变绿。每个灯变绿时,对面方向的灯(辅灯)也会变绿,变绿后汽车通过路口;主灯变红后,也会使得辅灯变红。主灯和辅灯由开发者根据个人喜好确定,主灯可以控制辅灯,辅灯不能控制主灯。

每个灯变红后,会将下一个灯变绿、辅灯变动,这就需要2个成员变量:辅灯和下一个灯;还需要记住自己的状态,是否为绿,所以共有3个成员变量。

LampController类的设计:

需要一个监视器,随时监视本灯的状态,时间一到就将当前的灯变红,并监视下一个灯,循环执行。

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

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

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/266647.html

更多阅读

罗盘酒店管理系统 风水罗盘应用

罗盘酒店管理系统采用国际先进的云计算模式、且支持断网操作;同时,把酒店管理系统和网上预订系统、中央预订系统三大体系结合在一起,真正意义上实现了连锁酒店一体化管理。省掉了酒店采用服务器硬件成本、耗电成本、人员成本等。是当今

鞍钢管理 :固定资产管理系统开发与应用

固定资产管理系统开发与应用李英麟,康成明等摘要:主要剖析原固定资产管理存在的不足:实物和财务两套系统单独运行,造成数值差异、不能整合统计等诸多弊端。介绍了将实物和财务两套系统整合为一,实现1+1>2的设想,分析了整

国外优秀的虚拟主机管理系统WHMCS 国外稳定虚拟主机

在谈WHMCS之前,我先谈谈国内的两个比较有名,常见的虚拟主机管理系统:星外和华众。华众虚拟主机管理系统是我最先用的一套管理系统,大概在2004,2005年开始上市,相比之前百优的虚拟主机管理系统,是进步了不少。尤其在于他可以自动开设MySQ

声明:《黑马程序员_交通灯管理系统 黑马程序员论坛》为网友玉砌似画染分享!如侵犯到您的合法权益请联系我们删除