您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 数据结构-校园导游系统课程设计
滨江学院《数据结构》课程设计题目校园导游咨询程序设计学号学生姓名院系专业指导教师二O一二年月日1、题目的内容及要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。2、需求分析(1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。(3)为来访客人提供图中任意景点相关信息的查询。3、概要设计1.功能模块图;voidCreateUDN();//创建无向网voidSearch();//查询景点信息voidShortestpath(inti);//计算最短路径voidOutput(intsight1,intsight2);//输出函数2.各个模块详细的功能描述。CreateUDN();//创建无向网、主要用来保存各景点信息Search();//查询景点信息、景点的名称及介绍Shortestpath(inti);//计算两景点间最短路径Output(intsight1,intsight2);//输出两景点最短路径及信息3.模块图4、详细设计一、图的储存结构#defineMax30000#defineNUM10typedefstructArcCell{intadj;/*相邻接的景点之间的路程*/}ArcCell;/*定义边的类型*/typedefstructVertexType{intnumber;/*景点编号*/char*sight;/*景点名称*/char*description;/*景点描述*/}VertexType;/*定义顶点的类型*/typedefstruct{VertexTypevex[NUM];/*图中的顶点,即为景点*/ArcCellarcs[NUM][NUM];/*图中的边,即为景点间的距离*/intvexnum,arcnum;/*顶点数,边数*/}MGraph;/*定义图的类型二、算法1.主程序voidmain(){intv0,v1;charck;CreateUDN(NUM,11);do{ck=Menu();switch(ck){case'1':system(cls);//narrate();printf(\n\n\t\t\t请选择起点景点(0~9):);scanf(%d,&v0);printf(\t\t\t请选择终点景点(0~9):);scanf(%d,&v1);ShortestPath(v0);/*计算两个景点之间的最短路径*/output(v0,v1);/*计算两个景点之间的最短路径*/printf(\n\n\t\t\t\t请按任意键继续...\n);getchar();getchar();break;case'2':search();break;case'3':system(cls);//narrate();x[0]=1;HaMiTonian(1);printf(\n\n\t\t\t\t请按任意键继续...\n);getchar();getchar();break;};}while(ck!='e');}2.输出程序voidoutput(intsight1,intsight2){inta,b,c,d,q=0;a=sight2;if(a!=sight1)/*如果景点二不和景点一输入重合,则进行*/{printf(\n\t从%s到%s的最短路径是,G.vex[sight1].sight,G.vex[sight2].sight);/*输出提示信息*/printf(\t(最短距离为%dm.)\n\n\t,D[a]);printf(\t%s,G.vex[sight1].sight);d=sight1;/*将景点一的编号赋值给d*/for(c=0;cNUM;++c){gate:;P[a][sight1]=0;for(b=0;bNUM;b++){if(G.arcs[d][b].adj30000&&P[a][b])/*如果景点一和它的一个临界点之间存在路径且最短路径*/{printf(--%s,G.vex[b].sight);/*输出此节点的名称*/q=q+1;/*计数变量加一,满8控制输出时的换行*/P[a][b]=0;d=b;/*将b作为出发点进行下一次循环输出,如此反复*/if(q%9==0)printf(\n);gotogate;}}}}}3.求最短路径voidShortestPath(intnum){intv,w,i,t;intfinal[NUM];intmin;for(v=0;vNUM;v++){final[v]=0;D[v]=G.arcs[num][v].adj;for(w=0;wNUM;w++)P[v][w]=0;if(D[v]30000){P[v][num]=1;P[v][v]=1;}}D[num]=0;final[num]=1;for(i=0;iNUM;++i){min=Max;for(w=0;wNUM;++w)if(!final[w])if(D[w]min){v=w;min=D[w];}final[v]=1;for(w=0;wNUM;++w)if(!final[w]&&((min+G.arcs[v][w].adj)D[w])){D[w]=min+G.arcs[v][w].adj;for(t=0;tNUM;t++)P[w][t]=P[v][t];P[w][w]=1;}}}4.说明函数voidnarrate(){inti,k=0;printf(\n\t\t*****************欢迎使用校园导游程序***************\n);printf(\n\t\t********************南京信息工程大学*******************\n);printf(\t__________________________________________________________________\n);printf(\t\t景点名称\t\t|\t景点描述\n);printf(\t________________________________|_________________________________\n);for(i=0;iNUM;i++){printf(\t(%2d)%-10s\t\t\t|\t%-25s\n,i,G.vex[i].sight,G.vex[i].description);k=k+1;}printf(\t________________________________|_________________________________\n);}5、查询景点信息voidsearch(){intnum;inti;charc;charname[20];do{system(cls);c=SearchMenu();switch(c){case'1':system(cls);narrate();printf(\n\n\t\t请输入您要查找的景点编号:);scanf(%d,&num);for(i=0;iNUM;i++){if(num==G.vex[i].number){printf(\n\n\t\t\t您要查找景点信息如下:);printf(\n\n\t\t\t%-25s\n\n,G.vex[i].description);printf(\n\t\t\t按任意键返回...);getchar();getchar();break;}}if(i==NUM){printf(\n\n\t\t\t没有找到!);printf(\n\n\t\t\t按任意键返回...);getchar();getchar();}break;case'2':narrate();system(cls);printf(\n\n\t\t请输入您要查找的景点名称:);scanf(%s,name);for(i=0;iNUM;i++){if(!strcmp(name,G.vex[i].sight)){printf(\n\n\t\t\t您要查找景点信息如下:);printf(\n\n\t\t\t%-25s\n\n,G.vex[i].description);printf(\n\t\t\t按任意键返回...);getchar();getchar();break;}}if(i==NUM){printf(\n\n\t\t\t没有找到!);printf(\n\n\t\t\t按任意键返回...);getchar();getchar();}break;}}while(c!='t');}6.选择菜单charSearchMenu(){charc;intflag;do{flag=1;system(cls);narrate();printf(\n\t\t\t┏━━━━━━━━━━━━━━━┑\n);printf(\t\t\t┃┃\n);printf(\t\t\t┃1、按照景点编号查询┃\n);printf(\t\t\t┃2、按照景点名称查询┃\n);printf(\t\t\t┃t、返回┃\n);printf(\t\t\t┃┃\n);printf(\t\t\t┗━━━━━━━━━━━━━━━┛\n);printf(\t\t\t\t请输入您的选择:);scanf(%c,&c);if(c=='1'||c=='2'||c=='t')flag=0;}while(flag);returnc;}5、运行结果及分析系统主界面查询路径查询信息6、收获及体会非常高兴能和同学们一起做实验,感谢各位老师以及同学们对我的帮助,特别是老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次数据结构设计的每个实验细节和每个数据,都离不开老师您的细心指导。7、源代码#includestring.h#includestdio.h#includemalloc.h#includestdlib.h#defineMax30000#defineNUM10typedefstructArcCell{intadj;}ArcCell;typedefstructVertexType{intnumber;char*sight;char*description;}VertexType;typedefstruct{VertexTypevex[NUM];ArcCellarcs[NUM][NUM];intvexnum,arcnum;}MGraph;MGraphG;intP[NUM][NUM];longintD[NUM];intx[9]={0};voidCreateUDN(intv,inta);voidnarrate();voidShortestPath(intnum);voidoutput(intsight1,intsight2);charMenu();voidsearch();charSearchMenu();voidHaMiTonian(int);voidNextValue(int);voiddisplay();voidmain(){intv0,v1;charck;CreateUDN(NUM,11);do{ck=Menu();switch(ck){case'1':system(cls);//narrate();printf(\n\n\t\t\t请选择起点景点(0~9):);scanf(%d,&v0);printf(\t\t\t请选择终点景点(0~9):);scanf(%d,&v1);ShortestPath(v0);output(v0,v1);printf(\n\n\t\t\t\t请按任意键继续...\n);getchar();getchar();break;case'2':search();break;case'3':system(cls);//narrate();x[0]=1;HaMiTonian(1);printf(\n\n\t\t\t\t请按任意键继续...
本文标题:数据结构-校园导游系统课程设计
链接地址:https://www.777doc.com/doc-5805379 .html