数据结构课程设计

发布 2022-10-05 01:18:28 阅读 5228

武汉长江工商学院。

计算机科学与技术系。

2024年12月9日。

目录。1.课程设计的目的与意义 1

1.1课程设计的目的 1

1.2课程设计的意义 1

2.系统功能描述及设计 1

3.系统存储结构及描述 3

4.系统功能实现及算法描述 5

4.1校园景点信息的录入 5

4.2查询图中任意两个景点间的最短路径 6

4.3查询图中任意一个景点到其他景点的所有路径 7

4.4查询任意两景点间的所有路径 8

5. 系统性能测试 9

5.1 主界面 9

5.2浏览校园全景 9

5.3查询图中任意两个景点间的最短路径 10

5.4查询图中任意一点到其他景点间的所有路径 10

5.5查询任意两个景点间的所有路径 11

6.设计小结 11

参考文献 11

源**清单 12

1.课程设计的目的与意义。

1.1课程设计的目的。

随着社会的发展,人们对生活的也要求越来越高,从以前的一切都用手用笔的时代到了一切都可以用机器代替的时代。现在的大学校园越来越大了,对于对新学校不熟悉和对于外来着更好的参观和游览学校,特做了这个校园导游图,它能输出所有校园景点的简介供用户参考,并且能找到两个景点间最短路径,让用户少走弯路和冤枉路,而且还可以找到一个景点到其他景点的最短路径,可以提供使用者最好的游览路径。更多的功能将会在后续继续加入。

1.2课程设计的意义。

巩固和加深学生对数据结构的基本知识的理解和掌握,掌握c语言编程和程序调试的基本技能。利用数据结构进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用数据结构解决实际问题的能力。

培养我们综合运用所学知识的能力和锻炼实践的能力,能够做到善于发现,提出,分析和解决实际问题。同时,进一步加深、巩固我们所学专业课程(《数据结构实用教程》)的基本理论知识,如语句嵌套和循环,分支等结运用,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。掌握运用c语言独立地编写、调试应用程序和进行其它相关设计的技能,扩展自己的知识面,充分发挥广大同学的潜力,提高程序开发能力,使我们通过这次课程设计而得到全面的锻炼。

2.系统功能描述及设计。

整个系统主要包含三个大的模块(功能模块图见下图2-1)

菜单1:浏览校园全景,该功能的实现是通过编程着将所有信息事先录入系统中,当用户选择时,会输出学校所有的景点,编号及简介。菜单2:

查询任意两景点间的所有路径。这个是根据弗洛伊德算法改编而来,该算法能很方便的找出用户所输入的两景点间的最短路径。当然,当你输入的景点编号不存在时,就回提示重新输入,知道输入的两个点都符合要求才会找出最短路径。

菜单3:查询一个景点到其他所有景点的最短路径。该系统能通过你所在的位置找出到其他所有景点的最短路径。很方便的满足客户需要到达其他景点的路径。

菜单4:查询图中任意两景点间的所有路径。有了这个功能,用户可以很方便的找到图中任意连个景点间的所有路径。这样用户就可以选择自己中意的路径来到达自己的目的地了。

菜单5:退出整个系统。

图2-1系统功能描述。

3.系统存储结构及描述。

下面将给出程序**的部分**,将详细介绍系统的存储结构。如:

struct infotype

char name[20];

int num;

char introduction[100];

weighttype maxvalue;

struct mgraph

infotype vexs[maxver定义存储定点信息的数组类型。

infotype arcs[maxver][maxver]; 定义存储邻接矩阵的数组类型。

int vexnum,arcnum;

该存储结构:在上面的结构体中,包含了图中所需的景点名,景点个数,景点简介,而且存储了边数,还利用数组来存储两景点间是否有边,而且还包含了两景点间的权值。

for(i=0;i<

strcpy("弘德楼");

strcpy("学生公寓,主要为考研学生准备,环境良好。")

上面简单的几行**就存储了一个景点的编号,名称,简介。

for(i=0;i<

for(j=0;j<

for(i=0;i<

for(j=0;j<

上面的**利用了两个for循环很快的定义出了任意两个景点的关系,如是否存在边,存在边权值是大小(没有边则为事先定义的最大值,存在边则直接输入权值),同时也作出了无向图应有的特点,及是双向的,并且两边权值相等。

上面整个信息的录入存储了整个系统需要的数据,包括景点个数,边数,名称,简介,距离。有了这个函数,方便以后所有的需要数据的地方来调用它。

4.系统功能实现及算法描述。

4.1校园景点信息的录入。

该功能的实现是通过利用定义好的变数,定点数,景点名,景点编号,景点间权值的,一次输入而i,j的取值范围是由和确定的。图4-1:

图4-1校园景点信息的录入。

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

该功能是利用弗洛伊德算法如果从k到j有边,则存在一条长度为arcs[k][j]的路径,该路径不一定是最短路径。考虑路径(k,u,j)是否存在,若存在,比较(k,j)和(k,u,j)的长度,取较短者为从k到j的中间点序号不大于0的最短路径。以此类推,每次增加一个点,从而求出任意两点间的最短路径。

这样,经过n次比较后,所求得的必为从k到j的最短路径。按此方法,可以同时求得任意两点间的最短路径。流程图如下4-2:

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

4.3查询图中任意一个景点到其他景点的所有路径。

这个功能的实现是通过数组存储所有右边的路径,然后根据用户输入的一个景点的编号找到该景点与其他景点右边的景点,然后以右边的其他景点为起点,重复上述流程,直到找完每个景点即结束程序。如图4-3:

图4-3查询图中任意一个景点到其他景点的所有路径。

4.4查询任意两景点间的所有路径。

该功能是通过用户输入的两个景点的编号找到对应的景点名,然后以第一个点作为起点向其他点找边,当边的权值小于最大值时,说明存在边,即可保存在数组中,直到找到终点对应的编号即为一天路径,循环上述过程,直到出现重复路径即结束函数,跳出循环。如图图4-4:

图4-4查询任意两景点间的所有路径。

5. 系统性能测试。

5.1 主界面。

当程序成功被打开时会出现如图5-1所示的界面,该界面相当于一个菜单,用户可以根据自己的需求选择数字。“1”浏览所有景点的信息,“2”找出任意两景点间所有路径,“3”找到一个景点到其他景点间的所有路径,“4”退出系统 ,下面是“请选择,输入1-5键:”的字样。

如图5-1:

图5-1主界面测试图。

5.2浏览校园全景。

当用户选择1时,程序即会根据之前存储好的信息输出景点间的所有信息,供用户浏览及参考。运行效果如下5-2**所示。

图5-2浏览校园全景。

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

当用户选择2时,则会进入该系统,系统会提示“请输入两个景点的编号”,当你输入的景点不符合要求时,会提示重新输入如10和2,当符合要求是,系统则会输入最短路径,如我输入了2和4,如图5-3:

图5-3查询图中任意两个景点间的最短路径。

5.4查询图中任意一点到其他景点间的所有路径。

当用户输入3是,则会进入该系统,此时系统会提示输入你要选择的景点编号,当不合要求时,同样会提示请再次输入,直到符合要求为止,如我输入了20,之后又输入了了15,最后输入5,才输入路径。如图5-4:

图5-4查询图中任意一点到其他景点间的所有路径。

5.5查询任意两个景点间的所有路径。

当用户选择4时即可进入该系统,系统会提示用户输入要查询的两个景点的编号。相同的当有编号不存在时,系统会提示重新输入正确的编号,如我输入了一个2和10时,系统会提示输入有误,请重新输入,最后我输入了2和7,则输出了所有路径:如图5-5所示。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...