⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traffic.cpp

📁 全国交通算法,求最短路径,最省时间,最少工作量. VC开发的,很有借鉴意义
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		cout << "\n\t\t";
		cout << "始发:";
		cout << "\t" << p.edges[i].p.ivex <<" :" << GT.Adjlist[p.edges[i].p.ivex].cityName;
		PrintTime(p.edges[i].p.StartTime);		
		cout << "\n\t\t";
		cout << "到达:";
		cout << "\t"<< p.edges[i].p.jvex << ":" << GT.Adjlist[p.edges[i].p.jvex].cityName;
		PrintTime(p.edges[i].p.EndTime);
		cout <<"票价:" << p.edges[i].p.Money << "  元 ";

		if(p.edges[i].p.StartTime<now&&p.edges[i].p.EndTime>=now)
			sum_Time+=(1440+TimeSub(p.edges[i].p.EndTime,now));
		else
			sum_Time+=TimeSub(p.edges[i].p.EndTime,now);
		now=p.edges[i].p.EndTime;
		cout << "\n\n";
	}
	
	hour=sum_Time/60;
	minute=sum_Time%60;
	cout << "共需" << hour << "小时" << minute <<"分" << "\n\n";
}

//最省钱咨询
void Inquire_Money(Graph GT,Graph GP)
{
	Path p;
	int n=5;
	int st,nd;
	while(1)
	{
		cout << "\t\t 1.查询飞机";
		cout << "\t 2.查询火车";
		cout << "\t 0.退出\n";
		cout << "\t   请选择:";
		cin >> n;
		fflush(stdin);
		cout << "\n";
		if(n==1)
		{
			input_Money(GP,st, nd);
			LeastMoneyPath (GP,st,nd,p);   //最少钱数
			print_Money(GP,p);
			break;
		}
		else if(n==2)
		{
			input_Money(GT,st, nd);
			LeastMoneyPath (GT,st,nd,p);   //最少钱数
			print_Money(GT,p);
			break;
		}
		else if (n==0)
			break;
		else
			cout << "输入有误,请重新输入!\n\n";
	}
}
//最快到达咨询
void Inquire_Time(Graph GT,Graph GP)
{
	Path p;
	int n=5;
	int st,nd;
	int time;
	while(1)
	{
		cout << "\t\t 1.查询飞机";
		cout << "\t 2.查询火车";
		cout << "\t 0.退出";
		cout << "\t    请选择:";
		cin >> n;
		fflush(stdin);
		cout << "\n";
		if(n==1)
		{
			input_Time(GP,st,nd,time);
			ShortestTimePath (GP,st,nd,time,p);  //最短时间
			print_Time(GP,p,time);
			break;
		}
		else if(n==2)
		{
			input_Time(GT,st,nd,time);
			ShortestTimePath(GT,st,nd,time,p);  //最短时间
			print_Time(GT,p,time);
			break;
		}
		else if (n==0)
			break;
		else
			cout << "输入有误,请重新输入!\n\n";
	}	
		
}


//咨询系统菜单
void Inquire_Menu(Graph GT,Graph GP)
{
	while(1)
	{
		int choice=5;
		cout << "\t********************************************************************"<<"\n";
		cout << "\t*        咨询系统菜单                                              *"<<"\n";
		cout << "\t*                             1.最省钱咨询                         *"<<"\n";
		cout << "\t*                             2.最快到达咨询                       *"<<"\n";
		cout << "\t*                             0.退出系统                           *"<<"\n";
		cout << "\t********************************************************************"<<"\n";
		cout << "           请选择: ";
		cin >> choice;
		fflush(stdin);
		if(choice==0) break;
		switch(choice)
		{
		case 1: Inquire_Money(GT,GP);break;
		case 2: Inquire_Time(GT,GP);break;
		default:
			{
					cout << "	   输入错误选项,请重试。\n\n";
			}
		}
	}
}

//城市编辑
void City_Edit(Graph &GT,Graph &GP)
{
	int n,i;
	char name[10];
	while(1)
	{
	cout << "\n";
	cout << "\t 1.添加城市      ";
	cout << "\t  2.删除城市      ";
	cout << "\t  0.退出          ";

	cout << "\t\t\t\t 请选择:";
	cin >> n;
	fflush(stdin);
	if(n==1)
	{	
		cout << "\n请输入添加城市的名称:";
		cin >> name;
		fflush(stdin);
		InsertVex(GT,name);
		InsertVex(GP,name);
		cout << "\n添加成功!"<<"\n";
		break;
	}
	else if(n==2)
	{
		cout << "\n请输入删除城市的名称:";
		if(input_Vex(GT,i)==true)
		{
			DeleteVex(GT,i);
			DeleteVex(GP,i);
			cout << "删除成功!\n";
		}
		break;
	}
	else if(n==0)
	{
		cout << "\n";
		break;
	}
	else
		cout << "输入有误,请重新输入!";
	}
}

//列车时刻表编辑 
void Train_Edit(Graph &GT,Graph GP)
{
	int n,st,sn;
	int hour,minute;
	char number[10];
	EdgeInfo q;
	while(1)
	{
	cout << "\n";

	cout << "\t 1.添加列车      ";
	cout << "\t 2.删除列车        ";
	cout << "\t 0.退出            ";
	cout << "\t\t\t 请选择:";
	cin>>n;
	fflush(stdin);
	if(n==1)
	{	
		while(1)
		{
			cout << "\n请输入起始城市的名称:";
			if(input_Vex(GT,st)==true)
				break;
		}
		while(1)
		{
			cout << "\n请输入终点城市的名称:";
			if(input_Vex(GT,sn)==true)
				break;
		}
		
		cout << "\n请输入车次:";
		cin >> number ;
		fflush(stdin);
		
		q.ivex=st;
		q.jvex=sn;
		strcpy(q.Number,number);
	
		cout << "\n请输入票价:";
		cin >> q.Money;
		fflush(stdin);
	
		cout << "\n请输入起始时间:";
		cout << "\n几点: ";
		cin >> hour;
		fflush(stdin);
		cout << "几分: ";
		cin >> minute;
		fflush(stdin);
		q.StartTime=TimeChange(hour,minute);
	
		cout << "\n请输入到站时间:";
		cout << "\n几点: ";
		cin >> hour;
		fflush(stdin);
		cout << "几分: ";
		cin >> minute;
		fflush(stdin);
	
		q.EndTime=TimeChange(hour,minute);

		q.Time=TimeSub(q.EndTime,q.StartTime);

		cout << "\n行车时间:" << q.Time/60 << "小时 " << q.Time%60 << "分钟";
		
		InsertEdge(GT,q);

		cout << "\n添加成功!"<< "\n";
		break;
	}
	else if(n==2)
	{
		while(1)
		{
			cout << "\n请输入起始城市的名称:";
			if(input_Vex(GT,st)==true)
				break;
		}
		while(1)
		{
			cout << "\n请输入终点城市的名称:";
			if(input_Vex(GT,sn)==true)
				break;
		}

		cout << "\n请输入车次:";
		if(input_Number(GT,st,sn,number))
		{
		q.ivex=st;
		q.jvex=sn;
		strcpy(q.Number,number);
		DeleteEdge(GT,q);
		cout << "删除成功!\n";
		break;
		}
	}
	else if(n==0)
	{
		cout << ("\n");
		break;
	}
	else
		cout << "输入有误,请重新输入!";
	}

}

//航班时刻表编辑
void Plane_Edit(Graph GT,Graph &GP)
{
	int n,st,sn;
	int hour,minute;
	char number[10];
	EdgeInfo q;
	while(1)
	{
	cout << ("\n");

	cout << "\t 1.添加航班     ";
	cout << "\t 2.删除航班       ";
	cout << "\t 0.退出           ";
	cout << "\t\t\t 请选择:";
	cin >> n;
	fflush(stdin);
	if(n==1)
	{	
		while(1)
		{
			cout << "\n请输入起始城市的名称:";
			if(input_Vex(GP,st)==true)
				break;
		}
		while(1)
		{
			cout << "\n请输入终点城市的名称:";
			if(input_Vex(GP,sn)==true)
				break;
		}
		
		cout << "\n请输入航班号:";
		
		cin >> number;
		fflush(stdin);
	
		q.ivex=st;
		q.jvex=sn;
		strcpy(q.Number,number);
	
		cout << "\n请输入票价:";
		cin >> q.Money;
		fflush(stdin);
	
		cout << "\n请输入起始时间:" <<"\n";
		cout << "\n几点: ";
		cin >> hour;
		fflush(stdin);
		cout << "几分: ";
		cin >> minute;
		fflush(stdin);
		q.StartTime=TimeChange(hour,minute);
	
		cout << "\n请输入到达时间:";
		cout << "\n几点: ";
		cin >> hour;
		fflush(stdin);
		cout << "几分: ";
		cin >> minute;
		fflush(stdin);
	
		q.EndTime=TimeChange(hour,minute);

		q.Time=TimeSub(q.EndTime,q.StartTime);

		//cout << "\n行车时间:" << q.Time << "分钟";
		cout << "\n行车时间:" << q.Time/60 << "小时 " << q.Time%60 << "分钟";
		
		InsertEdge(GP,q);

		cout << "\n添加成功!"<< "\n";
		break;
	}
	else if(n==2)
	{
		while(1)
		{
			cout << "\n请输入起始城市的名称:";
			if(input_Vex(GT,st)==true)
				break;
		}
		while(1)
		{
			cout << "\n请输入终点城市的名称:";
			if(input_Vex(GT,sn)==true)
				break;
		}

		cout << "\n请输入航班号:";
		if(input_Number(GP,st,sn,number))
		{
		q.ivex=st;
		q.jvex=sn;
		strcpy(q.Number,number);
		DeleteEdge(GP,q);
		cout << "删除成功!\n";
		break;
		}
	}
	else if(n==0)
	{
		cout << "\n";
		break;
	}
	else
		cout << "输入有误,请重新输入!";
	}

}


void Manage_Menu(Graph &GT,Graph &GP)
{
	while(1)
	{
		int choice=5;
		cout << "\t********************************************************************"<< "\n";
		cout << "\t*                             管理系统菜单                         *"<<"\n";
		cout << "\t*                             1.城市编辑                           *"<<"\n";
		cout << "\t*                             2.列车时刻表编辑                     *"<<"\n";
		cout << "\t*                             3.航班时刻表编辑                     *"<<"\n";
		cout << "\t*                             0.退出系统                           *"<<"\n";
		cout << "\t********************************************************************"<< "\n";
		cout << "           请选择: ";
		cin >> choice;
		fflush(stdin);
		if(choice==0) break;
		switch(choice)
		{
		case 1: City_Edit(GT,GP);break;
		case 2: Train_Edit(GT,GP);break;
		case 3: Plane_Edit(GT,GP);break;
		default:{
					cout << "	   输入错误选项,请重试。\n\n";
				}
		}
	}
}

int Main_Menu(Graph &GT,Graph &GP)
{
	while(1)
	{
		int choicem=3;
		cout << ("\n");
		cout << "\t********************************************************************"<< "\n";
		cout << "\t*                   欢迎进入全国交通咨询系统主菜单                 *"<<"\n";
		cout << "\t*                            1.咨询系统                            *"<<"\n";
		cout << "\t*                            2.管理系统                            *"<<"\n";
		cout << "\t*                            0.退出系统                            *"<<"\n";
		cout << "\t********************************************************************"<< "\n";
		cout << "\t\t\t           请选择: ";
		cin >> choicem;
		cout << "\n";
		fflush(stdin);//清除输入流
		switch(choicem)
		{
			case 1: Inquire_Menu(GT,GP);break;
			case 2: Manage_Menu(GT,GP);break;
			case 0: return choicem;
			default:
			{
				cout << "	   输入有误,请重试。\n\n";
			}
		}
	}
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -