1、 数据结构数据结构课程设计课程设计 题题 目目 校园导游咨询程序设计校园导游咨询程序设计 学 号 学生姓名 院 系 专 业 指导教师 二一二二一二 年年 月月 日日 1、题目的内容及要求题目的内容及要求 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 2、需求分析需求分析 (1)设计你的学校的校园平面图,所含景点不少于 10 个。以图中顶点表示学校各景点,存 放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简 单路径。 (3)为来访客人提供图中任意景点相关信息的查询。 3 3、概要设计
2、、概要设计 1 1功能模块图;功能模块图; void CreateUDN();/创建无向网 void Search();/查询景点信息 void Shortestpath(int i);/计算最短路径 void Output(int sight1,int sight2);/输出函数 2 2各个模块详细的功能描述。各个模块详细的功能描述。 CreateUDN();/创建无向网、主要用来保存各景点信息 Search();/查询景点信息、景点的名称及介绍 Shortestpath(int i);/计算两景点间最短路径 Output(int sight1,int sight2);/输出两景点最短路径及
3、信息 3.3.模块图模块图 4 4、详细详细设计设计 一、图的储存结构一、图的储存结构 #define Max 30000 #define NUM 10 typedef struct ArcCell int adj; /* 相邻接的景点之间的路程 */ ArcCell; /* 定义边的类型 */ typedef struct VertexType int number; /* 景点编号 */ char *sight; /* 景点名称 */ char *description;/* 景点描述 */ VertexType; /* 定义顶点的类型 */ typedef struct VertexTy
4、pe vexNUM; /* 图中的顶点,即为景点 */ ArcCell arcsNUMNUM;/* 图中的边,即为景点间的距离 */ int vexnum,arcnum;/* 顶点数,边数 */ MGraph; /* 定义图的类型 二、二、算法算法 1.主程序 void main() int v0,v1; char ck; CreateUDN(NUM,11); do ck=Menu(); switch(ck) case 1: system(“cls“); / narrate(); printf(“nnttt 请选择起点景点(09) :“); scanf(“%d“, printf(“ttt 请选
5、择终点景点(09) :“); scanf(“%d“, ShortestPath(v0); /* 计算两个景点之间的最短路径 */ output(v0,v1); /* 计算两个景点之间的最短路径 */ printf(“nntttt 请按任意键继续.n“); getchar(); getchar(); break; case 2:search(); break; case 3: system(“cls“); /narrate(); x0=1; HaMiTonian(1); printf(“nntttt 请按任意键继续.n“); getchar(); getchar(); break; ; whil
6、e(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.sight);/* 输出提示信息 */ printf(“t(最短距离为 %dm.)nnt“,Da); printf(“t%s“,G.vexsight1.sight); d=sight1; /* 将景点一的编号赋值给 d */ for(c=0;c9) return; L: NextValue(m); if(xm=0)