数据结构校园导游系统课程设计_第1页
数据结构校园导游系统课程设计_第2页
数据结构校园导游系统课程设计_第3页
数据结构校园导游系统课程设计_第4页
数据结构校园导游系统课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、*相邻接的景点之间的路程 */ArcCell;/*定义边的类型 */typedef struct VertexTypeint nu mber; /*景点编号*/char *sight; /*景点名称*/char *descripti on ;/*景点描述 */VertexType; /*定义顶点的类型*/typedef structVertexType vexNUM;/* 图中的顶点,即为景点*/ArcCell arcsNUMNUM;/*图中的边,即为景点间的距离*/int vexnu m,arc num;/*顶点数,边数 */MGraph;/* 定义图的类型、算法1.主程序void mai

4、n()in t v0,v1;char ck;CreateUDN(NUM,11);dock=Me nu();switch(ck)case '1':system("cls");/ n arrate();printf("nnttt请选择起点景点(09):");sca nf("%d",&v0);printf("ttt请选择终点景点(09):");sca nf("%d",&v1);ShortestPath(v0);/*计算两个景点之间的最短路径*/output(v0,v1)

5、;/*计算两个景点之间的最短路径*/printf("nntttt请按任意键继续.n");getchar();getchar();break;case 2:search();break;case 3:system("cls");n arrate();x0=1;HaMiTo nia n(1);printf("nntttt请按任意键继续.n");getchar();getchar();break;while(ck!='e');2输出程序void output(i nt sight1,i nt sight2) int a,b,

6、c,d,q=0;a=sight2;if(a!=sight1) /*如果景点二不和景点一输入重合,则进行*/prin tf("nt从 %s 到 %s 的 最 短 路 径”,G.vexsight1.sight,G.vexsigh t2.sight);/*输出提示信息*/printf("t(最短距离为 %dm.)nnt",Da);prin tf("t%s",G.vexsight1.sight);d=sight1;/*将景点一的编号赋值给d */for(c=0;c<NUM;+c)gate:;Pasight1=O;for(b=0;b<NUM;

7、b+)if(G.arcsdb.adj<30000&&Pab) /*如果景点一和它的一个临界点之间存在路径且最短路径*/prin tf("->%s",G.vexb.sight); /*输出此节点的名称*/q=q+1; /*计数变量加一,满i 8控制输出时的换行*/Pab=0;d=b;/* 将b作为出发点进行下一次循环输出,如此反复*/if(q%9=0) prin tf("n"); goto gate;3.求最短路径void ShortestPath(i nt num) int v,w,i,t;int fin alNUM;int

8、min;for(v=0;v<NUM;v+)fin alv=O;Dv=G.arcs nu mv.adj; for(w=0;w<NUM;w+)Pvw=O; if(Dv<30000)Pv num=1;Pvv=1;Dnu m=0;fin al num =1;for(i=0;i<NUM;+i)min=Ma x;for(w=0;w<NUM;+w)if(!fi nalw)|if(Dw<mi n)v=w;min=Dw;fin alv=1;for(w=0;w<NUM;+w)if(!fi nalw &&(mi n+G.arcsvw.adj)<Dw)

9、Dw=mi n+G.arcsvw.adj;for(t=0;t<NUM;t+)Pwt=Pvt;Pww=1;4.说明函数void n arrate()int i,k=0;printf("ntt*欢迎使用校园导游程序*n");printf("ntt*南京信息工程大学*n");prin tf("tn");prin tf("tt景点名称tt|t景点描述n");prin tf("t|n");for(i=0;i<NUM;i+)prin tf("t(%2d)%-10sttt|t%-25sn

10、",i,G.vexi.sight,G.vexi.descriptio n); k=k+1;printf("t|n");5、查询景点信息void search()int num;int i;char c;char n ame20;dosystem("cls");c=SearchMe nu();switch (c)case '1':system("cls");n arrate();prin tf("nntt请输入您要查找的景点编号:”);sca nf("%d",&n um);

11、for(i=0;i<NUM;i+)if(num=G.vexi. nu mber)prin tf("nnttt您要查找景点信息如下:");prin tf("nnttt%-25snn",G.vexi.descriptio n);printf("nttt按任意键返回.");getchar();getchar();break;if(i=NUM)prin tf("nnttt没有找到! ”);printf("nnttt按任意键返回.");getchar();getchar();break;case 2:n ar

12、rate();system("cls");prin tf("nntt请输入您要查找的景点名称:");sca nf("%s", name);for(i=0;i<NUM;i+)if(!strcmp( name,G.vexi.sight)丄prin tf("nnttt您要查找景点信息如下:”);prin tf("nnttt%-25snn",G.vexi.descriptio n);prin tf("nttt按任意键返回.");getchar();getchar();break;if(i

13、=NUM)prin tf("nnttt没有找到! ”);printf("nnttt按任意键返回.");getchar();getchar();break;while(c!='t'); |6.选择菜单char SearchMe nu()char c;int flag;doflag=1; system("cls"); n arrate();t i1n");tn");t1 、按照景点编号查询1 n ”);t2 、按照景点名称查询n ”);tt、返回1 n ”);t1n ”);t 11n ”);prin tf(&qu

14、ot;tttt请输入您的选择:");scan f("%c",&c);if(c='1'|c='2'|c='t')flag=0;while(flag);return c;5、运行结果及分析系统主界面悬点名称大善学东气体大> ,>0 12 3查询路径遢左亠堂书图滨综老箜4 S 6 7 8 ?图室室阅 & 鲁育闲休 ;漳“ 览rvp讐径息线 .蛊參 询粵出 查查叢请输入您的选择:.查询信息號(D : 8景点(0乎):9从新食堂到文园的最短路径是距离为1*.->新食堂一> 文园请按任意键

15、继续.讯fr南歳信息."T程大学耳耳耳値恤:M:K :耳屛*量点描述、晩会举办地大象; 东气体大 > > > > 0 12 3 £ < £ £活动中心馆豐呈堂 书VI合良食园 图滨综老箜 >>>>>>-4 5 6 7 8 9请输入您要查枚的量点编号:3您要查找暈点信息如下:竞赛、晩会举办地按任意键返回.6、收获及体会非常高兴能和同学们一起做实验,感谢各位老师以及同学们对我的帮助,特别是老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次数据结构设计的每个实验细节和每个数据,都离不开老师

16、您的细心指导。7、源代码#in elude "stri ng.h"#in elude "stdio.h"#in elude "malloe.h"#in elude "stdlib.h" #define Max 30000 #define NUM 10 typedef struct AreCell int adj;ArcCell;typedef struct VertexTypeint nu mber;char *sight;char *descripti on;VertexType;typedef structVe

17、rtexType vexNUM;ArcCell arcsNUMNUM;int vexnu m,arc num;MGraph;MGraph G;int PNUMNUM;long int DNUM;int x9=0;void CreateUDN(i nt v,i nt a);void n arrate();void ShortestPath(i nt nu m);void output(i nt sight1,i nt sight2);char Menu();void search();char SearchMe nu();void HaMiTo nia n(i nt);void NextValu

18、e(i nt);void display();void mai n()in t v0,v1;char ck;CreateUDN(NUM,11);dock=Me nu();switch(ck)case '1':system("cls");09):");/ n arrate();prin tf("nnttt请选择起点景点(sca nf("%d",&v0);printf("ttt请选择终点景点(09):");sea nf("%d",&v1);ShortestPath(v

19、O);output(v0,v1);printf("nntttt请按任意键继续.n");getchar();getchar();break;case 2:search();break;case 3:system("cls");n arrate();x0=1;HaMiTo nia n(1);printf("nntttt请按任意键继续.n");getchar();getchar();break;while(ck!='e');char Me nu()char c;int flag;doflag=1;system("c

20、ls");n arrate();t 11n");111n ”);111、查询景点路径1 n ”);112、查询景点信息1 n ”);113、推荐参观路线1 n ”);11t、退出1 n ”);111n ”);t L-1n");prin tf("tttt请输入您的选择:");scan f("%c",&c);if(c='1'|c=2|c=3|c='t')flag=0;while(flag); return c; char SearchMe nu() char c;int flag;dofl

21、ag=1;system("cls");n arrate();t1n");111n ”);111、按照景点编号查询1 n ”);112、按照景点名称查询1 n ”);11t、返回1 n ”);111n ”);t L-n");prin tf("tttt请输入您的选择:”);scan f("%c",&c);if(c='1'|c='2'|c='t')flag=0;while(flag);return c;void search()int num;int i;char c;cha

22、r n ame20;dosystem("cls");c=SearchMe nu();switch (c)case '1':system("cls");n arrate();prin tf("nntt请输入您要查找的景点编号:");sca nf("%d",&n um);for(i=0;i<NUM;i+)if(num=G.vexi. nu mber)prin tf("nnttt您要查找景点信息如下:”);prin tf("nnttt%-25snn",G.vex

23、i.descriptio n);printf("nttt按任意键返回.");getchar();getchar();break;if(i=NUM)prin tf("nnttt没有找到! ”);printf("nnttt按任意键返回.");getchar();getchar();break;case '2':n arrate();system("cls");prin tf("nntt请输入您要查找的景点名称:");sca nf("%s", name);for(i=0;i&

24、lt;NUM;i+)if(!strcmp( name,G.vexi.sight)prin tf("nnttt您要查找景点信息如下:");prin tf("nnttt%-25snn",G.vexi.descriptio n);printf("nttt按任意键返回.");getchar();getchar();break;if(i=NUM)prin tf("nnttt没有找到! ”);printf("nnttt按任意键返回.");getchar();getchar();break;while(c!='

25、t');void CreateUDN(i nt v,i nt a)int i,j;G.vex num=v;G.arc num=a;for(i=0;i<G.vex nu m;+i) G.vexi. nu mber=i;G.vexO.sight="东大门"G.vex0.descriptio n="学校正门。"G.vex1.sight="气象楼"G.vex1.descriptio n="校气象研究楼。"G.vex2.sight="体育馆"G.vex2.description="

26、运动,放松心情"G.vex3.sight="大学生活动中心"G.vex3.descriptio n="竞赛、晚会举办地”G.vex4.sight="图书馆"G.vex4.description="阅览,借阅图书"G.vex5.sight="滨江楼"G.vex5.description="学习,自习室"G.vex6.sight="综合楼"G.vex6.description="学习,办公室"G.vex7.sight="老食堂&q

27、uot;G.vex7.description="餐饮休闲"G.vex8.sight="新食堂"G.vex8.description="餐饮休闲"G.vex9.sight="文园"G.vex9.descriptio n="宿舍,休息";for(i=0;i<G.vex nu m;+i)for(j=0;j<G.vex nu m;+j) G.arcsij.adj=Max;G.arcs01.adj=G.arcs10.adj=2;G.arcs02.adj=G.arcs20.adj=1;G.arc

28、s03.adj=G.arcs30.adj=7;G.arcs14.adj=G.arcs41.adj=8;G.arcs24.adj=G.arcs42.adj=9;G.arcs35.adj=G.arcs53.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 n arrate()int i,k=0;

29、欢迎使用校园导游程序*n");南京信士息工程大学 *n")n"prin tf("ntt* *prin tf("ntt* * prin tf("t_);景点名称tt|t景点描述n");prin tf("ttn"printf("t|);for(i=0;i<NUM;i+)prin tf("t(%2d)%-10sttt|t%-25sn",i,G.vexi.sight,G.vexi.descriptio n); k=k+1;printf("t|n");void

30、 ShortestPath(i nt num)int v,w,i,t;int fin alNUM;int min;for(v=0;v<NUM;v+)fin alv=0;Dv=G.arcs nu mv.adj;for(w=0;w<NUM;w+)Pvw=0;if(Dv<30000)Pv num=1;Pvv=1;Dnu m=0;fin al num =1;for(i=0;i<NUM;+i)min=Ma x;for(w=0;w<NUM;+w)if(!fi nalw)if(Dw<mi n)v=w;min=Dw;fin alv=1;for(w=0;w<NUM;+w)if(!fi nalw &&(mi n+G.arcsvw.adj)<Dw)Dw=mi n+G.arcsvw.adj;for(t=0;t<NUM;t+)Pwt=Pvt;Pww=1;void output(i nt si

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论