- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西 安 邮 电 大 学
(计算机学院)
数据结构设计报告
题 目: 导航图
专业名称: 软件工程
班 级: 班
学生姓名:
学号(8位):
指导教师:
设计起止时间: 2014年12月15日—2014年12月26日
一. 设计目的
1.数据结构课程设计是让学生综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发
2. 通过课程设计,使学生通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力
二. 设计内容
我设计的是旅游查询系统,是用于校园的,任何景区都可以用。对于游客来说,游客可以查询要游览的景点,可以显示出该景点的相关信息,景点等级。也可以输入起点和终点,找到一条最短路径,或者这两点之间所有路径。或者输入起点,自动生成一个全程最短的游览路线。当然游客也可以查看校园的平面图。对于管理员来说,管理员可以增,删,改景点和道路信息。
三.概要设计
1.功能模块图;
旅游查询系统
2.各个模块详细的功能描述。
1.浏览全景
显示校园的平面图,让游客大概的了解校园的形貌,以及各个景点的位置。
2.显示所有景点和路线
将所有景点和路线以列表的形式显示出来,包括景点名称,景点等级,景点描述;路线也有道路名称,道路距离,道路的起点终点。
3.最短行程查询
输入起点,显示该起点到其它所有景点的最短路径。
4.最佳游览全景路线
输入起点,生成一个最小联通路径,这样游客便能以最少的行程来游览所有景点。
5.两点之间所有路线
输入起点和终点,显示出这两点之间的所有路线供游客选择。
四.详细设计
1.功能函数的调用关系图
2.各功能函数的数据流程图
3.重点设计及编码
用DFS得出两点之间所有路线,首先输入起点和终点名称,找到其名称的下标,以起点下标开始进行深度优先遍历,每遍历到下一个邻接点让其进栈,并判断其下标是否和终点下标相同,如果相同则输出栈内所有元素,并将栈顶出栈,若不相同,继续遍历。直至找完所有的路线。在这里栈的作用是存储将要找到的路线。
五.测试数据及运行结果
1.正常测试数据和运行结果
六.调试情况设计技巧及体会
在求两点之间所有路径和最小联通路径的算法中,需要将邻接表转化为矩阵去做。对于prim算法所得出的结果并不是游客所要按照的走法,只是单纯的最小生成树,若要得到一个节省的且能游览所有的景点的走法,那么需要遍历所得到的最小生成树,但并没有一个普遍的遍历方法去得到,完全需要游客自己主观的去判断怎样走才最短。
在系统管理这一功能中,只有管理员才能使用,所以必须设置密码,这样就避免了游客的操作。
对于邻接表要存储无向图,我们需要该顶点的邻接点个数,输完该顶点,再输入这些邻接点。那么输入以某个邻接点为顶点时,之前已经输过的顶点就是它的邻接点,我们又要去输一遍它,这样太麻烦了。那么有什么办法呢?经过我的思考和研究,我们再输入完一个顶点(和它携带的邻接点)后,加一个算法,让这些邻接点和这个顶点关系一并接到这些以邻接点为顶点的邻接表上。具体处理如下:
for(p=a-vertex[i].head;p!=NULL;p=p-next)/*无向图在邻接表中相互指向*/
{ if(p-adjvexi)
{ if(a-vertex[p-adjvex].head==NULL)
q=a-vertex[p-adjvex].head=(anode *)malloc(sizeof(anode));
else
{ for(q=a-vertex[p-adjvex].head;q-next!=NULL;)
q=q-next;
q-next=(anode *)malloc(sizeof(anode));
q=q-next;
}
q-next=NULL; q-adjvex=i; strcpy(q-rname,p-rname);
q-weight=p-weight;
}
}
七、源代码及相关文件
主程序代码:
#includestdio.h
#includestring.h
#includ
文档评论(0)