数据结构课程设计--校园导游咨询_第1页
数据结构课程设计--校园导游咨询_第2页
数据结构课程设计--校园导游咨询_第3页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式琼州学院电子信息工程学院课程设计报告课程名称:"数据构造"课程设计设计题目:校园导游咨询专业:软件工程班级:2021软件工程学生*:学号:起止日期:指导教师:指导教师评语:最终成绩:指导教师签名:年月日成项目权重成绩绩1、设计过程中的学习态度0.2评2、课程设计的质量及辩论0.5定3、设计报告书标准程度0.34、总成绩专业资料整理WORD格式琼州学院本科生课程设计本卷须知本卷须知一、设计目的"数据构造" 是一门实践性较强的软件根底课,为了学好这门课程,必须在掌握理论知识的同时, 加强上机实践。 本课程设计的目的就是要到达理论与实际应用相结合,

2、使同学们能够根据数据对象的特性, 学会数据组织的方法, 能把现实世界中的实际问题在计算机内部表示出来,并培养根本的、良好的程序设计技能。二、设计要求1通过这次课程设计,要求在数据构造的逻辑特性和物理表示、数据构造的选择应用、算法的设计及其实现等方面加深课程根本内容的理解。 同时,在程序设计方法以及上机操作等根本技能和科学作风方面受到比较系统和严格的训练。2学生必须仔细研读"数据构造"课程设计要求,以学生自学为主、指导教师指导为辅,独立完成课程设计的任务,有问题及时主动与指导教师沟通。3本次课程设计按照教学要求需要在本学期15 周前完成,学生要发挥自主学习的能力,充分利用时间

3、, 安排好课程设计的时间方案,并在课程设计过程中不断检测自己的方案完成情况,及时向指导教师汇报。4编程语言: C 语言。三、课程设计说明书的格式要求设计文档的撰写必须提前进展,以保证使文档与程序同步提交。1设计题目2运行环境软、硬件环境3算法的需求分析4算法概要设计5算法详细设计6算法的测试7运行结果分析8收获及体会四、问题分析、设计和测试过程要标准化1需求分析:将题目中要求的功能进展表达分析。2概要设计:算法的设计说明, 描述解决此问题的数据存储构造, 有些题目已经指定了数据存储的,按照指定的设计 ,描述算法建议使用流程图,进展算法分析指明关键语句的时间复杂度。3详细设计:即各个算法的具体实

4、现步骤,每个题目要有相应的源程序,其中每个功能模块采用不同的函数实现。源程序要标准编写:构造要清晰,注释要清楚。重点函数的重点变量和重点功能局部要加上清楚的程序注释。4调试和测试:给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进展测试的结果列出来 。在调试过程中遇到的问题和解决方法也要记录下来。程序要能够正常运行,还要有根本的容错功能。尽量防止出现操作错误时出现死循环。5改进措施:对有些题目提出算法改进方案,比较不同算法的优缺点。五、对指导教师的要求指导教师要关心学生的课程设计进展, 认真答疑。 对课程设计报告的撰写要给予充分的指导,报告中切忌出现大篇源代码,应严格要求学生将主

5、要篇幅放在“原理实现上,即如何用框图表达设计和实施思想。课程设计报告要用红笔批阅,最终成绩以优、良、中、及格与不及格分等计算。专业资料整理WORD格式II-专业资料整理WORD格式琼州学院本科生课程设计目录目录摘要 .11设计内容和要求 .- 2 -1.1设计内容 .- 2 -1.1设计要求 .- 2 -2概要设计 .22.1程序的模块图 .22.2主函数的概要设计 .32.3查找介绍函数的概要设计 .32.4查找最短路径函数的概要设计 .32.5景点分布图的概要设计 .32.6退出函数的概要设计 .33详细设计 .53.1程序的流程图 .53.2主函数的详细设计 .63.3查找介绍函数的详细

6、设计 .63.4查找最短路径函数的详细设计 .73.5景点分布图的详细设计 .83.6退出函数的详细设计 .93.7数据构造的详细设计 .94软件测试 .104.1菜单的测试 .104.2查找景点简介的测试 .114.3查找两个景点之间的最短距离的测试. 124.4查看景点分布图的测试 .134.5退出的测试 .145软件使用说明 .156参考文献 .167附录 .177.1系统完整代码 .17专业资料整理WORD格式琼州学院本科生课程设计摘要摘要现代快节奏的生活使得都市人越来越渴望亲近自然,因此外出旅游现在被越来越多的都市人所看中, 所以如何快速方便的找到我们想要的旅游景点的信息和最短路径就

7、成了一个很重要的问题。本设计基于图的构造,创立一个无向图,针对游客的实际需求,将琼州学院的景点编号、名称、介绍等信息放入到图的顶点当中并保存在景点文本文件当中,将两个景点的编号和它们之间的距离当作权值也保存到权值文本文件当中,利用迪杰斯特拉算法来求从一个景点到另一个景点的最短距离,利用Search( );函数来查找景点, 并显示出它的信息, 从而解决了要查找景点信息和景点之间的最短路径的问题,最后按照显示屏上的提示进展相关的操作。关键词:分布图、查找信息、最短距离、校园导游咨询专业资料整理WORD格式1专业资料整理WORD格式琼州学院本科生课程设计设计内容和要求1 设计内容和要求1.1 设计内

8、容依据课程设计的要求,利用一个无向图的构造,将景点当作图的顶点,将景点之间的距离当作权值来储存,然后根据游客自己的需求, 按照显示屏上的提示来进展查找景点介绍,查找两个景点之间的最短距离,退出程序等根本操作。1.1 设计要求本软件为校园导游咨询系统,根据游客的实际需求而设计,首先创立一个无向图,然后从文件当中读取所有景点的编号、名称、介绍和两点之间的权值,并将它们写入到无向图当中。 功能主要包括查找景点的信息,查找从一个景点到另一个景点的最短路径,退出等根本操作。软件的界面要求使用VC+6.0 的运行环境。软件的数据库包括校园景点的编号、名称、介绍和两个景点之间的距离权值,首先要定义顶点的数据

9、类型构造体,里面包括景点的编号、名称、介绍,然后定义一个邻接矩阵构造体来储存边的信息,最后定义一个无向图类型的构造体来储存顶点的信息,边的信息,顶点的个数,边的条数。最后游客按照显示屏上的提示来进展相关的操作。专业资料整理WORD格式2专业资料整理WORD格式琼州学院本科生课程设计概要设计2 概要设计2.1程序的模块图本软件的算法依据无向图的操作通过查找函数查找景点的信息,通过费洛伊德函数来查找最短距离, 开场时首先从文件当中读取景点的编号、名称、介绍和两个景点之间的距离即权值, 然后将其参加到图当中, 再调用查找函数查找景点的信息,调用费洛伊德函数来查找最短距离,调用退出函数实现退出功能,

10、其模块图如图 2.5 所示:开场加入图分查最退布找短出图信距息离屏屏屏幕幕幕显显显示示示图 2.5 模块图专业资料整理WORD格式3专业资料整理WORD格式琼州学院本科生课程设计概要设计2.2主函数的概要设计基于程序的操作要求, 对于主函数的设计首先是显示一个可视化的操作界面提醒游客进展相关的操作和提示游客其可供选择的景点的名称, 便于其在后面的操作过程当中能够快速方便的找到其需要查找的景点的名称。而后就是一个 switch ;的选择函数,提供查找景点信息,查找两个景点之间的最短距离和退出的相关的选择操作而后进入到每一个操作界面当中,从而实现所需要的功能。2.3查找介绍函数的概要设计当游客选择

11、了要查找景点的信息的介绍这一项功能的时候,就会进入到查找的界面,对于查找景点信息就是利用 Search( ); 函数,当游客输入景点的名称的时候看其是否与文件当中的数据相匹配, 如果有那么输出它的介绍, 如果没有那么输出错误的提示提醒游客进展相关的操作来进入到正确的操作过程当中。2.4查找最短路径函数的概要设计对于查找最短路径的这一项功能,可以利用迪杰斯特拉算法,但我是用的费洛伊德算法,相对来说步骤跟简单一点。后面有详细介绍。2.5景点分布图的概要设计先手稿绘制所有景点的分布,利用printf;函数打印分布图的框架构造。各景点之间用线条,通过分布图能全面的对校园各景点有个方位感。2.6退出函数

12、的概要设计关于退出函数, 那么是当游客执行完了他想要进展的操作过后选择退出的功能的时候就调用退出函数 exit(0); 跳入到退出界面实现退出的功能。专业资料整理WORD格式4专业资料整理WORD格式琼州学院本科生课程设计详细设计3 详细设计3.1程序的流程图当我们想要更加实际的了解一个程序的算法过程的时候,我们就要依据程序的流程图来给我们一个比较实际的过程, 从流程图当中能够更加清楚整个程序实现的过程是怎样的。其流程图如图 3.1 所示:start创立无向图写入无向图中Case 3查找信息TFCase 2最短路径FTCase 1分布图FTCase 4end图 3.1 流程图专业资料整理WOR

13、D格式5专业资料整理WORD格式琼州学院本科生课程设计详细设计3.2主函数的详细设计主函数是一个程序的主体, 当我们要进展我们所需要的操作的时候我们就要根据主函数中的显示信息和它给我们的相关的提示信息来进展所需要的操作,因此在这次的程序实现的过程当中,调用 Browser(); 提示游客根据 switch(); 的选择语句,选择来进入到相关的操作界面实现程序的根本功能。 ,3.3查找介绍函数的详细设计当游客选择了要查找景点的信息的介绍这一项功能的时候,程序就会调用Search( ); 函数进入到查找景点的介绍的界面,当游客输入了需要查找的景点的编号的时候,程序通过构造体,自动匹配相应的信息,查

14、找是否有这个景点。void Search(MGraph *G)int k,flag=1;while(flag)printf("请输入要查询的景点编号:");scanf("%d",&k);if(k<=0|k>G->vexnum)printf(" 景点编号不存在 ! 请重新输入景点编号 :"); scanf("%d",&k);if(k>0&&k<=G->vexnum) flag=0;printf("n n");printf(&quo

15、t;编号景点名称简介 n");printf("%-4d%-16s%-62sn",G->vexsk.num,G->,G->roduction);printf(" n"); ,找到将它的编号返回,并输出它的介绍,没有找到这输出错误提示,提醒游客进展相关的操作进入正确的操作过程当中。专业资料整理WORD格式6专业资料整理WORD格式琼州学院本科生课程设计详细设计3.4查找最短路径函数的详细设计当游客选择了要查找两个景点之间的最短距离这一项功能的时候,函数进入到查找两个景点之间的最短距离的操作界面

16、当中, 当游客输入了两个景点的名称过后,程序会判断是否有这两个景点,如果有那么返回他们各自的编号,并调用 Floyd( ); 函数进入到查找最短路径问题的程序当中。void Floyd(MGraph *G)int v,u,i,w,k,j,flag=1,p141414,D1414;for(v=1;v<=G->vexnum;v+)for(w=1;w<=G->vexnum;w+)Dvw=G->arcsvw.adj;for(u=1;u<=G->vexnum;u+)pvwu=0;if(Dvw<INFINITY)pvwv=1;pvww=1;for(u=1;u

17、<=G->vexnum;u+)for(v=1;v<=G->vexnum;v+)for(w=1;w<=G->vexnum;w+)if(Dvu+Duw<Dvw)Dvw=Dvu+Duw;for(i=1;i<=G->vexnum;i+)pvwi=pvui | puwi;while(flag)printf("请输入出发点和目的地的编号:");scanf("%d%d",&k,&j);if(k<=0 | k>G->vexnum | j<=0 | j>G->vexn

18、um)printf(" 景点编号不存在 ! 请重新输入出发点和目的地的编号 :"); scanf("%d%d",&k,&j);if(k=j)专业资料整理WORD格式7专业资料整理WORD格式琼州学院本科生课程设计详细设计printf("出发点和目的地一样! 请重新输入出发点和目的地的编号 :");scanf("%d%d",&k,&j);if(k>0 && k<=G->vexnum && j>0 && j<=

19、G->vexnum)flag=0;printf("n最短游览路线: %s",G->);if(k>j)for(u=G->vexnum;u>0;u-)if(pkju && k!=u && j!=u)printf("->%s",G->);if(k<j)for(u=1;u<=G->vexnum;u+)if(pkju && k!=u && j!=u)printf("->%s",

20、G->);printf("->%s",G->);printf("总路线长 %dmn",Dkj);有 n 个顶点的有向图 ,佛洛伊德算法可以求解出每一对顶点之间的最短路径。假设使用邻接矩阵 d ( i, j) 来对图进展存储 , d ( i, j) 表示 i 到j 之间的距离 ,但是该距离不一定是最短距离。 佛洛伊德算法的根本思想是 :为求顶点 ij 之间的最短距离 ,需要进展 n 次试探。首先将0 参加路径 ,考虑路径i 0j 是否存在 ,如果存在 ,那么比较i j 和 i 0 j 的路径长度 ,

21、取长度短的路径作为 i j 的路径 ,记作 (i , j ) 。接着在路径上再增加一个顶点1 ,比较i 1 j 和 (i ,j )的路径长度 , 取长度短的路径作为 (i , j) 。不断将顶点 2 ,3 , .,n - 1 参加进展试探 , 最后得到的 (i , j ) 必定为 i j 的最短路径。假设使用数组 dk ( i, j) 表示参加顶点 k 后,最短路径长度的变化情况 ,使用数组 pk ( i, j) 表示参加顶点 k 后,最短路径上顶点的变化情况 , 这样就求得了最短路径和最短路径长度。3.5景点分布图的详细设计这里不详细介绍,具体代码,查看附录browse_view_distr

22、ibute ( )函数。专业资料整理WORD格式8专业资料整理WORD格式琼州学院本科生课程设计详细设计3.6退出函数的详细设计对于退出函数,当游客选择了退出这一个操作的时候, 程序就会调用 exit(0); 函数实现退出主函数的功能。最后会提示游客,欢迎下次继续使用!3.7数据构造的详细设计本软件的数据构造包括3 个局部:1. 邻接矩阵typedef int AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; 定义一个邻接矩阵,用邻接矩阵来定义和储存边的相关信息。2. 顶点的构造体typedef struct Vertex/定义图中顶点的数据类型int num;/

23、景点编号char name30;/景点名称char introduction200;/景点介绍Vertex;定义一个顶点的构造体, 用来储存景点的编号、 景点得名称和景点的介绍等关于景点的信息。3.无向图的构造体typedef struct /定义图的数据类型Vertex vexsMAX_VERTEX_NUM;/ 顶点的构造体AdjMatrix arcs;/ 边的邻接矩阵int vexnum,arcnum;/顶点的个数,边的个数MGraph;定义一个图的构造体,用来储存顶点的信息、边的信息、 顶点的个数和边的个数等相关的信息便于我们以后在用的时候能够方便快捷的调用。定义好这些构造体后, 当我们

24、以后需要调用的时候,我们就能够方便快捷的调用这些构造体,从而使得我们在运行程序的时候能够更加的快速能够提高我们的程序的运行效率,大大的节省了我们的时间还使得程序变得更加的简单。专业资料整理WORD格式9专业资料整理WORD格式琼州学院本科生课程设计软件测试4 软件测试4.1菜单的测试对于菜单函数的测试,首先菜单是一个可示化的界面,它能够提示游客依据显示屏上出现的提示来进展相关的操作, 查看所有的景点从而方便游客进展相关的操作,因而我们在运行程序的时候首先就会进入到菜单函数当中, 经过测试其能够实现我们所要实现得根本功能,其效果图如图 4.1 所示:图 4.1 菜单专业资料整理WORD格式10专

25、业资料整理WORD格式琼州学院本科生课程设计软件测试4.2查找景点简介的测试对于查找景点的介绍的测试, 首先依据显示屏上的提示首先输入要进展的操作输入 3 进入查找景点信息的操作界面, 然后输入需要查找的景点的名称即可显示出景点的介绍信息, 经过测试可以得出其没有什么错误, 程序能够按照我的要*现它的功能,其效果图如图 4.2 所示:图 4.2 查找景点信息专业资料整理WORD格式11专业资料整理WORD格式琼州学院本科生课程设计软件测试4.3查找两个景点之间的最短距离的测试同查找景点的信息一样,对于查找景点之间的最短距离的测试,我们就要依据提示输入 2 进入到查询最短路径的界面, 依次输入所

26、需要查找的两个景点就会显示出怎样到达这两个景点并显示出它们之间的最短路径, 经过测试可见程序能够按照我的要求来实现其所需要的功能,其效果图如图4.3 所示:图 4.3 查找两个景点之间的最短距离专业资料整理WORD格式12专业资料整理WORD格式琼州学院本科生课程设计软件测试4.4查看景点分布图的测试对于查看景点分布图的测试,我需要依据显示屏上的提示,需要输入1 进入到分布图的界面,系统就会直接调用browse_view_distribute();函数,在屏幕上打印出景点的分布图。图 4.4 景点分布图界面专业资料整理WORD格式13专业资料整理WORD格式琼州学院本科生课程设计软件测试4.5

27、退出的测试原理同上,对于退出函数的测试,我需要依据显示屏上的提示,需要输入 4 进入到退出的界面,系统就会直接调用退出的函数, 显示出“欢迎下次继续使用! 的话,退出了系统,其效果图如图 4.4 所示:图 4.5 退出界面专业资料整理WORD格式14专业资料整理WORD格式琼州学院本科生课程设计软件使用说明5 软件使用说明对于软件的使用,对于第一次使用软件的游客来说,要让他们在第一次用的时候就能够快速轻松的掌握软件的用法, 因此在程序一开场运行的时候, 我们要进展如下的操作:1首先我会给游客提供一个可视化的菜单操作界面,在显示屏上提示用户其可以进展的操作和他能够查询的景点的编号、名称。2用户输

28、入了“ 1后,屏幕上会显示出所有景点的位置关系平面图。能够大致了解景点的分布。3当用户输入了“ 2后,进入到查询任意两景点间最短路径的界面,然后提示用户依次输入两个景点的编号, 程序就会将这两个景点的最短路径给我们表示出来并显示出最短路径是多少。4用户输入了“ 3后,进入到查询景点信息的界面,然后提示用户输入景点的编号一次限一个 ,程序就会显示出这个景点的详细介绍。5当用户输入了“ 4后,进入到退出界面,这时系统就会显示“欢迎下次继续使用 ! 的提示语,最后按下任意键退出系统。专业资料整理WORD格式15专业资料整理WORD格式*科技学院本科生课程设计参考文献6 参考文献【 1】 数据构造 (

29、C 语言版 ) 严蔚敏 吴伟民 编著 清华大学 2002【 2】C程序设计经典教程,美Deitel,H.M., 美 Deitel,P.J.著,清华大学2006【 3】Windows程序设计,美 Charles Petzold著,大学 2004【 4】Data Structures: A Pseudecode Approach with C 美 Richard F.Gilberg, 美 Behrouz A.Forouzan著专业资料整理WORD格式16专业资料整理WORD格式琼州学院本科生课程设计附录7 附录7.1系统完整代码#define INFINITY10000/*无穷大 */#defin

30、e MAX_VERTEX_NUM40#define MAX 40#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>#include "Exit.h"typedef struct ArCellint adj;/路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct/图中顶点表示主要景点,存放景点的编号、名称、简介等信息,char name30;int num;char

31、introduction200;/简介infotype;typedef structinfotype vexsMAX_VERTEX_NUM;/ 景点AdjMatrix arcs;/路径数组int vexnum,arcnum;/景点数,路径长度记录MGraph;MGraph b;/ 全局变量void cmd(void);/在主函数中用来调用其他应用子函数的函数声明MGraph InitGraph(void);/用来构造学校地图的子函数返回 MGraph类型void Menu(void);/菜单函数;void Browser(MGraph *G);/调用 MGraph类型的地址,进展void Sh

32、ortestPath_DIJ(MGraph * G);/迪杰斯特拉算法求最短路径的子函数void Floyd(MGraph *G);/佛洛伊德算法void Search(MGraph *G);/寻找要查询的景点,并输出该景点的信息void browse_view_distribute();/查看景点分布图void tou(MGraph *G);/景点列表void panduan();专业资料整理WORD格式17专业资料整理WORD格式琼州学院本科生课程设计附录/void Exit();/退出int LocateVex(MGraph *G,char* v);/定点位置MGraph * Creat

33、UDN(MGraph *G);/初始化图形,承受用户输入void print(MGraph *G);/打印输出子函数/*/void main(void)system("color 1f");/设置调试窗口背景和字体颜色system("mode con: cols=140 lines=130");/设置调试窗口的大小cmd();/用该函数来调用其他需要用到的函数/*/void cmd(void)/用来调用其他需要用到的函数的子函数int i;b=InitGraph();/构造校园地图Browser(&b);/Menu();/调用菜单函数scanf(

34、"%d",&i);while(i!=4)switch(i)case1:system("cls");/*ShortestPath_DIJ(&b);*/browse_view_distribute();Browser(&b);break;case 2:system("cls");tou(&b);Floyd(&b);Browser(&b);break; case 3:system("cls");tou(&b);Search(&b);Browser(&

35、b);break; case 4:exit(0);break;default:break;scanf("%d",&i);printf("欢迎下次继续使用!nn");/*MGraph InitGraph(void)/构造校园地图MGraph G;int i,j;G.vexnum=13;/ 景点数量G.arcnum=21;/ 路径数量for(i=1;i<=G.vexnum;i+)G.vexsi.num=i;/对景点进展对应编号专业资料整理WORD格式18专业资料整理WORD格式琼州学院本科生课程设计附录/* 对对应的景点编号进展命名,输入简介*

36、/strcpy(G.,"行政办公楼 ");strcpy(G.roduction,"学校的行政机构。 ");strcpy(G.,"图书馆 ");strcpy(G.roduction,"体积庞大,是学校的标志性建筑,目前还在建立中。 ");strcpy(G.,"果园 ");strcpy(G.roduction,"枝叶茂盛,各种新鲜水果。");strcpy(G.vexs

37、1.name,"校门 ");strcpy(G.roduction," 学校的形象,气势宏伟。 "); strcpy(G.," 体育运动区 ");strcpy(G.roduction," 包括有排球场、篮球场、网球场等。 "); strcpy(G.," 教学区 ");strcpy(G.roduction,"包括左教学楼、小湖、右教学楼、实验楼和医务室等。 ");strcpy(G.vex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论