校园导游图.docx
- 文档编号:9275725
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:20
- 大小:19.25KB
校园导游图.docx
《校园导游图.docx》由会员分享,可在线阅读,更多相关《校园导游图.docx(20页珍藏版)》请在冰豆网上搜索。
校园导游图
先建一个空白文本文档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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 导游