校园导游系统程序_课程设计_报告

上传人:xmg****18 文档编号:120483022 上传时间:2020-02-06 格式:DOC 页数:36 大小:696KB
返回 下载 相关 举报
校园导游系统程序_课程设计_报告_第1页
第1页 / 共36页
校园导游系统程序_课程设计_报告_第2页
第2页 / 共36页
校园导游系统程序_课程设计_报告_第3页
第3页 / 共36页
校园导游系统程序_课程设计_报告_第4页
第4页 / 共36页
校园导游系统程序_课程设计_报告_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《校园导游系统程序_课程设计_报告》由会员分享,可在线阅读,更多相关《校园导游系统程序_课程设计_报告(36页珍藏版)》请在金锄头文库上搜索。

1、.专业.专注.1、需求分析设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。(1).设计工商学院校园无向图,所含的景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2).为来访客人提供图中任意景点相关信息的查询。(3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。2、设计思路校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及

2、边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径。3 算法设计3.1 概要设计 3.1.1 程序中包含的模块(1)主程序模块主函数:void main(void)void cmd(void) cmd修改显示框大小,字体背景颜色,初始化景点,景点信息打印菜单, MGraph InitGraph(void); /初始化图。MGraph * CreatUDN(M

3、Graph *G); /初始化图形接受用户输入void Menu(void);/菜单函数 void Browser(MGraph *G);/浏览函数void ShortestPath_DIJ(MGraph *G);void Floyd(MGraph *G);/ 查询图中任意两个景点间的所有路径void Search(MGraph *G);/查找函数int LocateVex(MGraph *G,char*v); / 迪杰斯特拉算法 计算起点各顶点间短路径,void print(MGraph *G); /输出函数(2)查询模块景点信息查询:void introduce()最短路径查询:要查找的两

4、景点的最短距离:用floyd算法求两个景点的最短路径: (3)打印模块:void print(MGraph *G);3.1.2模块间的调用关系主函数main()调用void cmd(void)调用menu 并且用switch设置开关语句。3.2 详细设计3.2.1定义符号变量#define INFINITY 1000 /*穷*/#define MAX_VERTEX_NUM 40/*定义全局变量*/创建两个类 存储景点信息和存储景点道路和长度typedef struct ArCell /邻接矩阵int adj; /存储路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_V

5、ERTEX_NUM; typedef struct /图顶点表示主要景点存放景点编号、名称、简介等信息char name20;int num;char introduction60;/简介infotype;typedef struct/图中的边表示景点间的道路,存放路径长度等信息。infotype vexsMAX_VERTEX_NUM;/顶点信息域AdjMatrix arcs;int vexnum,/*顶点数*/ arcnum;/边个数MGraph;MGraph b;3.2.2自定义函数原型说明给出函数声明void cmd(void);MGraph InitGraph(void);void M

6、enu(void);void Browser(MGraph *G);void ShortestPath_DIJ(MGraph *G);void Floyd(MGraph *G);void Search(MGraph *G);int LocateVex(MGraph *G,char*v);MGraph * CreatUDN(MGraph *G);void print(MGraph *G);3.2.3定义各顶点之间的距离:for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsij.adj=INFINITY; G.arcs01.adj=80;/*路径度*

7、/ G.arcs02.adj=180; G.arcs06.adj=200; G.arcs111.adj=120; G.arcs12.adj=100; G.arcs25.adj=50; G.arcs34.adj=60; G.arcs49.adj=140; G.arcs59.adj=250; G.arcs57.adj=150; G.arcs67.adj=190; G.arcs69.adj=150; G.arcs87.adj=130; G.arcs86.adj=50; G.arcs1012.adj=100; G.arcs910.adj=150; G.arcs34.adj=190; G.arcs513

8、.adj=150; G.arcs147.adj=350; G.arcs23.adj=190; G.arcs29.adj=150; G.arcs211.adj=120; G.arcs08.adj=120; G.arcs12.adj=50; G.arcs1012.adj=170; G.arcs1215.adj=160; for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G;3.2.4界面菜单设计:菜单选择 void Menu() printf(n 武汉工商学院院导游图n); printf( n

9、); printf( 1.浏览校园全景 n); printf( 2.查看所有游览路线 n); printf( 3.确定两景点之间最短距离 n); printf( 4.查看景点信息 n); printf( 5.退出导游系统 n); printf( n); printf(Option-:);Menu(); scanf(%d,&i); while(i!=5) switch(i) case 1:system(cls);Browser(&b);Menu();break; case 2:system(cls);ShortestPath_DIJ(&b);Menu();break; case 3:system

10、(cls);Floyd(&b);Menu();break; case 4:system(cls);Search(&b);Menu();break; case 5:exit(1);break; default:break; 3.2.6介绍景点:void Browser(MGraph *G) int v; printf(n); printf(编号景点名称 简介 n); printf(n); for(v=0;vvexnum;v+)printf(%-4d%-20s%-60s n,G-vexsv.num,G-vexsv.name,G-vexsv.introduction); printf(n);3.2.

11、7要查找的两个景点的最短距离:用floyd算法求两个景点的最短路径void Floyd(MGraph *G)/查询图中任意两个景点间的所有路径。 int v,u,i,w,k,j,flag=1,p202020,D2020; for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) Dvw=G-arcsvw.adj; for(u=0;uvexnum;u+) pvwu=0; if(DvwINFINITY) pvwv=1;pvww=1; for(u=0;uvexnum;u+) for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) if(Dvu+DuwDv

12、w) Dvw=Dvu+Duw; for(i=0;ivexnum;i+) pvwi=pvui|puwi; while(flag) printf(请输入出发地编号:); scanf(%d,&k); if(kG-vexnum) printf(景点编号存!n请输入出发地编号:); scanf(%d,&k); printf(请输入目的地编号:); scanf(%d,&j); if(jG-vexnum) printf(景点编号存!n请输入目的地编号:); scanf(%d,&j); if(k=0&kvexnum&j=0&jvexnum) flag=0; printf(%s,G-vexsk.name); for(u=0;uvexnum;u+) if(pkju&k!=u&j!=u) printf(-%s,G-vexsu.name); printf(-%s,G-vexsj.name); printf( 总路线%dmn,Dkj); 3.2.8查看所有游览路线迪杰斯特拉算法计算单源最短路径,引进一个辅助向量D,它的每个分量D表示当前所找到的从始点v0到每个终点vi的最短路径的长度。若从v到vi有弧,则D为弧上

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号