数据结构实训报告

更新时间:2024-06-03 06:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实训报告

实训题目:校园导游程序

学 院:计算机科学与技术学院 专 业: 软件工程 班 级: 2012级 学 号: 1208060220 学生姓名: 熊齐超 指导教师: 张丽

2014年 7 月 10日

一、实训目的及要求

数据结构是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。本综合实训利用Visual Studio 2008 集成编程环境为实践工具,通过上机实践培养学生分析具体问题、解决实际问题的能力,训练和培养学生的数据抽象能力和程序设计的能力。

数据结构是一门实践性较强的课程,以培养学生的数据抽象能力和程序设计的能力为目的。在实训时应注重培养学生的实际操作能力。本综合实训安排了18学时的实验课时,具体要求如下:

1. 学习和理解每个实训题目的基本理论和方法; 2. 掌握每个实验的实现步骤和关键技术; 3. 准备好实验所需要的资源和文档;

4. 上机实现程序,得到通过调试的正确程序;

5. 根据每个实验的不同要求,完成实验报告的word文档。

二、实训环境 Windows XP

Visual Studio 2010

三、实训内容 1)问题描述

用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。 2)基本要求

(1) 查询各景点的相关信息;

(2) 查询图中任意两个景点间的最短路径。

(3) 能够将图的信息保存到文件中,并指定文件打开。

(4) 增加、删除、更新有关景点和道路的信息。

附加难度:有余力的同学可以考虑用图形界面实现寻址的过程 3) 设计思想

核心数据结构定义一个图,将图保存后,对图进行面向指定节点到各个节点的最短路径的操作。可以再文件中保存多个导游图,例如保存学校图、芜湖市图等文件。开始时选择文件,将指定文件中的信息导入到内存的图中。

四、算法描述及实训步骤

本项目要实现七个主要功能:学校景点介绍、查看浏览路线、查询景点间最短路径、景点信息查询、更改图信息、查询景点间可行路径、打印邻接矩阵。 附加一些其他功能

贵州大学校园导游系统: 开始 输入正确 判断 查询最短路径 景点信息 更改图信息 学校景点介绍 查看浏览路线 结束

查询可行路径 打印邻接退出系统

五、总结及心得体会

每一次课程设计,都有不一样的感受,通过课程设计,对我而言,得到的不仅仅是知识,更是获得知识的方法,这显得更加的重要。

本次课程设计,我的设计题目是校园导游程序,本程序主要用到的是课本中图的知识,以校园中的景点作为顶点,以景点间的路径作为边,就构成了图。我用到的时临界表存储结构,这样对空间的浪费不至于很大。主要完成的功能是最短路径和所有路径的算法,最短路径用的是书上的Dijkstra算法,原来我对这个算法的只是出于一个对大致的过程知道的程度,课程设计之后,我对该算法可以说是很熟悉了,不管是算法思想还是代码。另一个主要功能是求两个景点间的所有路径,这个算法书上没有提到,我一步步的摸索,用了一个递归的思想,再经过不断的修改,一次次的单步运行,通过查看相应变量的变化情况,将此算法实现的。最后完成整个程序。

课程设计,本人感觉对于写程序,首先要要的是思想,即完成每个功能需要的算法思想,在想好思想后,就要具体到代码,计算机能够识别的代码,代码写好后,大多情况下是有错误的,首先要排除语法错误,然后时语义错误,在排错的过程中,我用到的最多的是单步运行,感觉单步运行这种方式很管用,通过一步步的运行,通过每一步的运行,观察其中变量的变化情况,可以很容易的知道代码是哪一步出了错误,这样对排错有很大的帮助。

在课程设计的过程中,曾遇到过很多的问题,如对路径字符串的处理,整个递归一步步的往下调用和返回过程,还有很多细节的问题。在遇到问题时,首先想到的是自己思考,分析过程,查找资料,上网百度,通过自己的努力还没有解决时,这是首先需要问的是自己旁边的同学,和同学讨论,有时还争得面红耳赤,如果最后将此不下,就向老师提问。这课程设计的过程中,我几乎所有的问题处理流程就是这个样子的。我感觉这就是一种学习的方法,在学习中遇到难题时的学习方法,要把这种学习的方法变成一种习惯,这才是每次课程设计应达到的一种效果。

课程设计提供了这样一种学习的机会,可以随时随地向老师请教,和老师交流的一个机会,和同学互相讨论的机会。课程设计教会了我,如何用计算机程序来处理现实中的实际问题。将现实中的实际问题先转化为数学模型,然后将数学模型用程序解决的一种能力。

六、实训结果

(1)主界面

(2)学校景点介绍

(3)查看浏览路线

// (15) 查询景点的信息

void seeabout(mgraph c) { int k; printf(\请输入要查询的景点编号:\ scanf(\ while(k<0||k>c.vexnum) { printf(\你所输入的景点编号不存在!\ printf(\请重新输入:\ scanf(\ } printf(\编号:%-4d\\n\ printf(\景点名称:%-10s\\n\ printf(\介绍:%-80s\\n\\n\

}//seeabout

// (16) 显示所有景点信息

void browsecompus(mgraph c) { int i; printf(\编号 景点名称 简介\\n\ printf(\________________________________\\n\ for(i=0;i

}//browsecompus

// (17) 主要工作函数。操作区用户界面

void mainwork() { int yourchoice; campus=initgraph();

printf(\欢迎使用校园导游程序-----------------------------\\n\ printf(\ 欢迎来到贵州大学北区 ! \\n\\n\ printf(\ 菜 单 选 择 \\n\\n\ printf(\ 1. 学校景点介绍 2. 查看游览路线 \\n\ printf(\ 3. 查询景点间最短路径 4. 景点信息查询 \\n\ printf(\ 5. 更改图信息 6. 查询景点间可行路径 \\n\ printf(\ 7. 打印邻接矩阵 8. 退出 \\n\ printf(\ printf(\请输入你的选择:\ scanf(\ while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6 ||yourchoice==7||yourchoice==8)) { printf(\输入选择不明确,请重输\\n\ scanf(\ } while(1) { switch(yourchoice) { case 1: system(\ break; case 2: system(\break; case 3: system(\break; case 4: system(\ break; case 5: system(\ break; case 6: system(\ allpath(campus); break; case 7: system(\ printmatrix(campus); break; case 8: system(\exit(0); break; default: break; } printf(\欢迎使用校园导游程序-----------------------------\\n\ printf(\ 欢迎来到贵州大学北区! \\n\\n\ printf(\ 菜 单 选 择 \\n\\n\ printf(\ 1. 学校景点介绍 2. 查看游览路线

\\n\ printf(\ 3. 查询景点间最短路径 4. 景点信息查询 \\n\ printf(\ 5. 更改图信息 6. 查询景点间可行路径 \\n\ printf(\ 7. 打印邻接矩阵 8. 退出 \\n\ printf(\ printf(\请输入你的选择:\ scanf(\ }//endwhile(1)

}//mainwork

// (18) 主函数。设定界面的颜色大小,调用工作区模块函数 void main() { system(\屏幕颜色设定

system(\ mainwork(); }

本文来源:https://www.bwwdw.com/article/7ae6.html

Top