校园导游咨询程序的设计报告

上传人:大米 文档编号:557981078 上传时间:2023-03-28 格式:DOC 页数:14 大小:176.50KB
返回 下载 相关 举报
校园导游咨询程序的设计报告_第1页
第1页 / 共14页
校园导游咨询程序的设计报告_第2页
第2页 / 共14页
校园导游咨询程序的设计报告_第3页
第3页 / 共14页
校园导游咨询程序的设计报告_第4页
第4页 / 共14页
校园导游咨询程序的设计报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

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

1、 数据结构课程设计设计题目: 校园导游咨询 学 院: 信息学院 班 级: 计算机1008班 姓 名: 学 号: 20101221180 日期: 2012 年 3 月校园导航问题问题描述设计一个校园导游程序,为来访的客人提供各种信息查询服务。基本要求(1)设计所在学校的校园平面图,所含景点不少于十个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个顶点之间的一条最短的简单路径。(4)校园导游图的景点和道路的修改扩充功能。(5)扩充道路信息,如道路类

2、别(车道、人行道),以致可按客人所需分别查询人行路径或车行路径。(6)扩充每个景点的林洁景点的方向等信息,使得路径查询结果能提供详尽的导向信息。(7)实现校园导游的仿真界面。一、 概要设计4二、 详细设计6三、 调试分析12四、 调用关系12五、用户操作指南13测试数据一、 概要设计1. 数据类型#define V_MAX 20#define E_MAX 200typedef struct char name10;/名字/char code10;/代码char info20;/信息,简介int x,y;/坐标VType;/顶点类型typedef struct int live;/标记是否存在,

3、如果被删除则为0,存在为1char name10;/ 路名int length;/路的长度char ivex10,jvex10;/路(边)连接的两个顶点的名字int type;/表示道路类型,0表示两个都是,1表示人行道,2表示行车道EdgeType;/边类型typedef struct AdjNodeint length;/ 弧的长度char name10;/关联的顶点的名字struct AdjNode *next;/下一条弧AdjNode;/弧结点typedef struct int live;/标记是否存在,如果被删除则为0,存在为1int flag;/标记是否被访问过VType dat

4、a;/顶点的信息 AdjNode *first_adj;/指向该顶点的第一条弧VNode;/景点(顶点)结点typedef struct VNode vexV_MAX;/顶点数组EdgeType edgeE_MAX;/边的数组int v_num,e_num;Graph;/图类型/Graph G;AdjNode *p;2.基本函数/void creatGraph(Graph &G);/创建校园图void load(Graph &G);/从文件中读取数据void save(Graph &G);/保存数据入文件int find_v(Graph G,char name10);/通过输入景点名字,返回该

5、景点在vex数组里的下标void print_Graph(Graph G);/以邻接矩阵的形式输出图信息int direction(Graph G,char bname10,char fname10);/用于判断并输出一个景点在另外一个景点的方位信息void search_view(Graph G);/查询并输出景点的所有信息void del_v(Graph &G);/删除景点void add_v(Graph &G);/增加景点void add_e(Graph &G)/增加道路void modify_v(Graph &G);/修改景点信息void del_e(Graph &G);/删除道路二、

6、 详细设计本程序由m.cpp、head.h、Menu.h、dijie.h4个文件构成。1、 m.cpp主要用于调用菜单函数#include #include #include #include #include head.h#include dijie.h#include allpath.h#include Menu.hvoid main() load(G);/while(1)menu();2. Menu.h存放用于显示系统仿真界面的函数void mobifyMenu()while(1)system(cls);int choose;printf(-);printf(n);printf( 校园导

7、游系统 );printf(n);printf(-);printf(n);printf( 景点或者道路信息的修改扩充 );printf(n);printf(n);printf(-);printf(n);printf(1. 增加新景点n);printf(2. 删除景点n);printf(3. 修改景点n);printf(4. 增加新道路n);printf(5. 重新构建校园景点和路径信息n);printf(0. 返回上一个菜单n);printf(请输入操作代码:);scanf(%d,&choose);getchar();system(cls);switch(choose)case 1:add_v(

8、G);break;case 2:del_v(G);break;case 3:modify_v(G);break;case 4:add_e(G);break;case 5:creatGraph(G);break;case 0:return;void menu()int choose;printf(-);printf(n);printf( 校园导游系统 );printf(n);printf(-);printf(n);printf( 景点预览 );printf(n);for(int i=0;iG.v_num;i+) printf( %s ,G.vexi.data.name);if(i+1)%2=0)

9、 printf(n);printf(n);/print_Graph(G);printf(-);printf(n);printf(1. 景点或者道路信息的修改扩充n);printf(2. 查询景点信息n);printf(3. 查询最佳观光路径n);printf(0. 退出系统n);printf(请输入操作代码:);scanf(%d,&choose);getchar();system(cls);switch(choose)case 1:mobifyMenu();break;case 2:search_view(G);getchar();break;case 3:FDijkstra(G);getch

10、ar();break;case 0:exit(0);break;system(cls);3. head.h本文件用于存放基本操作函数,在此不做详细介绍4. dijie.h本文件用于查询并输出两个景点间的最佳路径并输出const int maxnum = 20;const int maxint = 10000;int cmaxnummaxnum;/图的邻接矩阵int P maxnum maxnum;/标明最短路径经过哪个点bool finalmaxnum;/标明从原点到某个点的最短路径已经找到int Dmaxnum;/记录最短路径的长度int pathmaxnum,jishu=0;/path用于

11、按顺序存放已找到最短路径的顶点,path1为第二个已经找到的/需要注意的是,如果图中有9个顶点,其中有两个无法到达,则path的最后面3个就是重复的/要注意区分开/ 用迪杰斯特拉算法找出最短路径void DIJ(Graph G,int v0,int P maxnum maxnum,int Dmaxnum)jishu=0;int min;for(int v=0;vG.v_num;v+)finalv=false; Dv=cv0v;for(int w=0;wG.v_num;+w) Pvw=0;if(Dvmaxint) Pvv0=1;Pvv=1;Dv0=0;finalv0=true;pathjishu=v0;jishu+;for(int i=1;iG.v_num;+i)min=maxint;for(int w=0;wG.v_num;+w) if(!finalw) if (Dwmin) v=w;min=Dw; finalv=true;pathjishu=v;jishu+;for(w=0;wG.v_num;+w)if(!finalw&(min+cvwDw)Dw=

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

当前位置:首页 > 办公文档 > 教学/培训

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