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

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

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

姓名:

班级:

学号:

指导教师:

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

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

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

课程设计个人总结

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

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

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.程序流程 系统的执行应从功能菜单的选择开始,依据用户的选择进行后续的处理,直到用户选择退出系统为止,其间应对用 户的选择做出判断及异常处理。系统流程图如下图所 示:

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

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

课程设计总结报告模板

课程编号: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)

大学课程设计报告总结

大学课程设计报告总结 导语:课程设计,大学中某一课程的综合性实践教学环节,下面是由XX整理的关于大学课程设计报告总结范文。欢迎阅读! 篇一:大学课程设计报告总结通过此次课程设计,使我更加扎实的掌握了有关**方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。 实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。 这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,

在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。 此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。 篇二:大学课程设计报告总结为期10天的课程设计将要结束了。在这10天的课程中,我们是以小组的形式的,让我更懂得了团队的意思,怎样和团友们一起分工合作。在这次课程设计中,我学到了很多,获益匪浅。 合作、齐心协力,一起完成了课程设计前的准备工作(阅读课程设计相关文档)、小组讨论分工、完成系统开发的各

校园导游系统

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

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

课程设计心得体会范文

课程设计心得体会范文 范文一 整个设计通过了软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。 这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。其次,这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个项目的有条不絮。另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。因此非常感谢老师的教导。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名软件工程专业的学生,这次课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。 我认为这个收获应该说是相当大的。一开始我们从参考书上找来了课题,但是毕竟是参考书,做到后来发现很多程序都是不完整的,这让我们伤透了脑筋。看着别的小组都弄得有模有样了,可是我们连一个课题都还没有定好。好不容易又找到了课题,可是结果还是很不尽人意。程序接线什么的都弄好了,调试也没有问题,可是就是无法达到预期想要的结果。参考书毕竟只是一个参考,设计这种东西最后还是要靠自己动脑筋。然后我们大家一起齐心协力,从平时做的实验﹑老师上课的举例﹑书本上的知识以及老师的辅导和其他同学的帮助下终于完成了。应该说这是通过我们小组成员的共同努力和动脑完成的,虽然内容并不是很复杂,但是我们觉得设计的过程相当重要,学到了很多,收获了很多。我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。 所以我认为这次的课程设计意义很深,和其他4位同学的共同学习﹑配合﹑努力的 过程也很愉快,另外还要感谢老师的耐心辅导。 范文二 对于此次课程设计,我早在寒假就借了linux相关书籍参看,但上面讲的主要是有关linux操作方面的内容,编程方面讲得很少,而且在假期中也并不知道课设的题目是什么,因此此次课设基本上都是在开学后的这两周内完成的。 以前做过的软件方面的课设如c语言课设、数据结构课设都是在假期完成的,由于自己是一个十分追求完美的人,因此几乎每次都花了将近大半个假期的时间来做,如c语言就花了一个多月的时间来做,分数当然也较高,有90来分。对于课程设计,我历来都是相当认真的,此次操作系统的课程设计当然也不例外。可是linux以前没怎么接触过,学校也没怎么系统地讲过,在刚接到题目时除了知道如何用gcc编译等等,几乎可以算作处于一无所知的

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