黑马程序员---交通灯控制系统
来源:互联网 发布:神户制钢造假 知乎 编辑:程序博客网 时间:2024/05/16 17:41
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
交通灯管理系统:
一.项目需求:
1、异步随机生成按照各个路线行驶的车辆。
2、信号灯忽略黄灯,只考虑红灯和绿灯。
3、应考虑左转车辆控制信号灯,右转车辆不受信号灯控制。 4、具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。
注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆。
5、每辆车通过路口时间为1秒(提示:可通过线程Sleep的方式模拟)。 6、随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。
7、不要求实现GUI,只考虑系统逻辑实现,可通过Log方式展现程序运行结果。
二.需求分析:
1).交通信号灯控制器的分析:
1基本概念:将两个方向对立的信号灯归为一组,如南信号灯和北信号灯为一组,东南信号灯和西北信号灯为一组
2.基本逻辑:任意时刻,只能有一组信号灯保持亮的状态,右转车辆不受信号灯控制,因此右转方向不设信号灯
3.基本功能:按照顺时针方向,循环让每一组信号灯保持亮的状态一段时间
2.交通信号灯控制器的数据结构:设置一个方向数组,用来保存需要被调度的方向,
以组为单位 :String[] Direction={"N方向-S方向","NE方向-SW方向","E方向-W方向","ES方向-WN方向"}
3.交通信号灯控制器的方法:
获取当前信号灯状态方法,该方法返回当前一组保存亮状态的信号灯:public String getCurrentStatues();
循环让信号灯保存亮的状态一段时间的方法,该方法按照顺时针 让每一组信号灯保存亮的状态一段时间(我这里设置成10秒钟):public void ControlerRun();
2).车辆的行为分析:
1.基本逻辑:车辆在通过路口时必须检查当前信号灯状态,只有当前信号灯状态和自己的行进状态相同时才能通过路口,
否则等待信号灯转为自己行进方向时再通过。车辆必须按顺序通过路口,当自己前面有车没通过路口时排队等前面的车通过路口再通过
2.车辆的数据结构:车辆对象要保存车辆名称,车辆所属的路,以及车辆的行进方向;
String CarName//车辆的名称
String WhichRoad//车辆在那个路上
String RunDirection//车辆开往的方向
2.车辆应该具有的方法:
1.获取当前信号灯状态: private String getCurrentStatues();
2.判断当前能否通过路口 :boolean CanPass(String CurrentStatues);
3.通过路口 :void PassRoad();
4继续等待 :void WaitForPass();
3).路的行为分析:
1.基本逻辑:所有的车辆都要在路上,因此路是一个容器 ,每辆车通行的时间为一秒因此路每过一秒钟就要查看当前路口的车是否能通过,
通过调用car类的CanPass()函数。如果当前路口的车辆能通过就调用当前车辆的PassRoad()函数,否则调用当前车辆的WaitForPass()函数使车辆在路口继续等待
具体实现代码如下:
详细请查看:www.itheima.com
- 黑马程序员---交通灯控制系统
- 黑马程序员__交通灯控制系统
- 黑马程序员-模拟交通灯控制系统
- 黑马程序员-模拟交通灯控制系统
- 黑马程序员_交通灯控制系统
- 黑马程序员_十字路口交通灯控制系统笔记
- 黑马程序员---银行业务控制系统
- 黑马程序员 交通灯系统
- 黑马程序员之交通灯
- 黑马程序员:交通灯案例
- 黑马程序员:交通灯案例
- 黑马程序员-交通灯系统
- 黑马程序员--交通灯
- 黑马程序员-交通灯
- 黑马程序员-交通灯系统
- 黑马程序员 交通灯
- 黑马程序员~模拟交通灯
- 黑马程序员----交通灯总结
- Leetcode: Evaluate Reverse Polish Notation
- Binary Tree Inorder Traversal
- Linux下Vnc远程桌面Server配置教程
- android,中心旋转
- Populating Next Right Pointers in Each Node
- 黑马程序员---交通灯控制系统
- Remove Duplicates from Sorted List
- hadoop2.2 MapReduce and yarn(二) MapReduce in MR v2 API
- 禁止拷贝构造和赋值
- poi 新手教程
- Longest Consecutive Sequence
- chapter 4
- 编程心得
- 《Java Concurrency in Practice》之原子性(Atomicity)