当前位置:文档之家› 校园导游咨询系统

校园导游咨询系统

校园导游咨询系统
校园导游咨询系统

1.需求分析

1.1创建结点(旅游景点)

创建该旅游景点是在顺序表中完成的,在顺序表中,首先要创建结点结构体,将该结构体命名为SeqList,成员变量有数组list和size,分别用来表示最大元素个数(即旅游景点的最大个数)和顺序表中当前存储的数据元素个数,顺序表可以完成的功能有求当前数据元素个数,插入数据元素,删除数据元素,取数据元素。

1.2创建图

在构造图的操作中包括结点的插入(实参包括AdjMGraph *G,DataTyp v[],n,RowColWeight E[],e)分别表示在该*G的结构体中的SeqlistV ertices[]中插入结点,在*G的结构体中的edge[MaxV ertices][MaxV ertices]的边数组中插入边信息结点分别为行下标、列下标、权值,该*G的结构体中numOfEdges,e表示边的条数,即将e的值给它。结点的顺序表初始化,在该函数中也应包括一个结构体边信息结构体:成员包括行下标、列下标、权值。并将该结构体命名为RowColWeight。

1.3图的实现

在该函数中要使用SeqList头文件,在该文件中要真正进行插入边和结点。首先在该函数中应该定义一个结构体AdjMGraph,在该结构体的成员变量包括存放结点的顺序表定义为SeqlistV ertices[]、存放边的邻接矩阵用edge[MaxV ertices][MaxV ertices]表示,边的条数numOfEdges。初始化AdjMGraph 中的成员变量线性表和边数及存放边的邻接矩阵。然后在顺序表中插入结点,在邻接矩阵中插入边,删除边,删除结点。取序号为V的结点的第一个邻接结点,取序号为V1的邻接结点V2结点的下一个邻接结点

1.4求最短路径

在该函数中,应该有四个参数,两个位输入参数,分别为带权图G和源点(景点起点)序号v0,两个为输出参数,分别为distance[]和path[],distance[]用来存放达到的从源点v0到其余各结点的最短距离,path[]用来存放最短路径的下标。

1、从江西农业大学的平面地图中选取出6个有代表性的景点。

2、为来访的客人提供图中任意景点的路径查询,即查询任意两个景点之间的最短简单路径。当用户输入正确时,为用户输出任意两景点的最短路径;当用户输入不合法时,提示用户输入有误并返回让用户重新输入。

3、为来访客人推荐参观最短路线。

2.概要设计

1.首先用邻接矩阵存储校园图。

2.用数据结构知识创建校园图。

3.手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。4.利用C语言知识编写查找景点相关信息的程序。

5.利用迪杰斯特拉算法计算任意两点之间的最短路径。

6.最后用一个主函数main输出各项结果。

1.创建校园图:

(1)先定义节点个数N,边的最大值(Maxweight),节点(景点名称、景点信息),邻接点,边,顶点向量,当前顶点数和边数。

(2)先给一个节点赋上其相关信息,然后再用p = (Node)malloc(sizeof(edgenode))语句申请下一结点,再给所申请的节点赋上相关信息,直到节点数为N=6为止。

(3)读入道路的起始点,为邻接矩阵的边赋相应的值。时

(4)节点和边的相关信息都弄好了后,校园图也就创建好了。

2.利用函数Name给10个节点赋上相应的名称,利用函数Information给各节点添加相应的介绍信息。

3.利用函数travgraph来查找景点信息,要查找景点名称时调用Name函数,要查找景点介绍信息时调用Information函数。

4.手动创建一个校园图AdjMGraphgcreat(AdjMGgrph *G),然后为相应的边赋上真正的值。

5.用distance[]数组来存放任意两景点之间的最短路径。

6.用main函数来输出结果:用switch语句分别输出,要创建校园图时调用AdjMGraphgraphcreat函数;查找景点相关信息时调用search函数;要查找任意两景点之间的最短路径时,先输入你目前所在的位置,再输入你的目的地,最后调用path函数。

3.详细设计

#define N 10

#define MAXSize 20 //图中顶点数的最大值

#define MAXedg 30 //图中边数的最大值

#include

#include

#include

#include

typedef int AdjMGraph[ MAXSize][ MAXSize];//存放邻接矩阵的权值信息typedef struct

{

int vexs[ MAXSize];

AdjMGraph s;//

}Matrix_Graph;//图的邻接矩阵表示法。

typedef struct numofedge//

{

int adjvex; //邻接矩阵结点序号

int length; //定义道路长度

char info[10]; //定义景点名称

char info2[100]; //定义景点详细信息

struct numofedge *next;//定义指向下一个结点的指针

}numofedge, *Node ;//将该结构体重新命名为*Node

typedef struct

{

char name[10]; //存储景点的名称数组

char information[100]; //具体的介绍此景点信息数组

struct numofedge *link; //指向下一个景点的指针

}vextices; //创建景点及其信息结构体

typedef struct Edge

{

int lengh; //边的权值,表示路径长度.

int ivex, jvex; //表示两个连接的结点的位置变量

struct Edge *next; //指向下一条边的指针变量

} EdgeType;

//边及其信息.

typedef struct

{

int num; //结点编号。

char name[10]; //结点名称

} vertex;//存放结点信息结构体

typedef struct

{

vertex vexs[ MAXSize]; //存放结点数组元素信息

int edges[ MAXSize][ MAXSize]; //存放边的邻接矩阵

}adjmax,adj; //表示图的结构体

FILE *fp; //文件的读取

void clrscr() //清屏

{

system("cls");

}

void creatgraph(vextices g[],int *n, EdgeType e[],adjmax *adj) //创建校园图vextices g[]表示存放景点信息数组,n表示下一个景点,EdgeType e[]表示存放边的信息数组,adjmax *adj表示下一条边的信息数组

{

int b,i,s,d,len;//b代表结点之间的边数

struct numofedge *p,*q; //定义图的结构体

if((fp = fopen("file.txt","r")) == NULL) //打开文件,对文件进行读的操作

{

printf("文件打开错误!\n");

getchar();//获取景点信息

exit(0);

}

fscanf(fp,"%d %d\n",n,&b); //读入景点个数和边数

for(i = 1; i <= *n; i++)

{

fscanf(fp,"%s %s\n",&g[i].name,&g[i].information);//读入文件中结点(景

点)的名字和详细介绍信息

strcpy(adj->vexs[i].name,g[i].name);//将景点的名字赋给图中的结点信息

g[i].link = NULL; //初始化节点的下一个结点信息

}

for(i = 1; i <= b; i++)

{

fscanf(fp,"%d %d %d\n",&e[i].lengh,&e[i].ivex,&e[i].jvex); //读入道路长度和边的行下标和列下标

s = e[i].ivex; //将边的行号记录给S,将边的列号记录下来。

d = e[i].jvex;

len = e[i].lengh;//将各个边的长度值记录下来

adj->edges[s][d] = e[i].lengh; //为邻接矩阵中相应的边赋值

adj->edges[d][s] = e[i].lengh;//该矩阵为对称矩阵故edges[d][s]=edges[s][d];

p = (Node)malloc(sizeof(numofedge)); //为一个新的结点开辟动态空间。

p->next = NULL;//初始化开辟空间的下一个结点

q = (Node)malloc(sizeof(numofedge));//为一个新的结点开辟动态空间

q->next = NULL;//初始化开辟空间的下一个结点

p->adjvex = d; // 将边的列号给结点信息的结构体中记录邻接矩阵的序号成员

p->length = len;//将边的长度值给结点信息的结构体中的道路成员

strcpy(p->info,g[d].name); //为景点赋名称

strcpy(p->info2,g[d].information); //为景点赋介绍信息

q->adjvex = s; // 为景点赋序号,道路长度

q->length = len;

strcpy(q->info,g[s].name); //为景点赋名称

strcpy(q->info2,g[s].information); //为景点赋介绍信息

p->next = g[s].link; //使p指针指向第s行的下一行,头插法建立邻接表

g[s].link = p;//使p指针指向第s行的下一行的下一行

q->next = g[d].link;//使q指针指向第d列的下一列,头插法建立邻接表

g[d].link = q;//使q指针指向第d列的下一列,头插法建立邻接表}

printf("校园旅游图已经建立!\n");

getchar();

}

void Name(int i)

{

switch(i)//为景点添加具体的名字地点

{

case 1:

printf("1:一教\n");break;

case 2:

printf("2:二教\n");break;

case 3:

printf("3:五教\n");break;

case 4:

printf("4:新图书馆\n");break;

case 5:

printf("5:老图书馆\n");break;

case 6:

printf("6:北区食堂\n");break;

case 7:

printf("7:南区食堂\n");break;

case 8:

printf("8:大学生活动中心\n");break;

case 9:

printf("9:圆形报告厅\n");break;

case 10:

printf("10: 体育馆\n");break;

default:

printf("景点编号输入错误!请输入1->10的数字编号!\n\n"); break;

}

} /*Name*/

void Information(int i)

{/*景点介绍*/

switch(i)//为景点添加介绍信息

{

case 1:

printf("一教:这是一栋比较古老的建筑楼,但是当你路过这里,会听到朗朗的读书声,很励志的地方\n");break;

case 2:

printf("二教: 这栋楼真的很令人不满意,,不看平面图很难找到,其次,它就是一个2的形状\n");break;

case 3:

printf("五教: 这栋教学楼应该是新建的,总体看上去还令人比较满意,周边环境也挺好的\n");break;

case 4:

printf("新图书馆:虽然很小,但是还过的去,学习环境很好,还有自修室,阅览室等学习场所\n");break;

case 5:

printf("老图书馆:很少去,听说藏的书一般是艺术类的书籍,建筑学,美术还有音乐方面等书籍\n");break;

case 6:

printf("北区食堂: 有时候味道太重,太咸,但是平时味道不错,是学生

就餐的主要餐厅。\n\n");break;

case 7:

printf("南区食堂: 味道偏清淡,三楼的南昌风味的快餐店味道较好\n");break;

case 8:

printf("大学生活动中心:在体育馆旁边,举办活动的主要场所,每次晚上路过那里都会听到在举办活动,很热闹\n");break;

case 9:

printf("圆形报告厅: 太小了,如果要求全院的人都参加专业类的报告,则会有很多晚来的人站在后面,没有足够的座位\n");break;

case 10:

printf("体育馆: 上体育课的主要场地,比较空旷,平时会有很多学生在那里训练,打羽毛球的时候和练轮滑的时候最精彩了\n");break;

default:

printf("景点编号输入错误!请输入1->10的数字编号!\n\n"); break;

}

}/*Information*/

void searchgraph(vextices g[],int n,adjmax adj) //1查找指定景点信息

{

int i = 1,flag = 1,len; //len存储要查询的景点的序号

char ch;

printf("请输入您要查询的景点序号:\n");//提示用户输入景点序号

scanf("%d",&len);

getchar();//获取该序号对应的景点名称和景点信息

printf("此景点的名称是:");

Name(len);

printf("此景点的介绍是:");

Information(len);

do{

printf("是否继续? Y/N");

scanf("%c",&ch);

getchar();

if(ch == 'Y' || ch == 'y') //继续

{

flag = 1;

i = 1;

printf("请输入您要查询的景点序号:\n");

scanf("%d",&len);

getchar();

printf("此景点的名称是:");

Name(len);

printf("此景点的介绍是:");

Information(len);

continue ;

else

flag = 0; //不继续

break;

}while(1);

}

void creat(Matrix_Graph *G)

{

int i,j;

for(i=1;i<=N;i++) G->vexs[i]=i;//初始化,0号位不用。

for(i=1;i<=N;i++)

for(j=1;j<=N;j++) G->s[i][j]=0;//初始值为0。

G->s[1][2]=2;G->s[1][9]=5;//表示景点一到景点二的距离是2。

G->s[2][1]=2;G->s[2][3]=5;G->s[2][4]=4;G->s[2][9]=6;//将景点间的距离初始化

G->s[3][2]=5;G->s[3][4]=7;G->s[3][7]=5;G->s[3][9]=6;G->s[3][10]=6;

G->s[4][2]=4;G->s[4][6]=7;G->s[4][10]=7;

G->s[5][6]=4;G->s[5][7]=6;G->s[5][8]=8;

G->s[6][4]=7;G->s[6][5]=4;G->s[6][7]=3;G->s[6][10]=7;

G->s[7][6]=3;G->s[7][8]=4;G->s[7][10]=6;

G->s[8][5]=8;G->s[8][7]=4;G->s[8][9]=9;

G->s[9][1]=5;G->s[9][2]=6;G->s[9][3]=6;G->s[9][8]=9;

G->s[10][3]=6;G->s[10][4]=7;G->s[10][6]=7;G->s[10][7]=6;

for(i=1;i<=N;i++)

for(j=1;j<=N;j++)

if(G->s[i][j]==0) G->s[i][j]= MAXSize;//没有被重新赋值的,表示两景点之间

//没有路,用MAX表示无穷大。

}

void Mindistance(Matrix_Graph *G,int s,int e)

{

int i,j,u,c=1,t,v;

int r[N+1][N+1];//用来存放路径上的景点。

int T[N],flag[N],d[N];

for(i=0;i<=N;i++)

for(j=0;j<=N;j++) r[i][j]=0;//初始值为0。

for(i=1;i<=N;i++)

{

T[i]=-1;//初始值为-1。

flag[i]=1;//初始值为1。

d[i]= MAXSize;//路径长度初始值为无穷大,用MAX表示。

}

flag[s]=0;//修改标识。

while(c<=N)

t= MAXSize;

for(i=1;i<=N;i++)

if(flag[i]&&G->s[s][i]

{

t=G->s[s][i];v=i;r[v][1]=v;}

for(i=1;i<=c;i++)

for(j=1;j<=N;j++)

if(flag[j]&&d[i]+G->s[T[i]][j]

{

t=d[i]+G->s[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("\nThe path is:\n(%d)",s);

j=1;

while(r[e][j]!=0)

{

printf("-->(%d)",r[e][j]);j++;}//显示路径。

printf("\n\n");

}

int main()//主函数

{

int i,j;

Matrix_Graph G;

creat(&G);

int n = 0; //景点数目

vextices g[ MAXSize]; //1保存顶点及其信息

EdgeType e[MAXedg]; //保存边及其信息

adjmax adj; //保存边和定点

char choice = 'x';

{

clrscr();

printf("\n\n\t\t\t***校园导游系统***\n\n");//提示用户正确根据需要输入数字

printf("\t\t\t1. 文件读入并创建校园图:\n\n");

printf("\t\t\t2. 查询景点详细信息:\n\n");

printf("\t\t\t3. 查找两景点间最短路径:\n\n");

printf("\t\t\t0. 退出\n\n");

printf("Please enter your choice(0-3):\n ");

choice = getchar();

switch(choice)

{

case '1':

clrscr();

creatgraph(g,&n,e,&adj); //创建图(景点,景点数,边,边和景点)

printf("\n打开文件错误\n");

getchar();

break;

case '2':

clrscr();

searchgraph(g,n,adj);//查询景点信息

getchar();

break;

case '3':

clrscr();

printf("\2你目前的位置是:\n");

scanf("%d",&i);

getchar();

printf("\2你的目的地是:\n");

scanf("%d",&j);

getchar();

Mindistance(&G,i,j);//查找最短路径

getchar();

creat(&G);

do{

printf("是否继续? Y/N");

char ch;

int flag=1;

scanf("%c",&ch);

getchar();

if(ch == 'Y' || ch == 'y') //是否继续

{

flag = 1;

i = 1;

printf("\2你目前的位置是:\n");

scanf("%d",&i);

getchar();//获取输入的数字对应的地点

printf("\2你的目的地是:\n");

scanf("%d",&j);

getchar();

Mindistance(&G,i,j);//查找最短路径

getchar();

creat(&G);

continue ;

}

else

flag = 0; //不继续

break;

}while(1);

break;

case '0':

clrscr();

printf("\n*******按任意键退出********\n");

getchar();

exit(0);

break;

default:

printf("\n输入错误,请重新输入0-3之间的数字:\n");

getchar();

break;

}

}

getchar();

}

4.调试分析

4.1测试数据

当起点输入11终点输入10时,景点不存在,程序提示重新输入;当起点输入0(教学主楼)终点输入10时,终点景点不存在,程序提示重新输入;当起点输入3(五教)终点输入4(新图书馆)时,景点都存在,屏幕打印出两景点最短路径:五教—〉新图书馆,最短路径约为6。当输入1时,则按景点编号查询,当输入6(北区食堂)时,屏幕上打印出此景点信息:有时候味道太重,太咸,

但是平时味道不错,是学生就餐的主要餐厅;当输入4(新图书馆)时,屏幕上打印出此景点信息:虽然很小,但是还过的去,学习环境很好,还有自修室,阅览室等学习场所

;当输入12时,此景点不存在,当输入20时,此景点不存在,当输入5时,则按景点名称查询,当在选择主菜单中输入3时,则系统推荐旅游路径:当输入1正确输入起点(2)(二教)和终点(4)(新图书馆),屏幕将打印出两景点之间的最短路径:二教—〉五教—〉图书馆,最短路径为约4m。用户应看清代码允许输入的范围当输入的景点代号不在(1-10)之间时,则结构也错误。

当在选择主菜单选择3时,则按景点信息查询,当输入4(新图书馆)时,屏幕上打印出此景点信息:虽然很小但还过的去,学习环境很好,还有自修室和阅览室;如图所示为输出结果。当输入8(大学生活动中心)时,屏幕上打印出此景点信息:在体育馆旁边,举办活动的主要场所,每次晚上路过那里都会听到在举办活动,很热闹,当输入12时,此景点不存在,输入信息错误

在选择主菜单输入错误时,程序不作反应,当输入e时,则退出,

由于本人的设计能力有限,在设计过程中难免出现错误。本程序在调试时,出现了一个很棘手的错误,出现了结构体变量定义错误,本来要用到指针的没有用的,经过自己的多次修改,没有编译成功,最后在同学帮助下,结构体成员定义为指针变量成功的修改了那个问题。还有一些简单的语法错误,这些错误可以通过自己慢慢调试,属于小错误就不一一列举了。

本程序的时间复杂度主要发生在求最短路径时,即算法里面的for循环语句,for循环语句三层嵌套,所以时间复杂度为n3。

5.总结

1.算法中可以使用顺序表存储各个结点

2.创建图的过程可以存放在一个独立的头文件中,写出函数体,然后直接调用另一头文件

3.在图的存储时本程序采用的邻接矩阵,也可以采用邻接表;在求两景点之间的最短路径时本程序采用的狄克斯特拉算法,也可以采用弗洛伊德算法。

4、在本次课程设计中让我进一步熟悉了各种算法的使用,但感到自己在算法设计中还存在很大的不足,写算法时无法脱离课本,更是需要同学的帮助,甚至有的算法不得不从网上查询,今后自己将更努力学习这门语言,多接触解决各种问题的各种算法,这样才能提高自己

5、通过这次编程实现校园导游咨询系统,让我更深入的了解了最短距离的算法思想,查阅了很多的资料,像代码中的读写文件的语句如何使用及清屏函数。

数据结构课程设计报告(校园导游系统)附有源代码

课程论文(设计)2011-2012学年第2学期 课程名称:数据结构课程设计 课程性质:实践课 专业班级: 考核方式:考查 学生姓名: 学号: 学时:1周 教师姓名:

目录 1. 作业内容 (1) 2. 基本思路 (1) 2.1 本校10个景点 (1) 2.2 图的初始化 (2) 2.3 图的遍历 (2) 2.4 求最短路径 (3) 3.系统流程 (4) 3.1 系统的简单说明 (4) 3.2 系统流程图 (5) 4. 系统运行效果图 (5) 4.1 校园导游界面 (5) 4.2 华农校园地图 (6) 4.3 景点的相关信息查询 (6) 4.4 任意两个景点间的最短路径 (7) 4.5 退出校园导游系统 (8) 5.总结 (9) 6.参考文献 (10)

1. 作业内容 设计一个校园导游程序,为来访客人提供各种信息查询任务。基本要求: (1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介信息,以边表示路权,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 2. 基本思路 要完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路: (1).结合本校的实际情况,选出10个景点; (2).人为手工为选出的10个景点赋上相关信息(名称、代号、简介信息、以及路权等等); (3).根据选出来的10个景点用邻接矩阵存储校园图。 (4).依照景点的相关信息创建校园图。 (5).把纸质上的内容,利用C++编程语言编写查找景点相关信息的程序。 (6).根据人为赋值的路权,迪杰斯特拉算法计算任意两点之间的最短路径。 (7).综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。 为此,可把系统分为以下几个核心:图的初始化、图的遍历、求最佳路线。 2.1 选出本校10个景点 结合华南农业大学实际情况,我选出以下10个景点,从1到10编号:

基于数据结构的校园导游咨询系统课程设计报告

重庆科技学院 课程设计报告 院(系):_电气与信息工程学院专业班级:计科普0902 学生姓名:周杨学号: 2009441622 设计地点(单位)____计算机基础自主学习中心I306___ 设计题目:_________校园导游咨询____________________ 完成日期: 2011 年 1 月 14 日 指导教师评语: _______________________________________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________ __________ _ 成绩(五级记分制):______ __________ 指导教师(签字):________ ________

重庆科技学院 课程设计任务书设计题目:校园导游咨询

教研室主任:指导教师:向毅、陈刘奎、熊茜 2010年 12 月 20日

摘要 现代快节奏的生活使得都市人越来越渴望亲近自然,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径就成了一个很重要的问题。 本设计基于图的结构,创建一个无向图,针对游客的实际需求,将重庆科技学院的景点编号、名称、介绍等信息放入到图的顶点当中并保存在景点文本文件当中,将两个景点的编号和它们之间的距离当作权值也保存到权值文本文件当中,利用迪杰斯特拉算法来求从一个景点到另一个景点的最短距离,利用strcmp();函数来查找景点,并显示出它的信息,从而解决了要查找景点信息和景点之间的最短路径的问题,最后按照显示屏上的提示进行相关的操作。 关键词:无向图、查找信息、最短距离、校园导游咨询

校园导游系统设计与实现

校园导游系统设计与实现

目录 1.设计要求 2.1需求分析 2.2概要设计 2.3各个模块名称和功能 2.4 系统导游主界面 2.4.1前台系统 2.4.2后台系统 2.4.3退出系统 3实验总结 参考文献 附件

1.设计要求 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 2.1需求分析 ⑴设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30 个。以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。 ⑵存放景点代号、名称、简介等信息供用户查询。 ⑶为来访客人提供图中任意景点相关信息的查询。 ⑷为来访客人提供图中任意景点之间的问路查询。 ⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。 景点距离图 2.2概要设计

校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。最后用switch 选择语句选择执行浏览景点信息或查询最短路径。 1、主界面设计 为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。 2、存储结构设计 本系统采用图结构类型(mgraph)存储抽象校园图的信息。其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum 表示,它们是整型数据。 3、系统功能设计 本系统除了要完成图的初始化功能外还设置了9个子功能。图的初始化由initgraph()函数实现。依据读入的图的顶点个数和边的条数,分别初始化图结构中图的顶点数组和图的邻接矩阵。9个子功能的设计描述如下。 ⑴景点信息查询 景点信息查询由函数seeabout()实现。该功能根据用户输入的景点编号输出该景点的相关信息。如景点编号、名称等。 ⑵学校景点介绍 学校景点介绍由函数browsecampus()实现。当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点介绍。 ⑶相邻的景点及其距离 为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息 ⑷查看浏览线路 查看浏览线路由函数shortestpath_dij()实现。该功能采用迪杰斯特拉(Dijkstra)算法实现。当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其他景点的最短路径线路及距离。当用户选择该功能,系统能根据用户输入的起始景点及目的景点编号,查询任意两个景点之间的最短路径线路及距离。 ⑸更改图信息 修改一个已有景点的相关信息、删除一个景点及其相关信息、删除一条路径、加一条路径、修改路径长度、添加一个景点 ⑹数据安全防范 设置密码,能保证数据不会被随便更改,由pass()判定密码是否正确,可由changepw()函数修改密码,初始密码为gdufsx ⑺写入文件并保存修改 打开该软件,若没有graph.txt,则会由系统初始化生成一个graph.txt,若已存在该文档会由该文档中的内容初始化系统。 ⑻恢复初始状态 若数据已经显得很杂乱并很难修理,就可以启用这个功能

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

1、需求分析 设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。 (1).设计工商学院校园无向图,所含的景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2).为来访客人提供图中任意景点相关信息的查询。 (3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 2、设计思路 校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径。

3 算法设计 3.1 概要设计 3.1.1程序中包含的模块 (1)主程序模块 主函数:void main(void) void cmd(void) cmd修改显示框大小,字体背景颜色,初始化景点,景点信息打印菜单, MGraph InitGraph(void); //初始化图。 MGraph * CreatUDN(MGraph *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() 最短路径查询:要查找的两景点的最短距离:用floyd算法求两

数据结构课程设计-旅游景点咨询系统的设计与实现

一、需求分析 1、问题描述 创建一个至少有15个点的无向网表示的某个旅游景点的导游图。顶点代表景点,类型为字符串(例如,泰山导游图:“天地广场门”,“十八盘”,“冯玉祥墓”,“桃花峪门”,“中天门”,“南天门”,“玉皇顶”等),弧表示两个景点之间可以直达,弧上的权值表示两个景点之间的路程(公里数),弧上还有到达方法的信息(有步行和索道两种)。建立一个游客咨询系统。 2、基本要求 a.创建图的存储结构。 b.输入两个景点名,就可以得到从一个景点到达另一个景点的所有简单路径、相应路径的路程公里数、行走的方法(每一段是步行,还是坐索道)。 c.输入两个景点名,就可以得到其最短路径,即:路程最短的行进方法;如果两者无路径可通,就得出“两景点不可达的信息”。 二、概要设计 1.数据结构 本程序需要用到两个结构体,分别为ArcCell和MGraph。 2.程序模块 本程序包含两个模块,一个是实现功能的函数的模块,另一个是主函数模块。

系统子程序及功能设计 本系统共有七个子程序,分别是: int LocateVex(MGraph G,VertexType u)//得到顶点u的序号 void CreateDN(MGraph *G)//建立景点间的无向网 VertexType* GetVex(MGraph G,int v)//根据顶点序号返回顶点值 int FirstAdjVex(MGraph G,VertexType v)//返回v的第一个邻接顶点的序号 int NextAdjVex(MGraph G,VertexType v,VertexType w)//返回v的(相对于w的)下一个邻接顶点的序号 void Simpleway(MGraph& m,char *str,char *buf)//求任意两个景点之间的所有简单路径 int Minway(MGraph& m,char *str,char *buf)//求两顶点间的最短路径 3.各模块之间的调用关系以及算法设计 函数CreateDN调用函数LocateVex 函数Simpleway调用函数LocateVex 函数Minway调用函数LocateVex,GetVex,FirstAdjVex,NextAdjVex 主函数调用函数CreateDN,Simpleway,Minway。 三、详细设计 1.数据类型定义 typedef struct { VRType adj; int info;

数据结构校园导游咨询系统课程设计报告及课程总结.

姓名: 班级: 学号: 指导教师: 2012年12月

目录 1、需求分析 (1) 1.1 系统简介 (1) 1.2 系统功能模块介绍 (1) 2、概要设计 (2) 2.1 系统功能结构图 (2) 2.2 系统流程图 (2) 2.3 主要函数概要设计 (3) 2.3.1 主函数概要设计 (3) 2.3.2 初始化图函数InitGraph() (4) 2.3.4 查询景点信息函数设计SearchGraph() (4) 2.3.5 显示图中信息函数设计ShowGraph() (4) 2.3.6 弗洛伊德算法函数设计Floyd() (5) 3、详细设计 (5) 3.1 主函数详细设计 (5) 3.2初始化图函数详细设计InitGraph() (6) 3.3查询景点信息函数详细设计SearchGraph() (7) 3.4 弗洛伊德算法函数详细设计Floyd() (8) 4、调试分析 (9) 4.1 显示主界面函数测试 (9) 4.2 查找两景点间最短路径测试 (10) 4.3 查看景点信息测试 (11) 5.课程设计总结 (12) 6、附录 (13)

1、需求分析 1.1 系统简介 随着现代社会生活节奏的加快,人们外出旅行以寻求放松的时间越来越多。考虑到游客不可能对所有景点都有所了解,因此可能无法找到游玩景点最省时,最高效的路径,而人工导游成本又过高,故使用C语言,基于《数据结构》中图的相关算法开发了“江西农业大学校园咨询系统”。 开发本系统目的在于为来访我校的游客提供一条最短游览路径,本系统从实际出发,通过对校园平面图的分析,将其转化为数据并保存在系统中,因此系统提供的路径具有较大的可信性。 本系统界面友好,提示信息充分,在实际使用过程中运行良好。 1.2 系统功能模块介绍 本系统主要分为以下三大功能模块: 1、查询两景点最短路径:用户在选择此功能模块后,按照屏幕上方提示的景点名称及其对应的编号,要求用户输入起点和终点的编号,系统将在已存储的景点中进行匹配,若未找到所需查询的景点编号,系统将提示错误并要求用户再次输入。若输入信息合法,则回车后系统将给出最短路径,显示于屏幕上方; 2、查询景点信息:用户在选择此功能模块后,按照屏幕上方提示的景点名称及其对应的编号,要求用户输入想要查询的景点的编

校园导游系统

课程设计报告 课程名称:数据结构与算法 题目名称:校园导游系统 学生学院:数学与计算机科学系 专业班级: 2016级计算机科学与技术本科班小组组长:王明 小组成员: 王明郑双凤吕运发 指导老师:熊小颖老师

2017年10月15日 目录 一、设计目的3 二、问题描述3 三、基本要求3 四、概要设计3 五、主程序4 六、测试数据13

6.1调试程序所用数据13 6.2程序的调试结果 七、总结 一、设计目的 随着现代社会生活节奏的加快,人们外出旅行以寻求放松的时间越来越多。考虑到游客不可能对所有景点都有所了解,因此可能无法找到游玩景点最省时,最高效的路径,而人工导游成本又过高,故使用C语言,基于《数据结构》中图的相关算法开发了“南昌师范学院导游系统”。开发本系统目的在于为来访我校的游客提供一条最短游览路径,本系统从实际出发,通过对校园平面图的分析,将其转化为数据并保存在系统中,因此系统提供的路径具有较大的可信性。 二、问题描述 设计校园导游程序,为来访的客人提供服务,为来访我校的游客提供一条在游客当前位置到目的地的最短游览路径,找到游玩景点最

省时,最高效的路径。 三、基本要求 1.假设有一所校园的平面图,所含景点不小于10个,请选择适当 的坐标来表示出该图上的各个景点。 2.为来访的客人提供从当前位置到其他景点的最短路径的咨询; 3.必须具有校园平面图的修改和扩充功能(即某些景点坐标的修改 和景点个数的增加)。 四、概要设计 算法思路 本设计的重难点在于问题二的解决。利用了弗洛伊德算法函数设计Floyd() 本算法在设计时参考了《数据结构C语言版》一书中有关Floyd算法的介绍,同时借鉴了如今网上流行的设计方式。之所以选择本算法来实现计算最短路径,原因在于本算法容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。 但是,本算法缺点在于时间复杂度过高,不适合用于计算大量数据。Floyd算法首先将两景点间路径长度数据存储于数组D[v][w]中,而后使用一个三维数组用于存放最短路径所经过的顶点,接下来使用三重循环判断两景点之间直接路径是否大于间接路径,若大于,则将三维数组中存放的顶点信息更改为简介路径所经过的顶点信息。以上部分完成后,当用于标记输入数据是否合法的

校园导游系统

课程设计说明书 课程名称:数据结构与算法 设计题目:校园导游系统 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计算机科学与技术信息技术方向11-1 指导教师: 2013年6月21日

课程设计任务书 校园导游系统

摘要: 随着社会经济的发展,人们接近自然的机会就越多,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径,如何简单的修改相关的信息,就成了很重要的问题。 本设计基于图的结构,用数组表示法创建一个无向图,针对游客的实际需求,将安阳工学院的景点编号、名称、介绍等信息放入到图的顶点当中,将路径长度的信息存放在弧当中。利用弗洛伊德算法求出两个景点之间的最短路径,利用迪杰斯特拉算法来求从一个景点到其他剩余的所有景点的最短距离;用相应的函数来查找景点,并显示出它的编号,信息,简介。并进行一定的界面美化,更贴近用户,相应的提示使用户操作起来更容易。 关键词:最短路径、查找景点信息、无向图 目录

1. 设计背景 (3) 1.1程序设计内容 (4) 1.2程序设计要求 (4) 2.设计方案 (4) 2.1 校园景点图 (5) 2.2 程序模块图 (5) 2.3 主函数设计简要 (6) 2.4 各函数模块的功能 (6) 3. 方案实施 (7) 3.1 程序执行流程图 (7) 3.2 主函数设计思想 (7) 4. 结果测试 (9) 4.1 主函数功能模块测试 (9) 4.2 主函数功能测试 (9) 4.3 各功能所执行的操作 (12) 5. 结论 (12) 6. 收获与致谢 (13) 7. 参考文献 (14) 8. 附件 (14) 1. 设计背景

校园导游咨询系统

1.需求分析 1.1创建结点(旅游景点) 创建该旅游景点是在顺序表中完成的,在顺序表中,首先要创建结点结构体,将该结构体命名为SeqList,成员变量有数组list和size,分别用来表示最大元素个数(即旅游景点的最大个数)和顺序表中当前存储的数据元素个数,顺序表可以完成的功能有求当前数据元素个数,插入数据元素,删除数据元素,取数据元素。 1.2创建图 在构造图的操作中包括结点的插入(实参包括AdjMGraph *G,DataTyp v[],n,RowColWeight E[],e)分别表示在该*G的结构体中的SeqlistV ertices[]中插入结点,在*G的结构体中的edge[MaxV ertices][MaxV ertices]的边数组中插入边信息结点分别为行下标、列下标、权值,该*G的结构体中numOfEdges,e表示边的条数,即将e的值给它。结点的顺序表初始化,在该函数中也应包括一个结构体边信息结构体:成员包括行下标、列下标、权值。并将该结构体命名为RowColWeight。 1.3图的实现 在该函数中要使用SeqList头文件,在该文件中要真正进行插入边和结点。首先在该函数中应该定义一个结构体AdjMGraph,在该结构体的成员变量包括存放结点的顺序表定义为SeqlistV ertices[]、存放边的邻接矩阵用edge[MaxV ertices][MaxV ertices]表示,边的条数numOfEdges。初始化AdjMGraph 中的成员变量线性表和边数及存放边的邻接矩阵。然后在顺序表中插入结点,在邻接矩阵中插入边,删除边,删除结点。取序号为V的结点的第一个邻接结点,取序号为V1的邻接结点V2结点的下一个邻接结点 1.4求最短路径 在该函数中,应该有四个参数,两个位输入参数,分别为带权图G和源点(景点起点)序号v0,两个为输出参数,分别为distance[]和path[],distance[]用来存放达到的从源点v0到其余各结点的最短距离,path[]用来存放最短路径的下标。 1、从江西农业大学的平面地图中选取出6个有代表性的景点。 2、为来访的客人提供图中任意景点的路径查询,即查询任意两个景点之间的最短简单路径。当用户输入正确时,为用户输出任意两景点的最短路径;当用户输入不合法时,提示用户输入有误并返回让用户重新输入。 3、为来访客人推荐参观最短路线。 2.概要设计 1.首先用邻接矩阵存储校园图。 2.用数据结构知识创建校园图。 3.手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。4.利用C语言知识编写查找景点相关信息的程序。 5.利用迪杰斯特拉算法计算任意两点之间的最短路径。 6.最后用一个主函数main输出各项结果。

校园导游咨询系统

石家庄经济学院 本科生课程设计报告书 题目校园导游咨询系统 姓名 学号 学院信息工程学院 专业计算机 指导教师 完成日期:2012年7 月5 日

校园导游咨询系统 1 需求分析 需要设计一个校园导游咨询系统,为来访的客人提供各种信息查询服务。 a)基本要求: 设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放有景点名称、代号、简介等信息;以边表示路径, 存放路径长度等相关信息。 为来访客人提供图中任意景点相关信息的查询。 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 b)问题分析: 系统要处理的数据有字符型、字符串型、浮点型,如景点的代号使用字符类型、景点名称及简介等信息用字符串型、路径的长度用浮点型 等。它们之间存在并列、包含等关系,采用线性单链表、图的邻接矩阵 等数据结构来存储数据。 c)系统完成的功能: 来访客人浏览校园全景 查询相关景点的信息 可查询所有浏览路线 来访客人可以查询从某一景点到另一景点的最短路径; d)程序设计分析: 构造一个无向带权网G并用邻接矩阵来存储; 利用弗洛伊德算法来计算出起点到各个顶点之间的最短路径并进行存储,弗洛伊德算法将找出每一对顶点之间的最短路径; e)系统的输入与输出: 键盘输入,磁盘输入、输出等。 f)系统的操作用例: 学校北门(0)学生公寓(1)博物馆(2)惠馨园(3)操场(4)图书馆(5)校医院(6)主楼(7)教学楼(8)实验 楼(9) 校园平面图顶点代码以及各顶点之间的权值所构成的邻接矩阵:

校园北门 学生公寓 校医院博物馆 惠馨园操场 图书馆 教学楼 实验楼 主楼 树 校园平面图 0 1 2 3 4 5 6 7 8 9 0 0 100 200 400 1 0 300 2 0 100 3 0 100 200 4 0 300 250 5 0 350 6 0 50 200 7 0 50 8 0 20 9

校园导游程序

洛阳理工学院 课程设计报告 课程名称数据结构课程设计 题目校园导游程序

课程设计任务书 1、设计题目:校园导游程序 2、设计内容与要求: [问题描述] 用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。[基本要求] (1)查询各景点的相关信息; (2)查询图中任意两个景点间的最短路径。 (3)查询图中任意两个景点间的所有路径。 (4)增加、删除、更新有关景点和道路的信息。 课程设计评语 成绩: 指导教师:_______________ 年月日

3、流程图 4、模块划分 (1)主函数:void main( ) (2)void CreateUDN(int v,int a); /* 造图函数*/ (3)void narrate(); /*说明函数*/ (4)void ShortestPath(int num); /*最短路径函数*/ (5)void output(int sight1,int sight2); /*输出函数*/ (6)char Menu(); /* 主菜单*/ (7)void search(); /* 查询景点信息*/ (8)char SearchMenu(); /* 查询子菜单*/ (9)void HaMiTonian(int); /*图的遍历*/ (10)void Searchpath1(MGraph g);/*查询两个景点间的所有路径*/ (11)void disppath(MGraph g,int i,int j); (12)void path(MGraph g,int i,int j,int k);/*确定路径上第k+1个顶点的序号*/(13)void NextValue(int); (14)void display(); /* 显示遍历结果*/ (15)int Addnewsight(int n); /*添加新的景点和路径*/

校园导游系统程序

课题五:校园导游程序 1)问题描述 用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。 2)基本要求 (1)查询各景点的相关信息; (2)查询图中任意两个景点间的最短路径。 (3)能够将图的信息保存到文件中,并指定文件打开。 (4)增加、删除、更新有关景点和道路的信息。 附加难度:有余力的同学可以考虑用图形界面实现寻址的过程 3) 设计思想 核心数据结构定义一个图,将图保存后,对图进行面向指定节点到各个节点的最短路径的操作。可以再文件中保存多个导游图,例如保存学校图、芜湖市图等文件。开始时选择文件,将指定文件中的信息导入到内存的图中。 #define Infinity 1000 #define MaxVertexNum 35 #define MAX 40 #include #include #include #include #include #include typedef struct arcell //边的权值信息 { int adj; //权值 }arcell,adjmatrix[MaxVertexNum][MaxVertexNum]; //图的邻接矩阵类型 typedef struct vexsinfo //顶点信息 { int position; //景点的编号 char name[32]; //景点的名称 char introduction[256]; //景点的介绍 }vexsinfo; typedef struct mgraph //图结构信息

校园导游咨询程序

实验三:校园导游咨询 一、设计方案简介 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 1)设计你所在学校的校园平面图, 2)为来访客人提供图中任意景点相关信息的查询。 3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 二、设计题目实现: 实际需求 1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息:以边表示路径,存放路径长度等相关信息。 2)为来访客人提供图中任意景点相关信息的查询。 3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 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.各个模块详细的功能描述。 Map();//显示校园整体的地图、包含学校各景点的详细位置 CreateGraph();//创建图、主要用来保存各景点信息 OutputPlace();//输出景点列表、供选择景点信息查询时使用 SearchPlace();//查询景点信息、景点的名称及介绍 SearchPath();//查询最短路径、两景点间最短距离 Shortpath(int i);//计算两景点间最短路径 Output(int sight1,int sight2);//输出两景点最短路径及信息 四.详细设计 1.功能函数的调用关系图 2.各功能函数的数据流程图 全局变量 Graph G; int path[NUM][NUM]; int D[NUM]; Main() CreateGraph() Map() SearchPlace() SearchPath() Outputplace() Shortpath(i); Output(i,j);

校园导游服务咨询系统C++(含源代码)说明书---2015

计算机科学与技术教研室 课程设计说明书(2014-2015学年第1学期) 注:成绩均用百分制。总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%

设计题目:校园附近门店服务查询系统 1、课程设计目的 (1)数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C++语言),自行实现一个较为完整的应用系统。 (2)通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。 (3)学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。 1)熟练掌握链表存储结构及其建立过程和常用操作; 2)学会自己调试程序的方法并掌握一定的技巧; 3)通过温习旧的知识,学习新知识,并提高分析和解决问题的能力。 2、课程设计正文 2.1概要设计 2.1.1 系统分析 该系统主要功能包括:增添服务信息、查询服务信息、修改服务信息、删除服务信息以及推荐路径等。 1.主程序模块:连接各种功能子模块,使用循环等待用户操作,完成程序的基本操作实现功能。 2.菜单显示模块:生成每个菜单的显示界面,使程序更简单清晰。 3.查询服务信息:用户在选择此功能模块后,按照屏幕上方提示的服务信息名称及其对应的编号,要求用户输入想要查询的服务信息的编号,回车后系统将在已存储的服务信息中进行匹配,若该景点信息尚未存储则将提示错误;若找到对应信息则系统将输出服务信息,显示于幕上方。 4.查询两服务信息最短路径:运用弗洛伊德算法,用户在选择此功能模块后,按照屏幕上方提示的服务信息名称及其对应的编号,要求用户输入起点和终点的编号,系统将在已存储的景点中进行匹配,若未找到所需查询的服务信息编号,系统将提示错误并要求用户再次输入。若输入信息合法,则回车后系统将给出最短路径,显示于屏幕上方。 5.删除服务信息:用户操作功能模块,由主程序直接调用的函数模块,将功能具象化,系统工具函数模块,先查找到所存在的服务信息,然后对用户希望删除的服务信息进行删除操作,若所要删除的服务信息不存在,则输出不存在此服务信息。

校园导游咨询系统源代码

#include//standard library标准库头文件 #include//标注输入输出函数头文件 #include//字符函数头文件 #define MAX 10000 //定义路程最远距离符号常量无穷大 #define MAX_VERTEX_NUM 10//定义的景点/顶点数量符号常量最大顶点数10个 typedef struct //定义一个结构体用于表示路径 { int adj; //路径长度权值 }Ar,Ad[10][10];//起点和终点变量名 typedef struct //定义一个结构体用于存放景点信息 { char name[30];//景点名 int num;//景点编号 char introduction[100];//景点介绍 }infotype;//景点信息变量名 typedef struct//用来定义一个图 { infotype vexs[10]; Ad arcs; int vexnum,arcnum; }MGraph; MGraph b; MGraph InitGraph()//初始化图形 { MGraph G; int i; int j;

G.vexnum=10; G.arcnum=10; for(i=0;i

校园导游咨询系统课程设计报告

目录 一、需求分析 (2) 二、概要设计 (2) 三、详细设计 (4) 四、设计和调试分析 (9) 五、用户手册 (9) 六、测试结果 (10) 1.操作命令符为s/S, (10) 2.操作命令符为v/V, (11) 3.操作符为v/V, (11) 4.操作符为e/E, (11) 5.综上可以查得: (12) 七、附录 (12) 参考文献 (13)

校园导游咨询系统 一、需求分析 1.从福建农林大学的平面图中选取28个有代表性的景点,抽象成一个无向带权图。以图中顶点表示景点,边上的权值表示两地间的距离。 2.本程序的目的是为了用户提供路径咨询,根据用户指定的始点和终点输出相应路径,或者根据用户指定的景点输出景点的信息。 3.测试数据(附后)。 二、概要设计 1.抽象数据类型图的定义如下: ADT { struct arcnode { int v; int w; struct arcnode *next; }; struct node { int degree; struct arcnode *first; }adjlist[28]; } 2.主程序 V oid mian(){ 初始化临接矩阵 windows(); / /初始化串口 getch(); } 3.函数定义的变量 #define infi 32767 #define MAX 28 int M,N; //无向图中的顶点M,无向图的变数 int adjmatrix[MAX][MAX]; // 保存临接矩阵的2唯数组 char *schoolIfo[MAX+1]={ //此数组用于界面显示信息 "null","东台-dt","金1-j1","金2-j2","金3-j3","金4-j4","食堂-st","田径场-tjc", "校大门-xdm","创业园-cyy","校医院-xyy","图书馆-tsg","映辉桥-yhq","观

校园导游系统

西安郵電大学 数据结构课程设计报告题目:校园导游系统 院系名称: 专业名称: 班级: 学生姓名: 学号(8位): 指导教师: 设计起止时间:2013年12月16日~2013年12月27日

一. 设计目的 (1)了解二叉树特性、存储及其操作实现,在计算机领域运用二叉树编译代码实现一件简单实际的操作,熟练掌握二叉树的三种遍历递归与非递归的实现;(2)掌握图的两种遍历深度优先遍历和广度优先遍历,了解两者的区别和优缺点。学习在计算机中表示和处理图形结构以及绘制简单的地图并输出,熟练掌握图的逻辑结构和存储结构,学习用算法来解决实际问题; (3)掌握邻接链表和邻接矩阵的存储结构,以及这两者的区别,会用邻接链表和邻接数组两种方法来实现数据的存储与读取; (4)巩固文件的存储与读取部分,以便能够加深对文件读写的理解和更好的更熟练的实际应用; (5)学会用计算机解决实际问题,将生活中的问题数据化,然后输入到计算机中以便更快的解决,提高自己的实践能力以及自身的学习能力,加深对课本知识的理解和掌握。 二. 设计内容 <1> 设计题目:设计一个校园导游程序,并按各要求进行编程: 要求: (1)设计并显示学校的校园平面图, 地点(地点名称、地点介绍), 路线(公里数)均不少于10个。 (2)提供图中任意地点相关信息的查询。 (3)提供图中任意地点的问路查询: 1>任意两个地点之间的一条最短的简单路径; (最短路径长度——中转次数最少) 2>任意两个地点之间的一条最佳访问路线; (带权(公里数)最短路径长度) 3>任意两个地点之间的所有简单路径。 (4)提供图中所有地点的最佳布网方案; (5)增加新地点和路线、撤销旧地点和路线。 三.概要设计

校园导游咨询讲解

《算法与数据结构》课程设计报告 班级:专业级班 姓名: 学号: 课程设计题目:校园导游咨询 所属课程:算法与数据结构 实验室(中心): 指导教师: 完成时间:年月日 学院信息科学与工程学院课程设计任务书

课程算法与数据结构 A 班级指导教师 题目校园导游咨询完成时间2015年6月23日至2015年7月3日 主要 内容 介绍校园的景点,同时提供任意两点之间最短的路径。 设计报告要求1.封面; 2.课程设计成绩单、课程设计任务书 3.内容提要; 4.“课程设计报告”正文部分: 主要应包括: ①问题分析和任务定义; ②环境简介; ③设计:主要是指数据结构与核心算法的设计描述;操作界面的设计;主要功能的算法框架;测试用例设计等内容(要求使用C++)。 ④编译参数与步骤的说明; ⑤上机调试总结与分析; ⑥用户使用说明; ⑦测试数据与测试结果等内容。 ⑧课程设计总结:可以包括课程设计过程的收获、遇到的问题及解决过程的思考、对数据结构这门课程的思考和认识等内容。 ⑨附录程序清单 5.参考文献 版面要求1.题目用黑体三号,段后距18磅(或1行),居中对齐; 2.标题用黑体四号,段前、段后距6磅(或0.3行); 3.正文用小四号宋体,行距为1.25倍行距; 4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。 指导时间安排 星期 周次 一二三四五六 17周 1-4节 1-4 节 18周1-4节5-8节 指导地点 专业实验室406/407 指导教师:信息科学与工程学院课程设计成绩单 课程名称:算法与数据结构A课程设计姓名

综合成绩 程序运行情况(占总成绩20%)□能正确运行 (20分) □基本能正确运行□能运行但结果不完善 (15分)(10分) 程序功能完善程度(占总成绩10%)□完善 (10分) □基本完善 (8分) □不完善 (5分) 程序结构的合理性(占总成绩10%)□合理 (10分) □基本合理 (8分) □不太合理 (5分) 对问题的答辩情况(占总成绩40%)□概念正确有创新□能正确回答所有问题 (40分)(35分) □部分问题回答概念不清晰 (20分) □基本能正确回答 (30分) 学生的工作态度与 独立工作能力 (占总成绩10%)□工作态度认真能独立完成任务□工作态度认真但独立性较差 (8分) □工作态度基本认真但缺乏独立性 (5分) 设计报告的规范性(占总成绩10%) (10分) □符合规范 (10分) □基本符合规范 (8分) □规范性较差 (5分)

相关主题
文本预览
相关文档 最新文档