1、n更多企业学院: 中小企业管理全能版183套讲座+89700份资料总经理、高层管理49套讲座+16388份资料中层管理学院46套讲座+6020份资料国学智慧、易经46套讲座人力资源学院56套讲座+27123份资料各阶段职员培训学院77套讲座+ 324份资料职员管理企业学院67套讲座+ 8720份资料工厂生产管理学院52套讲座+ 13920份资料财务管理学院53套讲座+ 17945份资料销售经理学院56套讲座+ 14350份资料销售人员培训学院72套讲座+ 4879份资料 淮 海 工 学 院 计算机工程学院课程设计汇报设计名称: 数据结构课程设计 选题名称: 连云港市景点导游咨询 姓 名: 顾浩
2、然 学 号: 专业班级: 网络工程 网络091 系 (院): 计算机工程学院 设计时间: .12.20.12.31 设计地点: 软件工程试验室、教室 成绩:指导老师评语: 署名: 年 月 日1课程设计目标1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程问题分析、系统设计、程序编码、测试等基础方法和技能;3.提升综合利用所学理论知识和方法独立分析和处理问题能力;4.训练用系统见解和软件开发通常规范进行软件开发,巩固、深化学生理论知识,提升编程水平,并在此过程中培养她们严谨科学态度和良好工作作风。2课程设计任务和要求:任
3、务:用无向网表示连云港市旅游景点平面图,图中顶点表示关键景点,存放景点编号、名称、介绍等信息,图中边表示景点间道路,存放路径长度信息。 要求:(1)查询各景点相关信息; (2)查询图中任意两个景点间最短路径 (3)查询图中任意两个景点间全部路径 (4)可动态添加景点,加后可查询该景点到其它景点最短路径 3课程设计说明书一 需求分析:连云港作为一个著名旅游城市,每十二个月全部有大量中国外游客来港城旅游,大多数外地游客对连云港旅游景点相关信息不是很了解,所以我们能够为她们设计一个方便在连云港外出旅游咨询程序,即连云港市景点导游咨询程序。连云港市导游咨询程序需要把连云港市关键景点(争取十个左右,即使
4、我只认识多个而已)全部包含在一个平面图内。(1) 以图中各顶点存放连云港各景点名称,代号,介绍等相关信息 (2)程序中,以各个旅游景点名称为图顶点,各个顶点信息是景点简明描述,权值就是任意两个景点间路径长度(3) 以边存放路径及路径长度等相关信息,游客可依据图所提供景点来查询各个景点相关信息及各景点路径查询(4) 提供两个景点间全部路径并提醒最短路径,为游客旅游带来方便,游客可依据实际情况选择最好游览路线。二 概要设计1、基础操作: CreateGraph(G):创建图G。 LocateVertex(G,v):确定顶点v在图g中位置,若图g中没有顶点v,则函数值为“空”。 GetVertex(
5、G,i):取出图g中第i个顶点值,若i大于图g中顶点数,则函数值为“空”。 FirstAdjVertex(G,v):求图G顶点v第一个邻接点,若v无邻接点或图G中无顶点v,则函数值为“空”。 NextAdjVertex(G,v,w):已知w是图G中顶点v某个邻接点,求顶点v下一个邻接点(紧跟在w后面),若w是v最终一个邻接点,则函数值为“空”。 InsertVertex(G,u):在图G中增加一个顶点u。 InsertArc(G,v,w):在图G中增加一条从顶点v到顶点w弧。 TraverseGraph(G):根据某种次序,对图G每个结点访问一次且仅访问一次。 2、系统中子程序及功效要求:pa
6、th(MGraph g,int i,int j,int k):确定路径上第k+1个顶点序号,k初始值为0apath(MGraph g,int i,int j):初始化访问标志和路径条数,并调用path()函数cpath(MGraph g,int path1,int i,int v0):输出最短路径bpath(MGraph g,int dist,int path1,int s,int n,int v0,int i):由path1计算从v0到i最短路径Dijkstra(MGraph g,int v0,int p):采取迪杰斯特拉算法求从顶点v0到顶点p最短路径chaname(MGraph g):查
7、询景点信息chapath1(MGraph g):查询两个景点间全部路径chapath2(MGraph g):查询两个景点间最短路径3、各程序模块之间调用关系:函数调用关系图mainchaname chapath1 chapath2apath Dijkstrapath bpathpath cpath cpath主函数可调用子程序 子程序可调用子程序子程序可调用子程序子程序可调用子程序子程序可调用子程序子程序可调用子程序子程序可调用子程序子程序可调用子程序子程序可调用子程序三 具体设计顶点、边和图类型:typedef structint num;/*顶点编号*/ char nameMAXSIZE;
8、/*顶点名称*/ char discriptionMAXLEN;/*顶点信息描述*/VertexType; typedef structint edgesMAXVMAXV; int vexnum,arcnum;VertexType vexsMAXV; MGraph;int visitedMAXV;int pMAXV;创建连云港市景点地图:int i,j;int b11=1,2,3,4,5,6,7,8,9,10,11;char *c11=/*各个景点名称*/;char *d11=/*字符串指针数组,用来给每个顶点介绍信息进行赋值*/;MGraph g;/*创建一个无向网*/ int A1111=
9、/*景点相关介绍进行赋值*/ ; g.vexnum=顶点个数;g.arcnum=顶点边数;/*建立无向网邻接矩阵*/for(i=0;i图顶点个数;i+) /*给每个顶点一个编号*/ /*经过字符串复制函数给每个顶点一个名称*/ /*经过字符串复制函数给每个顶点加上信息,即作为景点介绍信息*/ 查询景点信息:int i;char s; while(1)/*可提供循环查询,当输入为N或n时,结束循环*/printf(ttt 请输入你要查询景点:); scanf(%d,&i);for(int j=0;j图顶点个数;j+) /*输出信息*/ printf(继续查询?(y或n):);scanf(%s,&
10、s);if(s=N|s=n)break;查询景点间游览路径:void chapath1(MGraph g) int i,j; char s; while(1)/*可提供循环查询,当输入为N或n时,结束循环*/*输入起点和终点*/; disppath(g,i,j);/*调用disppath函数,用来输出两个景点间全部路径*/ printf(继续查询?(y或n):);scanf(%s,&s);if(s=N|s=n)break;查询两个景点间最短路径:int i,j; char s; while(1)/*可提供循环查询,当输入为N或n时,结束循环*/*输入起点和终点*/Dijkstra(g,i,j)
11、;/*调用Dijkstra函数,用来输出两个景点间最短路径*/printf(继续查询?(y或n):);scanf(%s,&s);if(s=N|s=n)break;主函数:int select;/*定义一个整型变量,用来输入不一样选择*/ do/*可提供循环输入选择,当输入选择为4时,退出循环*/ switch(select)/*判定select值,依据其值跳转到对应子模块继续实施*/ case 1: /*查询景点信息*/ break; case 2: ;/*查询景点间游览路径*/ break; case 3: /*查询景点间最短游览路径*/ break; case 4:/*退出程序*/ bre
12、ak; while(select!=4);/*当select值不为4时,继续循环*/四 设计和调试分析1、在实施查询景点间游览路径时,我之前考虑到深度优先遍历,我能够以指定为起点开始遍历,在抵达指定终点时,让她停止并输出路径,不过这之间要定义一个s,来存放访问过而且可走通顶点编号,方便能够方便输出,可是,如一个顶点有多个邻接点,它是选择其中一条,有可能在这个顶点能够经过这些邻接点照样能够走到我们指定终点,在这里就出现了问题,怎样让它在访问一个邻接点以后还能够在访问它另外一个邻接点。以后想到了递归调用,和邻接矩阵并经过visited来处理这个问题;2、在实施导游程序时,需要依据用户临时输入求最短
13、路径。即使迪杰斯特拉算法时间复杂度比弗洛伊德算法低,但每次在求一条最短路径时全部必需重新搜索一遍,假如用户频繁查询会造成查询效率降低,所以,在选择算法时不能单纯只考虑算法渐近时间复杂度,有时还必需综合考虑多种原因。五 用户手册尊敬用户您好,本程序提供完全人性化操作界面,您完全能够依据程序具体操作提醒得到您所要相关信息及帮助服务,以下为本程序主界面,感谢您支持和使用。六 测试结果七 附录(源程序清单)#include#include#include #define MAXV 11#define MAXSIZE 30#define MAXLEN 3000#define INF 32767int a
14、=0;typedef struct int num; char nameMAXSIZE; char xinxiMAXLEN;VertexType; typedef structint edgesMAXVMAXV; int vexnum,arcnum; VertexType vexsMAXV;MGraph;int visitedMAXV;int pMAXV;void path(MGraph g,int i,int j,int k)/*确定路径上第k+1个顶点序号,k初始值为0*/int s;if(pk=j)a+;printf(第%d条:,a);for(s=0;s,g.vexsps.name);p
15、rintf(%sn,g.vexsps.name);s=0;while(sg.vexnum)if(s!=i)if(g.edgespks!=INF&visiteds=0)visiteds=1;pk+1=s;path(g,i,j,k+1);visiteds=0;s+;void apath(MGraph g,int i,int j)/*初始化访问标志和路径条数,并调用path()函数*/int k; p0=i; for(k=0;k,g.vexsk.name);void bpath(MGraph g,int dist,int path1,int s,int n,int v0,int i)/*由path1
16、计算从v0到i最短路径*/if(si=1&i!=v0)printf(从%s到%s最短游览路径是:n,g.vexsv0.name,g.vexsi.name);printf(%s-,g.vexsv0.name); cpath(g,path1,i,v0); printf(%s ,g.vexsi.name); printf(路径长度:%d公里n,disti);void Dijkstra(MGraph g,int v0,int p)/*采取迪杰斯特拉算法求从顶点v0到顶点p最短路径*/int distMAXV,path1MAXV;int sMAXV; int mindis,i,j,u,n=g.vexnu
17、m;for(i=0;in;i+)disti=g.edgesv0i;si=0;if(g.edgesv0iINF)path1i=v0;else path1i=-1;sv0=1;path1v0=0;for(i=0;in;i+)mindis=INF;u=-1;for(j=0;jn;j+)if(sj=0&distjmindis) u=j;mindis=distj;su=1;for(j=0;jn;j+)if(sj=0)if(g.edgesujINF&distu+g.edgesujdistj)distj=distu+g.edgesuj;path1j=u; bpath(g,dist,path1,s,n,v0,
18、p);void chaname(MGraph g)/*查询连云港各景点相关信息*/printf(您能够选择以下任一景点:n); printf(-n);printf(tt1:孔望山ntt2:连岛n);printf(tt3:连岛海底世界ntt4:孔雀沟风景区ntt5:秦山岛旅游度假区ntt6:船山ntt7:花果山n);printf(tt8:桃花涧ntt9:东海温泉ntt10:枫树湾ntt11:前三岛n); printf(-n); int i; char s; while(1)printf(ttt 请输入您要查询景点:); scanf(%d,&i);for(int j=0;jg.vexnum;j+)
19、if(i=g.vexsj.num)printf(%s该景点相关介绍:n,g.vexsj.name); printf(-n);printf(%s,g.vexsj.xinxi);printf(n); printf(-n);printf(您是否要继续查询?(按任意键继续或按n退出):);scanf(%s,&s);if(s=N|s=n)break;void chapath1(MGraph g)/*查询连云港各景点间游览路径 */ printf(您能够选择以下任一景点:n); printf(-n);printf(tt1:孔望山ntt2:连岛n);printf(tt3:连岛海底世界ntt4:孔雀沟风景区n
20、tt5:秦山岛旅游度假区ntt6:船山ntt7:花果山n);printf(tt8:桃花涧ntt9:东海温泉ntt10:枫树湾ntt11:前三岛n); printf(-n); int i,j; char s; while(1)printf(ttt 选择您出发景点:); fflush(stdin); scanf(%d,&i);printf(ttt 选择您目地景点:); fflush(stdin);scanf(%d,&j);for(int k=0;kg.vexnum;k+)if(i=g.vexsk.num) i=k;for(int l=0;lg.vexnum;l+)if(j=g.vexsl.num)
21、 j=l;printf(从%s到%s全部游览路径有:n,g.vexsi.name,g.vexsj.name);apath(g,i,j);printf(-n);printf(您是否要继续查询?(按任意键继续或按n退出):);scanf(%s,&s);if(s=N|s=n)break;void chapath2(MGraph g)/*查询连云港各景点间最短游览路径*/ printf(您能够选择以下任一景点:n); printf(-n);printf(tt1:孔望山ntt2:连岛n);printf(tt3:连岛海底世界ntt4:孔雀沟风景区ntt5:秦山岛旅游度假区ntt6:船山ntt7:花果山n)
22、;printf(tt8:桃花涧ntt9:东海温泉ntt10:枫树湾ntt11:前三岛n); printf(-n); int i,j; char s; while(1)printf(ttt 选择您出发景点:);fflush(stdin);scanf(%d,&i);printf(ttt 选择您目地景点:);fflush(stdin); scanf(%d,&j); for(int k=0;kg.vexnum;k+)if(i=g.vexsk.num) i=k; for(int l=0;lg.vexnum;l+)if(j=g.vexsl.num) j=l; Dijkstra(g,i,j);printf(
23、-n);printf(您是否要继续查询?(按任意键继续或按n退出):);scanf(%s,&s);if(s=N|s=n)break;void chapath3(MGraph g)/*动态添加景点*/printf(您能够添加任何您想查询景点:n);printf(-n);printf(尊敬用户,本程序暂还未能实现本功效,为此给您带来不便我表示抱歉,感谢您使用,再见n); printf(-n); printf(请您重新运行本程序);int i,j; char s; while(1) scanf(ttt 请输入您要添加景点:); scanf(-n); scanf(尊敬用户,本程序暂还未能实现本功效,为
24、此给您带来不便我表示抱歉,感谢您使用,再见n); scanf(-n); scanf(-n);printf(您是否要继续查询?(按任意键继续或按n退出):);scanf(%s,&s);if(s=N|s=n);void main()int i,j;int b11=1,2,3,4,5,6,7,8,9,10,11;char *c11=孔望山,连岛,连岛海底世界,孔雀沟风景区,秦山岛旅游度假区,船山,花果山,桃花涧,东海温泉,枫树湾,前三岛; char *d11= 票价:30元 孔望山风景区是连云港市四大风景区之一,怪石峥嵘,草本葱郁;堪称原始艺术精华孔望山摩崖石刻和历代名人墨客铭刻留言更使风景区古趣怡
25、然,驰名中外。 , 票价:50元 连岛美在海中央,她云腾雾绕,似海上仙山浮座于万顷波涛之上,7.57平方公里面积,位居江苏海滨之首。它距市区30公里,距港口5公里。这里青山批翠,碧海泛波,独特海滨风光秀丽迷人,成为黄海之滨一颗璀璨明珠。, 票价:25元 连岛海洋馆作为连岛旅游度假区内多年来引进最大旅游项目之一,是江苏省沿海唯一海洋馆,江苏省科普教育基地,也是中国展示活体珊瑚品种数量最多海洋馆。在这里,你能够探索海洋奥秘,认识多种多样海洋生物,有五颜六色珊瑚,小巧玲珑“水母”,多姿多彩贝类,还有许很多多漂亮珊瑚鱼. , 票价:25元 孔雀沟景区在江苏省连云港市云台山南麓,是全国著名国家级风景名胜
26、区花果山风景区关键组成部分。孔雀沟景区西连花果山景区,东邻渔湾景区、连云港港口、连岛海滨浴场,东距港口 15 公里,西距市中心新浦 12 公里。, 票价:50元 秦山岛在赣榆县东部海边。相传秦始皇曾到这里登山祭海,感动了海神,派龙女向她敬献宝珠,至今还有授珠台遗址。每十二个月春夏之交,海雾迷蒙,不管是在山脚下,还是登上山岛,常常能够看见海市蜃楼圣景,还有那些流传相关此地神话小说,愈加增添了这里神奇漂亮,令人向往。 , 票价:30元 船山在行城东侧,古为舟船避风之处,所以此名。暴雨过以后到船山,老远就听到瀑布冲击山谷发出轰轰巨响。登上半山腰红柱金瓦观瀑亭,举目眺望,瀑布全景尽收眼底。飞瀑沿山谷奔
27、流,半山云烟随涧水浮沉,三级瀑布在涧谷中时隐时现。, 票价:100元 花果山在连云港市区东南,为云台山脉一部分。原名苍梧山,亦称青峰顶,因吴承恩创作神话小说西游记取材于此,故名花果山。山中林木茂盛,青竹滴翠,云海起伏,古有东海第一胜境之誉。,票价:30元 桃花涧景区因东方天书将军崖岩画、缤纷桃花和青山秀水著称。 桃花涧源自锦屏山马耳峰。千回百转聚集成滔滔涧水流下南坡。这里峰峦峻秀,春来遍开桃花,因认为名,现已开辟为新旅游景点。山上现有挺拔林木,又有裸露石骨,颇具中国画风味。景区下面,即著名锦屏磷矿矿区。1979年冬,桃花涧发觉了四五万年前古人类活动遗址,出土舟伏、漏斗状石器,和日本九州出土这类
28、石器形制大致相同。据教授考证,那时期海平面普遍下降,日本和连云港之间形成一条陆桥,两岸古人类曾不停相互往来和交流。, 票价:288元 在东海县西北部,因临近羽山,又称羽山温泉。它是连云港市新近开发旅游温泉。 温泉发觉于唐代,早见于史籍记载。这说明大家早在一千多年前就对它开发、利用。那时温泉只是两个小水洼,灼热地下水,不停涌出地面,漫野而流,大家称为“汤泉”。1972年,在这儿打出了一眼自流井,井深500多米,水温高达82 oC,天天喷流900余吨。现在,东海温泉已开发成疗养胜地。中国外游客在饱览连云港海光山色、名胜古迹以后,驱车前往,洗尘肴濯足,是一件惬意美事。 据相关单位化验,羽山温泉属于钠
29、钙型水,富含钠、钙、镁、锌等元素,尤其是放射性气体氡含量,在一升水中超出56马歇单位,有着关键医疗价值,对关节炎、高血压和多个皮肤病有显著疗效。羽山泉水透明清澈、滑润爽肌,没有通常温泉那股难闻硫磺味,洗浴时也无需用肥皂。水质可和西安华清池、南京汤山温泉相媲美。浴后再喝上一杯略带咸味温泉水,不仅促进食欲,而且能够诊疗肠胃疾病, 票价:10元 枫树湾在云台山隧道南出口西侧不远处,那里密布着原生枫树,夏季绿荫蔽日,秋来红叶满山,此处即为枫树湾。湾中有两株3金桂树,盛花时香飘十里。树旁还有好几棵老木瓜树,枝干光滑,硕果累累,是难得观赏佳境。 ,票价:本处景点暂不售票,如要前往,需持相关部门相关证实或有
30、效证件 前三岛在江苏省连云港市黄海中部海州湾靠近大陆三座小岛屿,鼎足而立,孤悬海上。其中车牛山岛最高,海拔67.2米,面积为6公顷,达埝山岛面积为11.5公顷,平山岛面积为14公顷。车牛山岛离大陆最近,直线距离为39.8公里。 岛上植被简单,均以草本植物为主。乔木多为人工栽种柳、槐、马尾松、法国梧桐、海桐及悬铃木等,草本以艾蒿、灰蓠为主,还有芦苇、野菊花、鬼针草和苦荬菜等。三岛地形相同,均为低山地类型。山坡上缓下陡,断崖及暴露岩石较多。土壤贫瘠,覆盖层薄。岩石间多缝隙。居民点周围有些人工栽培树木和种植蔬菜地.前三岛是扁嘴海雀等海鸟繁殖地和候鸟迁徙关键驿站。黑叉尾海燕、白额鹱、海鸬鹚、黑尾鸥、扁
31、嘴海雀等海鸟在岛上悬崖峭壁上繁殖,还有大量白腰雨燕在岛上繁殖。其它珍贵、濒危鸟类还有国家I级保护动物黑鹳、国家II级保护动物海鸬鹚、黄嘴白鹭、苍鹰、赤腹鹰、雀鹰、松雀鹰、一般鵟、白尾鹞、燕隼、灰背隼、红隼、小杓鹬、红角鴞、纵纹腹小鴞、长耳鴞等。 去前三岛观鸟首先要和连云港市环境保护局等相关部门取得联络,才能获准上岛观鸟。最好不要选择有台风或多风季节前往,假如碰到意外天气,可能无法上岛或无法按时返回,所以要有克服困难思想准备。另外,在岛上要遵守解放军驻岛部队各项要求,多方面沟通,方便得到她们大力帮助。春、夏、秋三季比较适合观鸟。夏季有多个海鸟在岛上繁殖,春秋季节则有迁徙候鸟停歇。假如只有12天时
32、间,能够仅到车牛山岛。假如时间充裕,又有方便船只,就能够到另外两个岛上去观鸟了。前三岛仅有解放军部队驻扎,吃、住能够联络驻岛部队给予帮助处理,但条件比较艰苦,能够自备部分食物和日用具。上岛船只通常710天一次,假如碰到台风或其它风浪较大天气,则会延迟到1530天才能有船只上岛. ;MGraph g; int A1111= INF,14,INF,INF,INF,INF,INF,INF,INF,INF,17, 14,INF,3,INF,INF,17,INF,INF,12,INF,INF, INF,3,INF,17,INF,INF,INF,INF,INF,INF,3, INF,INF,17,INF,
33、10,INF,INF,INF,INF,INF,INF, INF,INF,INF,10,INF,10,8,INF,INF,INF,INF, INF,17,INF,INF,10,INF,INF,12,INF,INF,INF, INF,INF,INF,INF,8,INF,INF,18,INF,INF,INF, INF,INF,INF,INF,INF,12,18,INF,10,17,INF, INF,12,INF,INF,INF,INF,INF,10,INF,INF,INF, INF,INF,INF,INF,INF,INF,INF,17,INF,INF,20, 3,INF,3,INF,INF,INF,INF,INF,INF,20,INF; g.vexnum=11; g.arcnum=17; for(i=0;ig.vexnum;i+) for(j=0;jg.vexnum;j+) g.edgesij=Aij; for(i=0;ig.vexnum;i+) g.vexsi.num=bi; strcpy(g.vexsi.name,ci); strcpy(g.vexsi.xinxi,di); int select; do system(cls); printf(-连云港市导游咨询程序-n); printf( 作者:顾浩然n); printf(本程序能够为您提供以下帮助:n);