数据结构课程设计作业(校园导游).docx
数据结构课程设计CourseDesignofDataStructure计算机科学与技术082姓名:*学号:08422137指导老师:*2010年7月9日1 .需求分析说明2 .概要设计说明3 .详细设计说明4 .调试分析5 .课程设计总结6 .参考书目7 .致谢需求分析说明随着高校校园的逐渐扩展,来访校园的人士逐渐增多,随着校园透明度的提高,各界人士对学术气氛的追求,越来越多的人走进了大学校园,走进了象牙塔,这片静土也以它崭新的面貌,迎接着所有的到来者,以前封闭以及半封闭的校园状况随之改变,派生的是它积极的迎接挑战的状态。高等院校,历来以其悠久的历史、深厚的文化底蕴、优美的自然和人文景观吸引着人们的目光。高校校园旅游在掀起“羞答答的头盖“后,正悄然走向市场,当今高校在确立了旅游的市场可行性之后,随之而来的导游系统是势在必行,高校的旅游可以让人陶冶情操,也可以让人对学术产生浓厚的兴趣。那么如何更好的更科学的更科学的组织好高校导游,如何更方便更便捷的把高校的校园展示给世人,就成为了一个需要解决的问题。利用计算机建立一个自动的导游系统,可以很好的解决这个问题。当客人来访时,系统可以根据客人指定的景点给予相关的信息,游客可以方便的了解到每个景点的详细信息,同时可以通过系统找到起始点和终点的多条路径,通过系统的分析后,能得出一条最短路径。各个景点的全景图、局部图可以在景点浏览中找到,付予语音、图片以及相关文字说明,让游客轻轻松松掌握景点信息。概要设计说明用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求实现以下功能:(1)查询各景点的相关信息。(2)查询图中任意两个景点间的最短路径。(3)查询图中任意两个景点间的所有路径。用图的结点代表景点,用图的边代表景点意见的路径,首先设计一个图类,结点值代表景点的信息,边的权值代表景点之间的距离,结点值及边的权值用顺序表存储,所以需要设计一个顺序表类,本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个编号,用结构体类型来实现。计算路径长度和最短路线是可以用DijkStra(迪杰斯特拉)算法实现,在主函数中用switch选择语句执行浏览景点信息或查询最短路径tyedefstructArCell(intadj;路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedefstruct图中顶点表示主要景点,存放景点的编号、名称、简介等信息,(charname30;intnum;charintroduction200;/简介infotype;typedefstruct(infotypevexsMAX_VERTEX_NUM;景点AdjMatrixarcs;路径数组intVeXnUm,arcnum;/景点数,路径长度记录MGraph;voidCmd(VOid);在主函数中用来调用其他应用子函数的函数声明MGraphInitGraPh(VOid);用来构造学校地图的子函数返回MGraph类型voidMenU(Void);/菜单函数;voidBrowser(MGrah*G);调用MGraph类型的地址,进行voidShortestPath_DIJ(MGraph*G);/迪杰斯特拉算法求最短路径的子函数voidFloyd(MGraph*G);佛洛伊德算法voidSearch(MGraph*G);寻找要查询的景点,并输出该景点的信息intLocateVex(MGraph*Gchar*v);定点位置MGraph*CreatUDN(MGraph*G);/初始化图形,接受用户输入voidprint(MGraph*G);打印输出子函数详细设计说明#defineINHNITY10000/*无穷大*/#defineMAX_VERTEX_NUM40#defineMAX40#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>typedefstructArCell(intadj;路径长度ArCeII,AdjMatrix(MAX_VERTEX_NUM(MAX_VERTEX_NUM;typedefstruct图中顶点表示主要景点,存放景点的编号、名称、简介等信息,(charname30;intnum;charinlroduclion200;简介infbtype;typedefstruct(infolypevexsMAX_VERTEX_NUM;景点AdjMatrixarcs;路径数组intVeXnUm,arcnum;景点数,路径长度记录MGraph;MGraphb;全局变量VOidCmd(Void);在主函数中用来调用其他应用子函数的函数声明MGraphInilGraPh(VOid);用来构造学校地图的子函数返回MGraph类型voidMenU(Void);菜单函数:voidBrowser(MGraph*G);调用MGraph类型的地址,进行voidShOrteSlPalh_DIJ(MGraPh*G);迪杰斯特拉算法求最短路径的子函数voidFloyd(MGraPh*G);佛洛伊德算法voidSearch(MGraph*G)H寻找要查询的景点,并输出该景点的信息intLocateVex(MGraph*G,char*v);定点位置MGraph*CreatUDN(MGraph*G);初始化图形,接受用户输入voidprint(MGraph*G);打印输出子函数/*/voidmain(void)(SyStem("colorS);设置调试窗口背景和字体颜色SySIem("modecon:cols=140IineS=I30");设置调试窗口的大小Cmd();/用该函数来调用其他需要用到的函数)/*/voidCmd(VOid)用来调用其他需要用到的函数的子函数(inti;b=InilGraph();“构造校园地图MenU();调用菜单函数scanf("%d",i);while(i!=5)(switch(i)(casel:system("cls");Browser(&b);Menu();break;case2:system("cls");ShortestPath_DIJ(&b);Menu();break;case3:system("cls");Floyd(&b);Menu();break;case4:system("cls");Search(&b);Menu();break;case5:exit(l);break;default:break;scanf("%d",i);*MGraphInilGraPh(Void)构造校园地图(MGraphG;intij;Gvexnum=10;景点数量GarCnUm=I4;路径数量fbr(i=O;i<Gvexnum;i+)Gvexsi.num=i;对景点进行对应编号/*对对应的景点编号进行命名,输入简介*/StrCPy(GVeXS.name,"行政楼");SIrCPy(GVeXS.introduction,"学校的行政机构");StrCPy(Gvexs1.name,”图书馆”);StrcPy(GVeXSl.introduction,"藏书200万册,设施良好,环境幽雅");StrCPy(Gvexs2.name,"新理科楼");StrCPy(GVeXS.Elroduclion,"学校最气派的教学楼,里面的设施比拟好");SlrCPy(GVeXS3.name,"川味府");StrcPy(GVeXS3.introduction,"里面有南方各种美食,就餐环境幽雅");StrCPy(GVeXS4.name,"洗浴中心");StrcPy(GVeXS4.introduction,"学校唯一的澡堂,在川味府旁边");StrCPy(GVeXS5.name,”中心体育场”);StrCPy(GVeXS5.introduclionJ化塑胶跑道,人造草坪,适宜锻炼身体的场所");StrCPy(GVeXS6.name,"会堂");StrcPy(GVeXS6.in(roduciionJ学校有大型的晚会都在这里举行");StrCPy(GVeXS.name,”钟楼广场”);StrcPy(Gvexs7.introduction,"是连大学子展现才华的地方,旁有邮局");StrCPy(GVeXS8.name,"新文科楼");StrcPy(GVeXS8introduction,“里面包含几个学院StrCPy(GVeXS9.name,"清缘超市");StrCPy(GVeXS9.iniroduclion,"学校最大的超市,里面有很多学生使用的商品");对有路的各景点之间的路径长度进行设置,没路的设置为无穷大for(i=0;i<Gvexnum;i+)fbr(j=0j<Gvexnumj+)Garcsij.adj=INFINITY;Garcs0l.adj=100;Garcs02.adj=150;Garcs06.adj=2;Garcsl7.adj=150;Garcs2J3.adj=50;Garcs36.adj=50;Garcs34.adj=20;Garcs45.adj=2;Garcs4J9.adj=150;Garcs59.adj=350;Garcs6J7.adj=60;Garcs69.adj=80;Garcs78.adj=50;Garcs8J9.adj=20;无向图的路径是相互的for(i=0i<Gvexnum;i+)fbr(j=0j<Gvexnumj+)Garcsji.adj=Garcsij.adj;returnG;InitGraphend*菜单函数,打印出导游工程菜单voidMenu()printf("nprintf("大连大学校园导游图n");II'l三hprintf("IL浏览校园全景In");printf("I2.查看所有游览路线I11");printf("I3.选择出发点和目