数据结构 校园地图
数据结构课程设计报告,校园导游图
淮海工学院计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:校园导游图姓名:学号:专业班级:系(院):计算机工程学院设计时间: 2011.12.19~2011.12.30 设计地点:软件工程实验室、教室9 体育馆学生体育锻炼地点实际输出的信息为:操作成功,与预期结果一致。
2.打印校园导游图的邻接矩阵:操作成功,与预期结果一致。
3、查询景点间最短路径:比如:查询景点1(计算机楼)和3(图书馆)之间的最短路径,预期结果应为:计算机楼—> 文通楼—> 图书馆,路径总长度为351520操作成功,与预期结果一致。
4、景点信息查询:比如:查询景点为1的景点信息,预期结果应为:景点序号(position)景点名称(name) 景点介绍(intoduction)1 计算机楼计算机学院学生学习基地,楼高6层与预期结果一致。
查询成功。
5、更改图的信息:更改图信息主页面:5.1重新建图比如重新建一个有3个景点和3条路径的无向图:景点信息分别为:景点序号(position)景点名称(name) 景点介绍(intoduction)0 计算机楼信息中心1 第一食堂饮食中心2 B#宿舍男生宿舍矩阵关系为:0 15 2515 0 5025 50 0与预期结果一致,重新建图成功。
5.2删除景点:比如删除景点编号为1的景点:则输出的矩阵中应失去原第一行第一列,并且其信息不再出现在校园导游中:删除景点前的图信息:删除景点前的矩阵:删除景点后的图的信息和矩阵:与预期结果一致,删除景点成功。
5.3删除两景点间的路径:比如删除编号为0和2的两景点间的路径,则打印出来的矩阵在第0行第2列和第2行第0列的值应为0。
删除路径前的矩阵:删除路径后的矩阵:与预期结果一致,删除路径成功。
5.4增加景点信息比如增加一个景点,其信息为:景点序号(position)景点名称(name)景点介绍(intoduction)10 A#7宿舍楼计算机学院女生宿舍对应的矩阵中应增加一行一列,第10行和第10列上所有元素都应为0,输出的图信息中最后应增加上述的信息。
校园导航系统 数据结构课程设计 C++开发
分类号编号华北***大学North China Institute of Water Conservancy andHydroelectric Power课程设计题目校园导航院系信息工程学院专业计算机科学与技术姓名******学号201117000指导教师*****2012年7月6 日目录1.需求分析 (1)1.1问题描述 (1)1.2课程设计目的 (1)1.3设计要求 (1)2.概要设计 (2)2.1任务定义 (2)2.2数据结构 (2)2.3 校园平面图展示 (2)2.4系统功能图 (4)3.详细设计 (4)3.1各个模块名称和功能 (4)3.2具体函数模块详解 (5)3.2.1校园平面图展示 (5)3.2.2任意两点的所有路径 (5)3.2.3校园基础设施介绍 (6)3.2.4指定两点间最短路径 (6)3.2.5单点到其他左右顶点间最短路径 (6)3.2.6华北水利水电学院简介 (7)3.2.7访客留言 (7)3.2.8浏览访客留言 (7)3.3 主要算法思想描述 (7)3.4各函数之间的调用关系示意图 (7)4.测试与分析 (8)4.1测试显示 (8)4.2调试分析 (12)4.2.1调试过程中遇到的问题与解决方案 (12)4.2.2算法的时空复杂度分析 (12)5.用户使用说明 (12)6.实验总结 (14)7.参考文献 (14)8.附件 (15)校园导航系统1.需求分析1.1问题描述我们熟悉一个地方的地形情况通常是借助于一张地图,通常的地图包含的信息十分的有限,而且具体到某一个建筑物,你不能了解到它的进一步的详细的情况。
因此,导航系统就应运而生了。
具体到本系统,作为用户浏览校园时,只拿着学校的地图是能够游遍全校,但是各建筑内部的情况就必须实地考察才能了解,既费时又费力。
有了我们的校园的导航系统,用户可以根据自己的需要,迅速找到所关心的地点,并且可以看到它的详细的信息。
1.2课程设计目的本课程设计的目的就是要达到理论与实际应用相结合,使我们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,培养程序设计技能如下:(1)了解并掌握数据结构算法的设计方法,具备初步的独立分析和设计能力;(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(3) 独立完成,提高运用所学的理论知识和方法独立分析和解决问题的能力;1.3设计要求设计一个校园导航系统,为来访的客人提供导航服务,具体要求:(1) 设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
数据结构课程设计导航图
西安邮电大学
(计算机学院)
数据结构设计报告
题目:导航图
专业名称:软件工程
班级:班
学生姓名:
学号(8位):
指导教师:
设计起止时间:2014年12月15日—2014年12月26日
一. 设计目的
1.数据结构课程设计是让学生综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发
2. 通过课程设计,使学生通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力
二. 设计内容
我设计的是旅游查询系统,是用于校园的,任何景区都可以用。
对于游客来说,游客可以查询要游览的景点,可以显示出该景点的相关信息,景点等级。
也可以输入起点和终点,找到一条最短路径,或者这两点之间所有路径。
或者输入起点,自动生成一个全程最短的游览路线。
当然游客也可以查看校园的平面图。
对于管理员来说,管理员可以增,删,改景点和道路信息。
三.概要设计
1.功能模块图;
2.各个模块详细的功能描述。
1.浏览全景
显示校园的平面图,让游客大概的了解校园的形貌,以及各个景点的位置。
数据结构课程设计—校园导航报告
课程设计报告学院、系:大学学院计算机科学与技术系专业:软件工程班级:2008级9班课程设计科目数据结构学生:04080904 喆指导教师:娄雅芳完成时间:2010年10月-12月校园导航系统设计报告一、设计任务与目标设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
本系统是一个涉及大学学院相关景点和场所查询系统,是为了方便人们能够更快更准地获得学校各个景点和场所的详细信息。
本系统为用户提供以下功能:(一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。
(二)、查询校园各个场所和景点信息;(三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。
校园导航查询系统的开发方法总结如下:(1) 调查,了解学校各个场所与场所或者是各个景点与景点之间的信息,路径和距离,从外来人员或者参观者和走访者的角度出发,该如何设计才能满足用户需求。
(2) 分析,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。
(3) 设计与开发,设计系统界面并编辑实现其各个功能的代码。
(4) 调试,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。
二、方案设计与论证校园旅游模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。
所以首先应创建图的存储结构。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值采用图存储。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra)算法和哈密而顿回路算法实现。
最后用switch选择语句选择执行浏览景点信息或查询最短路径和距离。
数据结构校园导航程序设计
一、设计题目:实验题目:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
二、需求分析实验设计的是实现一个简易的校园导航平面图。
本课题实现校园多个场所(至少10个)的最短路径求解。
(1)输入的形式和输入值的范围:本系统主要数据类型为字符型和整形,字符型主要包括地点编号,地点名称,地点简介,功能编号;输入功能编号与单位编号进行操作。
(2) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。
(3) 程序所能达到的功能:可以为学生或旅客了解我校大概地点位置以及路径,主要功能:1.浏览校园地点及简介;2.查看所有游览路线;3.选择出发点和目的地求出最佳路径;4.查看某一单位信息。
(4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
a.首先看到的是校园导航系统的菜单:b.查看浏览路线等待输入起始地点:C.选择出发点与目的地等待输入起始地点与目的地编号(中间用空格隔开):d.参看地点信息等待输入地点编号:三、概要设计本系统包含菜单(menu),显示信息(show),弗洛伊德算法(floyd),迪杰斯特拉算法(shotpath_dj),查找地点信息等程序段(search)。
主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示地点信息,弗洛伊德算法主要实现求两地点之间最短路径,迪杰斯特拉算法实现找两地点之间所有路径,查找地点信息主要实现显示某一地点信息。
系统首先通过主程序调用void main( );进入系统主菜单函数,根据用户的选择可分别进入:1.浏览各地点及简介;2.查看所有游览路径;3.选择出发点和目的地求出最短路径;4.查看地点信息;5.退出系统。
选择“1”项,显示十个地点的有关信息,包括地点编号,地点名称,地点简介。
选择“2”项,会进入输入起始地点编号的界面,输入正确编号后会显示起始地点到其余九个地点的所有路径。
计算机地图制图中国矿业大学数据结构PPT课件
指针不仅增加了数据的 存储量,还增加了操作 的复杂性,并不广泛用 于存储数据。
线性四叉树:记录叶结 点的位置,深度,属性。 地址码(定位码、 Morton码)
第56页/共91页
存贮量小,只对叶结 点编码,直接寻址, 定位码容易存储和执 行实现集合相加等组 合操作。
四进制Morton码
方法1:四叉树从上而下由 叶结点找Morton码。
第25页/共91页
邻接矩阵: 连通矩阵:
重叠:—— 邻接: 1 不邻接:0
重 叠 : —— 连 通 : 1 不连通:0
第26页/共91页
3)方向性:一条弧段的起点、终点确定了弧 段的方向。用于表达现实中的有向弧段,如 城市道路单向,河流的流向等。
4)包含性:指面状实体包含了哪些线、点或 面状实体。
第28页/共91页
左面 右面
4、拓扑关系的意义:
1)能清楚地反映实体之间的逻辑结构关 系。它比几何关系具有更大的稳定性,不 随地图投影变化。 2)有助于空间要素的查询,利用拓扑关 系可以解决许多实际问题。 3)根据拓扑关系可重建地理实体。
第29页/共91页
哥尼斯堡七桥问题
哥尼斯堡七桥问题
第30页/共91页
5)区域定义:多边形由一组封闭的线来定义。
6)层次关系:相同元素之间的等级关系,武 汉市有各个区组成。
第27页/共91页
3、拓扑关系的表达:
拓扑关系具体可由4个关系表来表示:
(1)面--链关系: 面 构成面的弧段
(2)链--结点关系:链 链两端的结点
(3)结点--链关系:结点 通过该结点的链
(4)链—面关系: 链
1)概述 2)八叉树结构 3)三维边界表示法
第7页/共91页
校园导航-南阳理工学院
int i = 1,flag = 1,len;
char ch;
printf("\t\t\t请输入您要查询的景点序号:\n\n");
printf("\t\t\t1.校门\n\t\t\t2.行政楼\n\t\t\t3.老校区田径场\n\t\t\t4.老图书馆\n\t\t\t5.老校区宿舍\n\t\t\t6.下沉广场\n\t\t\t7.荷花池\n\t\t\t8.梦溪湖\n\t\t\t9.图书馆大楼\n\t\t\t10.体育馆\n");
EdgeType e[MAXedg];
adjmax adj;
char choice = 'x';
while(1)
{
clrscr();
printf("\n\n\t\t\t ***南阳理工学院校园导航***");
printf("\n\t\t--------------------------------------\n\n");
{
case '1':
clrscr();
printf("\t\t ----南阳理工学院校园地图----\n\n");
printf(" \n");
printf(" <10.体育馆>......<9.图书馆大楼> \n");
printf(" . . \n");
printf(" . . \n");
{
int lengh;
int ivex, jvex;
struct Edge *next;
} EdgeType;
typedef struct
数据结构课程设计--校园导航图
extern void Ppath(int path[],int i,int v);
void Point(MGraph p)
{
int x,y;
printf("请输入您所在的位置及目的地\n");
{8,32767,32767,8,32767,32767,6,32767,32767}};
p.n=M;p.e=N;
int i,j;
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
p.edges[i][j]=a[i][j];
for(i=1;i<=M;i++)
p.vexs[i].no=i;
typedef struct mgraph
{ int edges[MAXV][MAXV];
int n,e;//元素总个数边数
VertexType vexs[MAXV];
}MGraph;
extern void Check();
extern void Order(MGraph);
extern void Point(MGraph);
extern void Out(int x);
void Order(MGraph p)
{
int a[M+1][M+1];
a[M+1][M+1]={{0,1,2,3,4,5,6,7,8},
{1,0,5,32767,32767,32767,32767,32767,32767},
{2,5,0,10,8,32767,32767,32767,32767},
数据结构校园导航问题
课程设计报告课程名称:数据结构设计题目:校园导航问题院系:信息技术学院班级:设计者:学号:指导教师:设计时间:目录一、设计目的 0二、设计要求和设计指标 0三、设计内容 03.1需求分析 03.1.1程序所能达到的功能 03.1.2输入的形式和输入值的范围 03.1.3输出的形式 (1)3.1.4测试数据和输出结果 (1)3.2总体设计 (1)3.2.1抽象数据类型定义 (1)3.2.2主程序模块的整体流程 (2)3.2.3各模块调用关系如下 (2)3.3详细设计 (2)3.3.1有向网节点结构体类型定义 (2)3.3.2 主程序和其它主要函数伪码算法 (3)3.3.3 函数的调用关系 (10)3.4测试与分析 (10)3.4.1测试 (10)3.4.2分析 (12)四、总结 (13)五、参考文献 (13)六、附录 (13)课程设计(大作业)报告一、设计目的1.加深对《数据结构》这一课程所学内容的进一步理解与巩固2.通过完成课程设计,逐渐培养自己的编程能力;3.培养给出题目后,构建框架,用计算机解决的能力;4.通过调试程序积累调试C程序设计的经验;二、设计要求和设计指标设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)三、设计内容3.1需求分析3.1.1程序所能达到的功能(1) map——输出辽宁工程技术大学平面图。
(2) init()——按相应编号输入各个节点内容,对相应路径赋值的函数。
(3) menu()——菜单函数(4) information()——输出简介的函数(5) way()——最短路径的输出函数(6) shortestpath()——调用弗洛伊德和最短路径输出的函数(7) main()——主函数3.1.2输入的形式和输入值的范围输入数字和字母:字母:以s查询最短路径;以i查询信息;以e退出程序。
数据结构报告_校园导航问题
题目:校园导航问题班级:信计0901 姓名:刘佺学号:3090104020 完成日期:2011.6一:需求分析1.运行环境:Microsoft Visual C++ 6.02.程序所实现的功能:设计一个校园导游程序,为来访的客人提供各种信息查询服务。
为来访客人提供图中任意景点相关信息的查询。
为来访客人提供图中任意景点相关信息的查询。
3.程序的输入和包含输入的数据格式和说明:用户只需要按照页面的提示输入需要操作的序号,然后按回车确认即可。
4.程序的输出格式和说明:当用户输入所要查询的地点序号,并且回车后,屏幕自动生成所查询路径的最短路线和距离。
5.测试数据:当用户进入最短距离查询界面后,输入起始地点序号1(江苏大学校大门)和终点序号后5(药学院),屏幕上自动生成这两条路径之间的最短距离519米,和最短路径江苏大学校大门→图书馆→药学院。
当用户输入起始地点序号7(三江楼)和终点序号后13(女生一区),屏幕上自动生成这两条路径之间的最短距离1305米,和最短路径为三江楼→三山楼→东山操场→女生一区。
二:设计说明(1).主要的数据结构设计说明:结构体的定义:typedef struct VertexType{int number;char *sight;}VertexType;typedef struct{VertexType vex[NUM];int arcs[NUM][NUM];int vexnum;}MGraph;常量的定义:#define Max 32767#define NUM 1各个函数的定义:void CreateMGraph(int v) //创建图的函数,其中v表示图中的顶点数void Map() //地图展示函数,用于输出西安科技大学的平面简略图char Menu() //主菜单显示于操作界面void Info() //资料介绍函数,用于当用户选择查询地点资料时输出地点的资料信息void Dijkstra(int num) //迪杰斯特拉函数void Display(int sight1,int sight2) //地图展示函数void main() //主函数的定义(2).程序的主要流程图求最短路径算法流程图:(3.)主函数对各个函数的调用工作(4).主要函数的说明:#define Max 32767 //用Max来表示权值为此时的两点间直接不可达#define NUM 15 //选取了学校的十七个地点用数组存储,其中数组第一个元素不存储地点以方便操作typedef struct VertexType{int number;char *sight;}VertexType; //定义顶点的结构体类型,number表示顶点编号,字符数组表示顶点的名称typedef struct{VertexType vex[NUM];int arcs[NUM][NUM];int vexnum;}MGraph; //定义图的结构体类型,vex[NUM]数组存储顶点,arcsp[NUM][NUM]矩阵存储边的权值,vexnum表示顶点的个数MGraph G;{生成G表示结构体变量MGraph}int P[NUM][NUM]; //定义全局变量P[NUM][NUM]存储点之间的最短路径long int D[NUM]; //定义全局变量D[NUM]存储点之间最短路径的权值void Dijkstra(int num) //通过迪杰斯特拉算法求num点到其余点的最短路径,并将最短路径保存在数组P[NUM][NUM]中,将最短路径的权值保存在数组D[NUM]中{int v,w,i,t;int final[NUM];int min;for(v=1;v<NUM;v++){final[v]=0; //置空最短路径终点集D[v]=G.arcs[num][v]; //置初始的最短路径长度for(w=1;w<NUM;w++)P[v][w]=0; //置空最短路径if(D[v]<32767){P[v][num]=1;P[v][v]=1;}}D[num]=0;final[num]=1; //初始化num顶点属于S集for(i=1;i<NUM;++i) //开始循环,每次求得num到某个顶点的最短路径,并添加到S 集{min=Max; //min为当前所知的num到顶点的最短距离for(w=1;w<NUM;++w)if(!final[w]) //w顶点在V-S集中if(D[w]<min){v=w;min=D[w];}final[v]=1; //与num相距最近的顶点并入S集for(w=1;w<NUM;++w) //更新最短路径if(!final[w]&&((min+G.arcs[v][w])<D[w])) //修改D[w]和P[w],w在V-S集中{D[w]=min+G.arcs[v][w];for(t=0;t<NUM;t++)P[w][t]=P[v][t];P[w][w]=1;}}}char Menu() //主菜单显示于操作界面从而让用户选择查询路径功能或者查询地点信息功能char c;int flag; //定义标志flag确定循环条件do{flag=1;Map();printf("\t\t 1.查询地点路径 \n");printf("\t\t 2.地点信息简介\n");printf("\t\t e.退出 \n");printf("\t ***********************江苏大学*************************\n");printf("\t\t\t请输入您的选择:");scanf("%c",&c);if(c=='1'||c=='2'||c=='e')flag=0;}while(flag);return c;}void Display(int sight1,int sight2) //输出函数用于通过数组P[NUM][NUM]提取出从点sight1到点sight2的最短路径,从D[NUM]中输出点sight1到点sight2的最短路径的权值{int a,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]); //从D[NUM]中提取出sight1到sight2的最短距离的权值输出printf("\t%s",G.vex[sight1].sight);d=sight1;for(c=0;c<NUM;++c){P[a][sight1]=0;for(b=0;b<NUM;b++){if(G.arcs[d][b]<32767&&P[a][b]){printf("-->%s",G.vex[b].sight); //通过P[NUM][NUM]确定sight1到sight2的最短路径q=q+1;P[a][b]=0;d=b;if(q%8==0) printf("\n");}}}}}void main() //主函数{int v0,v1;char e;char ck;CreateMGraph(NUM);Do //用do while循环确保循环至少进行一次{system("cls"); //用system("cls")清屏使屏幕简洁ck=Menu();switch(ck) //用switch语句确定用户选择功能{case '1':gate: //门函数使程序退回到gate位置system("cls");Map();do{printf("\n\n\t\t\t请选择出发地序号(1~14):");scanf("%d",&v0);if(v0<1||v0>17)printf("\n\n\t\t\t\t输入错误!\n");}while(v0<1||v0>17);do{printf("\t\t\t请选择目的地序号(1~14):");scanf("%d",&v1);if(v1<1||v1>14||v1==v0)printf("\n\n\t\t\t\t输入错误!\n");}while(v1<1||v1>14||v1==v0);Dijkstra(v0);Display(v0,v1);printf("\n\n\t\t\t\t请按任意键继续,按e退回首页\n");getchar();scanf("%c",&e);if(e=='e'){当标识符e等于e时跳出语句}break;goto gate;case'2':system("cls");Info();printf("\n\n\t\t\t\t请按回车键退回首页...\n");getchar();getchar();break;};}while(ck!='e'); //当标识符ck不等于e时继续循环}三.上机结果及体会1.测试结果:(如图所示)打开程序所显示的界面。
数据结构课程设计之校园导航系统
##大学数据结构课程设计报告题目:校园导航系统院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 2011.6.19--6.30指导教师:指导教师评语:成绩:签名:年月日20XX—20XX年度第 2 学期一、需求分析1.问题描述:从理工大学的平面图中选取10个有代表性的景点,抽象成一个无向带权图。
以图中顶点表示景点,边上的权值表示两地之间的距离,求取任意两点间最短路径。
2.基本功能本程序主要实现的功能是为用户提供路径咨询。
根据用户指定的始点和终点输出相应路径(用到output()函数),或者根据用户指定的景点输出景点的信息(用到search()函数)。
3.输入输出本程序主要输入输出信息是景点编号和景点名称,以字符串的形式输入输出。
二、概要设计1.设计思路:本程序是校园导航系统,即求两点间的最短路径。
其主要算法是迪杰斯特拉算法,在此基础上再加上菜单函数输出函数造图函数查找函数即可。
2.数据结构设计:抽象数据类型图的定义如下:ADT Graph{数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。
数据关系R:R={VR}VR={(v,w)|v,w V,(v,w)表示v和w之间存在路径}基本操作p:CreatGraph(&G,V,VR)初始条件:V是图的顶点集,VR是图中边的集合。
操作结构:按V和VR的定义构造图G。
DestroyGraph(&G)初始条件:图G存在。
操作结果:销毁图G。
LocateVex(G,u)初始条件:图G存在,u和G中顶点有相同特征。
操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返回其他信息。
GetVex(G,v)初始条件:图G存在,v是G中某个顶点。
操作结果:返回v的信息。
FirstEdge(G,v)初始条件:图G存在,v是G中某个顶点。
操作结果:返回依附于v的第一条边。
若该顶点在G中没有邻接点,则返回“空”。
NextEdge(G,v,w)初始条件:图G存在,v是G中某个顶点,w是v的邻接顶点。
数据结构课程设计-校园导航系统
安徽省巢湖学院计算机与信息工程学院课程设计报告课程名称《数据结构》课题名称校园导航系统专业计算机科学与技术班级10计本2班学号********姓名吴宗林联系方式152****6478指导教师江家宝20 11 年12 月29 日目录1、数据结构课程设计任务书 (1)1.1、题目 (1)1.2、要求 (1)2、详细设计 (1)2.1、程序中所采用的数据结构及存储结构的说明 (1)2.2、算法的设计思想 (2)3、调试与测试: (2)3.1、调试方法与步骤: (2)3.2、测试结果的分析与讨论: (2)4、时间复杂度的分析: (4)5、源程序清单和执行结果 (5)6、C程序设计总结 (9)7、致谢 (10)8、参考文献 (10)1、数据结构课程设计任务书1.1、题目校园导航问题1.2、要求设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
1)设计校园平面图,在校园景点选10个左右景点。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。
2、详细设计模块功能说明:如函数功能、入口及出口参数说明,函数调用关系描述等;2.1、程序中所采用的数据结构及存储结构的说明(1)图。
采用邻接矩阵存储,其中图所用到的结构体为:typedef struct{SeqList vertices; //表示图中的顶点int Edge[MaxVertices][MaxVertices]; //表示图中的边int numOfEdge; //表示图中边的数目}AdjMGraph;(2)景点。
用顺序表存储。
所用到的结构体为:typedef struct{char name[20]; //顶点名称int code; //顶点代号char introduction[50]; //顶点信息简介}DataType;(3)景点之间的连接描述,所用到的结构体为:typedef struct{int row;int col;int weight;}RowColWeight;用图来存放所提供的所有景点,然后用线性表来存放每一个景点的信息,其中包括景点的名称,代号,信息简介,以及其它的一些信息。
数据结构实验四图的应用-校园导游
栅格地图
将校园地图划分为若干个栅格,每个 栅格表示一定的地理范围,可以快速 进行地图的渲染和展示。
04
实现校园导游系统
系统架构设计
架构概述
本系统采用客户端-服务器架构, 分为前端和后端两部分。前端负 责展示校园地图和导航信息,后 端负责处理用户请求、路径搜索
和地图数据存储。
前后端交互
前后端通过API进行数据交换, 前端发送用户请求(起点和终 点),后端返回路径信息和导航
提示。
数据存储
使用关系型数据库存储校园地图 数据、路径信息和用户信息。
路径搜索算法实现
算法选择
采用Dijkstra算法实现路径搜索,该算法能够在加权图中找到从起点到终点的最短路径。
算法流程
初始化距离数组,将起点到各节点的距离设为0,其他节点距离设为无穷大;遍历未访问节点, 找到距离最小的节点,更新其相邻节点的距离;重复上述步骤直到所有节点都被访问。
图的应用
通过构建图的数据结构,可以方便地实现校园导航、路径查询、最短路径计算 等功能,提高校园内人员流动的效率和便利性。
实验目的
1 2
掌握图的基本概念和数据结构
通过实验,学生将深入了解图的基本概念、表示 方法和相关数据结构,如邻接矩阵和邻接表。
实现校园导航系统
学生将利用所学知识,构建一个校园导航系统, 实现地点查询、路径规划和最短路径计算等功能。
错误处理
测试了系统在异常情况下的表现,如输入错误、网络中断等,并优 化了错误处理机制。
性能评估
响应时间
评估了系统在不同负载下的响应时间,确保系统 能够快速响应用户操作。
稳定性
测试了系统在高负载下的稳定性,确保系统在高 并发情况下不会崩溃。
数据结构报告 校园导航问题
数据结构报告校园导航问题一、引言校园导航问题是在大型校园环境中,为了帮助学生、教职员工和访客快速准确地找到目的地而提出的。
校园导航系统需要提供用户友好的界面和高效的导航功能,以满足用户的需求。
本报告将介绍一个基于数据结构的校园导航系统的设计和实现。
二、问题描述在大型校园中,学生、教职员工和访客常常面临找不到目的地的问题。
校园导航系统的目标是提供一个方便、快捷且准确的导航服务。
该系统需要满足以下需求:1. 提供校园地图:系统需要包含校园的地图信息,包括建筑物、道路和其他地标的位置和连接关系。
2. 支持路径规划:用户可以输入起始点和目的地,系统能够计算出最短路径,并提供导航指引。
3. 支持多种交通方式:系统需要考虑不同交通方式,如步行、自行车和汽车,并根据用户选择提供相应的路径。
4. 提供实时信息:系统需要实时更新校园地图信息,包括建筑物的开放时间、道路的交通情况等。
三、设计思路为了实现校园导航系统,我们可以采用以下数据结构和算法:1. 图结构:校园地图可以表示为一个有向加权图,其中节点表示建筑物或地标,边表示道路或连接关系,边的权重表示距离或时间。
2. 最短路径算法:可以使用Dijkstra算法或A*算法计算起始点到目的地的最短路径。
3. 用户界面:可以设计一个用户友好的界面,包括输入起始点和目的地、选择交通方式等功能。
四、系统实现基于上述设计思路,我们可以实现一个校园导航系统。
系统的实现可以分为以下几个步骤:1. 数据采集:收集校园地图信息,包括建筑物和道路的位置和连接关系。
可以使用GPS定位和地图绘制工具进行数据采集。
2. 数据存储:将采集到的数据存储到数据库中,以便系统可以快速访问和处理。
3. 路径规划:根据用户输入的起始点和目的地,使用最短路径算法计算最短路径,并生成导航指引。
4. 用户界面:设计一个用户友好的界面,包括地图显示、输入框、按钮等元素,以便用户可以输入起始点和目的地,并选择交通方式。
数据结构课程设计校园导航
一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。
设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。
通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
二、课程设计内容1)问题描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
2)基本要求(1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息三、课程设计过程1.需求分析(1)设计学校的校园平面图,选取出若干的具有代表性的景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。
(2)将景点的序号,名称,介绍存放起来准备查询。
(3)提供任意景点的信息;(4)提供任意经典的路径查询及其最优路线的查询(5)平面图景点的增加及删除,以及边和权值(长度)的改变2.概要设计1:第一点是主界面的设计,首先,为了该系统各个功能的管理,设计出含有多个菜单项的主菜单界面,可以更方便的使用该系统。
2:第二点是存储结构的设计,采取了图结构类型(mgraph)存储校园图的信息,景点信息用结构数组vexs存储,而且利用全局变量:visited[]数组用于存储顶点是否被访问标志;d[]数组用于存放权值和查找路径顶点的编号;campus是一个图结构的全局变量。
数据结构课程设计—校园导航报告
数据结构课程设计—校园导航报告
校园导航作为一种常用的地图应用,其设计并不复杂,但在功能实现中涉及到多种常
见数据结构,如图、树结构等。
本报告对校园导航的数据结构设计进行详细说明,主要可
以分为三个部分:
1、数据输入。
在实现校园导航功能之前,需要输入校园数据,各个元素需要形成节点并构建图,比
如楼宇、地点以及相连的路径等,用户可以输入各个节点的属性,然后形成节点、构建图、标记属性等。
2、数据结构设计
对于校园地图来说,一般采用有向图和无向图这两种图形结构。
有向图表示有方向性
的连接关系,一般用于实现单程导航;无向图表示无方向性的连接关系,一般用于实现多
程导航,比如从一个地点到达另一个地点的最短路径。
另外,在校园地图中也会遇到对节点进行索引的情况,一般采用哈希表来构造索引,
哈希表存储不同的数据结构的元素,以及这些元素的信息,从而实现快速查找功能。
3、搜索算法设计
如许多搜索应用,校园导航中也有搜索功能,搜索过程中,会在图和哈希表中寻找符
合条件的结果。
有关搜索算法,常用的有深度优先搜索算法和广度优先搜索算法。
深度优先搜索算法通过沿着关系网的深度来搜索,即每次搜索一条路径直至无路可走;而广度优先搜索算法通过沿着关系网的广度来搜索,即每次从多条路径中选择最佳路径进
行搜索,并将其标记,直到找到最终结果
总体来看,校园导航数据结构设计包含了输入、构建图、节点索引以及搜索等多种操作,可以利用图、树、哈希表等数据结构设计实现各项功能,以最优的性能完成地图搜索
工作。
校园导航系统-数据结构
校园导航系统-数据结构-CAL-FENGHAI.-(YICAI)-Company One1《数据结构预与算法分析》课程设计报告题目:校园导航系统班级:网络工程姓名:xxx学号:xxxxxxx指导教师:xxx日期:2016/7/11目录1.任务说明(要求、知识点、实现的功能) (1)1.1题目: (1)1.2要求: (1)1.3知识点: (1)2.概要设计(结构体类型及函数声明,功能模块图,流程图) (2)2.1结构体类型及函数声明 (2)2.2功能模块图 (3)2.3流程图 (3)3.1节点数据结构类型: (5)3.2创建导航图函数: (5)3.3最短路径导航函数: (5)3.4导航菜单函数声明 (6)4调试分析(出现哪些问题,如何解决) (6)5.测试结果 (6)6.总结 (9)7.附录 (9)7.1源代码 (9)7.2参考文献 (22)1.任务说明(要求、知识点、实现的功能)1.1题目:校园导航系统1.2要求:用无向网表示你所在学校的校园景点品面图,图中顶点表示主要景点,存放景点的编号,名称,简绍等信息,图中的边表示景点间的道路,存放路径长度等信息。
系统功能:(1)景点信息简绍(2)任意两景点间最短距离(3)任意一点到所有点最短距离1.3知识点:图的创建,图的搜素,领接矩阵,迪杰斯特拉算法,结构体,函数的声明与调用等知识点。
2.概要设计(结构体类型及函数声明,功能模块图,流程图)2.1结构体类型及函数声明在近一个星期的努力下,我编写的校园导航系统软件终于能够成功完成。
采用工程思想,将系统共分一下几个模块:导航图建立模块、求最短路径模块、主菜单;下面是具体各功能简单的实际应用:➢导航图建立模块:采用上述结构体类型对导航图中每个节点进行赋值。
包括:各定点的名称(地点名),各个节点到其他所有节点的真实路径长度(赋权值)。
➢求最短路径模块:本模块的基本思想是采用迪杰斯特拉算法求最短路径。
次模块是本校园导航系统的核心模块,求两点间的最短路径与求一点到其他所有点最短路径两个子功能均是在最短路径算法模块的基础上进行调用,进而实现导航功能。
数据结构课程设计校园导航
数据结构课程设计校园导航一、课程目标知识目标:1. 学生能理解并掌握数据结构中图的基本概念,包括顶点、边、邻接矩阵和邻接表。
2. 学生能够运用图的表示方法,特别是适合校园导航的图结构。
3. 学生能够描述并实现至少两种图的遍历算法,如深度优先搜索(DFS)和广度优先搜索(BFS)。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的校园导航系统,能够规划出两点之间的最短路径。
2. 学生通过实践项目,培养解决实际问题的能力,掌握算法的应用和优化。
3. 学生能够通过编程实践,提高使用数据结构解决复杂问题的能力。
情感态度价值观目标:1. 学生能够认识到数据结构在解决实际问题中的重要性,增强学习数据结构的兴趣和积极性。
2. 学生通过小组合作完成项目,培养团队协作能力和交流沟通技巧。
3. 学生在探索过程中能够体验到算法解决问题的乐趣,培养科学探究精神和创新思维。
本课程设计针对高年级学生,结合数据结构学科特点,旨在通过校园导航项目,使学生将理论知识与实际应用紧密结合。
课程强调理解与操作并重,注重培养学生的实践能力和创新精神,同时引导学生形成积极的情感态度和正确的价值观。
通过具体学习成果的分解,课程为教学设计和评估提供了明确、可衡量的标准。
二、教学内容1. 图的基本概念:- 顶点与边- 有向图与无向图- 邻接矩阵与邻接表2. 图的遍历算法:- 深度优先搜索(DFS)- 广度优先搜索(BFS)- 应用实例分析3. 最短路径算法:- Dijkstra算法- Floyd-Warshall算法- 应用实例分析4. 校园导航系统设计:- 系统需求分析- 图的构建与表示- 导航算法实现与优化5. 项目实践:- 小组分工与合作- 编程实现与调试- 系统测试与评估本教学内容按照课程目标,以数据结构课本中图的相关章节为基础,结合校园导航项目进行系统组织。
教学大纲明确教学内容安排和进度,确保学生能够逐步掌握图的原理、算法和项目实践。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout<<" ***************************************************************"<<endl;
}
void info()
{
int x;
cout<<"请输入您要查询的景点代号:"<<endl;
do
{
cin>>x;
switch(x)
{
case 0: cout<<"学校的入口";break;
G.arcs[5][7]=50;
G.arcs[5][8]=130;
G.arcs[6][7]=100;
G.arcs[6][8]=30;
G.arcs[8][9]=70;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
G.arcs[j][i]=G.arcs[i][j];
}
}
void ShortestPath(AMGraph G){
case 1: cout<<"学校最大的一座教学楼,五层高,每层两个阶梯教室,一个大教室和若干普
通教室。面对大门";break;
case 2: cout<<"教学楼。五层高,每层八个普通教室。学习氛围浓";break;
case 3: cout<<"教学楼。三层高,每层四个阶梯教室。只有在上课时开放。";break;
//最短路径
int x,i,n,v;
n=G.vexnum;
int D[13];
int Path[10];
bool S[10];
//存储已经找到的 ver-1 有最短距离的景点
cout<<"请输入您所在的景点代号:"<<endl;
cin>>x;
for(v=0;v<n;v++)
{
S[v]=false;
//将各个景点的最短路径长度初始化为直接路径上的距离
cout<<"
┗━━┛
┗━━━━━┛
┗━━━━┛"<<endl;
cout<<"
┏━━━━┓ ┏━━━━━┓
┏━━━┓ "<<endl;
cout<<"
┃二 教┃ ┃一 教 ┃
┃四 教┃ "<<endl;
cout<<"
┗━━━━┛ ┗━━━━━┛
┗━━━┛ "<<endl;
cout<<"
┏━━┓
"<<endl;
cout<<endl;
}
void face()
{
cout<<"
铁*大*游*览*图
"<<endl;
cout<<" ****************************************************************"<<endl;
cout<<"
┏━━━┓ ┏━━━━┓
┏━━━┓ "<<endl;
cout<<"
┃体育馆┃ ┃ 图书馆 ┃
┃ 五教 ┃"<<endl;
cout<<"
┗━━━┛ ┗━━━━┛
┗━━━┛"<<endl;
cout<<"
┏━━┓
┏━━━━━┓
┏━━━━┓"<<endl;
cout<<"
┃三┃
┃沁
┃
┃ 翠 ┃"<<endl;
cout<<"
┃教┃
┃
园┃
┃
园 ┃"<<endl;
S[v]=true;
int y;
for(w=0;w<n;w++)
{
y=D[v]+G.arcs[v][w];
if(!S[w]&&D[v]+G.arcs[v][w]<D[w])
{
D[w]=D[v]+G.arcs[v][w];
Path[w]=v;
}
}
}
int xl,p,k;
int a[10];
cout<<"您想去的是(代号):"<<endl;
四、实验环境
VC++
五、实验分析与设计思路
(1)题目需求分析
1、需要定义图
2、构造图的邻接矩阵
3、构造函数求得最短路径
(2)涉及到的数据结构
图的定义,图的存储,求图的最短路径(迪杰斯特拉算法)
(3)主要的设计思路
首先定义图并且将图以邻接矩阵储存,用迪杰斯特拉算法构造函数求最短路径,
最后在主函数中设计界面,调用所需要的函数。
cin>>xl;
p=xl;
i=0;
while(p!=x)
{
k=Path[p];
a[i]=k;i++;
p=k;
}
i--;
cout<<"最短路线是:"<<endl;
for(;i>=0;i--)
{
cout<<a[i]<<"--->";
}
cout<<xl<<endl;
cout<<"路线长 "<<D[xl]<<endl;
六、源程序
#include <iostream.h> #include<stdlib.h> #define M 32267//表示极大值 #define MVNum 100 //最大顶点数 typedef char VerTexType;//假设顶点的类型为字符型 typedef int ArcType;//假设边的权值类型为整型 typedef struct{
VerTexType vex[MVNum];//顶点表 ArcType arcs[MVNum][MVNum];//临接矩阵 int vexnum,arcnum;//图中当前景点数和路径数 }AMGraph; void Create(AMGraph &G){ //采用邻接矩阵表示法,创建无向网 G int i,j; G.vexnum=10; G.arcnum=13; for(i=0;i<10;i++)
for(j=0;j<10;j++)
G.arcs[i][j]=M;
G.arcs[0][1]=50;
G.arcs[1][2]=80;
G.arcs[1][4]=120;
G.arcs[1][6]=30;
G.arcs[2][3]=60;
G.arcs[3][6]=100;
G.arcs[3][9]=50;
G.arcs[4][7]=40;
三、实验题目 编写一个校园导游程序,为来访的客人提供各种信息查询服务。 主要功能: (1) 设计学校的校园平面图,所含景点不少于 10 个:顶点表示景点,边表
示路径等。 (2)为客人提供图中任意景点相关信息的查询 (3)为客人提供图中任意景点的问路查询,即查询人以景点间的一条最短路
径。 要求: (1)设计一个主界面 (2)设计功能菜单,供用户选择 (3)有一定的实用性
算法与数据结构
实验报告
实验项目名称: 图及其应用 班级: 信 1205 班 学号: 20122819 姓名: 尹亚男
指导教师: 张翠肖 实验时间: 2013.12.29
实验一:图及其应用 一、实验目的
(1)掌握图的常用存储结构; (2)掌握图的遍历操作; (3)应用图结构解决具体问题
二、实验要求 (1)做好实验预习 (2)独立完成实验 (3)撰写实验报告
}
七、实验结果及分析
1、主界面
2、查
询
景
点
信
息
3、查
询
路
线
4、退
出
八、总结 实验在编写程序的过程中出现许多问题,不能熟练的运用最短路径算法,最
后经过查书和问同学解决了问题,顺利的完成了实验内容。 通过此次试验,对图的运用有了更深的理解,并能运用到程序中,做出自己
的游览图,非常t;<"建筑与艺术学院专用教学楼,可通宵上自习";break;
case 5: cout<<"研究生楼。研究生在此上课,部分其他同学在此上自习。";break;
case 6: cout<<"有世纪钟,喷水池,舞池,环境优美。";break;
case 7: cout<<"环境清幽的小公园。中间有水池";break;
D[v]=G.arcs[x][v];
if(D[v]<M)
Path[v]=x;
else
Path[v]=-1;
}
S[x]=true;
D[x]=0;
for(i=1;i<n;++i)
{
int w,min;