C语言校园导游系统课程设计

海南大学

课程名称 数据结构(基于C 语言)课程设计 题 目 校园导游程序的设计与实现 院 系 _ 信息科学技术学院____ 班 级 __通信工程B 班_ 学生姓名 ___史兵全________ 指导教师 吴泽辉 日 期 _ 2014.12.15.-2015.1.7__

软件专题训练任务书

校园导游程序

一、简介

1.设计目的:通过校园导游程序的设计与实现,熟练掌握图型结构在实际问题中的应用。

2.问题的描述:设计一个校园模拟导游程序,为新生或来访的客人通过与机器的“对话“提供最短路径的信息查询服务。 1.任意

选取n 个场所,构成一个无向带权图,图中顶点表示场所,边上的权值表示两点间的距离,图的存储结构可采用带权的邻接矩阵。

2.咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:最短路径是多少?并指出所经过的场所。

3、计算并记录从校门口到各个场所的最短路径,即求单源点到其它各个场所的最短路径。

4、提供校园中任意场所的问路查询,即求任意两点之间的最短路径。

二、数据结构的设计:

由于各个场所通过校园中的道路相连,各个场所和连接它们的道路构成了整个校园的地理环境,所以使用图这种数据结构对他们去进行描述。以图中的顶点表示校园内各个场所,应包含场所名称、代号、简介等信息;以边表示连接各个场所的道路,应包含路径的长度等信息;顶点和边均使用结构体定义,整个图的数据结构采用教材中介绍的带权的邻接矩阵方法。

二、数据结构的设计:

typedef struct ArCell

{

int adj; //路径长度

}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct //图中顶点表示主要景点,存放景点的序号、名

称、介绍等信息,

{

char name[30];

int num;

char introduction[100];//简介

}infotype;

typedef struct

{

infotype vexs[MAX_VERTEX_NUM];

AdjMatrix arcs;

int vexnum,arcnum;

}MGraph;

MGraph b;

void cmd(void)

{

int i;

b=InitGraph();

Menu();

scanf("%d",&i);

while(i!=4)

{

switch(i)

{

case 1:Browser(&b);Menu();break;

case 2:ShortestPath_DIJ(&b);Menu();break;

case 3:Floyd(&b);Menu();break;

case 4:exit(1);break;

default: printf("输入序号不存在, 请重新输入");break; }

scanf("%d",&i);

}

MGraph InitGraph(void)

{

MGraph G;

int i,j;

G.vexnum=10;

G.arcnum=14;

for(i=0;i

G.vexs[i].num=i;

strcpy(G.vexs[0].name,"海南大学北门");

strcpy(G.vexs[0].introduction,"高大威武");

strcpy(G.vexs[1].name,"文化柱");

strcpy(G.vexs[1].introduction,"海大学子健康成长,激情飞扬的

地方");

strcpy(G.vexs[2].name,"图书楼");

strcpy(G.vexs[2].introduction,"藏书丰富,设施良好,知识的摇篮");

strcpy(G.vexs[3].name,"3号教学楼");

strcpy(G.vexs[3].introduction,"海大学子努力学习,坚持向上的场所 ");

strcpy(G.vexs[4].name,"第一田径场");

strcpy(G.vexs[4].introduction,"标准化跑道,适宜锻炼身体的场所");

strcpy(G.vexs[5].name,"男生宿舍楼");

strcpy(G.vexs[5].introduction,"房间设施良好,标准六人间"); strcpy(G.vexs[6].name,"海大餐厅");

strcpy(G.vexs[6].introduction,"厅内卫生整洁,环境宜人"); strcpy(G.vexs[7].name,"联谊馆");

strcpy(G.vexs[7].introduction,"内有乒乓球馆,排球馆,室内篮球馆等设施");

strcpy(G.vexs[8].name,"女生宿舍楼");

strcpy(G.vexs[8].introduction,"房间设施良好,标准六人间"); strcpy(G.vexs[9].name,"海大东门");

strcpy(G.vexs[9].introduction,"外有建设银行");

for(i=0;i

for(j=0;j

G.arcs[i][j].adj=INFINITY;

G.arcs[0][1].adj=100;

G.arcs[0][2].adj=80;

G.arcs[0][6].adj=100;

G.arcs[1][7].adj=120;

G.arcs[2][3].adj=50;

G.arcs[3][6].adj=110;

G.arcs[3][4].adj=150;

G.arcs[4][5].adj=60;

G.arcs[4][9].adj=280;

G.arcs[5][9].adj=250;

G.arcs[6][7].adj=190;

G.arcs[6][9].adj=180;

G.arcs[7][8].adj=130;

G.arcs[8][9].adj=100;

for(i=0;i

for(j=0;j

G.arcs[j][i].adj=G.arcs[i][j].adj;

return G;

}//InitGraph end

用的是一个switch 语句实现输入不同的序号操作选项,调用不同的

函数进入不同的操作板块

// 迪杰斯特拉算法计,v0为始点

void ShortestPath_DIJ(MGraph * G)

{

int v,w,i,min,t=0,x,flag=1,v0;

int final[20], D[20], p[20][20];

while(flag)

{

printf("请输入起始点序号:");

scanf("%d",&v0);

if(v0G->vexnum)

{

printf("输入错误,景点序号不存在! 请再次输入景点序号:"); scanf("%d",&v0);

}

if(v0>=0&&v0vexnum)

flag=0;

}

for(v=0;vvexnum;v++)

{

final[v]=0;

D[v]=G->arcs[v0][v].adj;

for(w=0;wvexnum;w++)

p[v][w]=0;

if(D[v]

{

p[v][v0]=1;p[v][v]=1;

}

}

D[v0]=0;final[v0]=1;

for(i=1;ivexnum;i++)

{

min=INFINITY;

for(w=0;wvexnum;w++)

if(!final[w])

if(D[w]

final[v]=1;

for(w=0;wvexnum;w++)

if(!final[w]&&(min+G->arcs[v][w].adj

D[w]=min+G->arcs[v][w].adj;

for(x=0;xvexnum;x++)

p[w][x]=p[v][x];

p[w][w]=1;

}

}

for(v=0;vvexnum;v++)

{

if(v0!=v) printf("%s",G->vexs[v0].name);

for(w=0;wvexnum;w++)

{

if(p[v][w]&&w!=v0) printf("-->%s",G->vexs[w].name); t++;

}

if(t>G->vexnum-1&&v0!=v)printf(" 总路长%dm\n\n",D[v]);

}

}//ShortestPath_DIJ end

void Floyd(MGraph *G)

{

int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10]; for(v=0;vvexnum;v++)

for(w=0;wvexnum;w++)

{ 线

D[v][w]=G->arcs[v][w].adj; for(u=0;uvexnum;u++) p[v][w][u]=0; if(D[v][w]

p[v][w][v]=1;p[v][w][w]=1; } }

for(u=0;uvexnum;u++) for(v=0;vvexnum;v++) for(w=0;wvexnum;w++) if(D[v][u]+D[u][w]

D[v][w]=D[v][u]+D[u][w]; for(i=0;ivexnum;i++)

p[v][w][i]=p[v][u][i]||p[u][w][i]; }

while(flag) {

printf("请输入始点和终点的序号:"); scanf("%d%d",&k,&j);

if(kG->vexnum||jG->vexnum) {

printf("景点序号错误! 请再次输入始点和终点的序号:"); scanf("%d%d",&k,&j); }

if(k>=0&&kvexnum&&j>=0&&jvexnum) flag=0; }

printf("%s",G->vexs[k].name); for(u=0;uvexnum;u++) if(p[k][j][u]&&k!=u&&j!=u) printf("-->%s",G->vexs[u].name); printf("-->%s",G->vexs[j].name); printf(" 总路线长%dm\n",D[k][j]); }//Floyd end

int LocateVex(MGraph *G,char* v) { int c=-1,i;

for(i=0;ivexnum;i++)

if(strcmp(v,G->vexs[i].name)==0) {c=i;break;}

return c; }

MGraph * CreatUDN(MGraph *G) {

int i,j,k,w; char v1[20],v2[20];

printf("输入图的顶点数, 弧数:"); scanf("%d%d",&G->vexnum,&G->arcnum); printf("输入景点的编号:、名称、介绍:\n"); for(i=0;ivexnum;i++) {

printf("景点序号:"); scanf("%d",&G->vexs->num); printf("景点名称:"); scanf("%s",G->vexs[i].name); printf("景点介绍:");

scanf("%s",G->vexs->introduction); }

for(i=0;ivexnum;i++) for(j=0;jvexnum;j++) G->arcs[i][j].adj=INFINITY; printf("请输入路径长度:\n");

{

printf("第%d条边:\n",k+1); printf("景点对(x,y):"); scanf("%s",v1); scanf("%s",v2); printf("路径长度:"); scanf("%d",&w); i=LocateVex(G,v1); j=LocateVex(G,v2); if(i>=0&&j>=0) {

G->arcs[i][j].adj=w; G->arcs[j][i]=G->arcs[i][j]; } } return G; }

void print(MGraph *G) {

int v,w,t=0;

for(v=0;vvexnum;v++)

{ if(G->arcs[v][w].adj==INFINITY) printf("∞ ");

else printf("%-7d",G->arcs[v][w].adj); t++;

if(t%G->vexnum==0) printf("\n"); } }

旅客进行查询:1. 查看校园各景点2. 查看所有游览线路; 3. 选择始点和终点 4. 退出程序

三、功能(函数)设计:

一.本程序从总体上分为四个功能模块,分别为: (1)查看校园各景点,这一功能主要为来客提供要查的信息。(2) 查看所有游览线路, 这一功能主要提供来客所要到达目的地的所有的线路,方便选择最短的的路线。(3)选择始点和终点 ,这一功能的实现为了找出所走线路中的最短路径(4). 退出程序

二,流程图如下

(1) 程序功能介绍和操作提示模块

(2)查看所有游览线路

带权最少的路径

(3)选择始点和终点

四、界面设计:

本程序界面本着易于操作简单整洁而不失美观的理念,采用数字对应功能选项,结合详细的操作提示,使得操作方便快捷,界面清晰明朗。

函数MGraph InitGraph():初始化图。 函数void Menu():创建菜单。

函数void Browser(MGraph *G):浏览全景。 函数void Search(MGraph *G):查询某点信息。

函数void Floyd(MGraph *G):查询任意两点之间的最短路径。 函数void ShortestPath_DIJ(MGraph * G) :查询校门口到其他各点之间的最短路径

六、运行与测试:

1、测试的数据及其结果: (1)浏览各景点选项功能

(2)选择查看校门口到各个景点的最短路径

(3)从各个景点中任意选择两景点之间的最短距离

(4)查询完毕,退出程序

2、运行与测试期间遇到的问题及其解决办法。

1. 对文件的输入、输出打开方式不够熟悉,导致输入输出信息有误,后参照教材等材料进行修改,使得程序正常进行;

2. 删除函数中循环使用不当,导致运行结果及写入文件结果错误,经修改后恢复正常;

3. 经过反复修改测试运行,程序功能基本实现,基本完成题目要求。 。

七、设计后的思考:

1. 首先经过这一个星期的紧张而又充实的课程设计,是我对数据结构这一门课程的相关知识有了全面深刻的认识,尤其是对图这一数据结构的相关知识掌握的更加全面和牢固,特别是对迪杰斯特拉算法的思想和具体实现更是经历了从不知所云到熟练运用的学习过程,同时也全面而又系统的复习了C++相关知识。 2. 此次课程设计最大的收获可以说是全面掌握了数据结构图的相关知识。虽说图这一章也是数据结构的终点,但是由于考试只考一些算法的思想,对具体的实现没有做要求,因此课程设计之前我对迪杰斯特拉算法可以说是一窍不通,更谈不上了解。经过几天的探索和同学的指点,终于可以运用迪杰斯特拉算法实现对无向网中各顶点间的最小路径和具体路径的求解。 3. 经过此次课程设计,使我懂得任何一门计算机语言学习,都是应该理论与实际的结合,光有理论知识是不行的。在以前的学习中,我往往知识以备考为目的,只注重对教材理论知识的学习,不注重实践,平时很少主动去写一些代码,从以前的C 语言到C++语言包括现在的数据结构都是这样一个情况。虽然在期末考试中往往有不错的表现,但是真正到要我自己动手去编写一个程序时,往往都是困难重重。 4. 学习无止境,但不代表这门课程的学习彻底结束,因为我还没掌握的

知识还有很多很多,就拿本次课程设计来说,在设计输出相关路径时,最初的设计思想是输出相关顶点的名称而不是其序号,因为这样就可以是相关的路径信息表达的更为直观明了,使用户更容易使用。但是真正到了实现的时候困难重重,最后只能退而求其次,用各顶点的序号代替其名称。这导致用户在查询相关路径信息时必须拿路径中所列出的序号同主登入界面中所列出的景点名称一一对照,加大了用户的工作量。这可谓是本系统的一大遗憾,所以我决定在寒暑假等课余时间将这些知识重新学习,达到真正对这门课程的掌握。

海南大学

课程名称 数据结构(基于C 语言)课程设计 题 目 校园导游程序的设计与实现 院 系 _ 信息科学技术学院____ 班 级 __通信工程B 班_ 学生姓名 ___史兵全________ 指导教师 吴泽辉 日 期 _ 2014.12.15.-2015.1.7__

软件专题训练任务书

校园导游程序

一、简介

1.设计目的:通过校园导游程序的设计与实现,熟练掌握图型结构在实际问题中的应用。

2.问题的描述:设计一个校园模拟导游程序,为新生或来访的客人通过与机器的“对话“提供最短路径的信息查询服务。 1.任意

选取n 个场所,构成一个无向带权图,图中顶点表示场所,边上的权值表示两点间的距离,图的存储结构可采用带权的邻接矩阵。

2.咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:最短路径是多少?并指出所经过的场所。

3、计算并记录从校门口到各个场所的最短路径,即求单源点到其它各个场所的最短路径。

4、提供校园中任意场所的问路查询,即求任意两点之间的最短路径。

二、数据结构的设计:

由于各个场所通过校园中的道路相连,各个场所和连接它们的道路构成了整个校园的地理环境,所以使用图这种数据结构对他们去进行描述。以图中的顶点表示校园内各个场所,应包含场所名称、代号、简介等信息;以边表示连接各个场所的道路,应包含路径的长度等信息;顶点和边均使用结构体定义,整个图的数据结构采用教材中介绍的带权的邻接矩阵方法。

二、数据结构的设计:

typedef struct ArCell

{

int adj; //路径长度

}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct //图中顶点表示主要景点,存放景点的序号、名

称、介绍等信息,

{

char name[30];

int num;

char introduction[100];//简介

}infotype;

typedef struct

{

infotype vexs[MAX_VERTEX_NUM];

AdjMatrix arcs;

int vexnum,arcnum;

}MGraph;

MGraph b;

void cmd(void)

{

int i;

b=InitGraph();

Menu();

scanf("%d",&i);

while(i!=4)

{

switch(i)

{

case 1:Browser(&b);Menu();break;

case 2:ShortestPath_DIJ(&b);Menu();break;

case 3:Floyd(&b);Menu();break;

case 4:exit(1);break;

default: printf("输入序号不存在, 请重新输入");break; }

scanf("%d",&i);

}

MGraph InitGraph(void)

{

MGraph G;

int i,j;

G.vexnum=10;

G.arcnum=14;

for(i=0;i

G.vexs[i].num=i;

strcpy(G.vexs[0].name,"海南大学北门");

strcpy(G.vexs[0].introduction,"高大威武");

strcpy(G.vexs[1].name,"文化柱");

strcpy(G.vexs[1].introduction,"海大学子健康成长,激情飞扬的

地方");

strcpy(G.vexs[2].name,"图书楼");

strcpy(G.vexs[2].introduction,"藏书丰富,设施良好,知识的摇篮");

strcpy(G.vexs[3].name,"3号教学楼");

strcpy(G.vexs[3].introduction,"海大学子努力学习,坚持向上的场所 ");

strcpy(G.vexs[4].name,"第一田径场");

strcpy(G.vexs[4].introduction,"标准化跑道,适宜锻炼身体的场所");

strcpy(G.vexs[5].name,"男生宿舍楼");

strcpy(G.vexs[5].introduction,"房间设施良好,标准六人间"); strcpy(G.vexs[6].name,"海大餐厅");

strcpy(G.vexs[6].introduction,"厅内卫生整洁,环境宜人"); strcpy(G.vexs[7].name,"联谊馆");

strcpy(G.vexs[7].introduction,"内有乒乓球馆,排球馆,室内篮球馆等设施");

strcpy(G.vexs[8].name,"女生宿舍楼");

strcpy(G.vexs[8].introduction,"房间设施良好,标准六人间"); strcpy(G.vexs[9].name,"海大东门");

strcpy(G.vexs[9].introduction,"外有建设银行");

for(i=0;i

for(j=0;j

G.arcs[i][j].adj=INFINITY;

G.arcs[0][1].adj=100;

G.arcs[0][2].adj=80;

G.arcs[0][6].adj=100;

G.arcs[1][7].adj=120;

G.arcs[2][3].adj=50;

G.arcs[3][6].adj=110;

G.arcs[3][4].adj=150;

G.arcs[4][5].adj=60;

G.arcs[4][9].adj=280;

G.arcs[5][9].adj=250;

G.arcs[6][7].adj=190;

G.arcs[6][9].adj=180;

G.arcs[7][8].adj=130;

G.arcs[8][9].adj=100;

for(i=0;i

for(j=0;j

G.arcs[j][i].adj=G.arcs[i][j].adj;

return G;

}//InitGraph end

用的是一个switch 语句实现输入不同的序号操作选项,调用不同的

函数进入不同的操作板块

// 迪杰斯特拉算法计,v0为始点

void ShortestPath_DIJ(MGraph * G)

{

int v,w,i,min,t=0,x,flag=1,v0;

int final[20], D[20], p[20][20];

while(flag)

{

printf("请输入起始点序号:");

scanf("%d",&v0);

if(v0G->vexnum)

{

printf("输入错误,景点序号不存在! 请再次输入景点序号:"); scanf("%d",&v0);

}

if(v0>=0&&v0vexnum)

flag=0;

}

for(v=0;vvexnum;v++)

{

final[v]=0;

D[v]=G->arcs[v0][v].adj;

for(w=0;wvexnum;w++)

p[v][w]=0;

if(D[v]

{

p[v][v0]=1;p[v][v]=1;

}

}

D[v0]=0;final[v0]=1;

for(i=1;ivexnum;i++)

{

min=INFINITY;

for(w=0;wvexnum;w++)

if(!final[w])

if(D[w]

final[v]=1;

for(w=0;wvexnum;w++)

if(!final[w]&&(min+G->arcs[v][w].adj

D[w]=min+G->arcs[v][w].adj;

for(x=0;xvexnum;x++)

p[w][x]=p[v][x];

p[w][w]=1;

}

}

for(v=0;vvexnum;v++)

{

if(v0!=v) printf("%s",G->vexs[v0].name);

for(w=0;wvexnum;w++)

{

if(p[v][w]&&w!=v0) printf("-->%s",G->vexs[w].name); t++;

}

if(t>G->vexnum-1&&v0!=v)printf(" 总路长%dm\n\n",D[v]);

}

}//ShortestPath_DIJ end

void Floyd(MGraph *G)

{

int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10]; for(v=0;vvexnum;v++)

for(w=0;wvexnum;w++)

{ 线

D[v][w]=G->arcs[v][w].adj; for(u=0;uvexnum;u++) p[v][w][u]=0; if(D[v][w]

p[v][w][v]=1;p[v][w][w]=1; } }

for(u=0;uvexnum;u++) for(v=0;vvexnum;v++) for(w=0;wvexnum;w++) if(D[v][u]+D[u][w]

D[v][w]=D[v][u]+D[u][w]; for(i=0;ivexnum;i++)

p[v][w][i]=p[v][u][i]||p[u][w][i]; }

while(flag) {

printf("请输入始点和终点的序号:"); scanf("%d%d",&k,&j);

if(kG->vexnum||jG->vexnum) {

printf("景点序号错误! 请再次输入始点和终点的序号:"); scanf("%d%d",&k,&j); }

if(k>=0&&kvexnum&&j>=0&&jvexnum) flag=0; }

printf("%s",G->vexs[k].name); for(u=0;uvexnum;u++) if(p[k][j][u]&&k!=u&&j!=u) printf("-->%s",G->vexs[u].name); printf("-->%s",G->vexs[j].name); printf(" 总路线长%dm\n",D[k][j]); }//Floyd end

int LocateVex(MGraph *G,char* v) { int c=-1,i;

for(i=0;ivexnum;i++)

if(strcmp(v,G->vexs[i].name)==0) {c=i;break;}

return c; }

MGraph * CreatUDN(MGraph *G) {

int i,j,k,w; char v1[20],v2[20];

printf("输入图的顶点数, 弧数:"); scanf("%d%d",&G->vexnum,&G->arcnum); printf("输入景点的编号:、名称、介绍:\n"); for(i=0;ivexnum;i++) {

printf("景点序号:"); scanf("%d",&G->vexs->num); printf("景点名称:"); scanf("%s",G->vexs[i].name); printf("景点介绍:");

scanf("%s",G->vexs->introduction); }

for(i=0;ivexnum;i++) for(j=0;jvexnum;j++) G->arcs[i][j].adj=INFINITY; printf("请输入路径长度:\n");

{

printf("第%d条边:\n",k+1); printf("景点对(x,y):"); scanf("%s",v1); scanf("%s",v2); printf("路径长度:"); scanf("%d",&w); i=LocateVex(G,v1); j=LocateVex(G,v2); if(i>=0&&j>=0) {

G->arcs[i][j].adj=w; G->arcs[j][i]=G->arcs[i][j]; } } return G; }

void print(MGraph *G) {

int v,w,t=0;

for(v=0;vvexnum;v++)

{ if(G->arcs[v][w].adj==INFINITY) printf("∞ ");

else printf("%-7d",G->arcs[v][w].adj); t++;

if(t%G->vexnum==0) printf("\n"); } }

旅客进行查询:1. 查看校园各景点2. 查看所有游览线路; 3. 选择始点和终点 4. 退出程序

三、功能(函数)设计:

一.本程序从总体上分为四个功能模块,分别为: (1)查看校园各景点,这一功能主要为来客提供要查的信息。(2) 查看所有游览线路, 这一功能主要提供来客所要到达目的地的所有的线路,方便选择最短的的路线。(3)选择始点和终点 ,这一功能的实现为了找出所走线路中的最短路径(4). 退出程序

二,流程图如下

(1) 程序功能介绍和操作提示模块

(2)查看所有游览线路

带权最少的路径

(3)选择始点和终点

四、界面设计:

本程序界面本着易于操作简单整洁而不失美观的理念,采用数字对应功能选项,结合详细的操作提示,使得操作方便快捷,界面清晰明朗。

函数MGraph InitGraph():初始化图。 函数void Menu():创建菜单。

函数void Browser(MGraph *G):浏览全景。 函数void Search(MGraph *G):查询某点信息。

函数void Floyd(MGraph *G):查询任意两点之间的最短路径。 函数void ShortestPath_DIJ(MGraph * G) :查询校门口到其他各点之间的最短路径

六、运行与测试:

1、测试的数据及其结果: (1)浏览各景点选项功能

(2)选择查看校门口到各个景点的最短路径

(3)从各个景点中任意选择两景点之间的最短距离

(4)查询完毕,退出程序

2、运行与测试期间遇到的问题及其解决办法。

1. 对文件的输入、输出打开方式不够熟悉,导致输入输出信息有误,后参照教材等材料进行修改,使得程序正常进行;

2. 删除函数中循环使用不当,导致运行结果及写入文件结果错误,经修改后恢复正常;

3. 经过反复修改测试运行,程序功能基本实现,基本完成题目要求。 。

七、设计后的思考:

1. 首先经过这一个星期的紧张而又充实的课程设计,是我对数据结构这一门课程的相关知识有了全面深刻的认识,尤其是对图这一数据结构的相关知识掌握的更加全面和牢固,特别是对迪杰斯特拉算法的思想和具体实现更是经历了从不知所云到熟练运用的学习过程,同时也全面而又系统的复习了C++相关知识。 2. 此次课程设计最大的收获可以说是全面掌握了数据结构图的相关知识。虽说图这一章也是数据结构的终点,但是由于考试只考一些算法的思想,对具体的实现没有做要求,因此课程设计之前我对迪杰斯特拉算法可以说是一窍不通,更谈不上了解。经过几天的探索和同学的指点,终于可以运用迪杰斯特拉算法实现对无向网中各顶点间的最小路径和具体路径的求解。 3. 经过此次课程设计,使我懂得任何一门计算机语言学习,都是应该理论与实际的结合,光有理论知识是不行的。在以前的学习中,我往往知识以备考为目的,只注重对教材理论知识的学习,不注重实践,平时很少主动去写一些代码,从以前的C 语言到C++语言包括现在的数据结构都是这样一个情况。虽然在期末考试中往往有不错的表现,但是真正到要我自己动手去编写一个程序时,往往都是困难重重。 4. 学习无止境,但不代表这门课程的学习彻底结束,因为我还没掌握的

知识还有很多很多,就拿本次课程设计来说,在设计输出相关路径时,最初的设计思想是输出相关顶点的名称而不是其序号,因为这样就可以是相关的路径信息表达的更为直观明了,使用户更容易使用。但是真正到了实现的时候困难重重,最后只能退而求其次,用各顶点的序号代替其名称。这导致用户在查询相关路径信息时必须拿路径中所列出的序号同主登入界面中所列出的景点名称一一对照,加大了用户的工作量。这可谓是本系统的一大遗憾,所以我决定在寒暑假等课余时间将这些知识重新学习,达到真正对这门课程的掌握。


相关文章

  • 校园导游系统程序 课程设计 报告 1
  • 目录 1.需求分析 ................................. 错误!未定义书签. 2.设计思路 ................................. 错误!未定义书签. 3.算法设计 ........ ...查看


  • 校园导游系统程序__课程设计_报告
  • 1.需求分析 设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询. (1).设计工商学院校园无向图,所含的景点不少于10个.以图中顶点表示校内各景点,存放景点名称.代号.简介等信息:以边表示路径,存放路径长度等相关信息. (2). ...查看


  • 旅游英语专业教学基本要求
  • 高等职业教育旅游英语专业教学基本要求 专业名称 旅游英语 专业代码 660109 招生对象 普通高中毕业生/"三校生"(职高.中专.技校毕业生) 学制与学历 三年制,专科 就业面向 初始岗位群:从事英语导游.旅行社经营管 ...查看


  • 旅游英语专业课程标准
  • <综合英语>学习领域课程标准 一.课程性质与任务 1. 课程性质: 本课程是既是商务专业和旅游英语专业的专业基础课,又是核心课程.通过学习该门课,学生可以学到英语语言知识,并能培养学生运用语言知识的综合能力.本课程传授系统的语音 ...查看


  • 随着我国经济的飞速发展
  • 一, 专业建设的必要性 随着我国经济的飞速发展, 人民的生活水平不断提高, 在满足了基本物质文化需求的基础上, 旅游成为当前生活的时尚之一.很多家庭把旅游的目标放在了出境游.目前中国公民境外游的目的国已达134个.2010 年中国出境旅游人 ...查看


  • 导游业务课程标准 1
  • 23.<导游业务>课程标准 适用专业:旅游服务与管理专业 课程代码:083109B 学时:56 (一)课程性质 <导游业务>是旅游服务与管理专业的一门专业核心课程.开设本课程的目的,在于使学生全面掌握导游服务的基本程 ...查看


  • 北京美国英语语言学院
  • 北京美国英语语言学院 1. 院长寄语 大学教育是一个人最重要的成长经历,一所适合自己的大学将深刻地影响你的一生.面对众多的高校,你的选择至关重要. 作为北京市第一家中外合作办学的民办高校,北京美国英语语言学院早在1993年成立之初就敏锐地发 ...查看


  • 南京师范大学
  • 南京师范大学 2009年成人高等教育招生简章 南京师范大学继续教育学院 地址:南京市宁海路122号 邮编:210097 咨询电话:025-83598134 83598275 网址:http://202.119.98.7 南京师范大学简介 南 ...查看


  • 2013级旅游管理专业人才培养方案 -
  • 辽宁职业学院2013级旅游管理专业 人才培养方案 一.专业人才需求调研 (一)调研的指导思想 为了科学.合理的制定2012级旅游管理专业人才培养方案,使其符合社会 和旅游企业职业岗位对人才的需求,本专业教师利用寒假时间集中小组走访.电 话访 ...查看


热门内容