——交通灯管理系统
2014-08-08 13:25
211 查看
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
交通灯关系系统项目需求:
一,异步随机生成按照各个路线行驶的车辆。
例如:
由南向北的车辆----直行车辆
由西向南的车辆----右转车辆
由东向南的车辆---左转车辆
二,信号灯忽略黄灯,只考虑红灯和绿灯。
三,左转的车辆要受交通灯控制,右转车辆不受信号灯控制。
四,信号灯的控制逻辑和现实 现实中的交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。
注:南北向的车辆与东西向的车辆交替放行,同方向等待的车辆应先放行直行车辆,然后再放行左转车辆。
五,每辆车通过路口的时间为1秒。
六,随机生成车辆,及定时改变交通灯状态。
需求分析和设计
首先,分析路口中车辆行驶的方向,用以下的图例来描述各个车辆的行驶方向:
上图是演示的一个十字路口,并有12个行驶方向。
一,东南西北直行方向的同时,汽车还可以向左转;即相对的方向有两个行驶方向;
那么四个方向就有了8条行驶方向。
二,由于汽车始终可以向右行驶,所以又转的交通灯始终为绿。此处就有4条行驶方向。
经过以上分析,抽象出以下几个类:路,交通灯,汽车,交通灯控制器。
对类的设计:
汽车的设计:
一,汽车的主要操作是添加到路中,或者绿灯时移除出路。所以只要用一个随机数来描述汽车就可以了。
路的设计:
一,路上的汽车是有多个的,所以要用集合来接收汽车。
二,路上的汽车是随机出现的,所以要程序在随机的时间增加一辆车。
三,如果路灯为绿时,则在绿灯时间内,将第一辆车移出。
四,因为交通灯是每个一定时间就改变的,所以路也要有一个功能,在每个一定时间久检查交通灯的,车辆是否可行驶。
灯的设计:
注:此处忽略黄灯,因为黄灯是红灯和绿灯之间转换的一个缓冲,所以忽略也不会对系统有影响。
一,因为有12个行驶方向,所以就要有12个对应方法的灯。
二,每一个等都只能有一个,而不是每一次new都是一个新的,所以灯的类型设计为枚举,保证唯一。
三,灯都要有是否是亮的,所以灯要有一个属性来描述状态:(亮(绿灯)或不亮(红灯)),还要有一个亮灯的方法,一个灭灯的方法。
四,由于向右行驶的方向总是可以行驶的,是不受控制的,但为了统一处理方式,就假设出4个右转的灯,
并将这些灯设置为总是可以通行的。
五,其他8个方向中,都是相对出现的,所以只要控制4组灯就可以了,而每一组灯都是相对应的灯,所以只要用4个灯控制就可以了。
当前灯和对应灯亮,时间过之后呢,当前灯灭,下一个灯亮。依次这样执行。
灯的控制器的设计:
一,控制器要控制灯,所以控制器一有一个灯的属性,通过它类控制灯。
二,因为控制器是每个一定的时间才去改变的灯的,所以灯要有一个定时器。
类的编码:
路的代码:
一,增加车辆;
二,定时检查交通灯的情况;
三,绿灯时,移出车辆。
灯的代码:
一,灯的状态;
二,亮灯的方法;
三,灭灯的方法。
交通灯控制器的代码:
一,每隔一定时间,改变交通灯的状态。
测试类的代码:
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
相关文章推荐