欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计校园导航.docx

    • 资源ID:17224003       资源大小:21.55KB        全文页数:30页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计校园导航.docx

    1、数据结构课程设计校园导航一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。2、课程设计内容1)问题

    2、描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。2)基本要求(1) 查询各景点的相关信息;(2) 查询图中任意两个景点间的最短路径。(3) 查询图中任意两个景点间的所有路径。(4)增加、删除、更新有关景点和道路的信息 三、课程设计过程1需求分析(1)设计学校的校园平面图,选取出若干的具有代表性的景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。(2)将景点的序号,名称,介绍存放起来准备查询。(3)提供任意景点的信息;(4)提供任意经

    3、典的路径查询及其最优路线的查询(5)平面图景点的增加及删除,以及边和权值(长度)的改变2概要设计 1:第一点是主界面的设计,首先,为了该系统各个功能的管理,设计出含有多个菜单项的主菜单界面,可以更方便的使用该系统。 2: 第二点是存储结构的设计,采取了图结构类型(mgraph)存储校园图的信息,景点信息用结构数组vexs存储,而且利用全局变量:visited数组用于存储顶点是否被访问标志;d数组用于存放权值和查找路径顶点的编号;campus是一个图结构的全局变量。 3: 第三点是设计各个功能的实现,学校景点的介绍通过函数browsecompus()来实现;查询景点间的最段路径通过Floyd(弗

    4、洛伊德)算法实现;查询景点间的所有路径通过allpath函数和path函数来实现;更改图的信息可以由主函数changegraph以及其他函数可以实现。3详细设计(1)主要的操作界面的显示以及无向网操作void initgraph(graph *ga) int i,j; ga-n=9; ga-e=11; for( i=0;in;i+) ga-vexsi.num=i; strcpy(ga-vexs0.name,西门); strcpy(ga-vexs0.introduce,学校的正大门,设有公交站); strcpy(ga-vexs1.name,风雨篮球场); strcpy(ga-vexs1.intr

    5、oduce,); strcpy(ga-vexs2.name,田径场); strcpy(ga-vexs2.introduce,举办运动会,平时体育跑步锻炼等); strcpy(ga-vexs3.name,京元食堂); strcpy(ga-vexs3.introduce,新食堂); strcpy(ga-vexs4.name,苍霞湖畔); strcpy(ga-vexs4.introduce,戏称“分手湖”,景色宜人); strcpy(ga-vexs5.name,思源楼); strcpy(ga-vexs5.introduce,学校王牌土木的教学区); strcpy(ga-vexs6.name,图书馆)

    6、; strcpy(ga-vexs6.introduce,是大学城最高的标志性建筑); strcpy(ga-vexs7.name,北教区); strcpy(ga-vexs7.introduce,北校区集中的教学楼); strcpy(ga-vexs8.name,禾堂餐厅); strcpy(ga-vexs8.introduce,旧食堂); for(i=0;in;i+) for(j=0;jn;j+) ga-edgesij=1000; ga-edges01=1; ga-edges12=2; ga-edges13=5; ga-edges24=4; ga-edges34=9; ga-edges45=1; g

    7、a-edges48=1; ga-edges56=5; ga-edges57=7; ga-edges78=1; ga-edges67=9; for(i=0;in;i+) for(j=0;jn;j+) ga-edgesji=ga-edgesij;(2)确定顶点是否存在已经顶点是否已经被访问过来确定路径void Create_graph(graph *ga) int i,j,k,w; printf(请输入顶点数和边数:n); scanf(%d %d,&(ga-n),&(ga-e); printf(请输入景点编号,景点名字,景点介绍,建立信息表:n); for(i=0;in;i+) scanf(%d,

    8、&(ga-vexsi.num); gets(ga-vexsi.name); gets(ga-vexsi.introduce); for(i=0;in;i+) for(j=0;jn;j+) ga-edgesij=1000; for(k=0;ke;k+) printf(请输入%d条边的景点序号i,j和长度:,k+1); scanf(%d %d %d,&i,&j,&w); ga-edgesij=w; ga-edgesji=w; void print(graph ga) int i,j; for(i=0;iga.n;i+) for(j=0;jga.n;j+) printf(%d,ga.edgesij)

    9、; if(j+1=ga.n) printf(n); void visit(graph ga) int a; printf(请输入景点编号:); scanf(%d,&a); int i; for( i=0;iga.n;i+) if(a=ga.vexsi.num) printf(景点编号为%d n,ga.vexsi.num); printf(景点名称为); puts(ga.vexsi.name); printf(景点介绍为); puts(ga.vexsi.introduce); break; if(i=ga.n)printf(无此点n);(3)得出景点间的最短路径void shortestpath

    10、_djst(graph ga)void shortestpath_floyd(graph ga) int i,j,k,v,u,w,d3535,p353535; for(v=0;vga.n;v+) for(w=0;wga.n;w+) dvw=ga.edgesvw; for(u=0;uga.n;u+) pvwu=0; if(dvw1000) pvwv=1; pvww=1; for(u=0;uga.n;u+) for(v=0;vga.n;v+) for(w=0;wga.n;w+) if(dvu+duwdvw) dvw=dvu+duw; for(i=0;iga.n;i+) pvwi=pvui|puwi

    11、; printf(n请输入出发点和目的地编号:); scanf(%d %d,&k,&j); printf(nn); while(kga.n|jga.n) printf(n输入的编号不存在); printf(n请重新输入编号:nn); scanf(%d %d,&k,&j); printf(nn); printf(%s,ga.vexsk.name); for(u=0;u%s,ga.vexsu.name); printf(-%s,ga.vexsj.name); printf(nnn总长度为%d千米nnn,dkj);(4)得到景点之间的所有路径void path(graph c,int m,int n

    12、,int k) int s,x=0; int t; t=k+1; if(dk=n & k8) for(s=0;s,c.vexsds.name); printf(%snn,c.vexsds.name); else s=0; while(sc.n) if(c.edgesdks1000)&(visiteds=0) visiteds=1; dk+1=s; path(c,m,n,t); visiteds=0; s+; void allpath(graph c) int k,i,j,m,n; printf(nn请输入您要查询的两个景点的编号:nn); scanf(%d %d,&i,&j); printf(

    13、nn); m=locatevex(c,i); n=locatevex(c,j); d0=m; for(k=0;kc.n;k+) visitedk=0; visitedm=1; path(c,m,n,0);(5)删除边int delarc(graph &ga) int m,n,v0,v1; if(ga.e=0) printf(图中已经无顶边,无法删除); return 1; printf(n请输入要删除的边的起点和终点的编号:); scanf(%d %d,&v0,&v1); m=locatevex(ga,v0); if(m0) printf(此顶点%d已删除,v0); return 1; n=l

    14、ocatevex(ga,v1); if(n0) printf(此顶点%d已删除,v1); return 1; ga.edgesmn=1000; ga.edgesnm=1000; ga.e-; return 1;int enarc(graph &ga) int m,n,distance; printf(请输入边的起点和终点编号,权值:); scanf(%d %d %d,&m,&n,&distance); while(mga.n|nga.n) printf(输入错误,请重新输入:); scanf(%d %d,&m,&n);if(locatevex(ga,m)0) printf(此节点%d已经删除,

    15、m); return 1;if(locatevex(ga,n)0) printf(此节点%d已经删除,n); return 1;ga.edgesmn=distance;ga.edgesnm=ga.edgesmn;return 1;4调试分析内容包括:a调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;c经验和体会等。5用户使用说明 通过主菜单提示,选择出你所想要知道的信息,然后通过输入节点来代替景点,从而得到景点间的所有路径,最短路径等其他信息。6测试结果 (1)操作的主界面(2)学校景点的介绍

    16、(3)学校景点从西门的禾堂餐厅的所有路径所有路径(4)学校景点从西门的禾堂餐厅的所有路径最短路径(5)图的更改的界面(6)边的删除界面展示7附录#define MAX 100 /数据类型的定义#include#includeusing namespace std;int visited35;int d35;struct views int num; char name10; char introduce100;typedef views datatype;typedef struct datatype vexsMAX; int edgesMAXMAX; int n,e;graph;void i

    17、nitgraph(graph *ga)/主要的操作界面的显示以及无向网操作 int i,j; ga-n=9; ga-e=11; for( i=0;in;i+) ga-vexsi.num=i; strcpy(ga-vexs0.name,西门); strcpy(ga-vexs0.introduce,学校的正大门,设有公交站); strcpy(ga-vexs1.name,风雨篮球场); strcpy(ga-vexs1.introduce,); strcpy(ga-vexs2.name,田径场); strcpy(ga-vexs2.introduce,举办运动会,平时体育跑步锻炼等); strcpy(g

    18、a-vexs3.name,京元食堂); strcpy(ga-vexs3.introduce,新食堂); strcpy(ga-vexs4.name,苍霞湖畔); strcpy(ga-vexs4.introduce,戏称“分手湖”,景色宜人); strcpy(ga-vexs5.name,思源楼); strcpy(ga-vexs5.introduce,学校王牌土木的教学区); strcpy(ga-vexs6.name,图书馆); strcpy(ga-vexs6.introduce,是大学城最高的标志性建筑); strcpy(ga-vexs7.name,北教区); strcpy(ga-vexs7.in

    19、troduce,北校区集中的教学楼); strcpy(ga-vexs8.name,禾堂餐厅); strcpy(ga-vexs8.introduce,旧食堂); for(i=0;in;i+) for(j=0;jn;j+) ga-edgesij=1000; ga-edges01=1; ga-edges12=2; ga-edges13=5; ga-edges24=4; ga-edges34=9; ga-edges45=1; ga-edges48=1; ga-edges56=5; ga-edges57=7; ga-edges78=1; ga-edges67=9; for(i=0;in;i+) for(

    20、j=0;jn;j+) ga-edgesji=ga-edgesij;int locatevex(graph ga,int v) / /查找景点在图中的序号 int i; for(i=0;in),&(ga-e); printf(请输入景点编号,景点名字,景点介绍,建立信息表:n); for(i=0;in;i+) scanf(%d,&(ga-vexsi.num); gets(ga-vexsi.name); gets(ga-vexsi.introduce); for(i=0;in;i+) for(j=0;jn;j+) ga-edgesij=1000; for(k=0;ke;k+) printf(请输入

    21、%d条边的景点序号i,j和长度:,k+1); scanf(%d %d %d,&i,&j,&w); ga-edgesij=w; ga-edgesji=w; void print(graph ga) int i,j; for(i=0;iga.n;i+) for(j=0;jga.n;j+) printf(%d,ga.edgesij); if(j+1=ga.n) printf(n); void visit(graph ga) int a; printf(请输入景点编号:); scanf(%d,&a); int i; for( i=0;iga.n;i+) if(a=ga.vexsi.num) print

    22、f(景点编号为%d n,ga.vexsi.num); printf(景点名称为); puts(ga.vexsi.name); printf(景点介绍为); puts(ga.vexsi.introduce); break; if(i=ga.n)printf(无此点n);void shortestpath_djst(graph ga)void shortestpath_floyd(graph ga) int i,j,k,v,u,w,d3535,p353535; for(v=0;vga.n;v+) for(w=0;wga.n;w+) dvw=ga.edgesvw; for(u=0;uga.n;u+)

    23、 pvwu=0; if(dvw1000) pvwv=1; pvww=1; for(u=0;uga.n;u+) for(v=0;vga.n;v+) for(w=0;wga.n;w+) if(dvu+duwdvw) dvw=dvu+duw; for(i=0;iga.n;i+) pvwi=pvui|puwi; printf(n请输入出发点和目的地编号:); scanf(%d %d,&k,&j); printf(nn); while(kga.n|jga.n) printf(n输入的编号不存在); printf(n请重新输入编号:nn); scanf(%d %d,&k,&j); printf(nn); printf(%s,ga.vexsk.name); for(u=0;u%s,ga.vexsu.name); printf(-%s,ga.vexsj.name); printf(nnn总长度为%d千米nnn,dkj);void path(graph c,int m,int n,int k) int s,x=0; int t; t=k+1; if(dk=n & k8) for(s=0;s,c.vexsds.name); printf(%snn,c.vexsds.name); else s=0; while(sc.n)


    注意事项

    本文(数据结构课程设计校园导航.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开