返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现路口交通灯模拟系统
  • 239
分享到

C++实现路口交通灯模拟系统

2024-04-02 19:04:59 239人浏览 泡泡鱼
摘要

交通灯信号控制是交通工具现代化的产物,在平面交叉口,为了把可能发生冲突的车流从时空上分离,必须通过交通信号对交通流进行有效的引导和调度。 设计要求: (1)  设计一个十字

交通灯信号控制是交通工具现代化的产物,在平面交叉口,为了把可能发生冲突的车流从时空上分离,必须通过交通信号对交通流进行有效的引导和调度。

设计要求:

(1)  设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,每个方向绿灯亮30秒,两个方向能根据车流量的大小自动调节通行时间,车流量大,通行时间增加30秒,车流量小,通行时间仍然是30秒。

(2)  在路灯转为红灯时,要求黄灯先亮3秒钟,才能变换运行车道。

系统算法设计图:

#include<iOStream>  
#include<windows.h>  
using namespace std;  
  
void way1(int a,int y);     //交通灯的函数
void way2(int b);
 
int green1, green2;    //定义交通灯的红,黄,绿灯的变量和赋初值
int yellow1, yellow2;
int red1, red2;
int green[2] = {31,61};
int yellow = 4;
int red[3] = {34,64};
 
int main()
{
    int car1, car2, car3, car4;     //车辆数变量
    int i = 0, j;
    char d;
    cout<<endl<<"***开始模拟智能交通灯系统***"<<endl<<endl;
    while(1)
    {
        cout<<"请设置东车道车辆数:";      //设置车辆数
        cin>>car1;
        cout<<"请设置西车道车辆数:";
        cin>>car2;
        cout<<"请设置北车道车辆数:";
        cin>>car3;
        cout<<"请设置南车道车辆数:";
        cin>>car4;
        cout<<endl<<endl;
        cout<<"******开始模拟******"<<endl;
        if((car1+car2)-(car3+car4)>10)     //根据车辆数来选择交通灯计时函数
        {
            j = i+1;
            way1(j, i);
        }
        else if(((car1+car2)-(car3+car4)>=0)&&((car1+car2)-(car3+car4)<=10))
        {
            way2(i);
        }
        else
        {
            j = i+1;
            way1(i, j);
        }
        cout<<"若想重新设置车辆数请按Y,若退出请按N。";
        cin>>d;
        if(d == 'Y'||d == 'y')
        {
            cout<<endl;
            continue;
        }
        else if(d == 'N'||d == 'n')
            break;
    }
 
    return 0;
}
 
void way1(int a,int y)
{
    green1=green[a];      //先给交通灯赋初值
    green2=0;
    yellow1=yellow2=0;
    red1=0;
    red2=red[a];
    int c;
    char d;
    while(1)      //东西车道的交通灯
    {
        for(c=99;c>0;c--)
        {  
            cout<<endl<<"------东西车道------"<<endl; 
            if(green1>0)
            {
                if(green1==green[a])
                {
                    green1--;
                }
                else
                {
                    cout<<"   >>> 绿灯 <<< "<<green1<<" 秒\n";  
                    green1--;
                }
                if(green1==0)  
                    yellow1=yellow;  
            }  
            if(yellow1>0)  
            {  
                if(yellow1==4)  
                    yellow1--;    
                else  
                {  
                    cout<<"   >>> 黄灯 <<< "<<yellow1<<" 秒\n";  
                    yellow1--;  
                }  
                if(yellow1==0)  
                {       
                    red1=red[y];  
                }  
            }  
            if(red1>0)  
            {  
                if(red1==red[y])  
                    red1--;  
                else   
                { 
                    cout<<"   >>> 红灯 <<< "<<red1<<" 秒\n";  
                    red1--;  
                }  
                if(red1==0)  
                {  
                    green1=green[a];    
                }  
            }
            
            cout<<endl<<"------南北车道------"<<endl;                   //南北车道的交通灯
            if(red2>0)
            {
                if(red2==red[a])
                {
                    red2--;
                }
                else
                {
                    cout<<"   >>> 红灯 <<< "<<red2<<" 秒\n";  
                    red2--;
                }  
                if(red2==0)  
                    green2=green[y];  
            }  
            if(green2>0)  
            {  
                if(green2==green[y])  
                    green2--;    
                else  
                {  
                    cout<<"   >>> 绿灯 <<< "<<green2<<" 秒\n";  
                    green2--;  
                }  
                if(green2==0)  
                {       
                    yellow2=yellow;  
                }  
            }  
            if(yellow2>0)  
            {  
                if(yellow2==4)  
                    yellow2--;  
                else   
                {  
                    cout<<"   >>> 黄灯 <<< "<<yellow2<<" 秒\n";  
                    yellow2--;  
                }  
                if(yellow2==0)  
                {  
                    red2=red[a];    
                }  
            }  
 
 
            Sleep(1000);
            system("cls");
            
        }
        cout<<"若想继续请按C,若想返回上一级请按R。";
        cin>>d;
        if(d == 'C'||d == 'c')
        {
            cout<<endl;
            continue;
        }
        else if(d == 'R'||d == 'r')
        {
            cout<<endl<<endl;
            break;
        }
    }
}
 
 
void way2(int b)
{
    green1=green[b];
    green2=0;
    yellow1=yellow2=0;
    red1=0;
    red2=red[b];
    int c;
    char d;
    while(1)
    {
        for(c=69;c>0;c--)
        {  
            cout<<endl<<"------东西车道------"<<endl; 
            if(green1>0)
            {
                if(green1==green[b])
                {
                    green1--;
                }
                else
                {
                    cout<<"   >>> 绿灯 <<< "<<green1<<" 秒"<<endl;  
                    green1--;
                }
                if(green1==0)  
                    yellow1=yellow;  
            }  
            if(yellow1>0)  
            {     
                if(yellow1==4)  
                    yellow1--;    
                else  
                {  
                    cout<<"   >>> 黄灯 <<< "<<yellow1<<" 秒"<<endl;  
                    yellow1--;  
                }  
                if(yellow1==0)  
                {       
                    red1=red[b];  
                }  
            }  
            if(red1>0)  
            {  
                if(red1==red[b])  
                    red1--;  
                else   
                { 
                    cout<<"   >>> 红灯 <<< "<<red1<<" 秒"<<endl;  
                    red1--;  
                }  
                if(red1==0)  
                {  
                    green1=green[b];    
                }    
            }
            
            cout<<endl<<"------南北车道------"<<endl; 
            if(red2>0)
            {
                if(red2==red[b])
                {
                    red2--;
                }
                else
                {
                    cout<<"   >>> 红灯 <<< "<<red2<<" 秒"<<endl;  
                    red2--;
                }  
                if(red2==0)  
                    green2=green[b];  
            }  
            if(green2>0)  
            {  
                if(green2==green[b])  
                    green2--;    
                else  
                {  
                    cout<<"   >>> 绿灯 <<< "<<green2<<" 秒"<<endl;  
                    green2--;  
                }  
                if(green2==0)  
                {       
                    yellow2=yellow;  
                }  
            }  
            if(yellow2>0)  
            {  
                if(yellow2==4)  
                    yellow2--;  
                else   
                {  
                    cout<<"   >>> 黄灯 <<< "<<yellow2<<" 秒"<<endl;  
                    yellow2--;  
                }  
                if(yellow2==0)  
                {  
                    red2=red[b];    
                }    
            }  
 
 
            Sleep(1000);
            system("cls");
            
        }
        cout<<"若想继续请按C,若想返回上一级请按R。";
        cin>>d;
        if(d == 'C'||d == 'c')
        {
            cout<<endl;
            continue;
        }
        else if(d == 'R'||d == 'r')
        {
            cout<<endl<<endl;
            break;
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++实现路口交通灯模拟系统

本文链接: https://lsjlt.com/news/143454.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++实现路口交通灯模拟系统
    交通灯信号控制是交通工具现代化的产物,在平面交叉口,为了把可能发生冲突的车流从时空上分离,必须通过交通信号对交通流进行有效的引导和调度。 设计要求: (1)  设计一个十字...
    99+
    2024-04-02
  • java多线程模拟交通灯管理系统
    本文实例为大家分享了java多线程模拟交通灯管理系统的具体代码,供大家参考,具体内容如下 一、项目业务逻辑分析 项目需求:模拟实现十字路口的交通灯管理系统逻辑,要求如下: ...
    99+
    2024-04-02
  • java多线程实现交通灯管理系统
    本文实例为大家分享了java多线程实现交通灯管理系统的具体代码,供大家参考,具体内容如下 一. 项目要求 模拟实现十字路口的交通灯管理系统逻辑。详细需求例如以下: 1、异步随机生...
    99+
    2024-04-02
  • c#模拟串口通信SerialPort怎么实现
    这篇“c#模拟串口通信SerialPort怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“c#模拟串口通信Serial...
    99+
    2023-06-30
  • c#模拟串口通信SerialPort的实现示例
    目录一、前导知识实现串口通信的必要设置二、实验绘制窗口测试 三、总结四、附件完整代码一、前导知识 串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口CO...
    99+
    2024-04-02
  • C语言实现模拟银行系统
    本文实例为大家分享了C语言实现银行系统的具体代码,供大家参考,具体内容如下 1.实现要求 生成一个1000-1000000之间的随机数来代表账户余额(要求每次生成的数不一样);实现登...
    99+
    2024-04-02
  • C语言模拟实现动态通讯录
    目录1.模拟实现通讯录总体架构一览图2.文件执行任务3.分模块实现 测试模块 test.c头文件 功能函数声明 contact.h功能函数逐一实现1.模拟实现通讯录总体架构...
    99+
    2024-04-02
  • C语言实现自动存取款机模拟系统
    本文实例为大家分享了C语言实现自动存取款机模拟系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string....
    99+
    2024-04-02
  • C语言模拟实现学生学籍管理系统
    学生学籍管理系统的C语言模拟实现是对链表、指针、结构体、文件操作等知识点的综合运用,需要实现的功能主要包含:输入学生信息、显示学生信息、查询学生信息、新增学生信息、删除学生信息、修改...
    99+
    2024-04-02
  • java+mysql模拟实现银行系统
    模拟电子银行,开户,存钱,取钱,查询用户信息,修改用户信息,查询余额,查询明细,注销,退出,等等  基本实现了相关功能。但是规定每次需要重新登录,还是很麻烦的。 另外用户注销时候,没有规定删除operato...
    99+
    2022-05-22
    java mysql 银行系统
  • C++如何实现通讯录系统
    本篇内容介绍了“C++如何实现通讯录系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!制作一个具有添加联系人、删除联系人、修改联系人等功能的...
    99+
    2023-07-02
  • C++实现简单通讯录系统
    本文实例为大家分享了C++实现简单通讯录系统的具体代码,供大家参考,具体内容如下 需求分析: 1.通讯录可以添加联系人。 2.通讯录可以显示所有联系人。 3.通讯录可以查找联系人。 ...
    99+
    2024-04-02
  • python模拟实现图书管理系统
    本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下 软件python 事先用代码写一个存储数据的数据库,也就是,.txt文件这是我模拟的一个数据 d...
    99+
    2024-04-02
  • Java如何实现ATM机模拟系统
    这篇“Java如何实现ATM机模拟系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现ATM机模拟系统”文章吧...
    99+
    2023-07-02
  • Java详解实现ATM机模拟系统
    目录一、概述二、程序概要设计三、程序详细设计四、程序演示一、概述 (1)选题分析 (2) 开发环境 开发环境,选择IDEA这一Java开发软件,基于JDK1.8版本,在本机windo...
    99+
    2024-04-02
  • C语言如何实现自动存取款机模拟系统
    这篇文章主要讲解了“C语言如何实现自动存取款机模拟系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言如何实现自动存取款机模拟系统”吧!#include<stdio.h>#i...
    99+
    2023-06-30
  • C语言之通讯录的模拟实现代码
    目录纲要:一.通讯录的静态版本    1.添加联系人  2.展示联系人  3.删除联系人  4.查找联系人信息  5.修改联系人信息  6.排序联系人 --- 我们使用 qsort ...
    99+
    2024-04-02
  • C语言怎么模拟实现动态通讯录
    本篇内容主要讲解“C语言怎么模拟实现动态通讯录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么模拟实现动态通讯录”吧!目录模拟实现通讯录总体架构一览图文件执行任务分模块实现 测...
    99+
    2023-06-20
  • C语言模拟实现通讯录程序过程
    目录一、前言二、正文1.大体框架2.界面显示3. 创建通讯录4.初始化通讯录5.增加联系人6.显示联系人7. 删除联系人8.查找联系人9.修改联系人10. 排序联系人一、前言 在上一...
    99+
    2023-02-14
    C语言模拟实现通讯录 C语言模拟通讯录 C语言通讯录
  • C++实现通讯录系统项目实战
    本文实例为大家分享了C++实现通讯录系统项目的具体代码,供大家参考,具体内容如下 制作一个具有添加联系人、删除联系人、修改联系人等功能的通讯录系统 效果图: 代码如下: #incl...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作