现在的位置: 首页 > 综合 > 正文

校园导游咨询

2013年02月24日 ⁄ 综合 ⁄ 共 3688字 ⁄ 字号 评论关闭

    代码不是我写的,在网上看写的不错就拖了下来,特别是记录路径的那段代码写的特别精彩!值得一阅

 

/*
                                    校园导游咨询
  [问题描述]   
          设计一个校园导游程序,为来访的客人提供各种信息查询服务。   
  [基本要求]   
          (1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。   
          (2)为来访客人提供图中任意景点相关信息的查询。   
          (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。   
  [测试数据]   
          由个人根据实际情况自行指定。   
  [实现提示]   
          一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。
*/


/*包含头文件*/
#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 introduce();
int shortestdistance();
void floyed(); 
void display(int i,int j);

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]=2;
    cost[
2][3]=cost[3][2]=1;
    cost[
2][4]=cost[4][2]=2;
    cost[
3][4]=cost[4][3]=4;
    cost[
1][4]=cost[4][1]=5;
    cost[
2][5]=cost[5][2]=3;
    cost[
5][10]=cost[10][5]=8;
    cost[
5][6]=cost[6][5]=2;
    cost[
6][7]=cost[7][6]=1;
    cost[
7][8]=cost[8][7]=3;
    cost[
7][9]=cost[9][7]=3;
    cost[
8][9]=cost[9][8]=4;
    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(
"----------------欢迎使用绍兴文理学院导游系统!---------------- ");
        printf(
"1.景点信息查询………请按 i (introduc)键 ");
        printf(
"2.景点最短路径查询…请按 s (shortestdistance)键 ");
        printf(
"3.退出系统……………请按 e (exit)键 ");
        printf(
"学校景点列表: ");
        printf(
"1:学校北门  ");
        printf(
"2:月明音乐楼    ");
        printf(
"3:体育馆    ");
        printf(
"4:美术楼    ");
        printf(
"5:传信桥 ");
        printf(
"6:志廉楼    ");
        printf(
"7:理工楼行    ");
        printf(
"8:政楼    ");
        printf(
"9:图书馆  ");
        printf(
"10:河西餐厅 ");
        printf(
"请选择服务:");
        scanf(
" %c",&k); 
        
switch(k) 
        

            
case 'i':
                printf(
"进入景点信息查询:");
                introduce();
                
break
            
case 's':
                printf(
"进入最短路径查询:");
                shortestdistance();
                
break
            
case 'e':
                exit(
0); 
            
default:
                printf(
"输入信息错误!请输入字母i或s或e. ");
                
break
        }
 
    }
 
}
/*main*/

void introduce()
{/*景点介绍*/
    
int a;
    printf(
"您想查询哪个景点的详细信息?请输入景点编号:");
    scanf(
"%d",&a);
    getchar();
    printf(
" ");
    
switch(a)
    
{
        
case 1
            printf(
"1:学校北门   学校的正门,前面竖立着一尊鲁迅的石像,气势宏伟。 ");break;
        
case 2
            printf(
"2:体育馆   学生上体育课及运动的场地,设有田径场、足球场、篮球场等。 ");break
        
case 3
            printf(
"3:美术楼   美术学院所在地,内设美术展厅。 ");break
        
case 4
            printf(
"4:传信桥   学校连接河东河西的纽带,横跨风则江。 ");break
        
case 5
            printf(
"5:志廉楼   学校的主教学楼之一,以试验室为主。 ");break
        
case 6
            printf(
"6:理工楼   学校的主教学楼之一,是工学院与数理信息学院的教学楼。 ");break
        
case 7
            printf(
"7:行政楼   学校行政办公的主楼。 ");break
        
case 8
            printf(
"8:图书馆   学校信息资源中心,内设大量的自习室。 ");break
        
case 9
            printf(
"9:河西餐厅   学校最大的食堂。 ");break
        
case 10
            printf(
"10:月明音乐楼   蔡元培艺术学院所在地,一楼为音乐演播厅。 ");break
        
default:
            printf(
"景点编号输入错误!请输入1->10的数字编号! "); break
    }

}
/*introduce*/

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

    
else
    
{
        floyed();
        display(i,j);
    }

    
return 1;
}
/*shortestdistance*/

void floyed()

抱歉!评论已关闭.