扬州大学信息工程学院。
数据结构》--课程设计报告。
题目: 校园导游咨询
班级:学号:
姓名。指导教师:
一、 设计题目。
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
二、 需求分析。
要求:1)设计你所在学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称,代号,简介等信息;以边表示路径,存放路径长度等相关信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
实现提示:一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。
三、 概要设计。
1.创建校园图:
(1)先定义节点个数n,边的最大值(maxedg),节点(景点名称、景点信息),邻接点,边,顶点向量,当前顶点数和边数。
(2)先给一个节点赋上其相关信息,然后再用p = node)malloc(sizeof(edgenode))语句申请下一结点,再给所申请的节点赋上相关信息,直到节点数为n=10为止。
(3)读入道路的起始点,为邻接矩阵的边赋相应的值。
(4)节点和边的相关信息都弄好了后,校园图也就创建好了。
2.利用函数name给10个节点赋上相应的名称,利用函数information给各节点添加相应的介绍信息。
3.利用函数tr**graph来查找景点信息,要查找景点名称时调用name函数,要查找景点介绍信息时调用information函数。
4.手动创建一个校园图creat(matrix_graph *g),然后为相应的边赋上真正的值。
5.用path函数来求任意两景点之间的最短路径。
6.用main函数来输出结果:用switch语句分别输出,要创建校园图时调用creatgraph函数;查找景点相关信息时调用tr**graph函数;要查找任意两景点之间的最短路径时,先输入你目前所在的位置,再输入你的目的地,最后调用path函数。
四、 详细设计。
typedef int adjmatrix[max][max];
typedef struct
int vexs[max];
adjmatrix arcs;
matrix_graph;//图的矩阵表示法。
typedef struct edgenode
int adjvex; /临接点序号。
int length; /道路长度。
char info[10]; 景点名称。
char info2[100]; 景点详细信息。
struct edgenode *next;
edgenode, *node ;
typedef struct
char name[10]; 存储景点的名称。
char information[100]; 具体的介绍此景点。
struct edgenode *link; /指向下一个景点。
vexnode景点及其信息。
typedef struct edge
int lengh; /边的权值,表示路径长度。
int ivex, jvex; /边的两端顶点号。
struct edge *next; /指向下一条边。
edgetype;
/边及其信息。
typedef struct
int num; /顶点编号。
char name[10]; 顶点名称。
vertex;
typedef struct
vertex vexs[max顶点集合。
int edges[max][max]; 临街矩阵。
adjmax; /adj
1)首先创建一个校园图并用邻接矩阵存储,程序会自动调用creatgraph(g,&n,e,&adj),函数进入到创建校园图界面,用循环语句来完成:
for(i = 1; i <=b; i++)
2)调用name(i)和information(i)完成对校园景点的名称和信息的介绍。
3)当游客选择了要查找景点的信息的介绍这一项功能的时候,程序就会调用tr**graph(g,n,adj);函数进入到查找景点的介绍的界面,当游客输入了需要查找的景点的名称的时候,程序利用循环语句:
doelse
flag = 0; /不继续。
break;
}while(1);
4)手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。得到一个模拟的校园图:
5)当游客选择了要查找两个景点之间的最短距离这一项功能的时候,程序就会调用path(&g,i,j);函数进入到查找两个景点之间的最短距离的操作界面当中,当游客输入了两个景点的名称过后,程序会调用creat(&g);函数给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度,然后调用path(&g,i,j);函数进入到查找最短路径问题的程序当中。
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)r[i][j]=0;//初始值为0。
for(i=1;i<=n;i++)
flag[s]=0;//修改标识。
while(c<=n)
for(i=1;i<=c;i++)
for(j=1;j<=n;j++)
if(flag[j]&&d[i]+g->arcs[t[i]][j]
t=d[i]+g->arcs[t[i]][j];v=j;
if(r[v][0]!=1)
u=1;while(r[t[i]][u]!=0)
r[v][u]=r[t[i]][u];u++;
r[v][u]=v;
r[v][0]=-1;
t[c]=v;
flag[v]=0;
d[c]=t;c++;
printf("the path is:(%d)",s);
j=1;while(r[e][j]!=0)
//显示路径。
6)主函数是一个程序的主体,。
五、测试数据及运行结果。
1.运行结果界面:
2.由于我编写创建校园图的程序时,不会编写打开一个文本的程序,所以创建校园图的运行结果显示的是“打开文本错误”。
3.查找景点相关信息的结果:
4.查找最短路径的结果:
六、源程序。
#define n 10
#define max 20 //图中顶点数的最大值。
#define maxedg 30 //图中边数的最大值
#include <>
#include <>
#include <>
#include <>
typedef int adjmatrix[max][max];
typedef struct
int vexs[max];
adjmatrix arcs;
matrix_graph;//图的矩阵表示法。
typedef struct edgenode
int adjvex; /临接点序号。
int length; /道路长度。
char info[10]; 景点名称。
char info2[100]; 景点详细信息。
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...