黑马程序员--交通灯管理系统

GQA数据集介绍 GQA,这是一个用于真实世界视觉推理和组合问答的新数据集。2200万个不同的推理问题,所有这些问题都带有表示其语义的功能程序。答案分布受到严格控制。11.3万张图像、2200万个问题,推理能力有对象和属性识别、传递关系跟踪、空间推理、逻辑推理和比较。 阅读详情

---------------------- android培训、java培训、期待与您交流! ----------------------

面向对象程序设计一条重要的经验, 谁拥有数据,谁就对外提供操作这些数据的方法!!!!!! 切记切记!!!!

 

交通灯管理系统设计要求

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

 

?         异步随机生成按照各个路线行驶的车辆。

例如:

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

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

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

       。。。

 

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

 

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

 

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

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

 

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

 

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

 

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

设计思路:

首先将交通图画出来如下所示:

根据图,我们可以看出总共有12条行车路线,分别是:

S2N,N2S,E2W,W2E,S2W,N2E,W2N,E2S,S2E,E2N,N2W,W2S

确定都需创建什么对象:

1、12条路线也就对应12条路线对象,在每条路线上,车源源不断的不定期的开来,如当前路线的灯为绿灯,则车每隔1秒开走1辆

2、12条路线就对应12个灯对象,当一个线路的灯绿时,它的相反方向的灯也变绿,当它变红的时候,下一个灯及它相反风向的灯就会变绿,这种依次变绿的过程,是按一定顺序的,所以可以用一个枚举来定义这12个灯,每个灯应对应3个参数,它的相反方向的灯,它的下一个灯,及它的红绿状态

3、这12个灯,需要一个控制器,控制将灯变绿,隔多长时间再把它变红,右转弯的四个灯是常绿,不需要控制,剩余的8个灯,只需要控制4个灯:S2N,S2W,W2E,W2N即可,它们相反方向的灯的红绿状态在同一时间和它们一样

4、最后需要创建一个调度类,创建控制器对象,让控制器开始控制灯红绿交换,并启动上面的12条路对象,让上面的车根据控制器所控制的当前路线灯红绿的状态,开始“走走“来来。

 

Road代码:

 

package test.traffic;

 

import java.util.*;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;

 

public class Road {

 private String name=null;

 List<String> vehicle=new ArrayList<String>();

       public Road(String name)

       {

              this.name=name;   

               ExecutorService pool=Executors.newFixedThreadPool(1);

               pool.execute(new Runnable()

               {

                  int i=1; 

                     @Override

                     public void run()

                     {

                       while(i<1000)   

                       { 

                              vehicle.add(Road.this.name+"路线上的第"+(i++)+"辆车");

                              try

                              {

                                     Thread.sleep((new Random().nextInt(10)+1)*1000);

                            }

                           catch (InterruptedException e)

                              {

                                    e.printStackTrace();

                              }

                           

                            // TODO Auto-generated method stub

                       }

                     }

                      

               });

               pool.isShutdown();

              ScheduledExecutorService timer= Executors.newSingleThreadScheduledExecutor();

              timer.scheduleAtFixedRate(new Runnable()

              {

 

                     @Override

                     public void run() {

                           

                            boolean blue=Lamp.valueOf(Road.this.name).blue;

                            if(vehicle.size()!=0)

                            {     while(blue)

                               {

                                   System.out.println(vehicle.remove(0)+"正在通过十字路口!");/*remove(0):移除此列表中指定位置上的索引为0的元素,同时向左移动所有后续元素(将其索引减 1)

                                                                                                                     即移动第0个元素后,原第一个元素的索引就变成了0。 */

                                }

                           // TODO Auto-generated method stub

                          

                            }            }

                    

              },

                            1,

                            2,

                            TimeUnit.SECONDS);

             

       }}

Lamp(灯)代码:

package test.traffic;   

enum Lamp

{   S2N("S2W",false,"N2S"),S2W("W2E",false,"N2E"),W2E("W2N",false,"E2W"),W2N("S2N",false,"E2S"),

    N2S("null",false,"null"),N2E("null",false,"null"),E2W("null",false,"null"),E2S("null",false,"null"),

    S2E(null,true,null),E2N(null,true,null),N2W(null,true,null),W2S(null,true,null);

    public boolean blue=true;

    String next=null;

    String opposite=null;

    private Lamp(String next,boolean blue,String opposite)

    {     

     this.blue=blue;

     this.next=next;

     this.opposite=opposite;

    };

    public boolean isLighted()

    {

    return blue;

    }

   public void blueLight()

   {   blue=true;

      Lamp.valueOf(opposite).blue=true;

      System.out.println(this.name()+"灯和"+Lamp.valueOf(opposite).name()+ "灯变绿了");

   }

     

   public Lamp redLight()

   {

     blue=false;

     Lamp.valueOf(opposite).blue=false;

     Lamp nextLamp=Lamp.valueOf(next);

     nextLamp.blueLight();

     return nextLamp;

   

   

   

   }

   

}

 

 

LampController(灯得控制器)代码:

package test.traffic;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;

 

public class LampController {

       private Lamp currentLamp =Lamp.S2N;

      public LampController()

      {     System.out.println("最多有6个方向的车可以通过");

               currentLamp.blueLight();

            ScheduledExecutorService timer=Executors.newScheduledThreadPool(1);

             timer.scheduleAtFixedRate(new Runnable()

             {

 

                    @Override

                       public void run()

                       {

                            currentLamp=currentLamp.redLight();

                       }

 

             },

                   10,

                   15,

                  TimeUnit.SECONDS);

          

    }

}

 

 

启动代码:

 

package test.traffic;

public class Scheduler {

   

    public static void main(String[] args) {

       /*产生12个方向的路线*/     

       String [] directions = new String[]{

              "S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S"     

       };

       for(int i=0;i<directions.length;i++){

           new Road(directions[i]);

       }

      

       /*产生整个交通灯系统*/     

       new LampController();

    }

 

 

 

       // TODO Auto-generated method stub

 

}

结束语:   面向对象程序设计一条重要的经验, 谁拥有数据,谁就对外提供操作这些数据的方法!!!!!! 切记切记!!!!

---------------------- android培训、java培训、期待与您交流! ----------------------

详细请查看:http://edu.youkuaiyun.com/heima 

 

 

深入解析AUTOSAR中IIC的MCAL实现与Vector配置实践 本文深入解析AUTOSAR架构中IIC总线的MCAL实现与Vector配置实践,探讨IIC在汽车电子中的特殊定位及Vector的折中方案。通过Channel与Sequence设计模式、Chain特性应用及DaVinci Configurator配置步骤,提供IIC驱动的优化与安全实现方法,助力开发者高效解决车载通信问题。 阅读详情

相关推荐

【图像大模型】RIFE实战:如何通过中间流估计实现4K视频的实时插帧优化

本文深入解析了基于深度学习的RIFE视频插帧算法,重点探讨其核心的中间流估计技术如何实现高效精准的帧生成。通过实战教程,详细介绍了针对4K视频的实时处理优化方案,包括环境配置、参数调优及性能瓶颈分析,帮助用户利用消费级显卡将低帧率视频转化为流畅的高帧率体验。

weixin_29093017的博客 455

黑马程序员——交通灯管理系统

------- android培训、java培训、期待与您交流! ----------   该“交通灯管理系统”,实现起来比较复杂,为了变量理解,这里分章节讲解。由浅入深,先分析项目的需求,其次分析项目中涉及到的面向对象原理,最后一步步通过代码实现该系统。为了便于阅读,博客前面加入了目录。 1. 交通灯管理系统项目需求 模拟十字路口的交通灯管理系统逻辑,具体需求如下 1. 异步

LanceDream的专栏 840

手把手教你解决uniapp中esbuild版本冲突问题(Mac版专属指南)

本文是针对Mac平台uniapp开发者的专属指南,详细解析了运行项目时常见的`Cannot start service`错误,即esbuild的Host版本与binary版本不匹配问题。文章从错误根源入手,提供了从快速应急处理到彻底根治的完整解决方案,包括手动替换二进制文件、锁定依赖版本、清理缓存及优化工具链配置,旨在帮助开发者高效解决版本冲突,恢复并稳定开发环境。

i0j1k2l3m的博客 458

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

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 交通灯管理系统 模拟一个狮子路口的交通灯管理系统,逻辑,具体需求如下: 异步随机生成按照各个路线行驶的车辆。信号灯忽略黄灯,只考虑红灯和绿灯。应考虑左转车辆控制信号灯,右转车辆不受信号等控制。具体信号灯控制逻辑与现实生活中普通交通灯

FengLu369的专栏 676

最强解析!CWRU轴承数据集Python实战:从数据加载到模型部署全流程

本文提供了一份完整的CWRU轴承数据集Python实战指南,涵盖从数据加载、预处理、特征工程到模型构建与训练的全流程。详细解析了如何利用1D-CNN、Transformer等深度学习模型进行轴承故障诊断,并介绍了模型评估、可解释性分析以及通过FastAPI部署模型的实用方法,为工业设备智能运维提供了一套可复用的解决方案。

time3的博客 365

OpenCV实战系列——图像线条提取

基于内容的图像分析,需要从构成图像的像素集合中提取有意义的特征。轮廓、线条、区域等是基本的图像基元,可用于描述图像中包含的元素。本节将介绍如何提取重要的图像线条特征。

m0_58523831的博客 1万+

黑马程序员 — 交通灯管理系统

交通灯管理系统

INT_INIT的专栏 831

微信公众号 - 解决报错 “err_msg“:“system:access_denied“,微信环境浏览器真机使用微信支付、微信授权登录、分享朋友圈转发好友报错system:access_denied

微信公众号,微信网页,手机h5网页,微信报错,system:access_denied,微信支付,提示报错,微信登录授权报错,微信朋友圈分享,微信转发,WeixinJSBridge,微信环境下,微信内置浏览器,微信公众号项目报错system:access_denied,如何解决,invoke(),API调用后出现报错,微信内部H5 WeixinJSBridge.invoke system:access_denied,使用微信jssdk时报access_denied错误,还是报错,真机运行,真机调试api返回

🏆 前端领域优质创作者 1万+

黑马程序员——————交通灯管理系统

------- android培训、java培训、期待与您交流! ---------- 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:   Ø        异步随机生成按照各个路线行驶的车辆。 例如:        由南向而来去往北向的车辆 ---- 直行车辆        由西向而来去往南向的车辆 ---- 右转车辆        由东向而来去往南向的车辆 ---- 左

u010408616的专栏 543

Python从0到100完整学习指南(必看导航)

想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学业升学和工作就业的先行者!

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 6万+

学Simulink——基于电能质量治理的场景实例:静止无功发生器(SVG)与并网逆变器的结合

本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合仿真建模方法。系统包含光伏单元、SVG主电路、控制策略(无功检测+双闭环控制)等模块,通过ip-iq法实现动态无功补偿。仿真结果表明,SVG能快速响应负载变化,将功率因数提升至0.98以上,有效稳定母线电压。该方案为新能源并网系统提供了有功/无功协同控制解决方案,具有10ms级响应速度和±5kvar补偿能力。文章提供了完整的建模流程、控制算法实现和结果分析,可作为电力电子与电能质量治理领域的实践指导。

amy_mhd的博客 167

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

-----------android培训、java培训、java学习型技术博客、期待与您交流! ----------- 交通灯管理系统 前提: 现假设交通灯系统只有红灯和绿灯,忽略黄灯。 随机产生车辆,绿灯时,每隔一秒,路上的车行驶过去。 思路 1,定义路灯: 十字路口车辆运行方向有12个,其中4个右拐可以认为一直是绿灯,其它8个两两对应。 因此只需要对S2N(南向北),S

541

【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)

摘要:DOTween动画插件使用指南 DOTween是Unity中强大的动画插件,比原生动画更便捷。安装后需进行初始化设置,通过工具菜单生成程序集。主要提供通用方法(DOTween.To)和便捷方法(如transform.DOMove)两种动画实现方式。插件支持丰富的动画设置(循环、缓动等)和事件回调(OnComplete、OnKill)。还提供动画管理功能,包括清除(DOTween.Clear)、完成(DOTween.CompleteAll)和终止(DOTween.KillAll)动画。常用功能涵盖移动、

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

黑马程序员:交通灯管理系统

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。 本项目中用到的新知识: 1,JDK1.5使用线程的新方法——线程池 线程池的基本思想是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来

伊斯之深の生死簿 1067

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

 交通灯管理系统

黑马程序员_安卓的专栏 522

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【黑马程序员】交通灯管理系统

------- android培训、java培训、期待与您交流! ---------- I一、需求分析 1,模拟实现十字路口的交通灯管理系统逻辑,异步随机生成按照各个路线行驶的车辆。 例如:        由南向而来去往北向的车辆 ---- 直行车辆        由西向而来去往南向的车辆 ---- 右转车辆        由东向而来去往南向的车辆 ---- 左

u010036063的专栏 777

黑马程序员————交通灯管理系统

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Justdoit_IT的专栏 508
上一篇: 黑马程序员———Java1.5 新特性之枚举
下一篇: 黑马程序员--类加载器小结
laester
博客等级 码龄19年 36粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值