校园导游系统源程序.docx
- 文档编号:4208112
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:19.10KB
校园导游系统源程序.docx
《校园导游系统源程序.docx》由会员分享,可在线阅读,更多相关《校园导游系统源程序.docx(21页珍藏版)》请在冰点文库上搜索。
校园导游系统源程序
#include
#include
#include
#include
#defineMaxSize100
#defineVISITED1
#defineNOTVISITED0
#defineInfinite1073741823
#defineMaxViewNum50/*景点个数最大50*/
#defineMaxRoad1000/*定义路径为无穷大*/
#defineN16/*目前景点个数*/
typedefstruct
{
charname[30];/*景点名称*/
charnumber[10];/*景点代号*/
charintroduce[200];/*景点介绍*/
}Elemtype;
typedefstruct
{
intnum;/*景点编号*/
Elemtypedate;/*景点信息*/
}View;/*定义景点*/
typedefstruct
{
Viewview[MaxViewNum];/*存放顶点的一维数组,数组第零单元没有用上*/
unsignedintlength[MaxViewNum][MaxViewNum];/*存放路径长度*/
intm,n;
}MGraph;
MGraphMGr;/*全局变量,定义MGr为MGraph类型*/
intshortest[MaxViewNum][MaxViewNum];/*定义全局变量存贮最小路径*/
intpath[MaxViewNum][MaxViewNum];/*定义存贮路径*/
voidinit()
{
inti,j;
MGr.view[1].num=1;
strcpy(MGr.view[1].date.name,"学校正门");
strcpy(MGr.view[1].date.number,"001");
strcpy(MGr.view[1].date.introduce,"毗邻中心大道,交通便利。
");
MGr.view[2].num=2;
strcpy(MGr.view[2].date.name,"行政楼");
strcpy(MGr.view[2].date.number,"002");
strcpy(MGr.view[2].date.introduce,"学校领导,办公主楼。
");
MGr.view[3].num=3;
strcpy(MGr.view[3].date.name,"科技楼");
strcpy(MGr.view[3].date.number,"003");
strcpy(MGr.view[3].date.introduce,"逸夫科技楼");
MGr.view[4].num=4;
strcpy(MGr.view[4].date.name,"家属院");
strcpy(MGr.view[4].date.number,"004");
strcpy(MGr.view[4].date.introduce,"兰州理工大学,教职工家属院。
");
MGr.view[5].num=5;
strcpy(MGr.view[5].date.name,"图书馆");
strcpy(MGr.view[5].date.number,"005");
strcpy(MGr.view[5].date.introduce,"历史悠久,文化积淀。
供同学安静学习的环境。
");
MGr.view[6].num=6;
strcpy(MGr.view[6].date.name,"机械基地");
strcpy(MGr.view[6].date.number,"006");
strcpy(MGr.view[6].date.introduce,"土木工程学院和机电工程学院,实习实践的地方。
");
MGr.view[7].num=7;
strcpy(MGr.view[7].date.name,"学生公寓");
strcpy(MGr.view[7].date.number,"007");
strcpy(MGr.view[7].date.introduce,"学生宿舍区,本科、研究生,以及教师公寓。
");
MGr.view[8].num=8;
strcpy(MGr.view[8].date.name,"餐厅");
strcpy(MGr.view[8].date.number,"008");
strcpy(MGr.view[8].date.introduce,"清泽、智林、风味三大餐厅,周边开水房等服务场所。
");
MGr.view[9].num=9;
strcpy(MGr.view[9].date.name,"怡情园");
strcpy(MGr.view[9].date.number,"009");
strcpy(MGr.view[9].date.introduce,"学校新修建的花园,景色优美,适合同学们晨读");
MGr.view[10].num=10;
strcpy(MGr.view[10].date.name,"体育场");
strcpy(MGr.view[10].date.number,"010");
strcpy(MGr.view[10].date.introduce,"绿茵地、活动中心。
篮球场、足球场、网球场依次,丰富课余生活。
");
MGr.view[11].num=11;
strcpy(MGr.view[11].date.name,"国际交流中心");
strcpy(MGr.view[11].date.number,"011");
strcpy(MGr.view[11].date.introduce,"外国留学生、外籍教师上课活动场所。
");
MGr.view[12].num=12;
strcpy(MGr.view[12].date.name,"流体实验室");
strcpy(MGr.view[12].date.number,"012");
strcpy(MGr.view[12].date.introduce,"兰州理工大学流体实验室,同样也是理学院研究生实验室");
MGr.view[13].num=13;
strcpy(MGr.view[13].date.name,"工大高层");
strcpy(MGr.view[13].date.number,"013");
strcpy(MGr.view[13].date.introduce,"新建工大高层,是各个院办公室所在地,同样也是各个院行政楼。
");
MGr.view[14].num=14;
strcpy(MGr.view[14].date.name,"教学楼");
strcpy(MGr.view[14].date.number,"014");
strcpy(MGr.view[14].date.introduce,"外语院,设计院等学生日常上课的地方。
");
MGr.view[15].num=15;
strcpy(MGr.view[15].date.name,"附属中学");
strcpy(MGr.view[15].date.number,"015");
strcpy(MGr.view[15].date.introduce,"兰州理工大学附属中学。
");
MGr.view[16].num=16;
strcpy(MGr.view[16].date.name,"教学北楼");
strcpy(MGr.view[16].date.number,"016");
strcpy(MGr.view[16].date.introduce,"外国留学生日常上课的地方。
");
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
MGr.length[i][j]=MaxRoad;
}
}
for(i=1;i<=N;i++)
{
shortest[i][j]=0;
}
MGr.length[1][2]=MGr.length[2][1]=30;
MGr.length[2][3]=MGr.length[3][2]=50;
MGr.length[3][4]=MGr.length[4][3]=60;
MGr.length[3][5]=MGr.length[5][3]=120;
MGr.length[5][6]=MGr.length[6][5]=20;
MGr.length[6][7]=MGr.length[7][6]=230;
MGr.length[6][9]=MGr.length[9][6]=50;
MGr.length[7][8]=MGr.length[8][7]=50;
MGr.length[8][9]=MGr.length[9][8]=230;
MGr.length[8][10]=MGr.length[10][8]=50;
MGr.length[9][11]=MGr.length[11][9]=50;
MGr.length[10][11]=MGr.length[11][10]=230;
MGr.length[11][12]=MGr.length[12][11]=60;
MGr.length[12][13]=MGr.length[13][12]=60;
MGr.length[13][14]=MGr.length[14][13]=60;
MGr.length[11][14]=MGr.length[14][11]=60;
MGr.length[16][14]=MGr.length[14][16]=80;
MGr.length[13][15]=MGr.length[15][13]=80;
MGr.length[2][16]=MGr.length[16][2]=50;
MGr.length[1][1]=MGr.length[2][2]=MGr.length[3][3]=MGr.length[4][4]=0;
MGr.length[5][5]=MGr.length[6][6]=MGr.length[7][7]=MGr.length[8][8]=0;
MGr.length[9][9]=MGr.length[10][10]=MGr.length[11][11]=MGr.length[12][12]=0;
MGr.length[13][13]=MGr.length[14][14]=MGr.length[15][15]=MGr.length[16][16]=0;
}
voidintroduce()
{
intm;
printf("请输入查询景点编号:
\n");
scanf("%d",&m);fflush(stdin);
switch(m)
{
case1:
printf("景点编号:
%s\t",MGr.view[1].date.number);
printf("景点名称:
%s\n",MGr.view[1].date.name);
printf("景点简介:
%s\n",MGr.view[1].date.introduce);
break;
case2:
printf("景点编号:
%s\t",MGr.view[2].date.number);
printf("景点名称:
%s\n",MGr.view[2].date.name);
printf("景点简介:
%s\n",MGr.view[2].date.introduce);
break;
case3:
printf("景点编号:
%s\t",MGr.view[3].date.number);
printf("景点名称:
%s\n",MGr.view[3].date.name);
printf("景点简介:
%s\n",MGr.view[3].date.introduce);
break;
case4:
printf("景点编号:
%s\t",MGr.view[4].date.number);
printf("景点名称:
%s\n",MGr.view[4].date.name);
printf("景点简介:
%s\n",MGr.view[4].date.introduce);
break;
case5:
printf("景点编号:
%s\t",MGr.view[5].date.number);
printf("景点名称:
%s\n",MGr.view[5].date.name);
printf("景点简介:
%s\n",MGr.view[5].date.introduce);
break;
case6:
printf("景点编号:
%s\t",MGr.view[6].date.number);
printf("景点名称:
%s\n",MGr.view[6].date.name);
printf("景点简介:
%s\n",MGr.view[6].date.introduce);
break;
case7:
printf("景点编号:
%s\t",MGr.view[7].date.number);
printf("景点名称:
%s\n",MGr.view[7].date.name);
printf("景点简介:
%s\n",MGr.view[7].date.introduce);
break;
case8:
printf("景点编号:
%s\t",MGr.view[8].date.number);
printf("景点名称:
%s\n",MGr.view[8].date.name);
printf("景点简介:
%s\n",MGr.view[8].date.introduce);
break;
case9:
printf("景点编号:
%s\t",MGr.view[9].date.number);
printf("景点名称:
%s\n",MGr.view[9].date.name);
printf("景点简介:
%s\n",MGr.view[9].date.introduce);
break;
case10:
printf("景点编号:
%s\t",MGr.view[10].date.number);
printf("景点名称:
%s\n",MGr.view[10].date.name);
printf("景点简介:
%s\n",MGr.view[10].date.introduce);
break;
case11:
printf("景点编号:
%s\t",MGr.view[11].date.number);
printf("景点名称:
%s\n",MGr.view[11].date.name);
printf("景点简介:
%s\n",MGr.view[11].date.introduce);
break;
case12:
printf("景点编号:
%s\t",MGr.view[12].date.number);
printf("景点名称:
%s\n",MGr.view[12].date.name);
printf("景点简介:
%s\n",MGr.view[12].date.introduce);
break;
case13:
printf("景点编号:
%s\t",MGr.view[13].date.number);
printf("景点名称:
%s\n",MGr.view[13].date.name);
printf("景点简介:
%s\n",MGr.view[13].date.introduce);
break;
case14:
printf("景点编号:
%s\t",MGr.view[14].date.number);
printf("景点名称:
%s\n",MGr.view[14].date.name);
printf("景点简介:
%s\n",MGr.view[14].date.introduce);
break;
case15:
printf("景点编号:
%s\t",MGr.view[15].date.number);
printf("景点名称:
%s\n",MGr.view[15].date.name);
printf("景点简介:
%s\n",MGr.view[15].date.introduce);
break;
case16:
printf("景点编号:
%s\t",MGr.view[16].date.number);
printf("景点名称:
%s\n",MGr.view[16].date.name);
printf("景点简介:
%s\n",MGr.view[16].date.introduce);
break;
default:
printf("输入序号错误。
\n");
break;
}
printf("\n");
}
voidfloyd()/*佛洛依德算法*/
{
inti,j,k;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
shortest[i][j]=MGr.length[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;/*记录经过的路径*/
}//end_if
}
}//end_for
}
}
voiddisplay(inti,intj)
{/*打印两个景点的路径及最短路径*/
inta,b;
a=i;
b=j;
printf("您要查询的两景点间最短路径是:
\n\n");
fflush(stdin);
if(i { printf("%d",b); while(path[i][j]! =0) { printf("<-%d",path[i][j]); if(i j=path[i][j]; else i=path[j][i]; } printf("<-%d\n\n",a); printf("%d->%d的最短路径是: %d米。 \n\n",a,b,shortest[a][b]); } else { printf("%d",a); while(path[i][j]! =0) {/*把i到j的路径上所有经过的景点按顺序打印出来*/ printf("->%d",path[i][j]); if(i j=path[i][j]; else i=path[j][i]; } printf("->%d\n\n",b); printf("%d->%d的最短路径是: %d米。 \n\n",a,b,shortest[a][b]); } }/*display*/ intshortdistance() {/*要查找的两景点的最短路径*/ inti,j; printf("请输入要查询的两个景点的数字编号(1->16)中间用空格间隔开。 \n"); scanf("%d%d",&i,&j); if(i>N||i<0||j>N||j<0) { printf("输入信息错误! \n\n"); printf("请输入要查询的两个景点的数字编号(1->16)中间用空格间隔开。 \n"); scanf("%d%d",&i,&j); } else { floyd(); display(i,j); } return1; fflush(stdin); }/*shortestdistance*/ longintA[MaxSize+1][MaxSize+1];/*迪杰斯特拉算法*/ longintD[MaxSize+1]; longintS[MaxSize+1],P[MaxSize+1]; intsource,sink; intstep=1; inttop=-1; intStack[MaxSize+1]; voidinput() { inti,j; printf("\n请输入起始节点: "); scanf("%d",&source); printf("\n请输入结束节点: "); scanf("%d",&sink); for(i=1;i<=N;i++) { S[i]=NOTVISITED; D[i]=MGr.length[source][i]; P[i]=source; } S[source]=VISITED; D[source]=0; } voidPush(intvalue) { if(top>=MaxSize) { printf("没有路径存在! \n"); exit (1); } else Stack[++top]=value; } intPop() { if(top<0) { printf("没有路径存在! \n"); exit (1); } returnStack[top--]; } intminD() { inti,t=0; longintminimum=Infinite; for(i=1;i<=N;i++) if((S[i]==NOTVISITED)&&D[i] { minimum=D[i]; t=i; } returnt; } voidoutput_path() { intnode=sink; if((sink==source)||(D[sink]==Infinite)) { printf("\n节点%d与节点%d之间没有路径存在! ",source,sink); return; } printf("\n"); while(node! =source) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 导游 系统 源程序