校园导游图.docx

上传人:b****8 文档编号:9275725 上传时间:2023-02-04 格式:DOCX 页数:20 大小:19.25KB
下载 相关 举报
校园导游图.docx_第1页
第1页 / 共20页
校园导游图.docx_第2页
第2页 / 共20页
校园导游图.docx_第3页
第3页 / 共20页
校园导游图.docx_第4页
第4页 / 共20页
校园导游图.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

校园导游图.docx

《校园导游图.docx》由会员分享,可在线阅读,更多相关《校园导游图.docx(20页珍藏版)》请在冰豆网上搜索。

校园导游图.docx

校园导游图

先建一个空白文本文档m.txt和程序放在一起

#include

#include

#include

#defineMAXV20

#defineINF32767

#defineFalse0

#defineTrue1

#defineNUM25

typedefintPatharc[NUM];//用于存储最短路径下标的数组

typedefintShortPathTable[NUM];//用于存储到各点最短路径的权值和

structe

{

charb[10];

}z;//密码类型

typedefstruct

{

intnumber;

charsight[20];

charinfo[200];

}VertexType;//顶点的类型

typedefstruct

{

VertexTypevexs[MAXV];

intedges[MAXV][MAXV];

intvexnum,edgnum;

}MGraph;//图的类型

MGraphG;

voidshortPath(intv0,Patharc*P,ShortPathTable*D)//最短路径

{

intv,w,k,min;

intfinal[NUM];//final[w]=1表示求得顶点v0到vw的最短路径

//初始化数据

for(v=1;v

final[v]=0;//全部顶点初始化为未知最短路径状态

(*D)[v]=G.edges[v0][v];//将与v0点有连线的顶点加上权值

(*P)[v]=0;

}

(*D)[v0]=0;//v0至v0的路径为0

final[v0]=1;

//开始主循环,每次求得v0到某个顶点的最短路径

for(v=1;v

min=INF;//当前所知离v0顶点的最近距离

for(w=0;w

if(!

final[w]&&(*D)[w]

k=w;//k存储此时最小值的下标

min=(*D)[w];//min最if条件语句执行后为最小

}

}

final[k]=1;//将目前找到的最经的顶点置为1

//修正当前最短路径及距离

for(w=0;w

//如果经过v顶点的路径比现在这条路径的长度短的话

if(!

final[w]&&(min+G.edges[k][w]<(*D)[w])){

//说明找到了更短的路径,修改D[w]和P[w]

(*D)[w]=min+G.edges[k][w];//修改当前路径长度

(*P)[w]=k;

}

}

}

}

voiddisplayShortest(intposition1,intposition2)//计算最短路径

{

intj=0,i=0,temp;

intarr[NUM];

PatharcP;//最短路径的下标

ShortPathTableD;//到某顶点的最短路径的权值

shortPath(position1,&P,&D);

arr[0]=position2;

j=position2;

while(P[j]!

=0){

arr[i]=P[j];

i++;

j=P[j];

}

printf("\t\t从%s到%s的最短路径为:

",G.vexs[position1].sight,G.vexs[position2].sight);fflush(stdin);

printf("%s->",G.vexs[position1].sight);fflush(stdin);

intt=i-1;

for(t;t>=0;t--){

printf("%s->",G.vexs[arr[t]].sight);fflush(stdin);

position1=arr[t];

}

printf("%s",G.vexs[position2].sight);fflush(stdin);

}

voidCreateMGraph()//创建地图

{

inti,j;

G.vexnum=18;

for(i=1;i

G.vexs[i].number=i;

strcpy(G.vexs[0].sight,"各个景点名字");

strcpy(G.vexs[0].info,"各个景点名字");

strcpy(G.vexs[1].sight,"大门口");

strcpy(G.vexs[1].info,"出入学校的必经之路");

strcpy(G.vexs[2].sight,"行政办公楼");

strcpy(G.vexs[2].info,"学校最气派的建筑之一");

strcpy(G.vexs[3].sight,"北区教室实训中心");

strcpy(G.vexs[3].info,"金工实训中心,还有几排具有历史沧桑感的教室");

strcpy(G.vexs[4].sight,"一号教学楼");

strcpy(G.vexs[4].info,"要有小教室,用来上英语课和专业课");

strcpy(G.vexs[5].sight,"二号教学楼");

strcpy(G.vexs[5].info,"主要用来上专业课,五六楼有语音室");

strcpy(G.vexs[6].sight,"实验楼");

strcpy(G.vexs[6].info,"学生上各种实验课的地点");

strcpy(G.vexs[7].sight,"三号教学楼");

strcpy(G.vexs[7].info,"有大教室,一般安排用来上基础课");

strcpy(G.vexs[8].sight,"图书馆");

strcpy(G.vexs[8].info,"学校为同学们提供学习和自习的地方,也是学校的藏书最多的地方");

strcpy(G.vexs[9].sight,"开水房");

strcpy(G.vexs[9].info,"学校唯一一个为同学提供热水的地点");

strcpy(G.vexs[10].sight,"超市");

strcpy(G.vexs[10].info,"学校唯一一个中型超市,在这里可以买到各种生活用品");

strcpy(G.vexs[11].sight,"榴馨苑");

strcpy(G.vexs[11].info,"环境较好的学生食堂,这里因为离女生公寓较近,所以这个食堂女生较多");

strcpy(G.vexs[12].sight,"洗浴中心");

strcpy(G.vexs[12].info,"环境还行就是规模太小,每天都是供不应求");

strcpy(G.vexs[13].sight,"骊秀苑");

strcpy(G.vexs[13].info,"主要经营面食。

我校的物美价廉的食堂,位于男生公寓区,大部分男生在此就餐");

strcpy(G.vexs[14].sight,"综合楼");

strcpy(G.vexs[14].info,"历史较为悠久的一栋教学楼,旁边有学生第二俱乐部,学校的晚会都在这里举行");

strcpy(G.vexs[15].sight,"游泳池");

strcpy(G.vexs[15].info,"大一学生上游泳课的地点");

strcpy(G.vexs[16].sight,"主田径场");

strcpy(G.vexs[16].info,"标准的400m跑道,学生上室外体育课的地点");

strcpy(G.vexs[17].sight,"综合问题馆");

strcpy(G.vexs[17].info,"上室内体育课的地方,是新建成的较为气派");

for(i=1;i

for(j=1;j

G.edges[i][j]=INF;//allthedistancearesetINFINITY;

G.edges[1][2]=G.edges[2][1]=255;

G.edges[1][4]=G.edges[4][1]=501;

G.edges[1][5]=G.edges[5][1]=535;

G.edges[1][6]=G.edges[6][1]=705;

G.edges[1][7]=G.edges[7][1]=722;

G.edges[1][8]=G.edges[8][1]=790;

G.edges[2][3]=G.edges[3][2]=314;

G.edges[2][4]=G.edges[4][2]=450;

G.edges[2][5]=G.edges[5][2]=484;

G.edges[2][6]=G.edges[6][2]=654;

G.edges[2][7]=G.edges[7][2]=663;

G.edges[2][8]=G.edges[8][2]=748;

G.edges[3][17]=G.edges[17][3]=1054;

G.edges[4][5]=G.edges[5][4]=272;

G.edges[4][6]=G.edges[6][4]=178;

G.edges[4][7]=G.edges[7][4]=442;

G.edges[4][8]=G.edges[8][4]=527;

G.edges[5][7]=G.edges[7][5]=187;

G.edges[5][8]=G.edges[8][5]=561;

G.edges[6][7]=G.edges[7][6]=289;

G.edges[6][8]=G.edges[8][6]=374;

G.edges[6][9]=G.edges[9][6]=520;

G.edges[7][8]=G.edges[8][7]=382;

G.edges[8][14]=G.edges[14][8]=365;

G.edges[8][17]=G.edges[17][8]=1096;

G.edges[9][10]=G.edges[10][9]=297;

G.edges[10][11]=G.edges[11][10]=178;

G.edges[10][12]=G.edges[12][10]=331;

G.edges[12][13]=G.edges[13][12]=383;

G.edges[13][14]=G.edges[14][13]=340;

G.edges[13][15]=G.edges[15][13]=1003;

G.edges[13][16]=G.edges[16][13]=833;

G.edges[14][17]=G.edges[17][14]=646;

G.edges[15][16]=G.edges[16][15]=714;

G.edges[16][17]=G.edges[17][16]=688;

}

voidMap()//展示地图

{

printf("\n\n\n");

printf("\t*******************河南财经政法大学****************");

printf("\n\n\n");

printf("------------------------15游泳池\n");

printf("||\n");

printf("||\n");

printf("12洗浴中心----------------13骊绣苑---------------------16主田径场\n");

printf("|||\n");

printf("10超市----11榴馨苑14综合楼|\n");

printf("|||----------------------17综合文体馆\n");

printf("9开水房||\n");

printf("|------------8图书馆--------------------------|\n");

printf("|||\n");

printf("|-------------6实验楼------|--------7三号教学楼|\n");

printf("||||\n");

printf("||||\n");

printf("4一号教学楼------|--------5二号教学楼|\n");

printf("||\n");

printf("||\n");

printf("|---2行政楼---------------3北区\n");

printf("|\n");

printf("|\n");

printf("1大门口\n");

}

intInfo()//信息介绍

{

printf("1大门口:

出入学校的必经之路\n");

printf("2行政办公楼:

学校最气派的建筑之一\n");

printf("3北区:

金工实训中心,还有几排具有历史沧桑感的教室\n");

printf("4一号教学楼:

主要有小教室,用来上英语课和专业课\n");

printf("5二号教学楼:

主要用来上专业课,五六楼有语音室\n");

printf("6实验楼:

学生上各种实验课的地点\n");

printf("7三号教学楼:

有大教室,一般安排用来上基础课\n");

printf("8图书馆:

学校为同学们提供学习和自习的地方,也是学校的藏书最多的地方\n");

printf("9开水房:

学校唯一一个为同学提供热水的地点\n");

printf("10超市:

学校唯一一个中型超市,在这里可以买到各种生活用品\n");

printf("11榴馨苑:

环境较好的学生食堂,这里因为离女生公寓较近,所以这个食堂女生较多\n");

printf("12洗浴中心:

环境还行就是规模太小,每天都是供不应求\n");

printf("13骊秀苑:

主要经营面食。

我校的物美价廉的食堂,位于男生公寓区,大部分男生在此就餐\n");

printf("14综合楼:

历史较为悠久的一栋教学楼,旁边有学生第二俱乐部,学校的晚会都在这里举行\n");

printf("15游泳池:

大一学生上游泳课的地点\n");

printf("16主田径场:

标准的400m跑道,学生上室外体育课的地点\n");

printf("17综合文体馆:

上室内体育课的地方,是新建成的较为气派\n");

}

intMenu()//主菜单

{

intc;

//intflag;

Map();

system("cls");

fflush(stdin);

printf("\t\t欢迎使用河南财经政法大学导航图系统\n");fflush(stdin);

printf("\t\t1.管理员登录\n");fflush(stdin);

printf("\t\t2.游客登录\n");

printf("\t\t3.退出\n");

printf("\t************河南财经政法大学*******************\n");

printf("\t\t\t请输入您的选择:

");

scanf("%d",&c);

returnc;

}

intadminMenu()//管理员菜单

{

intc;

system("cls");

fflush(stdin);

printf("\t\t欢迎使用河南财经政法大学导航图系统\n");

printf("\t\t1.修改密码\n");

printf("\t\t2.添加景点\n");

printf("\t\t3.修改景点信息\n");

printf("\t\t4.新建景点路径\n");

printf("\t\t5.退出\n");

printf("\t************河南财经政法大学*******************\n");

printf("\t\t\t请输入您的选择:

");fflush(stdin);

scanf("%d",&c);

returnc;

}

inttouristMenu()//游客菜单

{

intc;

system("cls");

fflush(stdin);

printf("\t\t欢迎使用河南财经政法大学导航图系统\n");

printf("\t\t1.景点信息查询\n");

printf("\t\t2.景点问路查询\n");

printf("\t\t3.校园导游图\n");

printf("\t\t4.退出\n");

printf("\t************河南财经政法大学*******************\n");

printf("\t\t\t请输入您的选择:

");

scanf("%d",&c);

returnc;

}

charcodeTest1()//密码测试

{

intt=0;

chars[10],d[10];

FILE*p;

voidas();

if((p=fopen("m.txt","r+"))==NULL)

{

p=fopen("m.txt","w+");

t=1;

}

if(t==1)

{

printf("当前没有任何用户\n");

printf("为用户设置密码:

");

scanf("%s",d);

strcpy(z.b,d);

fprintf(p,"%s",z.b);

fclose(p);

}

if(t==0)

{

fscanf(p,"%s",z.b);

fclose(p);

printf("请输入密码:

");fflush(stdin);

scanf("%s",d);getchar();

if(!

strcmp(z.b,d))

{

printf("正确");getchar();}

else

{

printf("密码错误!

");getchar();

returncodeTest1();

}

}

}

intchangeCode1()//修改密码

{

chars[10];

FILE*p;

voidas();

p=fopen("m.txt","w+");

fscanf(p,"%s",z.b);

fclose(p);

printf("请输入密码:

");fflush(stdin);

scanf("%s",s);

if(!

strcmp(z.b,s))

{

chari;

printf("是否要修改密码?

(输入y修改,n退出!

)");fflush(stdin);

scanf("%c",&i);

if(i=='y')

{

printf("请输入修改密码:

");fflush(stdin);

scanf("%s",z.b);

p=fopen("m.txt","w+");

fprintf(p,"%s",z.b);

fclose(p);

printf("修改成功,请按回车继续......");fflush(stdin);

}

}

else

{

printf("密码错误!

");fflush(stdin);

}

fclose(p);

}

voidchangePoint()//修改景点

{

intn;

charnewname[10],newinfo[100];

printf("请输入要修改地点的序号:

");

fflush(stdin);

scanf("%d",&n);

printf("输入景点名字:

");

fflush(stdin);

gets(newname);

strcpy(G.vexs[n].sight,newname);

printf("输入新景点信息:

");

fflush(stdin);

gets(newinfo);

strcpy(G.vexs[n].info,newinfo);

}

voidnewPoint()//新的景点

{

G.vexnum=G.vexnum+1;

G.vexs[G.vexnum].number=G.vexnum;

printf("请输入景点名称:

");

fflush(stdin);

gets(G.vexs[G.vexnum].sight);

printf("请输入景点信息:

");

fflush(stdin);

gets(G.vexs[G.vexnum].info);

}

voidsearchPoint()//寻找景点

{

intn;

printf("请输入景点序号:

");

fflush(stdin);

scanf("%d",&n);

printf("%d",G.vexs[n].number);

fflush(stdin);

printf("%s\n",G.vexs[n].sight);

fflush(stdin);

printf("%s\n",G.vexs[n].info);

fflush(stdin);

}

voidnewRoad()//新路径

{

inta,b;

printf("\t\t请输入新路径需要连接的两个景点编号:

");

scanf("%d\n%d",&a,&b);

if(a==b||a<0||b<0||a>=17||b>=17)

{

printf("\t\t错误,请检查数据后再次尝试!

");

newRoad();

}

elseif(G.edges[a][b]!

=INF||G.edges[b][a]!

=INF){

printf("\t\t此路径已存在!

请重试。

");

newRoad();

}

else

{

printf("\t\t请输入此路径长度:

");

scanf("%d",&G.edges[a][b]);

printf("\t\t连接着%s和%s的道路长为%d米\n",G.vexs[a].sight,G.vexs[b].sight,G.edges[a][b]);

fflush(stdin);

}

}

voidshortPath(intv0,Patharc*P,ShortPathTable*D);

voiddi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1