大数据结构校园导游系统课程设计.docx

上传人:scccc 文档编号:14008417 上传时间:2022-01-30 格式:DOCX 页数:19 大小:67.79KB
返回 下载 相关 举报
大数据结构校园导游系统课程设计.docx_第1页
第1页 / 共19页
大数据结构校园导游系统课程设计.docx_第2页
第2页 / 共19页
大数据结构校园导游系统课程设计.docx_第3页
第3页 / 共19页
大数据结构校园导游系统课程设计.docx_第4页
第4页 / 共19页
大数据结构校园导游系统课程设计.docx_第5页
第5页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《大数据结构校园导游系统课程设计.docx》由会员分享,可在线阅读,更多相关《大数据结构校园导游系统课程设计.docx(19页珍藏版)》请在三一文库上搜索。

1、实用标准力然Q分娉滨江学院数据结构课程设计题 目 校园导游咨询程序设计学 号学生姓名院 系专 业指导教师二0一二年 月 日1、题目的内容及要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。2、需求分析(1)设计你的学校的校园平面图,所含景点不少于 io个。以图中顶点表示学校各景点,存 放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简 单路径。(3)为来访客人提供图中任意景点相关信息的查询。3、概要设计void CreateUDN();/ 创建无向网void Search。;/查询景点信

2、息void Shortestpath(int i);计算最短路径void Output(int sight1,int sight2);/输出函数2.各个模块详细的功能描述。CreateUDN();/创建无向网、主要用来保存各景点信息Search();/查询景点信息、景点的名称及介绍Shortestpath(int i);/计算两景点间最短路径Output(int sight1,int sight2);/输出两景点最短路径及信息文案大全3.模块图4、详细设计一、图的储存结构#define Max 30000#define NUM 10typedef struct ArcCellint adj;

3、/*相邻接的景点之间的路程*/ArcCell; /* 定义边的类型 */typedef struct VertexTypeint number; /* 景点编号 */char *sight; /*景点名称*/char description;/*景点描述*/VertexType; /*定义顶点的类型 */ typedef structVertexType vexNUM; /*图中的顶点,即为景点 */ArcCell arcsNUMNUM;/* 图中的边,即为景点间的距离*/int vexnum,arcnum;/* 顶点数,边数 */ MGraph; /* 定义图的类型二、算法1 .主程序 vo

4、id main() int v0,v1; char ck;CreateUDN(NUM,11); do ck=Menu(); | switch(ck) case 1: system(cls); / narrate。; printf(nnttt请选择起点景点(09):);scanf(%d,&v0);printf(ttt请选择终点景点(。9):);scanf(%d,&v1);ShortestPath(v0);/*计算两个景点之间的最短路径*/output(v0,v1);/*计算两个景点之间的最短路径*/printf(nntttt请按任意键继续n);getchar();getchar();break;

5、 |case 2:search();break;case 3:system(cls);/narrate。;x0=1;HaMiTonian;printf(nntttt请按任意键继续n);getchar(); getchar(); break; | ;while(ck!=e);2 .输出程序void output(int sight1,int sight2)int a,b,c,d,q=0;a=sight2;if(a!=sight1)/* 如果景点二不和景点一输入重合,则进行 */ printf(nt从 s 到 s 的 最 短 路 径 是”,G.vexsight1.sight,G.vexsight2

6、.sight);/*输出提示信息*/printf(t( 最短距离为 %dm.)nnt,Da);printf(t%s,G.vexsight1.sight);d=sight1; /*将景点一的编号赋值给d */for(c=0;cNUM;+c) gate:;Pasight1=0;for(b=0;bNUM;b+)if(G.arcsdb.adj%s,G.vexb.sight); /*输出此节点的名称 */q=q+1; /*计数变量加一,满 8控制输出时的换行*/Pab=0;d=b;/* 将b作为出发点进行下一次循环输出,如此反复*/if(q%9=0) printf(n);goto gate;匚3 .求最

7、短路径void ShortestPath(int num) int v,w,i,t;int finalNUM;int min;for(v=0;vNUM;v+) -| finalv=0;Dv=G.arcsnumv.adj;for(w=0;wNUM;w+)Pvw=0;if(Dv30000)Pvnum=1;Pvv=1;Dnum=0;finalnum=1;for(i=0;iNUM;+i)min=Max;for(w=0;wNUM;+w)if(!finalw)if(Dwmin)1v=w;min=Dw;finalv=1;for(w=0;wNUM;+w)if(!finalw&(min+G.arcsvw.adj

8、)Dw)二 ZlDw=min+G.arcsvw.adj;for(t=0;tNUM;t+)Pwt=Pvt;Pww=1;二 口4 .说明函数 void narrate()int i,k=0;printf(ntt*欢迎使用校园导游程序*n)printf(ntt*南京信息工程大学*n);printf(tn);printf(皿景点名称tt|t 景点描述n);printf(t|n);for(i=0;iNUM;i+)printf(t(%2d)%-10sttt|t%-25sn,i,G.vexi.sight,G.vexi.description);k=k+1; printf(t|n);5、查询景点信息void

9、search()int num;int i;char c;char name20;dosystem(cls);c=SearchMenu();switch (c)case 1:system(cls);narrate();printf(nntt请输入您要查找的景点编号:);scanf(%d,&num);for(i=0;iNUM;i+)if(num=G.vexi.number)printf(nnttt您要查找景点信息如下 :”);printf(nnttt%-25snn,G.vexi.description);printf(nttt按任意键返回.”);getchar();getchar();break

10、;if(i=NUM)printf(nnttt没有找到!);printf(nnttt按任意键返回.”);getchar();getchar();break;case 2:narrate。;system(cls);printf(nntt请输入您要查找的景点名称:);scanf(%s,name);for(i=0;iNUM;i+)if(!strcmp(name,G.vexi.sight)printf(nnttt您要查找景点信息如下:”);printf(nnttt%-25snn,G.vexi.description);printf(nttt按任意键返回.”);getchar();getchar();br

11、eak;二匚 if(i=NUM) printf(nnttt没有找到! );printf(nnttt按任意键返回.”);getchar();getchar(); break;while(c!=t); |6.选择菜单char SearchMenu()char c;int flag;doflag=1;system(cls);narrate();printf(nttt n);printf(ttt11 n);printf(tttI 1、按照景点编号查询1 n);printf(tttI 2、按照景点名称查询1 n);printf(tttI t、返回1 n);printf(ttt11 n);printf(t

12、tt11n);printf(tttt请输入您的选择:);scanf(%c,&c);if(c=1|c=2|c=t)|flag=0;while(flag);return c;5、运行结果及分析系统主界面1昔甘:1;111甘:1国11 葡帧:1前南京信息|程大学1(:1*1)011 1甘有蔺1景点名称f 景点描述大耆学东气体大7 7 7 70 12 3馆堂 书江4爸 图演综需要 7 7 7 7,7 4 S 6 7 8 9 0 12 3 4 5 6 7 8 9请输入您要查找的景点编号13您要查找景点信息如下: 竞赛、晚会举办地按任意键返回6、收获及体会非常高兴能和同学们一起做实验,感谢各位老师以及同学

13、们对我的帮助,特别是老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次数据结构设计的每个实验细节和每个数据,都离不开老师您的细心指导。7、源代码#include string.h#include stdio.h#include malloc.h#include stdlib.h#define Max 30000#define NUM 10typedef struct ArcCell int adj;ArcCell;typedef struct VertexTypeint number;char *sight;char description;VertexType;typedef stru

14、ctVertexType vexNUM;ArcCell arcsNUMNUM;int vexnum,arcnum;MGraph;MGraph G;int PNUMNUM;long int DNUM;int x9=0;void CreateUDN(int v,int a);void narrate();void ShortestPath(int num);void output(int sight1,int sight2);char Menu();void search();char SearchMenu();void HaMiTonian(int);void NextValue(int);vo

15、id display。;void main()int v0,v1;char ck;CreateUDN(NUM,11);dock=Menu();switch(ck)case 1:system(cls);/ narrate。;printf(nnttt请选择起点景点(09):);scanf(%d,&v0);printf(ttt请选择终点景点(09):);scanf(%d,&v1);ShortestPath(vO);output(v0,v1);printf(nntttt请按任意键继续n);getchar();getchar();break;case 2:search();break;case 3:sy

16、stem(cls);/narrate。;x0=1;HaMiTonian;printf(nntttt请按任意键继续n);getchar();getchar();break;while(ck!=e);char Menu()char c;int flag;doflag=1;system(cls);narrate。;printf(ntttn);printf(ttt|1 n);printf(ttt|1、查询景点路径1 n);printf(ttt|2、查询景点信息1 n);printf(ttt|3、推荐参观路线1 n);printf(ttt| t 、退出1 n);printf(ttt|1 n);print

17、f(ttt11n);printf(tttt请输入您的选择:);scanf(%c,&c);if(c=1|c=2|c=3|c=t)flag=0;while(flag);return c;char SearchMenu()char c;int flag;doflag=1;system(cls);narrate。;printf(nttti n);printf(ttt11 n);printf(ttt11、按照景点编号查询I n);printf(ttt12、按照景点名称查询I n);printf(tttt 、返回n);printf(ttt11 n);printf(ttt11n);printf(tttt请输

18、入您的选择:);scanf(%c,&c);if(c=1|c=2|c=t)flag=0;while(flag);return c;void search()int num;int i;char c;char name20;dosystem(cls);c=SearchMenu();switch (c)case 1:system(cls);narrate。;printf(nntt请输入您要查找的景点编号:);scanf(%d,&num);for(i=0;iNUM;i+)if(num=G.vexi.number)printf(nnttt您要查找景点信息如下:);printf(nnttt%-25snn,

19、G.vexi.description);printf(nttt按任意键返回 ”力getchar();getchar();break;if(i=NUM)printf(nnttt没有找到!);printf(nnttt按任意键返回.”);getchar();getchar();break;case 2:narrate。;system(cls);printf(nntt请输入您要查找的景点名称:);scanf(%s,name);for(i=0;iNUM;i+) if(!strcmp(name,G.vexi.sight)printf(nnttt您要查找景点信息如下:”);printf(nnttt%-25s

20、nn,G.vexi.description);printf(nttt按任意键返回 ”力getchar();getchar();break;if(i=NUM)printf(nnttt没有找到!);printf(nnttt按任意键返回.”);getchar();getchar();break;while(c!=t);void CreateUDN(int v,int a)int i,j;G.vexnum=v;G.arcnum=a;for(i=0;iG.vexnum;+i) G.vexi.number=i;G.vex0.sight=东大门;G.vex0.description=学校正门。;G.vex1

21、.sight=气象楼;G.vex1.description=校气象研究楼。;G.vex2.sight=体育馆;G.vex2.description=运动,放松心情;G.vex3.sight=大学生活动中心;G.vex3.description=竞赛、晚会举办地G.vex4.sight=图书馆;G.vex4.description=阅览,借阅图书;G.vex5.sight=滨江楼;G.vex5.description=学习,自习室;G.vex6.sight=综合楼;G.vex6.description=学习,办公室;G.vex7.sight=老食堂;G.vex7.description=餐饮休闲

22、;G.vex8.sight=新食堂;G.vex8.description=餐饮休闲;G.vex9.sight=文园;G.vex9.description=宿舍,休息;for(i=0;iG.vexnum;+i)for(j=0;jG.vexnum;+j)G.arcsij.adj=Max;G.arcs01.adj=G.arcs10.adj=2;G.arcs02.adj=G.arcs20.adj=1;G.arcs03.adj=G.arcs30.adj=7;G.arcs14.adj=G.arcs41.adj=8;G.arcs24.adj=G.arcs42.adj=9;G.arcs35.adj=G.arc

23、s53.adj=5;G.arcs57.adj=G.arcs75.adj=2;G.arcs46.adj=G.arcs64.adj=3;G.arcs47.adj=G.arcs74.adj=2;G.arcs68.adj=G.arcs86.adj=2;G.arcs78.adj=G.arcs87.adj=1;G.arcs89.adj=G.arcs98.adj=1;void narrate()int i,k=0;printf(ntt* printf(ntt*欢迎使用校园导游程序*n)MT信息工程入学*n);printf(tn);printf(tt景点名称tt|t景点描述n);printf(t|n);for

24、(i=0;iNUM;i+)printf(t(%2d)%-10sttt|t%-25sn,i,G.vexi.sight,G.vexi.description);k=k+1;printf(t|n);void ShortestPath(int num)int v,w,i,t;int finalNUM;int min;for(v=0;vNUM;v+)finalv=0;Dv=G.arcsnumv.adj;for(w=0;wNUM;w+)Pvw=0;if(Dv30000)Pvnum=1;Pvv=1;Dnum=0;finalnum=1;for(i=0;iNUM;+i)min=Max;for(w=0;wNUM;

25、+w)if(!finalw) if(Dwmin)v=w;min=Dw;finalv=1;for(w=0;wNUM;+w)if(!finalw&(min+G.arcsvw.adj)Dw)Dw=min+G.arcsvw.adj;for(t=0;tNUM;t+)Pwt=Pvt;Pww=1;void output(int sight1,int sight2)int a,b,c,d,q=0;a=sight2;if(a!=sight1)/*如果景点二不和景点一输入重合,则进行 */printf(nt从 s 到 s 的 最 短 路 径 是”,G.vexsight1.sight,G.vexsight2.sig

26、ht);/*输出提示信息*/printf(t(最短距离为 dm.)nnt,Da);printf(t%s,G.vexsight1.sight);d=sight1; /*将景点一的编号赋值给d */for(c=0;cNUM;+c)gate:;Pasight1=0;for(b=0;bNUM;b+)if(G.arcsdb.adj%s,G.vexb.sight); /*输出此节点的名称*/q=q+1; /*计数变量加一,满 8控制输出时的换行*/Pab=0;d=b;/* 将b作为出发点进行下一次循环输出,如此反复*/if(q%9=0) printf(n);goto gate; void HaMiToni

27、an(int m) if(m9) return;L: NextValue(m);if(xm=0) return;if(m=8&G.arcs冈9-1.adj!=30000) display。;elseHaMiTonian(m+1); goto L;void NextValue(int k)int j;l:xk=(xk+1)%10;if(xk=0) return;if(G.arcsxk-1-1冈k-1.adj!=30000)for(j=0;jk;j+) if(xj=xk) goto l;return; else goto l;void display。int i=0;printf(nnt);for(i=0;i,G.vexxi-1.sight); printf( 出 口 );printf(n);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1