20
课 程 设 计
课程设计名称: 校园导游图
专 业 班 级 :
学 生 姓 名 : n("","r");break;
case 8:fp=fopen("","r");break;
case 9:fp=fopen("","r");break;
}
3 运行环境
(1)硬件:PC机
(2)操作系统:Windows 2000/XP/2003
(3)编译环境:Visual C++
4 开发工具和编程语言
4
开发工具为VISCALL C++;语言是C语言
5 详细设计
#include<>
#include<>
#include<>
#include<>
#include<>
#define Max 100
#define N 9//景点个数。
typedef int AdjMatrix[Max][Max];
typedef struct
{
int vexs[Max];
AdjMatrix arcs;
}Matrix_Graph;//图的矩阵表示法。
void menu();//景点名、操作提示。
void creat(Matrix_Graph *G);//图的建立。
void path(Matrix_Graph G,int s,int e);//两景点之间最短的路径,s表示起始景点,e
//最终到达景点。
#define Max 100
#define N 9
void menu()
{
printf("1---南大门\n");
printf("2---老师办公室\n");
6
printf("3---图书馆\n");
printf("4---一号教学楼\n");
printf("5---宿舍\n");
printf("6---食堂\n");
printf("7---北大门\n");
printf("8---44号教学楼\n");
printf("9---学校广场\n");
printf("\n菜单:\n");
printf("请选择位置对应数字项目:\n");
printf("1----介绍\n");
printf("2----路径\n");
printf("0----退出\n");
}
void creat(Matrix_Graph *G)
{
int i,j;
for(i=1;i<=N;i++) G->vexs[i]=i;//初始化,0号位不用。
for(i=1;i<=N;i++)
for(j=1;j<=N;j++) G->arcs[i][j]=0;//初始值为0。
G->arcs[1][2]=2;//表示景点一到景点二的距离是2。
G->arcs[2][1]=2;G->arcs[2][3]=7;G->arcs[2][4]=4;
G->arcs[3][2]=7;G->arcs[3][9]=5;
G->arcs[4][2]=4;G->arcs[4][5]=5;G->arcs[4][9]=7;
G->arcs[5][4]=5;G->arcs[5][6]=6;G->arcs[5][8]=8;
G->arcs[6][5]=6;G->arcs[6][7]=5;
G->arcs[7][6]=5;G->arcs[7][8]=6;
G->arcs[8][5]=8;G->arcs[8][7]=6;G->arcs[8][9]=10;
G->arcs[9][3]=5;G->arcs[9][4]=7;G->arcs[9][8]=10;
for(i=1;i<=N;i++)
7
for(j=1;j<=N;j++)
if(G->arcs[i][j]==0) G->arcs[i][j]=Max;//没有被重新赋值的,表示两景点之间
//没有路,用Max表示无穷大。
}
void path(Matrix_Graph G,int s,int e)
{
int i,j,u,c=1,t,v;
int r[N+1][N+1];//用来存放路径上的景点。
int T[N],flag[N],d[N];
for(i=0;i<=N;i
校园导游图课程设计 来自淘豆网m.daumloan.com转载请标明出处.