校园导航课程设计说明书.doc
《校园导航课程设计说明书.doc》由会员分享,可在线阅读,更多相关《校园导航课程设计说明书.doc(20页珍藏版)》请在三一办公上搜索。
1、数 据 结 构课 程 设 计 说 明 书学生姓名:学 号:学 院:软件学院专 业:信息管理与信息系统题 目:校园导航成绩指导教师 一.设计目的:数据结构课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4)训练用系统的观点和软件开发一般规范
2、进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。本系统为用户提供以下功能:(一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。(二)、查询校园各个场所和景点信息;(三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。校园导航查询系统的开发方法总结如下:(1) 调查,了解学校各个场所与 场所或者是各个景点与景点之间的信息,路径和距离,从外来人员或者参观者和走访者的角度出发,该如何设计才能满足用户需求。(2) 分析,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。(3) 设计与开发,设计系统界面并编辑实现其各个功能的代码。(4
3、) 调试,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。二.涉及内容和要求 设计内容:(1)设计学校的平面图(至少包括10个以上的场所)。每两个场所间可以有不同的路,且路长也可能不同;(2)提供起始点与终点能自动找出从任意场所到达另一场所的最佳路径(最短路径)。 设计要求:(1) 符合课题要求,实现相应功能;(2) 要求界面友好美观,操作方便易行;(3) 注意程序的实用性、安全性;三.本设计所采用的数据结构校园旅游模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。所以首先应创建
4、图的存储结构。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值采用图存储。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度,最短路线和最佳路径时可用迪杰斯特拉(Dijkastra)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径和距离。1. 图的存储结构常用的有4种,分别是数组表示法,邻接表,十字链表,邻接多重表。在此程序中运用的是数组表示法:网的邻接矩阵:Aij= wi,j 若或(vi,vj)VR 反之 #define INFINITY INT_MAX /最大值无穷大#d
5、efine MAX_VERTEX_NUM 20 /最大顶点个数typedef enumDG,DN,AG,AN GraphKind; /有向图,有向网,无向图,无向网typedef struct ArcCell VRType adj; InfoType *info; /该弧相关信息的指针ArcCell,AdjMatrixmax_vertex_nummax_vertex_num;tpyedef struct VertexType vexsMAX_VERTEX_NUM; /顶点向量 AdjMatrix arcs; /邻接矩阵 int vexnum,arcnum; /图的当前顶点数和弧数 GraphK
6、ind kind; /图的种类标志MGraph;创建一个二维数组用来存储两个地点的距离,数组两个下标分别代表两个地点的位置(起点与终点),若两个地点之间没有路线可走则用无穷大表示两点之间没有路,依据此条件完成初始化平面矩阵。例子:Edge00.value=0 , Edge01.value=25 , Edge02.value=25 ; Edge03.value=90, Edge04.value=uplimit, Edge05.value=uplimit ; Edge06.value=10 , Edge07.value=uplimit , Edge08.value=uplimit; Edge09.
7、value=uplimit, Edge010.value=uplimit;2.迪杰斯特拉(Dijkstra)算法思想:按路径长度递增的次序产生最短路径.算法的一级实现:辅助数组D0.n-1Di: 表示当前所找到的从始点v到终点vi的最短路径的长度.算法的二级实现: (用邻接矩阵arcs来存储有向图)(1) S:表示已找到从v出发的最短路径的终点的集合; Di:表示当前所找到的从v到终点vi的最短路径的长度. S=v; Di=arcsLocate-vex(G,v)i viV(2)选择vj, 使得 Dj=minDi| viV-S 令 S=Sj(3)修改从v出发到集合V-S上任顶点Vk可达的最短路径
8、长度. if Dj+arcsj,kDk Dk=Dj+arcsjk(4)重复(2)、(3)共n-1次; 即可求得从v到图上其余各顶点的最短路径.以下为迪杰斯特拉算法void ShortestDist(int s) for ( int i=0;i11;i+) /dist和path数组初始化 disti.value=Edgesi.value; /邻接矩阵第s行元素赋值到dist中 Si.value=0; /已求出最短路径的顶点集合初始化 if(i!=s & disti.valueuplimit) pathi.value=s; else pathi.value=-1; /路径存放数组初始化 Ss.va
9、lue=1; /顶点s加入顶点集合 dists.value=0; /* 循环计算该场所与邻接场所之间的最短距离 */ for (i=0;i11-1;i+) /从顶点s确定n-1条路径 float min=uplimit; int u=s; for (int j=0;j11;j+) /选择当前不在集合S中具有最短路径的顶点u /* 如果有路径比目前的最小值还小,则替换这个最小值 */ if (!Sj.value & distj.valuemin) u=j; min=distj.value; Su.value=1; /将顶点u加入集合S,表示它已在最短路径上 for (int w=0;w11;w+
10、) /修改 if (!Sw.value & Edgeuw.valueuplimit & distu.value+Edgeuw.valuedistw.value) distw.value=distu.value+Edgeuw.value; pathw.value=u; 3.用switch语句,分支case语句出现友好界面,提示相关的输入信息,为用户的使用提供方便的输入信息,例如:switch(c) case 0: printf(女生公寓);break; case 1: printf( 图书馆);break; case 2: printf( 体育馆);break; case 3: printf(
11、一道门);break; case 4: printf( 一教学楼);break; case 5: printf( 男生公寓);break; case 6: printf( 食堂);break; case 7: printf( 体育场);break; case 8: printf( 五道门);break; case 9: printf( 十号教学楼);break; case 10:printf(实验楼);break;四、功能模块详细设计(一)设计功能的实现接下来根据以上搭建的程序框架完成各个模块的算法1、 首先是抽象数据类型的定义:图的抽象数据类型的 定义:ADT Mgragh数据对象V: V是
12、具有相同特征的数据元素的 集合,称为定点集数据关系R=VRVR= | V, WV, 表示从V到W的边 2、 基本操作:CreateUDN(&G,V,VR); / 创建图初始条件:V是图的顶点集,VR是图中边的 集合。操作结果:按V和VR的定义构造图 G。(二)主要算法设计及相关算法补充先创建图存储学校各个景点或场所,以图的顶点表示景点或场所,以边表示路径,再利用迪杰斯特拉(DijkStra)算法求出校园各个地方的最短路径,然后根据需要进行补充相关算法。void BuildMap() 生成地图,输入地图的基本信息void ShortestDist(int s) 找出场所间的最短距离void bh
13、() 显示场所名称void Outpath(int c) 将顶点序列号转换成场所名称 void getdata(int s,int e) 输出两个场所之间的最短距离,和最短路径void info(int c) c为场所对应的数字号,输出场所的具体信息,方便用户的信息获取void num()用于显示校园导航系统的界面显示,输出10个地点的名称void main()在主程序中运用switch语句分别调用不同的子函数完成相应的操作程序的具体操作流程:1. 打开导航,在屏幕上显示出学校各个景点场所;2. 进入主菜单,用switch语句选择相应的数字,查找学校简介,路线和个景点与场所之间的距离3. 进入
14、子菜单,选择相应的数字,查询了解景点与场所信息及景点与场所的最短距离4. 退出导航系统源程序:#include #include #include #include #include #define Num 11 /最多顶点个数 #define uplimit 100000 /定义一个无穷大的值 struct inttint value;intt EdgeNumNum; /Edge为带权邻接矩阵 intt distNum; /dist为最短路程 intt pathNum; /path为最短路径上该顶点的前一顶点的顶点号 intt SNum; /S为已求得的在最短路径上的顶点号 intt DNu
15、m; /D为输出最短距离时的辅助数组 /* * 生成地图,输入地图的基本信息 * */ void BuildMap() int i,j; /* 初始化平面图矩阵 */ for ( i=0;i11;i+) for ( j=0;j11;j+) Edge00.value=0 , Edge01.value=25 , Edge02.value=25 ; Edge03.value=90, Edge04.value=uplimit, Edge05.value=uplimit ; Edge06.value=10 , Edge07.value=uplimit , Edge08.value=uplimit; Ed
16、ge09.value=uplimit, Edge010.value=uplimit; Edge10.value=25 , Edge11.value=0 , Edge12.value=10 ; Edge13.value=32, Edge14.value=uplimit, Edge15.value=uplimit ; Edge16.value=10 , Edge17.value=uplimit , Edge18.value=21; Edge19.value=16, Edge110.value=uplimit; Edge20.value=25 , Edge21.value=10 , Edge22.v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 导航 课程设计 说明书
链接地址:https://www.31ppt.com/p-3739507.html