校园导游咨询程序

上传人:1666****666 文档编号:36245950 上传时间:2021-10-30 格式:DOC 页数:19 大小:244KB
收藏 版权申诉 举报 下载
校园导游咨询程序_第1页
第1页 / 共19页
校园导游咨询程序_第2页
第2页 / 共19页
校园导游咨询程序_第3页
第3页 / 共19页
资源描述:

《校园导游咨询程序》由会员分享,可在线阅读,更多相关《校园导游咨询程序(19页珍藏版)》请在装配图网上搜索。

1、太原理工大学计算机科学与技术学院实验三:校园导游咨询一、 设计方案简介设计一个校园导游程序,为来访的客人提供各种信息查询服务。1)设计你所在学校的校园平面图,2)为来访客人提供图中任意景点相关信息的查询。3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。二、 设计题目实现:实际需求1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息:以边表示路径,存放路径长度等相关信息。2)为来访客人提供图中任意景点相关信息的查询。3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径

2、。2)概要设计1、 校园全景一览图、显示出校园的平面图。2、 提供校园中任意景点问路查询,即求任意两个景点之间的所有路径。3、提供校园图中多个景点的最佳访问路线查询,即求途径这过个景点的最佳(短)路径。1功能模块图;void Map();/校园地图void CreateGraph();/创建图void OutputPlace();/输出景点列表void SearchPlace();/查询景点信息void SearchPath();/查询最短路径void Shortpath(int i);/计算最短路径void Output(int sight1,int sight2);/输出函数2各个模块详细

3、的功能描述。Map();/显示校园整体的地图、包含学校各景点的详细位置CreateGraph();/创建图、主要用来保存各景点信息OutputPlace();/输出景点列表、供选择景点信息查询时使用SearchPlace();/查询景点信息、景点的名称及介绍SearchPath();/查询最短路径、两景点间最短距离Shortpath(int i);/计算两景点间最短路径Output(int sight1,int sight2);/输出两景点最短路径及信息四详细设计Main()1功能函数的调用关系图 CreateGraph() SearchPlace() Map() SearchPath()Ou

4、tputplace()Shortpath(i);Output(i,j);2各功能函数的数据流程图全局变量Graph G;int pathNUMNUM;int DNUM;3 重点设计及编码 重点设计:求最短路径 编码:void Shortpath(int num)/迪杰斯特拉算法最短路径 int v,w,i,t;/i、w和v为计数变量/t表示景点个数int finalNUM; /标志数组、用来存放顶点的信息int min;/记录权值、最终输出路径for(v=0;vNUM;v+)finalv=0; /假设从顶点num到顶点v没有最短路径Dv=G.arcnumv.length;/将num到其余顶点的

5、最短路径长度初始化为权值for(w=0;wNUM;w+) pathvw=0;/初始化从v到w的路径值if(DvMAX) /存在路径pathvnum=1; /存在标志置为一pathvv=1; /自身到自身Dnum=0;/初始化新路径 finalnum=1; /初始化num顶点属于final集合 /开始主循环,每一次求得num到某个顶点的最短路径,并将其加入到final集合 for(i=0;iNUM;+i) / 其余G.vexnum-1个顶点 min=MAX; /当前所知离顶点num的最近距离for(w=0;wNUM;+w)if(!finalw) /w顶点在v-s中 if(Dwmin) /w顶点离

6、num顶点更近 v=w;min=Dw; finalv=1; /离num顶点更近的v加入到s集合 for(w=0;wNUM;+w) /更新当前最短路径极其距离 if(!finalw&(min+G.arcvw.length)Dw)/不在s集合,并且比以前所找到的路径都短就更新当前路径 Dw=min+G.arcvw.length;/更新路径for(t=0;tNUM;t+)pathwt=pathvt;pathww=1;void Output(int sight1,int sight2) / 输出函数 int a,b,c,d,q=0;/a、b、c和d为计数变量/q控制计数变量、用于换行a=sight2;

7、 /将景点二赋值给a if(a!=sight1) / 如果景点二不和景点一输入重合,则进行. printf(tttttt从%s到%s的最短路径是:nnttttt,G.vertexsight1.name,G.vertexsight2.name);/输出提示信息/输出sight1到sight2的最短路径长度,存放在D数组中printf(t%s,G.vertexsight1.name); /输出景点一的名称 d=sight1; /将景点一的编号赋值给dfor(c=0;cNUM;+c)gate:; /标号,可以作为goto语句跳转的位置 pathasight1=0; for(b=0;bNUM;b+)

8、if(G.arcdb.length%s,G.vertexb.name); /输出此节点的名称 q=q+1; /计数变量加一,满8控制输出时的换行 pathab=0; d=b; /将b作为出发点进行下一次循环输出,如此反复 if(q%14=0) printf(n); goto gate; printf(nntttttt最短距离为 %dm.nnt,Da); 五测试数据及运行结果系统主界面学校平面图学校景点图最短路径信息查询异常信息三、 设计评述:设计者对本设计的评述及通过设计的收获体会1 改进方案系统还有部分漏洞未能修复、不够绝对的稳定、还需改进!求最短路径时可以采用比较简单的哈密尔顿算法。 本次

9、课程设计仅完成了要求的基本功能、由于平时掌握的不够好以及时间关系未能完成选作功能、这是一大缺陷!另外通过本次课程设计也更好的掌握了平时所学的知识、通过实践学到了许多课本上没有的知识!2 体会以后要加强动手时间能力、多与同学交流算法精髓!在编写程序中尽量做到独立完成、对于自己想要完成的问题要主动编程完成、这样自己是一个很大的提升、也能学到很多的知识、熟练编程!报告最后有两部分附录附录一:参考资料1、C语言程序设计(谭浩强版)2、数据结构(C语言版) 编著:严蔚敏、吴伟民 清华大学出版社附录二:源程序 (将所有的源程序附在最后的附录中)/ 查询景点信息.cpp : Defines the entr

10、y point for the console application./#include stdafx.h#include stdio.h#include #include #include #include #include #define NUM 20#define MAX 100000#define FALSE 0#define TURE 1typedef struct ArcNode int length; /路径长度 ArcNode, *ArcLink; /边结点的定义typedef struct VertexNode int number; /景点的编号 char *name;

11、/景点的名称 char *info; /景点的简介 VertexNode; /顶点结点的定义typedef struct Graph VertexNode vertexNUM; ArcNode arcNUMNUM; int vexnum,arcnum; /图的顶点数,边数 Graph; /图的定义Graph G;int pathNUMNUM;int DNUM;void CreateGraph();/创建图void Map();/学校地图void outputplace();/输出校园景点名称void searchplace();/查询景点信息void searchpath();/查询最短路径v

12、oid shortestpath_DIJ(int num);/迪杰斯特拉算法最短路径void output(int sight1,int sight2);/输出函数void CreateGraph()/创建图int i,j;G.vexnum=12;G.arcnum=17;for(i=1;iNUM;i+) G.vertexi.number=i;G.vertex1.name=太原理工大学正门;G.vertex1.info=学校正门位于学校的正南方向、是进入学校前的第一道亮丽ntt的风景线!n;G.vertex2.name=电机馆;G.vertex2.info=电机馆是数学系,电子信息系,自动化,通

13、讯等学院的学院楼!n;G.vertex3.name=科学楼;G.vertex3.info=科学楼是我校科研机构场所,也是山西省网关所在地!n;G.vertex4.name=多学科楼;G.vertex4.info=科学楼是计算机科学与技术学院,软件学院,电子信息学院,ntt土木,建筑的学院楼,也是我校最好的学院楼!n;G.vertex5.name=图书馆;G.vertex5.info=太原理工图书馆经历了初创时期,发展时期,面向现代化的转型时期。ntt如今,她已经发展成为资源丰富,现代化,综合性,开放式的图书馆!n;G.vertex6.name=机械馆;G.vertex6.info=机械馆是我校

14、百年高校最有力的体现!ntt是欧式风格建筑,外观宏伟气派ntt为机械学院的学院楼!n;G.vertex7.name=篮球场;G.vertex7.info=篮球场全橡胶场,每天这里打球人员特多,我校篮球队ntt在历年的CUBA联赛上取得佳绩,是我们引以为豪的校队!n;G.vertex8.name=清泽餐厅;G.vertex8.info=清泽餐厅是我校最现代化的食堂,提供各种美食!n;G.vertex9.name=学生宿舍;G.vertex9.info=这里是我校学生宿舍集中所在地,包括本科生,研究生宿舍,ntt是我们在学校的家!n;G.vertex10.name=文体中心;G.vertex10.

15、info=文体中心包括体育馆,体育场,各种体育娱乐场所,供学生ntt体育锻炼的地方!n;G.vertex11.name=国际交流中心;G.vertex11.info=国际交流中心是外国留学生居住学习科研的场所!n;for(i=0;iNUM;+i)for(j=0;j0 & num=G.vexnum) /判定信息输入正确for(i=1;i11):); scanf(%d,&i); printf(tt最终景点编号(1-11):); scanf(%d,&j); getchar();if(iG.vexnum | iG.vexnum | j0 | i=j) printf(tt输入信息错误!nn); else

16、 shortestpath_DIJ(i);output(i,j);printf(ntt是否继续查询最短路径(y/n):);c=getchar(); getchar(); system(cls);void shortestpath_DIJ(int num)/迪杰斯特拉算法最短路径int v,w,i,t;/i、w和v为计数变量/t表示景点个数int finalNUM; /标志数组、用来存放顶点的信息int min;/记录权值、最终输出路径for(v=0;vNUM;v+)finalv=FALSE; /假设从顶点num到顶点v没有最短路径Dv=G.arcnumv.length;/将num到其余顶点的最

17、短路径长度初始化为权值for(w=0;wNUM;w+) pathvw=FALSE;/初始化从v到w的路径值if(DvMAX) /存在路径pathvnum=TURE; /存在标志置为一pathvv=TURE; /自身到自身Dnum=0;/初始化新路径 finalnum=TURE; /初始化num顶点属于final集合 /开始主循环,每一次求得num到某个顶点的最短路径,并将其加入到final集合 for(i=0;iNUM;+i) / 其余G.vexnum-1个顶点 min=MAX; /当前所知离顶点num的最近距离for(w=0;wNUM;+w)if(!finalw) /w顶点在v-s中 if(

18、Dwmin) /w顶点离num顶点更近 v=w;min=Dw; finalv=TURE; /离num顶点更近的v加入到s集合 for(w=0;wNUM;+w) /更新当前最短路径极其距离 if(!finalw&(min+G.arcvw.length)Dw)/不在s集合,并且比以前所找到的路径都短就更新当前路径 Dw=min+G.arcvw.length;/更新路径for(t=0;tNUM;t+)pathwt=pathvt;pathww=TURE;void output(int sight1,int sight2)/输出函数 int a,b,c,d,q=0;/a、b、c和d为计数变量/q控制计数

19、变量、用于换行a=sight2; /将景点二赋值给a if(a!=sight1) / 如果景点二不和景点一输入重合,则进行. printf(tt从%s到%s的最短路径是:nntt,G.vertexsight1.name,G.vertexsight2.name);/输出提示信息/输出sight1到sight2的最短路径长度,存放在D数组中printf(%s,G.vertexsight1.name); /输出景点一的名称 d=sight1; /将景点一的编号赋值给dfor(c=0;cNUM;+c)gate:; /标号,可以作为goto语句跳转的位置 pathasight1=FALSE; for(b

20、=0;bNUM;b+) if(G.arcdb.length%s,G.vertexb.name); /输出此节点的名称 q=q+1; /计数变量加一,满8控制输出时的换行 pathab=FALSE; d=b; /将b作为出发点进行下一次循环输出,如此反复 if(q%12=0) printf(n); goto gate; printf(nntt最短距离为 %dm.nnt,Da); int main(int argc, char* argv) int x; CreateGraph();printf(nnnnntt欢迎使用太原理工大学校园导游系统nnn);while(1)printf(nn);prin

21、tf(ttn);printf(tt 1.校园平面图浏览 n);printf(tt n);printf(tt 2.景点信息查询 n);printf(tt n);printf(tt 3.任意两点最短路径查询 n);printf(tt n);printf(tt 0.退出系统 n);printf(ttn);printf(ntt请选择您需要的操作(0-3):);scanf(%d,&x); getchar();switch(x) case 1: system(cls);printf(t校园平面图浏览:); Map();break;case 2: system(cls);printf(t景点信息查询:); searchplace();break; case 3: system(cls);printf(t任意两点最短路径查询:); searchpath();break;case 0: printf(nt);exit(0); default: system(cls);printf(tt输入信息错误,请重新输入!n); break; return 0;2012年 01 月

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!