课程综合设计

4、模拟智能交通信号灯系统

    设计一个智能信号灯系统,在十字路口控制东西南北四个方向交通信号,当然是红灯停绿灯行了,一般情况是四个方向每次绿灯亮30秒,只不过在绿灯熄灭后亮3秒黄灯再转红灯。现要求系统能够根据各个方向路口来的车流情况动态分配信号灯在来车多的方向绿灯可以綖长30秒时间,为此在各个路口设有车流信号统计器,可以向系统动态发送车流信息。



	#include<iostream>  
	#include<windows.h>
	using namespace std;  
	int main()  
	{
		int cars1,cars2,cars3,cars4;
		struct light
		{
			int front;
			int left;
			int right;
		}green1,green2,green3,green4,yellow1,yellow2,yellow3,yellow4,red1,red2,red3,red4;
		while(1)
		{
//--------------------路口1----------------------------------------------------------------//
			cout<<"输入路口1车流量"<<endl;
			cin>>cars1;
			if(cars1<25){
				green1.front=30;
				green1.right=20;
				green1.left=20;}
			if(cars1>=25){
				green1.front=30+(cars1-25);
				green1.right=20+(cars1-25);
				green1.left=20+(cars1-25);}
            for(;green1.front>=0;){
				cout<<"green to front:"<<green1.front<<endl;
				green1.front--;
				if(green1.right>=0){
				cout<<"green to right:"<<green1.right<<endl;
				green1.right--;
				cout<<"green to left:"<<green1.left;
				green1.left--;}
				Sleep(1000);
				system("cls");}
//--------------------路口2----------------------------------------------------------------//
			cout<<"输入路口2车流量"<<endl;
			cin>>cars2;
			if(cars2<25){
				green2.front=30;
				green2.right=20;
				green2.left=20;}
			if(cars2>=25){
				green2.front=30+(cars2-25);
				green2.right=20+(cars2-25);
				green2.left=20+(cars2-25);}
            for(;green2.front>=0;){
				cout<<"green to front:"<<green2.front<<endl;
				green2.front--;
				if(green2.right>=0){
				cout<<"green to right:"<<green2.right<<endl;
				green2.right--;
				cout<<"green to left:"<<green2.left;
				green2.left--;}
				Sleep(1000);
				system("cls");}
//--------------------路口3----------------------------------------------------------------//
			cout<<"输入路口3车流量"<<endl;
			cin>>cars3;
			if(cars3<25){
				green3.front=30;
				green3.right=20;
				green3.left=20;}
			if(cars3>=25){
				green3.front=30+(cars3-25);
				green3.right=20+(cars3-25);
				green3.left=20+(cars3-25);}
            for(;green3.front>=0;){
				cout<<"green to front:"<<green3.front<<endl;
				green3.front--;
				if(green3.right>=0){
				cout<<"green to right:"<<green3.right<<endl;
				green3.right--;
				cout<<"green to left:"<<green3.left;
				green3.left--;}
				Sleep(1000);
				system("cls");}
//--------------------路口4----------------------------------------------------------------//
			cout<<"输入路口4车流量"<<endl;
			cin>>cars4;
			if(cars4<25){
				green4.front=30;
				green4.right=20;
				green4.left=20;}
			if(cars4>=25){
				green4.front=30+(cars4-25);
				green4.right=20+(cars4-25);
				green4.left=20+(cars4-25);}
            for(;green4.front>=0;){
				cout<<"green to front:"<<green4.front<<endl;
				green4.front--;
				if(green4.right>=0){
				cout<<"green to right:"<<green4.right<<endl;
				green4.right--;
				cout<<"green to left:"<<green4.left;
				green4.left--;}
				Sleep(1000);
				system("cls");}
		}
			return 0;
	}

说明:该程序中1234分别指东南西北方向。程序首先定义了四个路口的车流量,利用结构体变量的方法再定义了四个路口的绿黄红灯。接着,由各个路口的车流信号统计器统计出车辆数再自动给程序CIN该数量,程序将根据该车辆数大小动态延长绿灯时长(而不是简单延长30S)。四个路口读秒结束后又将重新读数,如此循环



修改中

	#include<iostream>  
	#include<windows.h>
	using namespace std;  
	int main()  
	{
		int cars1,cars2,cars3,cars4;
		struct light
		{
			int front;
			int left;
			int right;
		}green1,green2,green3,green4,yellow1,yellow2,yellow3,yellow4,red1,red2,red3,red4;
		int yellow=3,red=30;
		while(1)
		{
//--------------------路口1----------------------------------------------------------------//
			cout<<"输入路口1车流量"<<endl;
			cin>>cars1;
			if(cars1<25){
				green1.front=30;
				green1.right=20;
				green1.left=20;}
			if(cars1>=25){
				green1.front=30+(cars1-25);
				green1.right=20+(cars1-25);
				green1.left=20+(cars1-25);}
			do
			{
			    cout<<"green to front:"<<green1.front<<endl;
				green1.front--;
				if(yellow>=0){
				if(green1.right>=0){
	            cout<<"green to right:"<<green1.right<<endl;
			   	green1.right--;
				cout<<"green to left:"<<green1.left;
				green1.left--;}
				else{
				cout<<"yellow to right:"<<yellow<<endl
					<<"yellow to left:"<<yellow;
				yellow--;} }
				Sleep(2000);
				system("cls");
			}while(green1.front>=0);

				for(yellow=3;yellow>=0;yellow--){			
			    cout<<"yellow to front:"<<yellow<<endl;
				Sleep(2000);
				system("cls");}

//--------------------路口2----------------------------------------------------------------//
			cout<<"输入路口2车流量"<<endl;
			cin>>cars2;
			if(cars2<25){
				green2.front=30;
				green2.right=20;
				green2.left=20;}
			if(cars1>=25){
				green2.front=30+(cars1-25);
				green2.right=20+(cars1-25);
				green2.left=20+(cars1-25);}
			do
			{
			    cout<<"green to front:"<<green2.front<<endl;
				green2.front--;
				if(yellow>=0){
				if(green2.right>=0){
	            cout<<"green to right:"<<green2.right<<endl;
			   	green2.right--;
				cout<<"green to left:"<<green2.left;
				green2.left--;}
				else{
				cout<<"yellow to right:"<<yellow<<endl
					<<"yellow to left:"<<yellow;
				yellow--;} }
				Sleep(2000);
				system("cls");
			}while(green2.front>=0);

				for(yellow=3;yellow>=0;yellow--){			
			    cout<<"yellow to front:"<<yellow<<endl;
				Sleep(2000);
				system("cls");}

//--------------------路口3----------------------------------------------------------------//
			cout<<"输入路口3车流量"<<endl;
			cin>>cars3;
			if(cars3<25){
				green3.front=30;
				green3.right=20;
				green3.left=20;}
			if(cars3>=25){
				green3.front=30+(cars3-25);
				green3.right=20+(cars3-25);
				green3.left=20+(cars3-25);}
            for(;green3.front>=0;){
				cout<<"green to front:"<<green3.front<<endl;
				green3.front--;
				if(green3.right>=0){
				cout<<"green to right:"<<green3.right<<endl;
				green3.right--;
				cout<<"green to left:"<<green3.left;
				green3.left--;}
				Sleep(1000);
				system("cls");}
//--------------------路口4----------------------------------------------------------------//
			cout<<"输入路口4车流量"<<endl;
			cin>>cars4;
			if(cars4<25){
				green4.front=30;
				green4.right=20;
				green4.left=20;}
			if(cars4>=25){
				green4.front=30+(cars4-25);
				green4.right=20+(cars4-25);
				green4.left=20+(cars4-25);}
            for(;green4.front>=0;){
				cout<<"green to front:"<<green4.front<<endl;
				green4.front--;
				if(green4.right>=0){
				cout<<"green to right:"<<green4.right<<endl;
				green4.right--;
				cout<<"green to left:"<<green4.left;
				green4.left--;}
				Sleep(1000);
				system("cls");}
		}
			return 0;
	}


修改后:

	#include<iostream>  
	#include<windows.h>
	using namespace std;  
	int main()  
	{
		int cars1,cars2,cars3,cars4;
		struct light
		{
			int front;
			int left;
			int right;
		}green1,green2,green3,green4;
		int yellow=3,red=30;
		while(1)
		{
//--------------------路口1----------------------------------------------------------------//			
			cout<<"输入路口1车流量"<<endl;
			cin>>cars1;
			if(cars1<25){
				green1.front=30;
				green1.right=20;
				green1.left=20;}
			if(cars1>=25){
				green1.front=30+(cars1-25);
				green1.right=20+(cars1-25);
				green1.left=20+(cars1-25);}
			do
			{
			    cout<<"       green to front - - - - - - - - - - -    "<<green1.front<<endl;
				green1.front--;
				if(yellow>=0){
				if(green1.right>=0){
	            cout<<"       green to right - - - - - - - - - - -    "<<green1.right<<endl;
			   	green1.right--;
				cout<<"       green to left  - - - - - - - - - - -    "<<green1.left;
				green1.left--;}
				else{
				cout<<"       yellow to right -  - - - - - - - - -    "<<yellow<<endl
					<<"       yellow to left  -  - - - - - - - - -    "<<yellow;
				yellow--;} }
				Sleep(200);
				system("cls");
			}while(green1.front>=0);

				for(yellow=3;yellow>=0;yellow--){			
			    cout<<"       yellow to front -  - - - - - - - - -    "<<yellow<<endl;
				Sleep(200);
				system("cls");}

//--------------------路口2----------------------------------------------------------------//
			yellow=3;
			cout<<"输入路口2车流量"<<endl;
			cin>>cars2;
			if(cars2<25){
				green2.front=30;
				green2.right=20;
				green2.left=20;}
			if(cars2>=25){
				green2.front=30+(cars2-25);
				green2.right=20+(cars2-25);
				green2.left=20+(cars2-25);}
			do
			{
			    cout<<"       green to front - - - - - - - - - - -    "<<green2.front<<endl;
				green2.front--;
				if(yellow>=0){
				if(green2.right>=0){
	            cout<<"       green to right - - - - - - - - - - -    "<<green2.right<<endl;
			   	green2.right--;
				cout<<"       green to left  - - - - - - - - - - -    "<<green2.left;
				green2.left--;}
				else{
				cout<<"       yellow to right -  - - - - - - - - -    "<<yellow<<endl
					<<"       yellow to left  -  - - - - - - - - -    "<<yellow;
				yellow--;} }
				Sleep(200);
				system("cls");
			}while(green2.front>=0);

				for(yellow=3;yellow>=0;yellow--){			
			    cout<<"       yellow to front -  - - - - - - - - -    "<<yellow<<endl;
				Sleep(200);
				system("cls");}
//--------------------路口3----------------------------------------------------------------//
			yellow=3;
			cout<<"输入路口3车流量"<<endl;
			cin>>cars3;
			if(cars3<25){
				green3.front=30;
				green3.right=20;
				green3.left=20;}
			if(cars1>=25){
				green3.front=30+(cars3-25);
				green3.right=20+(cars3-25);
				green3.left=20+(cars3-25);}
			do
			{
			    cout<<"       green to front - - - - - - - - - - -    "<<green3.front<<endl;
				green3.front--;
				if(yellow>=0){
				if(green3.right>=0){
	            cout<<"       green to right - - - - - - - - - - -    "<<green3.right<<endl;
			   	green3.right--;
				cout<<"       green to left  - - - - - - - - - - -    "<<green3.left;
				green3.left--;}
				else{
				cout<<"       yellow to right -  - - - - - - - - -    "<<yellow<<endl
					<<"       yellow to left  -  - - - - - - - - -    "<<yellow;
				yellow--;} }
				Sleep(200);
				system("cls");
			}while(green3.front>=0);

				for(yellow=3;yellow>=0;yellow--){			
			    cout<<"       yellow to front -  - - - - - - - - -    "<<yellow<<endl;
				Sleep(200);
				system("cls");}
	
//--------------------路口4----------------------------------------------------------------//
			yellow=3;
			cout<<"输入路口4车流量"<<endl;
			cin>>cars4;
			if(cars4<25){
				green4.front=30;
				green4.right=20;
				green4.left=20;}
			if(cars4>=25){
				green4.front=30+(cars4-25);
				green4.right=20+(cars4-25);
				green4.left=20+(cars4-25);}
			do
			{
			    cout<<"       green to front - - - - - - - - - - -    "<<green4.front<<endl;
				green4.front--;
				if(yellow>=0){
				if(green4.right>=0){
	            cout<<"       green to right - - - - - - - - - - -    "<<green4.right<<endl;
			   	green4.right--;
				cout<<"       green to left  - - - - - - - - - - -    "<<green4.left;
				green4.left--;}
				else{
				cout<<"       yellow to right -  - - - - - - - - -    "<<yellow<<endl
					<<"       yellow to left  -  - - - - - - - - -    "<<yellow;
				yellow--;} }
				Sleep(200);
				system("cls");
			}while(green4.front>=0);

				for(yellow=3;yellow>=0;yellow--){			
			    cout<<"       yellow to front -  - - - - - - - - -    "<<yellow<<endl;
				Sleep(200);
				system("cls");}
		}  
            return 0;  
}  



在把红灯加上去的时候遇到比较大的阻力,因为一个路口中向前的绿黄红灯和转弯的绿黄红灯的读秒是同时进行但又分别工作。所以目前完成的是绿黄灯同时独立读秒


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值