数据结构课程设计报告

----旅游咨询系统设计

目录

一、需求分析

二、系统分析

三、概要设计

一、 系统划分

二、 邻接矩阵建立流程图:

三、 迪杰斯特拉算法流图

四、详细设计

五、调试分析

一、运行结果

二、改进设想

六、课设总结

旅游咨询系统设计

一、需求分析

在交通网络日益发达的今天,人们出行有很多种方式、路线,而如何选择符合需要的方式路线成为大家的一大难题。所以,在此我利用计算机建立一个旅游咨询系统。在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的路线,所带权值为两个城市间的路程、时间或车费等。这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低;如何选择一条路径使得从A城到B城所用的时间最少等等的一系列问题。

二、系统分析

设计一个旅游咨询系统,能咨询从任何一个城市顶点到其他城市顶点之间的最短路径(里程、最低花费或是最少时间等问题。对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。旅客可以在同一个系统中综合考虑自己的各目标城市,选择一个最佳的旅游路线和出行方式。

针对最短路径问题,在本系统中采用图的相关知识,采用了迪杰斯特拉算法,解决在实际情况中的最短路径问题,而迪杰斯特拉算法的时间复杂度为O(n2,空间复杂度为O(n。本系统使用邻接矩阵存储无向图。其中,建立矩阵的时间复杂度为O(n2,但是利用其查找一条边的时间复杂度为O(1。本系统中包括了利用邻接矩阵建立图的存储结构和单源最短问题两大部分,使用指针数组实现利用一个程序实现最短路径和最短时间的运算。并且本系统设置了人性化的系统提示菜单,方便使用者的使用。

三、概要设计

一、 系统划分

该系统可以划分为三个部分:

1、 利用邻接矩阵建立图的存储结构;

2、 利用迪杰斯特拉算法解决单源最短路径问题;

3、 实现城市之间的最短路径问题和最短时间问题。

二、 邻接矩阵建立流程图:

四、详细设计

本课程设计的源程序如下所示:

#include

#include

#define MVNum 100

#define Maxint 9999 /*将无穷大的数值设为9999*/

typedef char vertextype;/*建立无向图*/

typedef int adjmatrix;

typedef struct

{

vertextype vexs[MVNum];

adjmatrix arcs[MVNum][MVNum];

}mgraph;

mgraph *G[2]; /*设置指针数组用以实现距离和时间最小值求取*/

void city_number( /*输出城市代表序号*/

{ printf("*************************************************************************\n";

printf(" 1、北京 2、上海 3、香港 4、天津 5、重庆 6、澳门 7、哈尔滨 8、石家庄";

printf(" \n 9、兰州 10、昆明 11、成都 12、长春 13、沈阳 14、长沙 15、海口 16、西安";

printf("\n*************************************************************************\n";

}

void Createmgraph(int a,int n,int e /*建立无向邻接矩阵*/

{int i,j,k;

int w;

for(i=1;i<=n;i++

for(j=1;j<=n;j++

if(i==j G[a]->arcs[i][j]=0; /*邻接矩阵对角线初始值设为0*/

else G[a]->arcs[i][j]=Maxint; /*其他元素设为无穷大*/

for(k=1;k<=e;k++ /*读入e条边数的信息*/

{printf("\n输入图中各起点终点及其权值i,j,w:"; /*读入无向边及其权值*/

scanf("%d,%d,%d",&i,&j,&w;

G[a]->arcs[i][j]=w;

G[a]->arcs[j][i]=w;

}

}

void Dijkstra(int a,int v0,int N/*Dijkstra算法的实现和打印*/

{

enum boolean S[MVNum]; /*终点集合*/

int dist[MVNum],path[MVNum]; /*dist表示源点v0到图中其余顶点的最短长度,path表示其对应的路径*/

int i,wmin,u,num=1,k;

for(i=1;i<=N;i++ /*数组dist和集合S付初值*

c语言求一点到多点最短路径长度,C语言迪杰斯特拉实现最短路径算法(14页)-原创力文档...相关推荐

  1. 迪杰斯特拉算法c语言要点,C语言迪杰斯特拉实现最短路径算法要点.doc

    C语言迪杰斯特拉实现最短路径算法要点.doc 数据结构课程设计报告 ----旅游咨询系统设计 目录 一.需求分析- 2 - 二.系统分析- 2 - 三.概要设计- 3 - 一.系统划分- 3 - 二. ...

  2. c语言迪杰斯特拉算法求最短路径,迪杰斯特拉 ( Dijkstra ) 最短路径算法

    迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径.它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本 ...

  3. 迪杰斯特拉算法c语言6,C语言迪杰斯特拉实现最短路径算法.doc

    数据结构课程设计报告 ----旅游咨询系统设计 目录 一.需求分析- 2 - 二.系统分析- 2 - 三.概要设计- 3 - 一.系统划分- 3 - 二.邻接矩阵建立流程图:- 3 - 三.迪杰斯特拉 ...

  4. 最短路径之迪杰斯特拉(Dijkstra 算法)弗洛伊德算法(C语言完整代码实现)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  5. c语言求圆周率 . 4,C语言求圆周率π(三种方法)(4页)-原创力文档

    C语言求圆周率π(三种方法) 题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止.题目2) 根据公式②,用前100项之积计算π的值.题目1)提供了一种解法,题目2)提供了两种 ...

  6. 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...

    书山有路勤为径 学海无涯苦作舟 一.思考题. 1.你如何向别人解释清楚什么是编程.什么是计算机语言? 2.什么是C语言? 二.解答题. 1.用C语言编写程序:求任意两个整数的和.如果是小数的话,要求输 ...

  7. c语言意义y x 8.0,C语言符号意义(8页)-原创力文档

    . C 语言符号意义大全 32 个关键字及其含义: auto :声明自动变量 一般不使用 double :声明双精度变量或函数 int : 声明整型变量或函数 struct :声明结构体变量或函数 b ...

  8. C语言下取整下半个方括号,c语言易错知识点总结[工作范文](28页)-原创力文档...

    c语言易错知识点总结 篇一:c语言易错知识 C语言教学中学生容易出错的知识点解析 0引言 C语言是一种很灵活的语言,在程序调试过程中常常会 遇到一些难解决的问题,一般语法错误计算机能检测出来, 而逻辑 ...

  9. x_html语言名词解释,第2章++XHTML标记语言(97页)-原创力文档

    第2章 XHTML标签语言 2.1 XHTML基础 2.2 段落和文字标签 2.3 列表标签 2.4 超级链接标签 2.5 插入图片标签 2.6 页面布局标签 2.7 框架标签 2.8 表单标签 2. ...

  10. C语言对p1口取反,单片机c语言编程基础(5页)-原创力文档

    单片机的外部结构: 1. DIP40双列直插: 2. P0,P1,P2,P3四个8位准双向I/O引脚:(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20): ...

最新文章

  1. function在php中,function
  2. PHP中不被注意但是比较重要的函数用法集合
  3. ssl2295-暗黑破坏神【dp练习】
  4. 为什么吃红薯容易放屁
  5. memcache 知识点
  6. 暑假练习:uva12563(01背包问题)
  7. px 与 dp, sp换算公式?(转)
  8. window上mysql的配置文件_windows系统中,MySQL配置文件my.ini在哪里?
  9. MySQL-Workbench数据库基本操作
  10. TorchScript的TracedModule和ScriptModule的区别
  11. 机器学习在重度抑郁症患者中的应用:从分类到治疗结果预测
  12. Espresso IdlingResource 测试延时操作的使用
  13. 关于奇异值分解(SVD)的理解
  14. svg图片 填充颜色
  15. 基于STM32指纹密码锁设计
  16. edg击败we视频_2019德杯淘汰赛:EDG让二追三击败WE
  17. Java如何实现多继承?
  18. 生成式对抗网络GAN(一)—基于python实现
  19. 架构师教你:如何实现两个完全独立闭环业务系统的融合。
  20. 搬家公司派单订单管理系统 php,订单派单管理系统哪些功能可以帮助企业发展...

热门文章

  1. enum 在c中的使用
  2. Office for Mac升级提醒如何去掉?关闭Mac的Microsoft AutoUpdate弹框提示
  3. 苹果Mac Dock 栏应用窗口预览:​​​​​​​​​​​​DockView
  4. 如何在 Mac 上创建自动填充的智能文件夹?
  5. 如何在 macOS 中将用户帐户拆分为两个单独的帐户?
  6. iPhone卡顿、变慢要如何解决?12 种提升手机顺畅度技巧
  7. Mac聚焦搜索Spotlight搜不到文件怎么办?
  8. 如何使用Wondershare UniConverter应用效果并调整音量
  9. Loadrunner -27225错误
  10. Upgrade to Spring Boot 1.4