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

📄 最终修改.txt

📁 本程序实现的是南京的公交线路查询
💻 TXT
📖 第 1 页 / 共 3 页
字号:
		cin>>fun;
		switch(fun)
		{
		case 0:
			break;
		case 1:
			
			cout<<"        请输入公交的路线"<<endl;
			cin>>input_line;
			for(boy0=0;boy0<=bus_num;boy0++)
			{
				line_cmp_result=strcmp(input_line,bus_line[boy0].name);
				if(line_cmp_result==0)
				{
					for(boy1=0;boy1<=bus_line[boy0].geshu;boy1++)
					{
						if(boy1%5==0)cout<<endl;
						cout<<bus_line[boy0].line[boy1]<<"   ";
						
						
						
					}
					
					correct0=1;////
					
				}
			}
			if(correct0==0)
			{cout<<"输入的站点有误"<<endl;
			break;
			}
			cout<<endl;
			
			break;
			
		case 2:
			cout<<"     请输入要查询的站点"<<endl;
			cin>>input_stage;
			for(girl0=0;girl0<=stage_num;girl0++)
			{
				compare=strcmp(input_stage,stage[girl0].name);
				if(compare==0)
				{
					cout<<"经过的公交线为为"<<endl;
					for(girl1=0;girl1<stage[girl0].line_in;girl1++)
					{
						
						if(girl1%5==0)cout<<endl;
						cout<<stage[girl0].biaoji[girl1].way<<"路   ";
						
						
						
					}
					
					correct1=1;
				}
				
			}
			if(correct1==0)
			{
				xiao0_counter=0;
				cout<<"输入有错误"<<endl;
				for(she=0;she<=stage_num;she++)
				{
					stage[she].quan=mohu(input_stage,stage[she].name);
					if(stage[she].quan>=xiao1)
					{
						xiao1=stage[she].quan;/////找出整个的最大权值
					}
				}
				for(she=0;she<=stage_num;she++)
				{
					
					if(stage[she].quan==xiao1)
					{
						
						xiao0[xiao0_counter]=stage[she].num;
						xiao0_counter++;
						
						
					}
					
					
				}
				for(she=0;she<xiao0_counter;she++)
					cout<<"你是不是在找  "<<stage[xiao0[she]].name<<"?"<<endl;
				
				
				
				break;
				
				
			}
			cout<<endl;
			
			break;
			
			
			
			
		case 3:	
			int i_beg;
			int i_end;
			int i_beg_enable=1;
			int i_end_enable=1;
			
			cout<<"请输入起始站点的名字"<<endl;
			cin>>input1;
			cout<<"请输入终点的站名"<<endl;
			cin>>input2;
			
			for(int i=0;i<=stage_num;i++)
			{
				
				i_beg=strcmp(input1,stage[i].name);
				i_end=strcmp(input2,stage[i].name);
				
				if(i_beg==0)///////起始站找到了相同的点
				{
					begin_stage=stage[i].num;					
					i_beg_enable=0;
					
					
					
				}
				
				if(i_end==0)
				{
					end_stage=stage[i].num;
					
					i_end_enable=0;
					
					
				}
				
				
				
			}
			
			
			if(i_beg_enable==1||i_end_enable==1)
			{
				cout<<"输入的站点有错误"<<endl;
				if(i_beg_enable==1)
				{
					xiao0_counter=0;
					cout<<"输入起始站有错误"<<endl;
					for(she=0;she<=stage_num;she++)
					{
						stage[she].quan=mohu(input1,stage[she].name);
						if(stage[she].quan>=xiao1)
						{
							xiao1=stage[she].quan;/////找出整个的最大权值
						}
					}
					for(she=0;she<=stage_num;she++)
					{
						
						if(stage[she].quan==xiao1)
						{
							
							xiao0[xiao0_counter]=stage[she].num;
							xiao0_counter++;
							
							
						}
						
						
					}
					for(she=0;she<xiao0_counter;she++)
						cout<<"你是不是在找  "<<stage[xiao0[she]].name<<"?"<<endl;
					
					cout<<endl;
					
					
					
					
				}
				if(i_end_enable==1)
				{
					xiao0_counter=0;
					
					cout<<"输入终点站有错误"<<endl;
					for(she=0;she<=stage_num;she++)
					{
						stage[she].quan=mohu(input2,stage[she].name);
						if(stage[she].quan>=xiao1)
						{
							xiao1=stage[she].quan;/////找出整个的最大权值
						}
					}
					for(she=0;she<=stage_num;she++)
					{
						
						if(stage[she].quan==xiao1)
						{
							
							xiao0[xiao0_counter]=stage[she].num;
							xiao0_counter++;
							
							
						}
						
						
					}
					for(she=0;she<xiao0_counter;she++)
						cout<<"你是不是在找  "<<stage[xiao0[she]].name<<"?"<<endl;
					
					cout<<endl;
					
					
					
				}
				
				goto labnext;
			}
			
			///////////****到此已经得到了起点和终点在整个stage数组中的位置****////////////
			///////////下面就是对起点和终点所包括的集合里取交集//////////
			
			for(int qq0=0;qq0<stage[begin_stage].line_in;qq0++)
				for(int qq1=0;qq1<stage[end_stage].line_in;qq1++)
				{
					int tmp_ji;
					tmp_ji=strcmp(stage[begin_stage].biaoji[qq0].way,stage[end_stage].biaoji[qq1].way);
					if(tmp_ji==0)
					{
						strcpy(same[same_counter0],stage[begin_stage].biaoji[qq0].way);
						same_counter0++;						
					}
					
				}	
					
					for(int an=0;an<same_counter0;an++)
					{
						if(an==0)
						{
							cout<<"有直达车"<<endl;
							cout<<endl;
						}
						cout<<"第"<<an+1<<"条为"<<same[an]<<"路"<<endl;
					}
					/////////***不转车的情况结束,验证成功***//////////
					////////****以下是要转一次车的情况*****///////
					if(same_counter0==0)
					{
						for(int pp0=0;pp0<stage[begin_stage].line_in;pp0++)////////遍历所有经过这个站点的路线
						{
							for(int pp1=0;pp1<=bus_num;pp1++)
							{
								int tmp_use;
								tmp_use=strcmp(stage[begin_stage].biaoji[pp0].way,bus_line[pp1].name);

								if(tmp_use==0)////寻找公交车号相同的,将经过的站台的存放到line_all
								{
									for(int pp2=0;pp2<=bus_line[pp1].geshu;pp2++)
									{
										int tmp10;
										
										for(int pp3=0;pp3<=cross_stage;pp3++)///////查询是不是有重复的站点的进入,防止重复
										{
											
											tmp10=strcmp(bus_line[pp1].line[pp2],line_all[pp3]);
											
											
											if(tmp10==0)
											{
												enable_add=0;
												break;
											}	
										}
										if(enable_add==1)
										{
											strcpy(line_all[cross_stage],bus_line[pp1].line[pp2]);
											cross_stage++;
											
											
											
										}
										enable_add=1;
										
									}
									
									
								}
							}
							
						}		
						
						
						
						///////////////*****到此为止已经得到了由起始站点所能达到的站点的值,放在line_all数组里,站的数目为cross_stage**/////////
						/////////以下是将line_all数组里的站点所经过的路线全部保存到一个数组里//////////
						for(int jj0=0;jj0<cross_stage;jj0++)
							for(int jj1=0;jj1<=stage_num;jj1++)
							{
								int we;
								we=strcmp(line_all[jj0],stage[jj1].name);
								if(we==0)///相同的站点则将此站点所经过的路线值导入
								{
									for(int jj2=0;jj2<stage[jj1].line_in;jj2++)
									{
										for(int jj3=0;jj3<=line_num_flag;jj3++)/////查询现有的line_num数组里是不是已经有相同的值
										{
											int tmp_ji1;
											tmp_ji1=strcmp(stage[jj1].biaoji[jj2].way,line_num[jj3]);
											if(tmp_ji1==0)
											{
												line_num_enable=0;
												break;
											}
											
										}
										
										
										if(line_num_enable==1)/////允许计入到数组
										{
											strcpy(line_num[line_num_flag],stage[jj1].biaoji[jj2].way);
											line_num_flag++;
											
										}
										line_num_enable=1;
										
									}
								}
								
								
								
							}
							
							for(int jj5=0;jj5<line_num_flag;jj5++)//////取相同的值
								for(int jj6=0;jj6<stage[end_stage].line_in;jj6++)
								{
									int tmp_ji2;
									tmp_ji2=strcmp(line_num[jj5],stage[end_stage].biaoji[jj6].way);
									if(tmp_ji2==0)
									{
										strcpy(same1_2[same1_2counter],line_num[jj5]);
										same1_2counter++;
									}
								}
									////////**起点的中转与终点的交集结束**///////
								
									
									////***起点的中转与起点的交集得到从起点到终点所坐的车***/////
									for(int jj9=0;jj9<line_num_flag;jj9++)
										for(int jj10=0;jj10<stage[begin_stage].line_in;jj10++)
										{
											int tmp_ji3;
											tmp_ji3=strcmp(line_num[jj9],stage[begin_stage].biaoji[jj10].way);
											if(tmp_ji3==0)
											{
												strcpy(same1_1[same1_1counter],line_num[jj9]);
												same1_1counter++;
												
												
											}
										}
												

⌨️ 快捷键说明

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