欢迎来到天天文库
浏览记录
ID:51936207
大小:142.00 KB
页数:22页
时间:2020-03-19
《数据结构课程设计校园导航.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面
2、受到比较系统和严格的训练。二、课程设计内容1)问题描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。2)基本要求 (1)查询各景点的相关信息; (2)查询图中任意两个景点间的最短路径。 (3)查询图中任意两个景点间的所有路径。(4)增加、删除、更新有关景点和道路的信息三、课程设计过程1.需求分析(1)设计学校的校园平面图,选取出若干的具有代表性的景点构成一个抽象的无向带权图,顶点
3、为景点,边的权值代表了景点间路径的长度。(2)将景点的序号,名称,介绍存放起来准备查询。(3)提供任意景点的信息;(4)提供任意经典的路径查询及其最优路线的查询(5)平面图景点的增加及删除,以及边和权值(长度)的改变 2.概要设计1:第一点是主界面的设计,首先,为了该系统各个功能的管理,设计出含有多个菜单项的主菜单界面,可以更方便的使用该系统。2:第二点是存储结构的设计,采取了图结构类型(mgraph)存储校园图的信息,景点信息用结构数组vexs存储,而且利用全局变量:visited[]数组用于存储顶点是否被访问标志;d
4、[]数组用于存放权值和查找路径顶点的编号;campus是一个图结构的全局变量。3:第三点是设计各个功能的实现,学校景点的介绍通过函数browsecompus()来实现;查询景点间的最段路径通过Floyd(弗洛伊德)算法实现;查询景点间的所有路径通过allpath函数和path函数来实现;更改图的信息可以由主函数changegraph以及其他函数可以实现。3.详细设计(1)主要的操作界面的显示以及无向网操作voidinitgraph(graph*ga){inti,j;ga->n=9;ga->e=11;for(i=0;i5、a->n;i++){ga->vexs[i].num=i;}strcpy(ga->vexs[0].name,"西门");strcpy(ga->vexs[0].introduce,"学校的正大门,设有公交站");strcpy(ga->vexs[1].name,"风雨篮球场");strcpy(ga->vexs[1].introduce,"");strcpy(ga->vexs[2].name,"田径场");strcpy(ga->vexs[2].introduce,"举办运动会,平时体育跑步锻炼等");strcpy(ga->vex6、s[3].name,"京元食堂");strcpy(ga->vexs[3].introduce,"新食堂");strcpy(ga->vexs[4].name,"苍霞湖畔");strcpy(ga->vexs[4].introduce,"戏称“分手湖”,景色宜人");strcpy(ga->vexs[5].name,"思源楼");strcpy(ga->vexs[5].introduce,"学校王牌土木的教学区");strcpy(ga->vexs[6].name,"图书馆");strcpy(ga->vexs[6].introduc7、e,"是大学城最高的标志性建筑");strcpy(ga->vexs[7].name,"北教区");strcpy(ga->vexs[7].introduce,"北校区集中的教学楼");strcpy(ga->vexs[8].name,"禾堂餐厅");strcpy(ga->vexs[8].introduce,"旧食堂");for(i=0;in;i++)for(j=0;jn;j++)ga->edges[i][j]=1000;ga->edges[0][1]=1;ga->edges[1][2]=2;ga->edg8、es[1][3]=5;ga->edges[2][4]=4;ga->edges[3][4]=9;ga->edges[4][5]=1;ga->edges[4][8]=1;ga->edges[5][6]=5;ga->edges[5][7]=7;ga->edges[7][8]=1;ga->edges[6][7]=9;for(
5、a->n;i++){ga->vexs[i].num=i;}strcpy(ga->vexs[0].name,"西门");strcpy(ga->vexs[0].introduce,"学校的正大门,设有公交站");strcpy(ga->vexs[1].name,"风雨篮球场");strcpy(ga->vexs[1].introduce,"");strcpy(ga->vexs[2].name,"田径场");strcpy(ga->vexs[2].introduce,"举办运动会,平时体育跑步锻炼等");strcpy(ga->vex
6、s[3].name,"京元食堂");strcpy(ga->vexs[3].introduce,"新食堂");strcpy(ga->vexs[4].name,"苍霞湖畔");strcpy(ga->vexs[4].introduce,"戏称“分手湖”,景色宜人");strcpy(ga->vexs[5].name,"思源楼");strcpy(ga->vexs[5].introduce,"学校王牌土木的教学区");strcpy(ga->vexs[6].name,"图书馆");strcpy(ga->vexs[6].introduc
7、e,"是大学城最高的标志性建筑");strcpy(ga->vexs[7].name,"北教区");strcpy(ga->vexs[7].introduce,"北校区集中的教学楼");strcpy(ga->vexs[8].name,"禾堂餐厅");strcpy(ga->vexs[8].introduce,"旧食堂");for(i=0;in;i++)for(j=0;jn;j++)ga->edges[i][j]=1000;ga->edges[0][1]=1;ga->edges[1][2]=2;ga->edg
8、es[1][3]=5;ga->edges[2][4]=4;ga->edges[3][4]=9;ga->edges[4][5]=1;ga->edges[4][8]=1;ga->edges[5][6]=5;ga->edges[5][7]=7;ga->edges[7][8]=1;ga->edges[6][7]=9;for(
此文档下载收益归作者所有