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

📄 校园导航系统.cpp

📁 数据结构课程设计
💻 CPP
字号:
// 校园导航系统.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include<stdio.h> 
#include<process.h>
#define INT_MAX 10000
#define n 10

int cost[n][n];
int shortest[n][n];
int path[n][n];


void display(int i,int j)
{  int a,b;
   a=i;
   b=j;
   printf("您要查询的两景点间最短路径是:\n\n");
   if(shortest[i][j]!=INT_MAX)
     {  if(i<j)
	  {  printf("%d",b);
	     while(path[i][j]!=0)
		{  printf("<-%d",path[i][j]);
		   if(i<j)  j=path[i][j]; 
		   else     i=path[j][i];} 
	     printf("<-%d",a);
             printf("\n\n"); 
	     printf("(%d->%d)最短距离是:%d米\n\n",a,b,shortest[a][b]);}
        else 
	   { printf("%d",a);
	     while(path[i][j]!=0)
		{ printf("->%d",path[i][j]);
		  if(i<j)   j=path[i][j]; 
		  else      i=path[j][i]; } 
	     printf("->%d",b);
	     printf("\n\n"); 
	     printf("(%d->%d)最短距离是:%5d米\n\n",a,b,shortest[a][b]);} 
	 } 
    else    printf("输入错误!不存在此路!\n\n");
    printf("\n");
}


void floyed()
{  int i,j,k; 
   for(i=1;i<=n;i++) 
   for(j=1;j<=n;j++) 
     {  shortest[i][j]=cost[i][j];
	path[i][j]=0; }
   for(k=1;k<=n;k++) 
   for(i=1;i<=n;i++) 
   for(j=1;j<=n;j++)
   if(shortest[i][j]>(shortest[i][k]+shortest[k][j])) 
     {  shortest[i][j]=shortest[i][k]+shortest[k][j];
	path[i][j]=k;
	path[j][i]=k;} 
}

int shortestdistance()
{   int i,j; 
    printf("请输入要查询的两个景点的编号(1->10的数字编号并用','间隔):");
    scanf("%d,%d",&i,&j);
    if(i>n||i<=0||j>n||j<0)
       {  printf("输入信息错误!\n\n");
	  printf("  请输入要查询的两个景点的编号(1->10的数字编号并用','间隔):\n");
	  scanf("%d,%d",&i,&j);}
    else
      {   floyed();
	  display(i,j);}
	 return 1;
}




void introduce()
{  int a;
   printf("您想查询哪个景点的详细信息?请输入景点编号:");
   scanf("%d",&a);
   getchar();
   printf("\n");
   switch(a)
    {   case 1:  printf("1:月泉广场\n\n  学校的正门,高大宽敞,气势宏伟。\n\n");break;
        case 2:  printf("2:行政楼,外文馆\n\n  学校行政办公的主楼,外国语学院,视听说教室。\n\n");break; 
        case 3:  printf("3:建艺馆\n\n   建筑成规、艺术学院,配有画室,设计独特。n\n");break; 
        case 4:  printf("4:图书馆,报告厅\n\n  学校信息资源中心,内设大量的自习室,和报告厅相连。\n\n");break; 
        case 5:  printf("5:博文楼\n\n  学校主教学楼,以多媒体教室为主,大教室较多。\n\n");break; 
        case 6:  printf("6:科学楼\n\n  实验楼和计算中心。\n\n");break; 
        case 7:  printf("7:映雪湖\n\n  湖面平静开阔,湖边有垂柳环绕,景色优美,可供休息。\n\n");break; 
        case 8:  printf("8:食堂,超市\n\n  为学生提供日常生活所需,品种齐全。\n\n");break; 
        case 9:  printf("9:宿舍区n\n  学生宿舍楼住区,分为松、竹、梅三区。\n\n");break; 
        case 10: printf("10:体育场\n\n  学生上体育课及运动的场地,设有体育馆、田径场、足球场、篮球场、网球场等。\n\n");break; 
       default:  printf("景点编号输入错误!请输入1->10的数字编号!\n\n"); break; 
 }
}
  

void main() 
{    int i,j; 
     char k;	
     for(i=0;i<=n;i++)
         for(j=0;j<=n;j++)
            cost[i][j]=INT_MAX;
	 cost[1][2]=cost[2][1]=20;
	 cost[1][3]=cost[3][1]=15;
	 cost[1][4]=cost[4][1]=150;
	 cost[2][4]=cost[4][2]=180;
	 cost[2][5]=cost[5][2]=25;
	 cost[5][6]=cost[6][5]=280;
	 cost[6][7]=cost[7][6]=100;
	 cost[6][8]=cost[8][6]=120;
	 cost[7][8]=cost[8][7]=80;
         cost[8][9]=cost[9][8]=50;
	 cost[9][10]=cost[10][9]=60;
	 cost[4][7]=cost[7][4]=800;
	 cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=cost[5][5]=0; 
	 cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;
 //==========================================================
	 while(1)
	 { 
		 printf("----------------欢迎使用山东建筑大学导游系统!----------------\n");
                 printf("1.景点信息查询………请按 i (introduc)键\n");
                 printf("2.景点最短路径查询…请按 s (shortestdistance)键\n");
                 printf("3.退出系统……………请按 e (exit)键\n");
                 printf("学校景点列表:\n");
                 printf("1:月泉广场,学校正门 ");
                 printf("2:行政楼,外文馆 ");
                 printf("3:建艺馆 ");
                 printf("4:图书馆,报告厅 ");
                 printf("5:博文楼\n");
                 printf("6:科学楼 ");
                 printf("7:映雪湖 ");
                 printf("8:食堂,超市 ");
                 printf("9:宿舍区 ");
                 printf("10:体育场\n");
                 printf("请选择服务:");
		 scanf("\n%c",&k); 
		 switch(k) 
		 { case 'i':
			     printf("进入景点信息查询:");
			     introduce();
			     break; 
		   case 's':
			     printf("进入最短路径查询:");
			     shortestdistance();
			     break; 
		   case 'e':
			     exit(0); 
		   default:
			    printf("输入信息错误!\n请输入字母i或s或e.\n");
			    break; } 
	} 
}


⌨️ 快捷键说明

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