收藏 分享(赏)

数据结构课程设计模板new.doc

上传人:dreamzhangning 文档编号:2242106 上传时间:2018-09-07 格式:DOC 页数:26 大小:461KB
下载 相关 举报
数据结构课程设计模板new.doc_第1页
第1页 / 共26页
数据结构课程设计模板new.doc_第2页
第2页 / 共26页
数据结构课程设计模板new.doc_第3页
第3页 / 共26页
数据结构课程设计模板new.doc_第4页
第4页 / 共26页
数据结构课程设计模板new.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、 河南城建学院课程设计报告书专 业:计算机科学与技术 课程设计名称:数据结构课程设计题 目:校园导航问题班 级:0814122学 号:081412211姓 名:谌文娟同 组 人 员:许华宇指 导 老 师:王永皎、赵军民、陈秋红、张延红完 成 时 间:2014 年 2 月 27 日摘要校园导航要求每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。要用“邻接矩阵”来存储各点间的距离,然后用 floyd 算法求出最短路径。所以采用工程思想,将系统共分以下五个模块:节点数据结构类型、创建导航图函数、最短路径导航函数、查询函数声明、主菜单。关键词:数据结构;

2、算法设计目 录目 录第一章 开发环境和开发工具 11.1 C 语言简介 .11.2 开发背景 21.3 开发环境 2第二章 算法思想 32.1 系统需求分析 32.2 系统总体设计 42.2.1 系统设计目标 42.2.2 开发设计思想 42.2.3 系统功能模块设计 42.3 算法思想描述 4第三章 算法实现 63.1 数据结构 63.2 程序模块 83.3 各模块之间的调用关系 93.4 源程序代码 10第四章 测试与分析 164.1 测试数据选择 164.2 测试结果分析 20总 结 21心得体会 21参 考 文 献 221第一章 开发环境和开发工具1.1 C/C+简介计算机诞生初期,人

3、们要使用计算机必须用机器语言或汇编语言编写程序世界上第一种计算机高级语言诞生于 1954 年,它是 FORTRAN 语言先后出现了多种计算机高级语言其中使用最广泛影响最大的当推 BASIC 语言和 C 语言它是一种使用非常广泛的计算机编程语言。C+是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。C+是由 AT /*定义景点名称*/int number;/*景点编号*/ char introduce100;/*景点描述*/vertex;/*定义顶点类型*/vertex verNum; /*

4、 存放顶点的一维数组,数组地领个单元没有用 */int edgeNumNum; /* 存放路径的长度 */int shortestNumNum; /*定义全局变量存储最小路径*/int pathNumNum; /*定义存储路径*/2.创建导航图函数void init()int i,j;函数描述:主要将每个节点进行命名、每个顶点到其他所有定点的路径值用邻接矩阵进行存储。例如:ver1.number =1;strcpy(ver1.name,“北门“);7strcpy(ver1.introduce,“河南城建北门,面朝北“);作用:使 1 号定点命名为“北门” ;描述为“河南城建北门,面朝北” ;3

5、.最短路径导航函数void floyd()int i=1,j=1,k=1,l=1;for(i=1;i(shortestik+shortestkj)shortestij=(shortestik+shortestkj);8pathij=pathji=k;函数描述,用 floyd 算法通过图的权值矩阵求出图中的每两点间的最短路径矩阵。还引入一个后继节点矩阵 path 来记录两点间的最短路径。5.主菜单char show1()描述;显示导航图中的所有导航节点,能够快速方便的对各个地点进行导航。先执行main 函数。3.2 程序模块 输入始末景点显示路径信息输入景点序号显示景点介绍显示各个景点之间的距离

6、显示学校介绍返回退出查询景点路径 查询景点信息 查询各景点间距结束开始学校简介93.3 各模块之间的调用关系造图函数()Main() 主菜单Show1()最短路径函数Shortestpath()输出函数图二3.4 源程序代码#include #include#define Num 15/*景点个数*/#define Maxedge 5000/*typedef structchar name14 ; /*景点名称*/int number; /*景点编号*/char introduce100; /*景点描述*/vertex; /*定义顶点的类型*/vertex verNum; /*图中的顶点,即为

7、景点 */int edgeNumNum; /*图中的边*/ int shortestNumNum; /*景点间最短距离*/ int pathNumNum; void show1()/*主菜单*/10printf(“ttt*河南城建学院平面图*nn“);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“);print

8、f(“t 务 山 顶 图书馆n“);printf(“t 区 操 场n“);printf(“t宿舍楼n“);printf(“t n“);printf(“t 西门nn“); void show2()/*景点编号*/int i=1;for(i=1;i=1)printf(“名称:%sn简介:%sn“,veri.name,veri.introduce);return;elseprintf(“输入有误!“);void floyd()/*造图函数*/13int i=1,j=1,k=1,l=1;for(i=1;i(shortestik+shortestkj)shortestij=(shortestik+sho

9、rtestkj);pathij=pathji=k; /*记录经过的路径*/void show4(int i,int j)/*输出函数*/int k=0,a=i,b=j;if(shortestij!=Maxedge)printf(“从%s 到%s 的最短路径为:n“,veri.name,verj.name);printf(“%s“,veri.name);while(pathij!=0)k=pathij;while(pathik!=0)k=pathik;printf(“-%s“,verk.name);i=k;printf(“-%s;n“,verj.name );printf(“最短距离为:%d 米

10、。n“,shortestab);else14printf(“从%s 不能到达%s。“,veri.name ,verj.name );void shortestpath()/*最短路径函数*/int i=0,j=0;while(1)system(“cls“);show1();show2();printf(“请输入要查询的两点的编号:(以空格间隔)“);scanf(“%d%d“,if(i0show4(i,j);return;int main()/*主函数*/char i;printf(“nnnnnnttWELCOME TO HENAN CHENGJIAN UNIVERSITY!nnn“);prin

11、tf(“ttt n“);printf(“ttt n“);printf(“ttt 祝你健康快乐! n“);printf(“ttt 每天都是 n“);printf(“ttt 星期天 ! n“);printf(“ttt n“);printf(“ttt n“);printf(“ttt n“);printf(“ttt n“);printf(“nn“);init();system(“pause“);while (1)system(“cls“);show1();show2();i=show3();switch(i)15case a:information();break;case b:shortestpat

12、h();break;case c:system(“cls“);/*清屏操作*/printf(“nnnnnnnnnttttGOODBYE!nnnttO(_)OttO(_)Onnnnnnnnn“); system(“pause“);exit(0);default :printf(“输入错误!n“);break;system(“pause“);16第四章 测试与分析4.1 测试数据选择导航系统开启17任意键进入主菜单18输入 a 进入信息查询,并选择景点 519选择 b 进入最短路径查询,并选择 1 到 1020选择 c 退出校园导航系统4.2 测试结果分析设计过程中遇到的问题,调试过程中难免会遇见

13、这样或者那样的问题,一个很低级的错误就是在字符串的赋值上居然还会出错, ,当时确实有点慌了,等冷静下来一想才把问题想明白,字符串的赋值必须用 strcpy函数。看来基本功还是相当的重要的。 剩下的就是最主要的问题也可以说是 99%的问题,都在弗洛伊德算法上了,弗洛伊德算法是我们重点学习的一个算法当时学习时就感觉很吃力,不过当时也确实弄明白了,只可惜都过去好长一段时间了所以有所遗忘,算法确实是按照书上所写的抄到了程序中。最短路径确实也存到了数组 shortestij中,可是在输出相应的景点名称时总不能输出正确,感觉是很不可思议的问题,后来才明白数组中的存储是按照一定的顺序存储的但是并不一定是路径

14、中所途经的景点的顺序,所以最后选择在求最短路径过程中将其输出。21总 结在今后的工作、学习中我将认真总结经验教训,努力使自己成为一名技术过硬、工作严谨、思维活跃的工程人员,为提高人们的生活质量做出更大的贡献。这次程序的推荐路径就能设计还有许多不足,比如校园导航还可以有很多改进的地方,如果有更多更符合人性化,还有各个景点的信息介绍不够详细,程序从整体上看比较繁琐,多数用了 for 循环语句,如果能用多一些递归函数会显得比较简洁,因为程序是借鉴网上的一些例子,运用的是弗洛伊德算法,运算效率比起 Dijkstra 算法效率更高。心得体会这个程序在设计过程中运用了不同的函数,在做课程设计的时候我也遇到

15、了一些自己不明白的问题,通过查找教科书,上网查找资料,合同组成员进行探讨分析,找出比较符合我们心意的代码,积极探索语言知识,勇于发现问题,并及时解决问题。通过对程序的进一步了解,让我明白课本上的知识我虽然并不太感兴趣,但是不管在任何程序设计中,一个大的程序都需要小的语言知识结合起来共同运用的。在今后的学习过程中,一定要认真学好 C 语言这门课程,同时通过对这次作业的完成,加深了我对 C 语言知识的认识和巩固,知道了在进行语言编程的时候只有带着问题反复实践,才能更熟练的掌握和运用。因此在课余时间多学习和研究 C 语言对我自己本生来说是有一定的提高的。多学习课本以外的知识,充分扩大知识面,不断充实自己,不断提高。22参 考 文 献上网查找数据结构(c 语言版)清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报