当前位置:文档之家› 数据结构校园导游咨询系统课程设计报告及课程总结

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

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

姓名:

班级:

学号:

指导教师:

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、查询景点信息:用户在选择此功能模块后,按照屏幕上方提示的景点名称及其对应的编号,要求用户输入想要查询的景点的编

号,回车后系统将在已存储的景点中进行匹配,若该景点信息尚未存储则将提示错误;若找到对应信息则系统将输出景点信息,显示于幕上方;

3、退出系统:用户在使用完本系统后,选择此功能模块,系统提示“欢迎再次使用”后,按任意键系统将自动退出。

2、概要设计

2.1 系统功能结构图

2.2 系统流程图

2.3 主要函数概要设计

2.3.1 主函数概要设计

主函数首先是调用初始化图函数InitGraph()函数创建一个图,而后调用显示主界面函数显示一个可视化主界面,内容包含本系统LOGO以及景点信息及操作编号的提示信息。之后,当用户成功输入

操作编号后,使用一个switch()函数,判断用户所需操作,匹配成功后,调用相关函数实现用户所需功能。

2.3.2 初始化图函数InitGraph()

InitGraph()函数首先使用MyGraph结构体声明一个用于存储图中信息的结构体,而后定义结构体中的景点数量以及路径数量,然后使用循环为景点信息和路径长度赋值,其中赋值景点信息时使用strcpy()函数将字符串复制给G.siteArray[i].siteName以及

G.siteArray[i].siteInfo两个数组。

2.3.3 显示主界面函数设计MainGraph()

MainGraph()函数主要用于显示主界面,函数中设计了本系统LOGO,同时,界面还提示了景点名称及其对应编号。主界面下方以列表方式提示用户系统可进行的操作及其对应编号,最后提示用户进行输入。

2.3.4 查询景点信息函数设计SearchGraph()

该函数首先定义了一个变量k(用于接收用户输入的查询编号)和一个标记位flag(初始值设为1),而后使用while()循环,判断条件为flag=1,当输入编号不合法时提示错误,当输入合法时标记位flag 置为0,此时跳出循环,调用MyGraph结构体对应编号的景点信息,以列表方式输出。

2.3.5 显示图中信息函数设计ShowGraph()

ShowGraph()函数主要功能为用循环将存储于图中的景点信息以

列表方式输出,方便用户对应着进行输入,同时提示用户进行输入。

2.3.6 弗洛伊德算法函数设计Floyd()

本算法在设计时参考了《数据结构C语言版》一书中有关Floyd 算法的介绍,同时借鉴了如今网上流行的设计方式。之所以选择本算法来实现计算最短路径,原因在于本算法容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。但是,本算法缺点在于时间复杂度过高,不适合用于计算大量数据。

Floyd算法首先将两景点间路径长度数据存储于数组D[v][w]中,而后使用一个三维数组用于存放最短路径所经过的顶点,接下来使用三重循环判断两景点之间直接路径是否大于间接路径,若大于,则将三维数组中存放的顶点信息更改为简介路径所经过的顶点信息。

以上部分完成后,当用于标记输入数据是否合法的flag=1时,输出错误信息,提示用户重新输入,当输入数据合法时,输出以上程序得到结果。

3、详细设计

3.1 主函数详细设计

#define InfiniteNum 10000 //定义一个无穷大数

#define MaxInfoNum 100 //定义景点数据最大容量

#include

#include

#include

#include"MyGraph.h" //调用头文件

void main(void)

{ MGraph g; //创建图

int i;

g = InitGraph(); //初始化校园地图

MainGraph(&g); //调用显示主界面函数

scanf("%d",&i);

while(i!=3)

{

switch(i)

{

case 1:ShowGraph(&g);Floyd(&g);MainGraph(&g);break;

case 2:ShowGraph(&g);SearchGraph(&g);MainGraph(&g);break;

case 3:exit(0);break;

default:break;

}

scanf("%d",&i);

}

printf("欢迎下次继续使用 !\n\n");

}

3.2初始化图函数详细设计InitGraph()

MGraph InitGraph(void) //初始化图中的信息

{

MGraph G;

int i,j;

G.siteNumber = 6; //景点数量

G.pathNumber = 8; //路径数量

for(i=1;i<=G.siteNumber;i++)

G.siteArray[i].siteIdentifier = i; //对景点进行对应编号

strcpy(G.siteArray[1].siteName,"一教");

strcpy(G.siteArray[1].siteInfo,"最有历史的教学楼");

strcpy(G.siteArray[2].siteName,"软件学院");

strcpy(G.siteArray[2].siteInfo,"规模庞大,师资雄厚,全校第二大院"); strcpy(G.siteArray[3].siteName,"老图书馆");

strcpy(G.siteArray[3].siteInfo,"说实话,太破了!");

strcpy(G.siteArray[4].siteName,"校门");

strcpy(G.siteArray[4].siteInfo,"有点小家子气,规模太小");

strcpy(G.siteArray[5].siteName,"新图书馆");

strcpy(G.siteArray[5].siteInfo,"邵逸夫先生捐赠的,设施较为完备,最常去的地方");

strcpy(G.siteArray[6].siteName,"南区食堂");

strcpy(G.siteArray[6].siteInfo,"价格尚算公道,但卫生状况较为堪忧,已经吃出好几次头发了");

for(i = 1;i<=G.siteNumber;i++) //使用循环对路径进行赋

值,对于没有直接路径的,赋值为无穷大

for(j = 1;j<=G.siteNumber;j++)

G.pathArray[i][j].path = InfiniteNum;

G.pathArray[1][2].path = 200;

G.pathArray[1][3].path = 100;

G.pathArray[1][4].path = 400;

G.pathArray[2][4].path = 300;

G.pathArray[4][5].path = 100;

G.pathArray[4][6].path = 500;

G.pathArray[5][6].path = 500;

for(i = 1;i<=G.siteNumber;i++) //所构造的图为无向图,故

相反方向路径相同

for(j = 1;j<=G.siteNumber;j++)

G.pathArray[j][i].path = G.pathArray[i][j].path;

return G;

}

3.3查询景点信息函数详细设计SearchGraph()

void SearchGraph(MGraph *G) //用于查询景点信息,以列表方式

输出

{

int k,flag=1;

while(flag)

{

printf(" 请输入要查询的景点编号:");

scanf("%d",&k);

if(k<=0||k>G->siteNumber) //输入景点编号不合法时提示错误

{

printf(" 景点编号不存在!请重新输入

景点编号:");

scanf("%d",&k);

}

if(k>0&&k<=G->siteNumber) // 输入合法时将 falg 置为 0

flag=0;

}

printf(" \n");

printf(" 编号景点名称简介 \n");

printf(" %-4d %-16s %-62s

\n",G->siteArray[k].siteIdentifier,G->siteArray[k].siteName,G->siteAr

ray[k].siteInfo); //输出景点信息

3.4 弗洛伊德算法函数详细设计Floyd()

void Floyd(MGraph *G) //使用弗洛伊德算法2求出最短路径

{

int v,u,i,w,k,j;

int flag = 1; //用于标记输入数据是否正确,若输入数据符合要求,则将 flag 置为0

int p[7][7][7],D[7][7];

for(v = 1;v <= G->siteNumber;v++)

for(w = 1;w<=G->siteNumber;w++)

{

D[v][w] = G->pathArray[v][w].path; //将路径数据存放至数组 D[v][w] 中

for(u = 1;u<=G->siteNumber;u++)

p[v][w][u]=0; //该三维数组用于存放两景点之间是否有直接路径,若有则记为1,无则记为0

if(D[v][w] < InfiniteNum)

{

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

}

}

for(u = 1;u<=G->siteNumber;u++)

for(v = 1;v<=G->siteNumber;v++)

for(w = 1;w<=G->siteNumber;w++)

if(D[v][u] + D[u][w]

{

D[v][w] = D[v][u]+D[u][w];

for(i = 1;i<=G->siteNumber;i++)

p[v][w][i] = p[v][u][i]||p[u][w][i]; //获取两点之间路径所经过的景点编号

}

while(flag)

{

printf(" 请输入出发点和目的地的编号:");

scanf("%d%d",&k,&j);

if(k<=0||k>G->siteNumber||j<=0||j>G->siteNumber)

{

printf(" 景点编号不存在!请重新输入:");

scanf("%d\n%d",&k,&j);

}

if(k==j)

{

printf(" 出发点和目的地一样!请重新输入:");

scanf("%d\n%d",&k,&j);

}

if(k>0&&k<=G->siteNumber&&j>0&&j<=G->siteNumber)

flag=0; //输入的数据合法,故将 flag = 0

}

printf("\n最短游览路线:%s",G->siteArray[k].siteName);

if(k>j){

for(u = G->siteNumber;u>0;u--)

if(p[k][j][u] && k!=u && j!=u)

printf("-->%s",G->siteArray[u].siteName);}

if(k

for(u=1;u<=G->siteNumber;u++)

if(p[k][j][u] && k!=u && j!=u)

printf("-->%s",G->siteArray[u].siteName);}

printf("-->%s",G->siteArray[j].siteName);

printf(" 总路线长%dm\n",D[k][j]);

}

4、调试分析

4.1 显示主界面函数测试

显示主界面函数必须实现提示景点名称及其对应编号,主界面下方以列表方式提示用户系统可进行的操作及其对应编号,最后提示用户进行输入。经测试结果如下:

4.2 查找两景点间最短路径测试

本功能模块要求在按照景点信息列表中提示的信息用户输入起点编号和终点标号后输出最短路径,经测试后该功能能够实现,没有何错误。测试结果如下图:

输入起点和终点:

输出最短路径:

4.3 查看景点信息测试

本功能模块要求在用户输入景点编号后,系统和已存储的景点信

息进行配对,如果景点不存在,则提示错误,若景点存在则输出景点信息,经测试,达到了预期效果,且容错处理正常运行。测试结果如下:

5.课程设计总结

经过这次课程设计,我对程序中算法的概念理解的更加透彻。算法是程序中必不可少的部分,它是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。同时,在选择

算法时必须考虑算法的时间复杂度和空间复杂度,这样才能让程序正常,高效的运行。

在系统设计时也碰到了很多问题,比如在设计InitGraph()函数时,首先我想到的是使用数组来保存信息,但发现这种设计无法方便的让程序中各个独立算法访问存储的景点信息,编写代码时十分复杂,后来,在出查阅相关书籍和阅读了网上其它相关算法后,我选择了使用结构体数组来保存信息,这种方式顺利地将信息保存到了图中,同时其它函数模块也可以方便的访问这部分信息,达到了我想要实现的功能。

《数据结构》在计算机科学中是一门综合性的专业基础课.数据结构的研究不仅涉及到计算机的硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题.在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方面.因此,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程.在计算机科学中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础。

6、附录

源程序清单:

//以下保存在头文件“MyGraph.h”中

typedef struct //定义用于存放权值的结构体

{

int path; //路径长度

}ArCell,AdjMatrix[MaxInfoNum][MaxInfoNum];

typedef struct

{

char siteName[30]; // 用于存放景点名称

int siteIdentifier; //用于存放景点编号

char siteInfo[200]; //用于存放景点信息

}infoType;

typedef struct

{

infoType siteArray[MaxInfoNum]; // 景点数组 ,用于存放景点名及景点信息AdjMatrix pathArray; // 路径数组

int siteNumber; // 景点数量

int pathNumber; // 路径总数量

}MGraph;

MGraph InitGraph(void) //初始化图中的信息

{

MGraph G;

int i,j;

G.siteNumber = 6; //景点数量

G.pathNumber = 8; //路径数量

for(i=1;i<=G.siteNumber;i++)

G.siteArray[i].siteIdentifier = i; //对景点进行对应编号

strcpy(G.siteArray[1].siteName,"一教");

strcpy(G.siteArray[1].siteInfo,"最有历史的教学楼");

strcpy(G.siteArray[2].siteName,"软件学院");

strcpy(G.siteArray[2].siteInfo,"规模庞大,师资雄厚,全校第二大院");

strcpy(G.siteArray[3].siteName,"老图书馆");

strcpy(G.siteArray[3].siteInfo,"说实话,太破了!");

strcpy(G.siteArray[4].siteName,"校门");

strcpy(G.siteArray[4].siteInfo,"有点小家子气,规模太小");

strcpy(G.siteArray[5].siteName,"新图书馆");

strcpy(G.siteArray[5].siteInfo,"邵逸夫先生捐赠的,设施较为完备,最常去的地方");

strcpy(G.siteArray[6].siteName,"南区食堂");

strcpy(G.siteArray[6].siteInfo,"价格尚算公道,但卫生状况较为堪忧,已经吃出好几次头发了");

for(i = 1;i<=G.siteNumber;i++) //使用循环对路径进行赋值,对于没

有直接路径的,赋值为无穷大

for(j = 1;j<=G.siteNumber;j++)

G.pathArray[I][j].path = Infinite;

G.pathArray[1][2].path = 200;

G.pathArray[1][3].path = 100;

G.pathArray[1][4].path = 400;

G.pathArray[2][4].path = 300;

G.pathArray[4][5].path = 100;

G.pathArray[4][6].path = 500;

G.pathArray[5][6].path = 500;

for(I = 1;i<=G.siteNumber;i++) //所构造的图为无向图,故相反方向路径相同

for(j = 1;j<=G.siteNumber;j++)

G.pathArray[j][i].path = G.pathArray[i][j].path;

return G;

}

void Floyd(MGraph *G) //使用弗洛伊德算法2求出最短路径

{

int v,u,i,w,k,j;

int flag = 1; //用于标记输入数据是否正确,若输入数据符合要求,则将 flag 置为0

int p[7][7][7],D[7][7];

for(v = 1;v <= G->siteNumber;v++)

for(w = 1;w<=G->siteNumber;w++)

{

D[v][w] = G->pathArray[v][w].path; //将路径数据存放至数组 D[v][w] 中

for(u = 1;u<=G->siteNumber;u++)

p[v][w][u]=0; //该三维数组用于存放两景点之间是否有直接路径,若有则记为1,无则记为0

if(D[v][w] < InfiniteNum)

{

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

}

}

for(u = 1;u<=G->siteNumber;u++)

for(v = 1;v<=G->siteNumber;v++)

for(w = 1;w<=G->siteNumber;w++)

if(D[v][u] + D[u][w]

{

D[v][w] = D[v][u]+D[u][w];

for(i = 1;i<=G->siteNumber;i++)

p[v][w][i] = p[v][u][i]||p[u][w][i]; //获取两点之间路径所经过的景点编号

}

while(flag)

{

printf(" 请输入出发点和目的地的编号:");

scanf("%d%d",&k,&j);

if(k<=0||k>G->siteNumber||j<=0||j>G->siteNumber)

{

printf(" 景点编号不存在!请重新输入:");

scanf("%d\n%d",&k,&j);

}

if(k==j)

{

printf(" 出发点和目的地一样!请重新输入:");

scanf("%d\n%d",&k,&j);

}

if(k>0&&k<=G->siteNumber&&j>0&&j<=G->siteNumber)

flag=0; //输入的数据合法,故将flag = 0

}

printf("\n最短游览路线:%s",G->siteArray[k].siteName);

if(k>j){

for(u = G->siteNumber;u>0;u--)

if(p[k][j][u] && k!=u && j!=u)

printf("-->%s",G->siteArray[u].siteName);}

if(k

for(u=1;u<=G->siteNumber;u++)

if(p[k][j][u] && k!=u && j!=u)

printf("-->%s",G->siteArray[u].siteName);}

printf("-->%s",G->siteArray[j].siteName);

printf(" 总路线长%dm\n",D[k][j]);

}

void MainGraph(MGraph *G) //调用此函数可实现输出主界面功能{

int i;

printf("**************************江西农业大学校园导游系统*****************************\n");

printf("\n");

printf(" -----------输入命令后最短路径或景点信息显示于屏幕上方------------ \n");

printf("\n");

printf(" 编号景点名称 \n");

for(i = 1;i <= G->siteNumber; i++ ){

printf(" %-4d % -12s

\n",G->siteArray[i].siteIdentifier,G->siteArray[i].siteName);

}

printf("\n");

printf(" \n");

printf(" 编号功能 \n");

printf(" \n");

printf(" 1 查找两景点间最短路径

\n");

printf(" \n");

printf(" 2 查看景点信息

\n");

printf(" \n");

printf(" 3 退出系统

\n");

printf(" \n");

printf(" 请输入您的操作编号:");

}

void SearchGraph(MGraph *G) //用于查询景点信息,以列表方式输出

{

int k,flag=1;

while(flag)

{

printf(" 请输入要查询的景点编号:");

scanf("%d",&k);

if(k<=0||k>G->siteNumber) //输入景点编号不合法时提示错误

{

printf(" 景点编号不存在!请重新输入景点编

号:");

scanf("%d",&k);

}

if(k>0&&k<=G->siteNumber) // 输入合法时将 falg 置为 0

flag=0;

}

printf(" \n");

printf(" 编号景点名称简介 \n");

printf(" %-4d %-16s %-62s

\n",G->siteArray[k].siteIdentifier,G->siteArray[k].siteName,G->siteArray[k].sit

eInfo); //输出景点信息

}

void ShowGraph(MGraph *G) // 将图中的信息打印出来

{

int i;

printf(" 编号景点名称 \n");

for(i = 1;i<=G->siteNumber;i++)

printf(" %-4d %-12s \n",G->siteArray[i].siteIdentifier,G->siteArray[i].siteName);

}

//以下为主函数:

#define InfiniteNum 10000 //定义一个无穷大数

#define MaxInfoNum 100 //定义景点数据最大容量

#include

#include

#include

#include"MyGraph.h" //调用头文件

void main(void)

{ MGraph g; //创建图

int i;

g = InitGraph(); //初始化校园地图

MainGraph(&g); //调用显示主界面函数

scanf("%d",&i);

while(i!=3)

{

switch(i)

{

case 1:ShowGraph(&g);Floyd(&g);MainGraph(&g);break;

case 2:ShowGraph(&g);SearchGraph(&g);MainGraph(&g);break;

case 3:exit(0);break;

default:break;

}

scanf("%d",&i);

}

printf("欢迎下次继续使用 !\n\n");

课程设计的总结报告

课程设计的总结报告 ----WORD文档,下载后可编辑修改---- 下面是小编收集整理的范本,欢迎您借鉴参考阅读和下载,侵删。您的努力学习是为了更美好的未来! 课程设计的总结报告篇一首先我们由衷的感谢老师提供给我们这样一个锻炼自己的机会,经过这四周的学习,本次课程设计即将结束,总的来说,经过这门课的学习收获还是相当大的。回顾这段时间的课程设计,至今我仍感慨万分。的确,从选材到开始制作,从理论到实践,在四周的实训日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,可以说是困难重重,并且在设计的过程中发现了自己的很多不足之处,发现自己对之前所学过的知识理解得不够深刻,掌握得不够牢固,有待加强。 生活就是这样,汗水预示着结果但是也见证着收获,劳动是人类生存、生活永恒不变的话题,通过实训,我才真正领略到“艰苦奋斗”这一词的真正含义。我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以。而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少欢乐在这里洒下。我想说,之前的时间确实很累,但当我们看到自己所做的劳动成果时,心中也不免产生兴奋。也许有人不喜欢这类的工作,也许有人认为编程的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就够了,而且这也是最主要的,社会需要我们,我们也可以为社会而工作。 我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神,某个人的离群都可能导致整项工作的失败。实训中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个项目失败,团结协作是我们实训成功的一项非常重要的保证。而这次实

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

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算法求两

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

数据结构课程设计 设计题目:校园导游咨询 学院:信息学院 班级:计算机1008班 姓名: 学号: 20101221180 日期: 2012 年 3 月

校园导航问题 [问题描述] 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 [基本要求] (1)设计所在学校的校园平面图,所含景点不少于十个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个顶点之间的一条最短的简单路径。 (4)校园导游图的景点和道路的修改扩充功能。 (5)扩充道路信息,如道路类别(车道、人行道),以致可按客人所需分别查询人行路径或车行路径。 (6)扩充每个景点的林洁景点的方向等信息,使得路径查询结果能提供详尽的导向信息。 (7)实现校园导游的仿真界面。

一、概要设计 (4) 二、详细设计 (6) 三、调试分析 (12) 四、调用关系 (12) 五、用户操作指南 (13)

[测试数据] 一、概要设计 1. 数据类型 #define V_MAX 20 #define E_MAX 200 typedef struct { char name[10];//名字 //char code[10];//代码 char info[20];//信息,简介 int x,y;//坐标 }VType;//顶点类型 typedef struct { int live;//标记是否存在,如果被删除则为0,存在为1 char name[10];// 路名 int length;//路的长度

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

课程论文(设计)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编号:

课程设计心得体会范文

课程设计心得体会范文 在大学生课程设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。下面是管理资源吧小编为大家收集整理的大学生课程设计心得,欢迎大家阅读。 课程设计心得体会范文1本学期我们开设了《模拟电路》与《数字电路》课,这两门学科都属于电子电路范畴,与我们的专业也都有联系,且都是理论方面的指示。正所谓“纸上谈兵终觉浅,觉知此事要躬行。”学习任何知识,仅从理论上去求知,而不去实践、探索是不够的,所以在本学期暨模电、数电刚学完之际,紧接着来一次电子电路课程设计是很及时、很必要的。这样不仅能加深我们对电子电路的任职,而且还及时、真正的做到了学以致用。 这两周的课程设计,先不说其他,就天气而言,确实很艰苦。受副热带高气压影响,江南大部这两周都被高温笼罩着。人在高温下的反应是很迟钝的,简言之,就是很难静坐下来动脑子做事。天气本身炎热,加之机房里又没有电扇、空调,故在上机仿真时,真是艰熬,坐下来才一会会,就全身湿透,但是炎炎烈日挡不住我们求知、探索的欲望。通过我们不懈的努力与切实追求,终于做完了课程设计。 在这次课程兼职设计过程中,我也遇到了很多问题。比如在三角波、方波转换成正弦波时,我就弄了很长时间,

先是远离不清晰,这直接导致了我无法很顺利地连接电路,然后翻阅了大量书籍,查资料,终于在书中查到了有关章节,并参考,并设计出了三角波、方波转换成正弦波的电路图。但在设计数字频率计时就不是那么一帆风顺了。我同样是查阅资料,虽找到了原理框图,但电路图却始终设计不出来,最后实在没办法,只能用数字是中来代替。在此,我深表遗憾! 这次课程设计让我学到了很多,不仅是巩固了先前学的模电、数电的理论知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。希望今后类似这样课程设计、类似这样的锻炼机会能更多些! 课程设计心得体会范文2经过一个学期的学习,我对C语言有了一定的了解。C语言是学习计算机科学的基础,作为一名计算机专业学生,掌握C语言更是毋庸置疑。在上课之前,就经常听同学说,C语言很难学,确实,刚开始听课时觉得老师不知所云。不过,发现对后续内容的预习后,前面的疑团都迎刃而解,这让我对C语言的学习更有信心。 计算机最重要的就是上机操作,自己编写程序,在VisualC++运行,刚开始经常会出现错误,经过分析改正后,终于能够运行了,就觉得特别激动。 课程设计是一个把需求分析、程序编写、程序调试、

校园导游系统设计与实现

校园导游系统设计与实现

目录 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,若已存在该文档会由该文档中的内容初始化系统。 ⑻恢复初始状态 若数据已经显得很杂乱并很难修理,就可以启用这个功能

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

姓名: 班级: 学号: 指导教师: 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、查询景点信息:用户在选择此功能模块后,按照屏幕上方提示的景点名称及其对应的编号,要求用户输入想要查询的景点的编

课程设计个人总结

课程设计个人总结 我们完成了为期两周的课程设计,通过这次课程设计我深深体会到,在已度过的大学时间里,我们大多数接触的是专业课.我们在课堂上掌握的仅仅是专业课的理论知识, 如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 虽然在大三开学初我对这门课并没有什么兴趣, 觉得那些程序枯燥乏味, 但在这次课程设计后我发现自己在一点一滴的努力中对它的兴趣也在逐步的增加。我们有四位同学一起合作,我们默契的配合使我们组第一个完成了我们的设计,而且设计达到了我们预期的效果。这次课程设计对我来说学到的不仅是那些知识,更多的是团队和合作。现在想来,也许学校安排的课程设计有着它更深层的意义吧, 它不仅仅让我们综合那些理论知识来运用到设计和创新中, 还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能巨大力量!两周来我们一起找资料,选方案,再选方案是大家意见不统一然后我们一起上网进行查阅敲定方案后进行仿真,焊接调试程序,最后我们的篮球电子裁判器设计成功完成。两个星期后的今天我已明白课程设计对我来说的意义, 它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,使得我们这次比别的同学节省了时间,。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。设计过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。 在这学期的课程设计中,不仅培养了我们的独立思考、动手操作的能力,在各个其它能力上也都有了提高。更重要的是,在课程设计中,我们学会了很多学习的方法,而这是今后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们在完成这次课程设计后变的更加成熟,能够面对需要面对的事情 ---吴丽娜

数据结构课程设计校园导游咨询

9、校园导游咨询 问题描述: 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 基本要求: ⑴设计华东交通大学的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点, ⑵存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 ⑶为来访客人提供图中任意景点相关信息的查询。 ⑷为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 #include #define MAXV 100 //最大顶点个数 #define INF 32767 //用32767表示∞ #include //调用函数system改变字体颜色的头文件 typedef int InfoType; #define MAXV 100 //最大顶点个数 //以下定义邻接矩阵类型 typedef struct { int no; //顶点编号 InfoType info; //顶点其他信息 } VertexType; //顶点类型 typedef struct //图的定义 { int edges[MAXV][MAXV]; //邻接矩阵 int vexnum,arcnum; //顶点数,弧数 VertexType vexs[MAXV]; //存放顶点信息 } MGraph; void ecjtumap()//建立华东交通大学地图 { printf("\t|-------------------------------------------------------------|\n"); printf("\t| |\n"); printf("\t| |\n"); printf("\t| ---------- |\n"); printf("\t| ==============================| 国防生宿舍| |\n"); printf("\t| 。---------- |\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| |南区四食堂| ---------- |\n"); printf("\t| 。。|南区礼堂| |\n"); printf("\t| 。。---------- |\n");

校园导游系统

课程设计说明书 课程名称:数据结构与算法 设计题目:校园导游系统 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计算机科学与技术信息技术方向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. 设计背景

课程设计总结范文

课程设计总结范文 -总结 []做了两周的课程设计,有很多的心得,有关于单片机方面的,的是关于人与人之间关系方面的,。我们组一共有三,但其他两个人是真的神龙见首不见尾,除了在最后答辩的时候他们一起坐在了我旁边,冠冕堂皇的指着我画了几遍的图说了几嘴,我想可能他们自己都不知道自己在说怎么,虽然有的东西他们也答出来了。我佩服他们的勇气,羡慕他们的运气(我见到的很多做了10 天的人最后的成绩都有不如他们的),但是鄙视他们的做法。所幸的是,我得到了很多的。我想没有他们我可能都要了,因为我本人对单片机也并不是很熟悉,学的东西好像它是它,我是我似的,理论联系不了实际。以前的汇编语言没学好,一开始的程序这块儿就要令我抓狂了。后来请教我们班的一个男生,每次跟他一起到试验室调试程序(他们组也只有他一个人动手),看他边做边给我讲解。最后在开发机上做出来的时候,虽然不是我自己写的,但看他那么高兴,我也有一种到的成就感。后来我们组就用了他写的程序,他自己又抽空做了些。接下来就是做硬件方面的焊接了。没想到这项看起来不需要多少技术的工作却是非常的劳心劳力。很多次是早上起来带瓶带些吃的到实训中心,一泡就是一天。我看到有很多人跟我一样,不同的是他们是三三两两,而我大部分都是一个人做。在这个时候也有很多人帮助我,或是热心的帮我带饭,或是在我打盹儿的时候帮我做点焊接。大家都鼓励我,即使最后出不来东西,但是一定要把它做完。当我想放弃的时候,我也这么对自己说,即使你做出来的是次品甚至不合格品,但是你一定要拿出来一件成品。在要验收前,终于做了一件成品出来,不幸的是它真的是一件不合格品。帮我的那个男生做的已经出来了,所以最后应该还是我的焊接方面的问题。有一点灰心,想再重做来不及了,单是检查线却也查不出来什么问题。那么就准备答辩吧。我对着电路图再看课本,发现以前很多觉得很难记的东西现在记起来容易多了,因为整天都在同它们打交道。51的引脚及其功能,A/D转换器的,驱动器的,所有我用到的我都一再的看书了解,同时请教同学我看书过程当中的疑惑。在这个过程中又发现了以前焊接当中出的一些问题,能改的就改,不能改的,咳,要是时间再多一些,或者我能早点做好,要是不只是我一个人动手……算了吧,不要想那些如果,还是准备我自己的,做好我现在能做的吧。还好,验收还算,得了3分,不是很高,但是我觉得对我来说已经很好,代表了我真实的水平,我觉得我对单片机的一些知识在这个动手的过程中真的是从无到有增长的。同时我也尽量不去想别人得了多少分,没有什么不平衡的,有些人付出的是努力,有些人付出的是风险代价,其实这也没有什么不一样,这一点我早就了解。最后,我发现自己对单片机竟然也有了一点兴趣,想暑假以后自己去买一些东西来做,再补一补汇编语言。有什么问题请教下以前的那些老同学好了,他们好厉害,在课就成功的做出过调频收音机,大一暑假的时候参加了的电子竞赛接着,不过后来怎么样我就不知道了。汗。看来要多保持联络,这次回家就好好找他们叙叙旧。三 1前言通过一个的,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机才能增强和巩固我的知识。特别是作为高职生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。课程设计是培养学生综合运用所学知识,发现,提出,和解决实际问题,实践能力的重要环节,是对学生实际工作能力的具体和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在中可以说得是无处不在。因此作为二十一世纪的来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为服务,从而提高自己的实际动手能力和独立思考的能力,《》()。在设计的过程中遇到问题,可以说得是困难重重,这毕竟做的,难免

数据结构 校园导游系统课程设计

滨江学院 《数据结构》课程设计题目校园导游咨询程序设计 学号 学生姓名 院系 专业 指导教师 二O一二年月日

1、题目的内容及要求 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 2、需求分析 (1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 (3)为来访客人提供图中任意景点相关信息的查询。 3、概要设计 1.功能模块图; void CreateUDN();//创建无向网 void Search();//查询景点信息 void Shortestpath(int i);//计算最短路径 void Output(int sight1,int sight2);//输出函数

2.各个模块详细的功能描述。 CreateUDN();//创建无向网、主要用来保存各景点信息Search();//查询景点信息、景点的名称及介绍Shortestpath(int i);//计算两景点间最短路径 Output(int sight1,int sight2);//输出两景点最短路径及信息3.模块图

4、详细设计 一、图的储存结构 #define Max 30000 #define NUM 10 typedef struct ArcCell { int adj; /*相邻接的景点之间的路程*/ }ArcCell;/*定义边的类型*/ typedef struct VertexType { int number; /*景点编号*/ char *sight; /*景点名称*/

C语言课程设计实验总结报告

C语言课程设计实验总结报告

C语言课程设计实验总结 一、需求分析: 1.需求概述 设计一个职工信息管理系统,使之能提供以下功能: (1)职工信息录入功能 (2)职工信息浏览功能 (3)职工信息删除功能 (4)职工信息修改功能 (5) 职工信息查询功能 2.需求说明 (1)职工信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话,而且职工号要求不重 复。 (2)录入的职工信息要求用文件形式保存,并对其进行浏览、查询、修改、删除等基本操作。 (3)对职工的信息分别按职工号、性别、姓名、工资四种方式进行查询,并返回所有符合条件的职工信息。 (4)对职工信息的修改应该逐个进行,一个职工的信息修改不应影响其它职工的信息。 (5)所设计的系统应以菜单的方式工作,应为用户提供

清晰的使用提示,依据用户的选择进行各种处理, 并要求在此过程中能够尽可能的兼容用户使用过程 中的异常情况。 二、总体设计 1.功能划分 该系统能够按功能进行模块划分,如下图所示: 其中: (1)菜单选择模块完成用户的选择,此模块也是职工信息管理系统的入口,用户所要进行的所有操作需要在此模块中选择,并调用相对应的模块实现相应的功能。(2)信息输入模块完成信息的录入功能,输入的信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话。 (3)信息浏览模块完成对所有的职工的信息的显示。(4)信息查询模块分四种查询方式:按职工号查询、按性别查询、按姓名查询、按职务查询。而且输出相对应

且符合要求的职工信息。 (5)信息修改模块完成的是职工信息的修改功能。 (6)信息删除模块完成的是职工信息的删除功能。 2.数据结构 本系统中的主要数据结构为职工的信息,其中包含:职工号、姓名、性别、出生年月、学历职务、工资、住址、 电话等,其中的出生年月用结构体表示,其中又包含: 出生的年份、出生的月份、出生的日期。 3.程序流程 系统的执行应从功能菜单的选择开始,依据用户的选择进行后续的处理,直到用户选择退出系统为止,其间应对用 户的选择做出判断及异常处理。系统流程图如下图所 示:

校园导游咨询程序

实验三:校园导游咨询 一、设计方案简介 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 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);

校园导游咨询程序

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 实验三:校园导游咨询 一、设计方案简介 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 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.功能函数的调用关系图 2012年01 月

课程设计总结报告模板

课程编号:B080109010 数据结构课程设计 总结报告 东北大学软件学院

第一章需求分析 。 1、问题的定义 设计一个景点管理系统,分为管理员和游客两部分,需要帮助景区更为方便的管理景区,规划道路,帮助游客更为方便地找到自己想要的信息 2、问题分析 为游客提供景点分布图,景点简介,景点查询,以及查询路线选择等相关建议;为管理员提供添加景点,删除景点,添加道路,以及发布公告的功能,考虑到景区的实际情景,整个项目应该设计为一个手机App,这样才能满足用户需求,方便用户操作 3、研究意义 这是一个与实际相连的小项目,以方便游客游览和景区管理作为最终目的,提供高效的算法,和简洁的界面,方便用户操作,这样有利于学生写的作业与社会实际情况相连,考虑确实需求 第二章系统设计 2.1总体设计 (1)基本数据结构: ○1list: MyList private final static int INIT_CAPACITY; private Object[] mList; private int mCurrentCapacity; private int mSize; public void add(T item); public void remove(int index); public T get(int index); public void set(int index, T item); public int size();

○2队列: MyQueue private Object[] queue; private int front; private int nItems; private int maxSize = 100; public void add(T item) public T remove() public boolean isEmpty() public int size() ○3栈: MyStack private int capacity = 10; private int length = 0; private Object[] stack; public boolean isEmpty() public boolean isFull() public void push(Object obj) public T pop() public int size() ○4邻接表: Graph public MyList adjList; public MyList visit; ○5边: EdgeNode public int index; public String name; public boolean flag = true;

基于无向图的校园导游系统数据结构课程设计报告

重庆科技学院 课程设计报告 院(系):_电气与信息工程学院专业班级:计科普0902 设计地点(单位)____计算机基础自主学习中心I306___设计题目:_________校园导游咨询____________________

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

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

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

目录 摘要.................................................................................................................................................. II 1 设计内容和要求 (1) 1.1设计内容 (1) 1.1设计要求 (1) 2 概要设计 (2) 2.1 程序的模块图 (2) 2.2 主函数的概要设计 (3) 2.3 查找介绍函数的概要设计 (3) 2.4 查找最短路径函数的概要设计 (3) 2.5 退出函数的概要设计 (3) 3 详细设计 (4) 3.1 程序的流程图 (4) 3.2 主函数的详细设计 (5) 3.3 查找介绍函数的详细设计 (5) 3.4 查找最短路径函数的详细设计 (6) 3.5 退出函数的详细设计 (8) 3.6 数据结构的详细设计 (8) 4 软件测试 (10) 4.1 菜单的测试 (10) 4.2 查找景点简介的测试 (10) 4.3 查找两个景点之间的最短距离的测试 (11) 4.4 退出的测试 (11) 5 软件使用说明 (12) 6 致谢 (13) 7 参考文献 (14) 8 附录 (15)

综合实验十二 校园导游咨询

综合实验十二校园导游咨询 一、实验目的 (1)熟练掌握图的创建及遍历基本操作算法。 (2)熟练掌握最短路径算法。 (3)利用图的遍历和最短路径求解技术,设计一个校园导游程序,为来访的客人提供各种信息查询服务。 二、实验内容 【问题描述】 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 【基本要求】 (1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。 【测试数据】 由读者根据实际情况指定。 【实现提示】 一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。 【选作内容】 (1)求校园图的关节点。 (2)提供图中任意景点问路查询,即求任意两个景点之间的所有路径。 (3)提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短)路径。 (4)校园导游图的景点和道路的修改扩充功能。 (5)扩充道路信息,如道路类别(车道、人行道等)、沿途景色等级,以至可按客人所需分别查询人行路径或车行路径或观景路径等。 (6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。 (7) 实现校园导游图的仿真界面。 程序代码及结果: #include #include using namespace std; const int MaxSize=18; const int INFINITY=65535;//最大值无穷

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