ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:52.16KB ,
资源ID:5674818      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5674818.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(校园导航系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

校园导航系统.docx

1、校园导航系统题号:第七题题目:校园导航问题1,需求分析:设计您得学校得平面图,至少包括10个以上得景点(场所),每两个景点间可以有不同得路,且路长也可能不同,找出从任意景点到达另一景点得最佳路径(最短路径)。要求:(1)以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息、()为来访客人提供图中任意景点相关信息得查询。(3)为来访客人提供任意景点得问路查询,即查询任意两个景点之间得一条最短路径。(4)修改景点信息。实现提示:一般情况下,校园得道路就是双向通行得,可设计校园平面图就是一个无向网。顶点与边均含有相关信息、选做内容:(1)提供图得编辑功能:

2、增、删景点;增、删道路;修改已有信息等、(2)校园导游图得仿真界面。,设计: 2。1 设计思想:1,数据结构设计: (1)图。采用邻接矩阵存储,其中图所用到得结构体为:typedef sru eqist ertie; /表示图中得顶点iEgeMaxVerticesMxVtces; /表示图中得边it umfEdge; /表示图中边得数目AjMGraph;(2)景点。用顺序表存储。所用到得结构体为: typeef tuc nme20; /顶点名称 int cod; /顶点代号 har introdution5; /顶点信息简介 DaTpe; (3)景点之间得连接描述,所用到得结构体为: yped

3、ef srt nt row; itcol; i eigh;RoColWeigh;用图来存放所提供得所有景点,然后用线性表来存放每一个景点得信息,其中包括景点得名称,代号,信息简介,以及其它得一些信息、这样就将对景点得操作,变成对图中各顶点得操作。 2,算法设计: 关于本课题得算法,很大部分来源于这学期数据结构课程得学习,其中包括: 图得创建,线性表得一些操作。对于具体得问题实现,都有不同得算法,在下面得分析中,我将详细说明 2、2 设计表示:1, 函数调用关系及函数说明:首先,main()函数调用rea()函数,用来创建图,然后调用menu()函数来选择用户所要进行得操作。其中meu()函数就

4、就是一个菜单供使用者来选择她所要进行得相关操作,比如信息得查询,最短路径查询之类。 对于要求1:以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。图得创建设计流程图为: Cre()函数原型为:voiCret(AdjMGraph G,DaaType v, RowolWeigh E, ,it )其中,为所创建得图结构体对象,v 为所有顶点得集合,它就是aaTyp型,这个类型前面已经介绍过;E 存放着各顶点之间得连接关系,它就是ooWeight型,前面也介绍过;表示顶点得个数;e表示边数。Crea()函数得功能就就是实现图得创建,将已知得景点得一些信息

5、,转换成图得信息,并进行存储、对于要求2:为来访客人提供图中任意景点相关信息得查询。流程图为:mnu()函数得原型为: oidmenu() 她就就是一个菜单,供用户选择她们所要进行得操作。nformation1()函数原型为: d Informain1()它得功能就就是输入查询景点得信息,并调用Inormtin() Iormaion()函数原型为: voiInformtion(AMGrp G,car enery) G 依然就是所创建得图得结构体对象,后面所有得G 都就是表示这个意思;sney 就是在Inoraio1() 中输入得景点得名称。此函数得功能就就是根据输入得景点得名称来查询其相关得信

6、息、对于要求3:为来访客人提供任意景点得问路查询,即查询任意两个景点之间得一条最短路径。流程图为: Pah()函数原型为: voi Pth() 它得功能就就是输入查询景点得名称,并调用h() Path ()函数原型为: oid ath(djMaph,r sceeryname, chrsceneryname1)其中scenryname, sceneryname 就就是在Path1()函数中所输入得景点得名称,这个函数得功能就就是通过这两个景点得名称找到它们在线性表中得位置,然后调用Floy()函数,查找出它们得最短路径,并输出所要得信息。 Floyd()函数原型为: void loyd (int

7、 cos Maxertics,int ,int weightMaxVerices,nt pathMxVertces)其中参数cost MxVeces即就是图中边得邻接存储矩阵,weigtMaxVertices用来存放经此算法后得各顶点间得最短路径得值,pahMaxVrtcs就就是每两个顶点之间最短路径中到达目得顶点得前一个顶点得位置。Path()函数中得输出信息就就是据此而来。 对于要求4:修改景点信息。流程图为: Modi()函数原型为: voi oify() 它不带任何参数,功能就是通过手动输入景点名称,然后找到景点得存储空间,然后在修改相应得信息。对于选做要求:增加景点。其工作流程图为:

8、AdVertic()函数原型为:vid dVertic() 她不带任何参数,该函数得功能就是在这个函数里面输入景点得信息,然后调用LisIsert()函数,将所要增加得顶点信息插入到线性表中。 Listnser()函数原型为:void istInr(SeLis L, ini, DatTyex) 参数L表示顶点存储得线性表,i表示要插入得位置,x表示要插入得景点得信息。同时我在插入顶点时也将她与其她顶点之间得距离设置为Maxi,这样做主要就是为了方便在Floyd函数里面求最短路径对于选做要求:删除景点。其工作流程图为 DeeteVrtc()函数原型为:vid DlteVerc() 她不带任何参数

9、,该函数得功能就就是在函数体里面输入要删除得景点得名称,然后根据名称找到该景点在线性表中得存储位置,然后调用线性表中得LitDelee ()函数进行相应顶点得删除。 itete ()函数原型为:istDete(SeqLit L,it i, DatTye x) 其中参数L为存放顶点信息得线性表,i表示要删除顶点在线性表中得存放位置,就就是要删除得那一个景点。它得功能就就是从线性表中删除指定得顶点。 对于选做要求:增、删道路,流程图为: do()与etRoad()两函数原型为:v dad()与oid DelteRod()。这两个函数都不带参数,它们得功能就就是在这两个函数里面输入要删除要增加或者得

10、边连接得两个景点得名称,然后在线性表中找到这两个景点得相对存储空间,最后调用InsetEd ()或者DleeEdge()函数。 nsertEdge ()与DeeteEdge ()两函数原型为:voi Insde(djMGph , itv1, intv2, ntegh)vid DleeEdge(dGap *, int v1,nt v2) 这两个函数中同名参数所代表得意义就是相同得,其中1,v就是所输入景点在线性表中得相对位置;weit就就是增加得边得权值2函数接口说明 我所设计整个程序就就是一些子函数得集合,每个功能都对应一个或者几个子函数,她们之间可以没有任何限制,只要能保证程序正确运行就可以

11、调用,特别就是Adaph。h ,AdMGah、h与Seqt。h头文件之中得函数,她们被很多函数调用过、这其中都没有任何特殊类型得函数 2.3 详细设计:根据题目分析,对于信息查询与修改功能,设计如下:1,输入景点名称2,从线性表头扫描到表尾,f(找到该景点) 输出景点结构体信息ele 输出提示信息找不到该顶点实现查找最短路径,设计如下:1,景点名称2,根据输入得信息找到它们所在得线性表中得位置3,调用oyd算法找出最短路径,输出信息实现增删景点功能,设计如下: 1,增加或者删除景点得名称,f(输入景点),将景点信息保存在相应得结构体中,并插入到线性表尾; f(删除景点),找到景点在线性表中所在

12、得位置,然后将景点信息从线性表中删除实现增删道路功能,设计如下: ,入增加或删除道路连接得两个景点得名称;2,找到它们得相对位置; 3,if(删除道路),将连接它们得边置为axWg; if(增加道路),将输入得边值赋给相应得邻接矩阵表; 3,调试分析: ,调试过程中遇到得问题与解决方案: 1, 关于最短路径得输出问题、在进行最短路径输出时,我刚开始时只能正序输出,具体得描述为:比如,我要查寻从东区到东湖得最短路径,那么它能正确输出结果,她得形式为:东区 -主楼 西体育馆 -隧道 北大门 -东湖、但就是,当我逆向输出时,得到得结果却有点问题,经过分析调试后,找到了错误得所在。在找最短路径得时候我

13、用得就是Floyd算法,在这个算法中有三重循环,形式均为:o(k=0;kn;k+),它们都就是从零开始得,所以在顺序输出时没问题,但就是逆序得时候就需要进行一个判断,正序与逆序循环输出就是相反得、2,关于新增加景点后再找最短路径问题。比如我再新增一个景点,如北区食堂,并输入相关信息,然后插入到线性表尾,当我再找从东区到东湖得最短距离时,输出得最短路径将变为:东区 食堂 东湖。经过分析调试后,其原因也就是出在Fyd算法那,在Fod算法中,有这么一个判断 if(eghtweghtk+weigtkj),由于我在输入新景点信息时并没有建立它与其它景点之间得连接信息,所以在图中,该新景点与其它景点之间得

14、边得连接信息就是空得,也就就是说在邻接矩阵中,它得边得信息就是空得,那么在进行 i(eightijegtik+weghtk)判断时 wight新增景点序号其它景点序号得值将就是一个很大得负数,所以最短路径将会出错、解决这个问题得方法就就是在增加新景点时就将它与其它景点之间得边(距离)设置为Mxeght,这时如果再用Flyd函数进行最短路径得求解时就不会再出现问题了。另外,在做这个题时也还出现过一些其她得小问题,不过都比较容易解决,这里我就不再列出了2,算法得时空复杂度分析对应题目得要求,我总共提供了八个选项操作对于每一个操作得分析如下: 1,相关信息得查询。在这个操作中允许使用者输入一个景点名

15、称,然后再根据景点名称来或取其相关得信息,这个操作要扫描线性表,其时间复杂度为o(n),空间复杂度为o(n);2,最短路径查询、实现这个功能用到了Flyd算法,她用到了一个三重得for()循环,故其时间复杂度为(n3),空间复杂度为o(1);3,修改景点信息、要修改信息,必须首先找到景点所在得存储位置,那么就需要扫描线性表,其时间复杂度为o(),空间复杂度为o(1);4,增加景点、增加景点信息时,直接将此景点结构体信息插入到线性表表尾,而不需要进行遍历,其时间复杂度与空间复杂度均为o(1); 5,删除景点。删除景点时必须找到所要删除景点所在得位置,这样就必须遍历线性表,除此之外,删除后线性表还

16、要进行移动操作,其时间复杂度为(n),空间复杂度为o(n1); 6,增加道路、增加道路也要扫描线性表,找到要增加路得两景点得存储位置,然后再根据找到得存储位置去改变邻接矩阵得边得值,改变邻接矩阵得时间复杂度为o(1),其总时间消耗在线性表得扫描上,故最终其时间复杂度为o(n),空间复杂度为o();,删除道路。删除道路与增加道路类似,都就是先找到存储位置,然后再改变邻接矩阵,它得时空复杂度分别为o(n) ,o(); 8,浏览所有景点。浏览所有景点得实质就就是从头到尾遍历线性表,然后输出遍历到得节点得信息,其时间复杂度为o(n),空间复杂度为o(1)、4,用户手册:使用说明:当用户将程序经过编译,

17、连接后,点击运行,在DS环境里面将瞧到一个选项菜单,菜单里面提供了8种操作,同时输出了一行提示信息:请选择您想进行得操作。然后用户可以输入一个18之间得数字进行选择性得操作,例如,您想进行信息得查询操作,您可以从键盘输入数字1;当然,一般而言先应该进行“浏览所有景点名称操作。如果您选择了浏览所有景点名称操作,在屏幕上将会显示出10个景点得名称,这些景点就是事先加进去得,用户可以对这些景点进行任何程序所提供得操作。下面,我将详细介绍本程序得使用方法:在浏览景点后,菜单将会继续显示出来,为您提供操作选择、 如果您想进行“相关信息得查询”操作,输入数字1,然后程序将会提醒您输入查询景点得名称,在您输

18、入景点名称后回车即可、 如果您想进行“最短路径查询”操作,首先输入数字2,然后程序将会提醒您输入查询得景点得名称,您输入按要求输入所提供得两个景点名称即可,要注意得就是景点名称间以空格隔开,最后程序就会告诉您最短得路径,以及最短路得长度、 如果您想修改景点得信息,同样先输入数字3,然后程序就会提醒您输入所要修改景点得名称,您可以根据要求输入一个景点得名称,然后回车,之后屏幕上就会显示您所输入得景点得所有信息,同时会有三个修改选项供用户选择,然后您可以输入1-3之间得一个数字进行选择性得修改。比如,您可以输入1对景点名称进行修改,修改完后又会返回到菜单项继续选择。 如果您想进行“增加景点操作,可

19、以输入数字4,然后程序就会提示您输入新增加得景点得名称,代号,信息简介,各种输入之间以空格隔开。当输入完毕后回车,景点也就成功加入了,然后用户可以再次选择第八项操作浏览所有景点名称,检测新输入得景点就是否已经成功添加。如果您想进行“删除景点”操作,可以输入数字5,回车后系统将会提示您输入要删除得景点得名称,您可以输入您想要删除得景点得名称,然后回车,这样删除景点得操作就已经完成,您同样可以选择第八项操作,检测就是否成功删除了景点。 如果您想进行“增加道路操作,您可以输入数字6,然后回车,系统将会提示您输入增加道路所连接得两个景点得名称,输入两景点名称后回车,然后系统又会提示输入增加道路得长度,

20、输入后回车,这时增加道路操作也就完了。用户如果想要检查道路就是否增加成功可以进行“最短路径查询”操作。如果您想进行“删除道路操作,您可以输入数字,然后系统就会提示您输入删除道路所连接得两景点得名称,输入名称后回车即可,当然,如果您想检测删除就是否成功您可以选择“最短路径查询”操作。备注:经过测试,本程序得所有操作都能正常执行,您可以选择性得对她进行操作,同时也可以混合着操作,混合操作就是检测错误得最好得一个方法、,测试数据及测试结果: 菜单显示为: *菜单* ,相关信息查询 2,最短路径查询 3,修改景点信息 4,增加景点 5,删除景点 6,增加道路 7,删除道路 8,浏览所有景点名称 *请选

21、择您想进行得操作:8东区 博物馆 主楼图书馆 西体育馆 隧道 北综 北体育馆北大门 东湖请选择您想进行得操作: 请输入您所想要查询得景点得名称: 博物馆您输入得景点得名称就是: 博物馆您输入得景点得代码为: 11您输入得景点得相关信息有: 有各种化石请选择您想进行得操作: 2请输入您要查询得两景点得名称: 东区 东湖最短路径为: 10从 东区 点到东湖 景点得最短路径为:东区-主楼西体育馆隧道北大门东湖请选择您想进行得操作: 3您想修改得景点得名称为: 隧道您输入得景点得名称就是:隧道您输入得景点得代码为: 5您输入得景点得相关信息有: 自主修建您想修改什么信息? 1,名称;2,代号;3,信息

22、简介: 1请输入要修改得得景点得新名称: 地大隧道请选择您想进行得操作: 8东区 博物馆 主楼 图书馆 西体育馆 地大隧道 北综 北体育馆 北大门 东湖请选择您想进行得操作: 4请输入增加节点得名称,代号,信息简介:北一楼 教师办公室请选择您想进行得操作: 1请输入您所想要查询得景点得名称: 北一楼您输入得景点得名称就是:北一楼您输入得景点得代码为: 4您输入得景点得相关信息有: 教师办公室请选择您想进行得操作:5请输入您要删除景点得名称: 北一楼请选择您想进行得操作: 8东区 博物馆 主楼 图书馆 西体育馆 地大隧道 北综 北体育馆 北大门 东湖请选择您想进行得操作: 6输入您要增加得道路链

23、接得两个景点名称: 东区北综输入您要增加得道路得长度: 5请选择您想进行得操作: 2请输入您要查询得两景点得名称: 东区 北综最短路径为: 50从 东区 点到北综景点得最短路径为:东区 -北综请选择您想进行得操作:7输入您要删除得道路链接得两个景点名称: 东区北综请选择您想进行得操作: 2请输入您要查询得两景点得名称: 东区 北综最短路径为: 13从东区 点到 北综 景点得最短路径为:东区-主楼西体育馆-地大隧道北大门-北综6,源程序清单:sool。cpp /程序源文件AjMGrph.h /图得相关操作头文件dMahCreat.h /创建图得头文件eqLst、h /线性表操作头文件Floyd、

24、h /loyd算法头文件prato、h /自己所定义得一些操作得头文件Inqry。h /查询信息包含得头文件/ 详细shool.c 程序源文件incde stio。hincle strig.h#idealloc、define MaxSz 0 /线性表得最大数组空间#efine axVertice 2 /景点个数所允许得最大值ein MaxWight 1000 无穷边权值nludeFlyd、h” #clde jhret。clud ”Inquiry、hAdGraphG;#icle Opeatin。hvoid main() /初始景点信息 Daype”东区”,0,”研究生院,博物馆,有各种化石”,”

25、主楼,2,”学校得标志建筑,图书馆,13,藏书0万册”,西体育馆”,14,主要供西区学生使用,”隧道,自主修建,北综”,16,北区标志楼,”北体育馆,1,主要供北区学生使用”,北大门,外出通道”,”东湖”,19,武汉最美得湖; /邻接矩阵得表示RowColWeightcw=0,1,20,0,30,0,3,5,20,1,20,2,0,3,2,3,15,30,3,35,3,1,2,3,4,3,4,0,3,30,5,1,5,10,6,35,5,8,8,6,5,35,6,7,20,6,8,5,9,5,7,20,7,8,1,8,8,8,6,25,8,1,5; int =10,e=28; /景点数与边数

26、Cet(G,r,n,e); 构造图 mu();/ 详细loyd。h头文件vi Floyd(nt ostaxVetces,t n,itweightMaVertes,inpathaxVerties) /初始化 i,j,; fr(=;n;i+) fr(j=;jn;j+) ghtj=ctij; pthij=-1; /次递推fr(=0;kn;k+) fr(i=;in;+) for(j=0;jn;j+) if(weigtijwegtikweighk) weighi=eightik+weitkj;thij=; /详细Iqir。h 头文件void Inomato(AdjMrap G, cha sceey) inti; fo(=;iG、eries、size;+) i(smp(G、vrties.lit、name,scenery)=0)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1