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

📄 完成.cpp

📁 全副交通管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		} //else
	}// while(!found)
	copyPath(Path,path[j]);
}


void Search_Money(GraphType GT,GraphType GP)
{
  int n;
  int i,j;

 PathType p;

  char name[10];
  while(1)
  {
     printf("\t\t    1.查询飞机");
		printf("\t   2.查询火车");
		printf("\t   0.退出");
		printf("\t    请选择:");
		scanf("%d",&n);
	
		printf("\n");
		if(n==1)
		{
           printf("\n请输入起始城市的名称:");
              scanf("%s",name);

			  for(i=0;i<MAXNODE;i++)  
			  {
				  if(strcmp(GP.Adjlist[i].cityname,name)==0&&GP.Flag[i]==1)
                   break;
				  if(i==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }
		 
              
			  printf("\n请输入终点城市的名称:");
               scanf("%s",name);

              for(j=0;j<MAXNODE;j++)  
			  {
				  if(strcmp(GP.Adjlist[j].cityname,name)==0&&GP.Flag[j]==1)
                   break;
				  if(j==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }

              GetMoneyLeastPath (GP,i,j,p);   //最少钱数!!!!!!!!!#@$@$@$@$@$
			  print_Money(GP,p);
		      	break;
		}

         	else if(n==2)
		{
             printf("\n请输入起始城市的名称:");
              scanf("%s",name);

			  for(i=0;i<MAXNODE;i++)  
			  {
				  if(strcmp(GT.Adjlist[i].cityname,name)==0&&GT.Flag[i]==1)
                   break;
				  if(i==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }
		 
              
			  printf("\n请输入终点城市的名称:");
               scanf("%s",name);

              for(j=0;j<MAXNODE;j++)  
			  {
				  if(strcmp(GT.Adjlist[j].cityname,name)==0&&GT.Flag[j]==1)
                   break;
				  if(j==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }

              GetMoneyLeastPath (GT,i,j,p);   //最少钱数
			  print_Money(GT,p);
		      	break;
		}

            else if (n==0)
			break;
		else
			printf("输入有误,请重新输入!\n\n");
	}

}



void Search_Time(GraphType GT,GraphType GP)
{
  int n;
  int i,j;
  int time,hour,minute;
 PathType p;

  char name[10];
  while(1)
  {
     printf("\t\t    1.查询飞机");
		printf("\t   2.查询火车");
		printf("\t   0.退出");
		printf("\t    请选择:");
		scanf("%d",&n);
	
		printf("\n");

		printf("请输入拟出发时间:");
    	printf("\n几点>");
	  scanf("%d",&hour);
	  printf("几分>");
	  scanf("%d",&minute);
     	time=TimeChange(hour,minute);
		if(n==1)
		{
           printf("\n请输入起始城市的名称:");
              scanf("%s",name);

			  for(i=0;i<MAXNODE;i++)  
			  {
				  if(strcmp(GP.Adjlist[i].cityname,name)==0&&GP.Flag[i]==1)
                   break;
				  if(i==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }
		 
              
			  printf("\n请输入终点城市的名称:");
               scanf("%s",name);

              for(j=0;j<MAXNODE;j++)  
			  {
				  if(strcmp(GP.Adjlist[j].cityname,name)==0&&GP.Flag[j]==1)
                   break;
				  if(j==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }

               GetTimeShortestPath (GP,i,j,time,p);   
			   print_Time(GP,p,time);
		      	break;
		}

         	else if(n==2)
		{
             printf("\n请输入起始城市的名称:");
              scanf("%s",name);

			  for(i=0;i<MAXNODE;i++)  
			  {
				  if(strcmp(GT.Adjlist[i].cityname,name)==0&&GT.Flag[i]==1)
                   break;
				  if(i==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }
		 
              
			  printf("\n请输入终点城市的名称:");
               scanf("%s",name);

              for(j=0;j<MAXNODE;j++)  
			  {
				  if(strcmp(GT.Adjlist[j].cityname,name)==0&&GT.Flag[j]==1)
                   break;
				  if(j==MAXNODE-1){printf("\n该城市不存在,请添加!");break;}
              }

           GetTimeShortestPath (GT,i,j,time,p);   
			  print_Time(GT,p,time);
		      	break;
		}

            else if (n==0)
			break;
		else
			printf("输入有误,请重新输入!\n\n");
	}

}
//====================================================================



/******************************* < 数据存取 >*************************************/


bool SaveGraph_T(GraphType G)    //保存火车图信息
{
	FILE *fp;
	int i,j=0;
	char c = '\n';
	arctype *p;
	
	if((fp = fopen("Train.txt","w")) == NULL)
	{
		printf("不能建立文件:data.txt");
		return false;
	}
	fprintf(fp,"%d\n",G.vexNum);
    fprintf(fp,"%d\n",G.edgeNum);
	j=0;
	i=0;
	while(j<G.vexNum)
	{
		fprintf(fp,"%d,%s%c",G.Flag[i],G.Adjlist[i].cityname,c);
		if(G.Flag[i]==1)
			j++;
		i++;
	}
	i=0;
	j=0;
	while(j<G.vexNum)
	{
		p = G.Adjlist[i].FirstArc;
		while(p !=NULL)
		{
				fprintf(fp,"%d,%d\n",p->infor.ivex,p->AdjVertex);
				fprintf(fp,"%d,%d,%d,%d\n",p->infor.Money,p->infor.StratTime,p->infor.EndTime,p->infor.Time);
				fprintf(fp,"%s%c",p->infor.Number,c);
			p = p->NextArc;
		}
		if(G.Flag[i]==1)
			j++;
		i++;

	}
	fclose(fp);
	return true;
	
}


bool SaveGraph_P(GraphType G)         //保存飞机图信息
{
	FILE *fp;
	int i,j=0;
	char c = '\n';
   arctype *p;
	
	if((fp = fopen("Plane.txt","w")) == NULL)
	{
		printf("不能建立文件:data.txt");
		return false;
	}
	fprintf(fp,"%d\n",G.vexNum);
    fprintf(fp,"%d\n",G.edgeNum);
	j=0;
	i=0;
	while(j<G.vexNum)
	{
		fprintf(fp,"%d%s%c",G.Flag[i],G.Adjlist[i].cityname,c);
		if(G.Flag[i]==1)
			j++;
		i++;
	}
	i=0;
	j=0;
	while(j<G.vexNum)
	{
		p = G.Adjlist[i].FirstArc;
		while(p !=NULL)
		{
				fprintf(fp,"%d,%d\n",p->infor.ivex,p->AdjVertex);
				fprintf(fp,"%d,%d,%d,%d\n",p->infor.Money,p->infor.StratTime,p->infor.EndTime,p->infor.Time);
				fprintf(fp,"%s%c",p->infor.Number,c);
			p = p->NextArc;
		}
		if(G.Flag[i]==1)
			j++;
		i++;

	}
	fclose(fp);
	return true;
	
}

bool OpenGraph_T(GraphType &G)          //打开火车图
{
	FILE *fp;
	char c='\n';
	int i=0,j=0;
	if((fp = fopen("Train.txt","r")) == NULL)
	{
		printf("Can not open the Train.txt file!\n");
		return false;
	}
   fscanf(fp,"%d",&G.vexNum);
   fscanf(fp,"%d",&G.edgeNum);

	while(j<G.vexNum) 
	{
		 fscanf(fp,"%d,%s",&G.Flag[i], &G.Adjlist[i].cityname);
		 G.Adjlist[i].FirstArc = NULL;
		 if(G.Flag[i]==1)
			 j++;
		 i++;
	 }

	 for(i =0;i<G.edgeNum;i++)
	 {
		 arctype *p = new arctype ;
		 
		 fscanf(fp,"%d,%d",&p->infor.ivex,&p->AdjVertex);
		 fscanf(fp,"%d,%d,%d,%d",&p->infor.Money,&p->infor.StratTime,&p->infor.EndTime,&p->infor.Time);
		 fscanf(fp,"%s",&p->infor.Number);

		 p->NextArc=G.Adjlist[p->infor.ivex].FirstArc;
		 G.Adjlist[p->infor.ivex].FirstArc=p;
	 }
	 fclose(fp);
	 return true;
}

bool OpenGraph_P(GraphType &G)     //打开飞机图
{
	FILE *fp;
	char c='\n';
	int i=0,j=0;
	if((fp = fopen("Plane.txt","r")) == NULL)
	{
		printf("Can not open the Plane.txt file!\n");
		return false;
	}
   fscanf(fp,"%d",&G.vexNum);
   fscanf(fp,"%d",&G.edgeNum);

	while(j<G.vexNum) 
	{
		 fscanf(fp,"%d,%s",&G.Flag[i],&G.Adjlist[i].cityname);
		 G.Adjlist[i].FirstArc = NULL;
		 if(G.Flag[i]==1)
			 j++;
		 i++;
	 }

	 for(i=0;i<G.edgeNum;i++)
	 {
		 arctype *p = new arctype ;
		 
		 fscanf(fp,"%d,%d",&p->infor.ivex,&p->AdjVertex);
		 fscanf(fp,"%d,%d,%d,%d",&p->infor.Money,&p->infor.StratTime,&p->infor.EndTime,&p->infor.Time);
		 fscanf(fp,"%s",&p->infor.Number);

		 p->NextArc=G.Adjlist[p->infor.ivex].FirstArc;
		 G.Adjlist[p->infor.ivex].FirstArc=p;
	 }
	 fclose(fp);
	 return true;
}

/*********************************************************************************/
//===========================<界面>=====================================
void Search_Menu(GraphType GT,GraphType GP)    //咨询系统界面
{   

	 int n;
	while(1)
	{
        printf("\n");
		printf("          ==========================================================\n");
		printf("                            1.最省钱咨询                            \n");
		printf("                            2.最快到达咨询                          \n");
		printf("                            3.查询当前资料                          \n");
		printf("                            0.返回                                  \n");
		printf("         ===========================================================\n");
		printf("           请选择: ");
      
		scanf("%d",&n);
		if(n==0)break;
	  switch(n)
	  {
	    case 1:Search_Money(GT,GP);break;  
        case 2:Search_Time(GT,GP);break;
		case 3:GetInfor(GT,GP);break;
        
		default:printf("输入错误!重新输入!\n");
	  }
	}
}

void Edit_Menu(GraphType &GT,GraphType &GP ) //编辑系统界面
{
	
 int n;
	while(1)
	{

	    printf("\n");
		printf("          ==========================================================\n");
		printf("                             1.城市信息编辑                         \n");
		printf("                             2.列车时刻表编辑                       \n");
		printf("                             3.飞机航班编辑                         \n");
		printf("                             0.返回                                 \n");
		printf("          ==========================================================\n");
		printf("           请选择: ");
			scanf("%d",&n);
			if(n==0)break;
		switch(n)
		{
		  case 1: Edit_City(GT,GP);break;
		  case 2: Edit_Train(GT,GP);break;
		  case 3: Edit_Plane(GT,GP);break;
		  
		  default: printf("输入错误!重新输入!\n");
		}
	}
}



void The_Main_Menu(GraphType &GT,GraphType &GP)    //程序主界面
{   
	     int n;
        printf("\n\n");
		printf("                           全国交通咨询模拟系统                      \n");
		printf("\n\n");
	       
	


		printf("\n");
		printf("          ==========================================================\n");
		printf("                            1.咨询系统                              \n");
		printf("                            2.管理系统                              \n");
		printf("                            0.退出系统                              \n");
		printf("          ==========================================================\n");
		printf("    请选择: ");
	
  	scanf("%d",&n);
		switch(n)
  
		{
    
		case 1: Search_Menu(GT,GP);break;
	
		case 2: Edit_Menu(GT,GP);break;

		case 0: exit(0);
	
		default :  printf("输入有错误!\n");
		
		}
}



//==========================================================================================
//===========================<主函数>=============================	
void main(void)
{

	GraphType GTrain,GPlane; //定义列车时刻表和飞机航班表

    CreateGraph(GTrain);
    CreateGraph(GPlane);  //表的初始化操作
    
	OpenGraph_T(GTrain);  //打开已经存在火车的数据
	OpenGraph_P(GPlane);  //打开已经存在飞机的数据

	The_Main_Menu(GTrain,GPlane);

    SaveGraph_T(GTrain);     //保存火车数据
	SaveGraph_P(GPlane);     //保存飞机数据

}

//==================================程序结束=====================================

⌨️ 快捷键说明

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