收藏 分享(赏)

3-交通咨询系统设计-数据结构-课程设计任务书.doc

上传人:精品资料 文档编号:10871294 上传时间:2020-01-16 格式:DOC 页数:21 大小:340.67KB
下载 相关 举报
3-交通咨询系统设计-数据结构-课程设计任务书.doc_第1页
第1页 / 共21页
3-交通咨询系统设计-数据结构-课程设计任务书.doc_第2页
第2页 / 共21页
3-交通咨询系统设计-数据结构-课程设计任务书.doc_第3页
第3页 / 共21页
3-交通咨询系统设计-数据结构-课程设计任务书.doc_第4页
第4页 / 共21页
3-交通咨询系统设计-数据结构-课程设计任务书.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、1交通资讯系统1.系统需求分析1.1 问题描述在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。 1.2 功能要求1.交通资讯系统提供用户三种决策方案:一是建立交通网络图的存储结构。二是 某个城市到达其余各城市的最短路径。三是实现两个城市之间最短路径的问题。主 要目的是给用户提供路径咨询。2.本

2、系统规定:(1)在程序中输入城市名称时,需输入 0 到 5 的城市代号(2)在选择功 能是,应输入与所选功能对应的一个整形数据。(3)程序的输出信息主要是:城市代号,某城市到达其余各城市的最短路径,两城市之间最短路径22.概要设计2.1 系统总体设计图 2.1 系统总体设计2.2 各模块的功能void main() 主函数void Dijkstr() 采用狄克斯特拉算法求从顶点 v 到其余个顶点的最短路径void DisPath() 由 path 计算最短路径void Ppath() 输出各条最短路径void Floyd() 采用弗洛伊德算法求所有顶点之间的最短路径void DisPath2(

3、) 由 path 计算最短路径void Ppath2() 输出各条最短路径交通资讯系统一个城市到其他城市 两个城市之间存储交通图查询最短距离获得最佳路径查询最短距离获得最佳路径32.3 相关数据结构设计1.数据结构typedef int InfoType;typedef struct char cityname;int no;InfoType info;VertexType;typedef structint edgesMAXVMAXV;int n,e;VertexType vxsMAXV;MGraph;2.数据库结构:下表构成该系统的基本数据库城市代号 邻接矩阵边数组城市个数 路径 城市名称

4、int int int int char3.详细设计3.1 采用 c 语言定义相关的数据结构本系统定义了整形 int,字符型 char,还有结构体定义,建立图的存储结构首先定义交通图的存储结构,邻接矩阵是表示图形中顶点之间相邻关系的矩阵.设G=(V,E)是具有 n(n0)个顶点的图,则邻接矩阵具有如下定义的 n 阶方阵Wij 若 vivj 且E(G)Aij= 其他一个图的邻接矩阵表示是唯一的,除了许用一个二维数组存储顶点之间相邻关系的邻接矩阵外,通常还需要使用一个具有 n 个元素的一维数组来存储顶点信息43.2 函数调用关系图3.2.1 主函数void main()int i,j,z,x;MG

5、raph g;int AMAXV=INF,5,INF,7,INF,INF,INF,INF,4,INF,INF,INF, 8,INF,INF,INF,INF,9,INF,INF,5,INF,INF,6,INF,INF,INF,5,INF,INF,3,INF,INF,INF,1,INF;g.n=6;g.e=10;for(i=0;iAik+Akj) Aij=Aik+Akj;pathij=k;3.2.6 Ppath2 函数向前递归查找路径上的顶点,找到了起点则返回, ,找顶点 i 的前一个顶点k,找顶点 k 的前一个顶点 j。在 path 中递归输出从顶点 i 到顶点 j 的最短路径10void Pp

6、ath2(int pathMAXV,int i,int j) int k;k=pathij;if(k=-1)return;Ppath2(path,i,k);printf(“%d,“,k);Ppath2(path,k,j);3.2.7 DisPath2 函数由 path 计算最短路径,若顶点 i 和顶点 j 之间没有边,则输出 i 到 j 没有路径,若有边则输出路劲上的起点、中间点和终点。void Dispath2(int AMAXV,int pathMAXV,int n) int i,j;printf(“请输入起点和终点(i,j):“);scanf(“%d,%d“,if(Aij=INF) if

7、(i!=j)printf(“从%d 到%d 没有路径n“,i,j);elseprintf(“从%d 到%d 路径为:“,i,j);printf(“%d,“,i);Ppath2(path,i,j);printf(“%d“,j);printf(“t 路径长度为:%dn“,Aij);114.系统调试4.1 系统调试中的问题(1)只考虑函数而忽视数据库和标点:在存储文件时,没有头文件;在程序中,有部分;和遗漏。(2)控制程序功能,只能使用一次,导致整个程序无实际作用;对图的存储结构不太熟悉;没有初始化路径,致使出现了乱码;使用单个字符输入一个字符串,导致字符串输入异常;5.运行结果5.1 输入界面输入

8、界面如图 5.1 所示图 5.1 输入界面125.2 显示界面显示界面如图 5.2 所示图 5.2 显示界面5.3 查询界面查询一个城市到其余各城市最短路径界面如图 5.3 所示图 5.3 查询一个城市到其余各城市最短路径界面13查询两城市之间最短路径界面如图 5.4 所示图 5.4 查询两城市之间最短路径界面5.4 退出界面退出界面如图 5.5 所示图 5.5 退出界面146.心得体会这次的任务分配,从难度上来说,我这个交通资讯系统并不复杂,在书本上基本上能找到一摸一样的程序,但关键是理解。平时不听课,现在要把这些整体连接起来就跟困难,虽然书上的程序能看懂,但实践设计不比理解,要是练得少,往

9、往捉襟见肘,要学会融会贯通,就是难上加难,所以我这次就不断演练,不断打击信心,结果程序不是自己的,有时候觉得计算机语言真的好难学,我想还是练少了,酱油打多了。尽管这学期课听了很多,但效果还是不好。总的来说,这次编程还是学到了一些东西,尽管微乎其微,算法逼近是死的,但人的大脑是活的,只有不断地实践,才能找到信心,也才能学到东西,尽管这次编程是借鉴网络上的,但还是可以学到很多东西,怎样的思考方法,怎样连接是逻辑语句更加完善。所以在编程中和调试过程中要认真分析和善于发现问题并及时解决的习惯,不懂得及时问老师或其他同学通过本次实验,掌握了最短路径的问题,并结合图的存储结构,狄克斯特拉算法、弗洛伊德算法

10、等解决交通资讯系统的设计问题,源程序打出来后有多处错误,大小写错误、符号错误、遗漏错误。7.附录7.1 源代码#include#include#include “string.h“#define INF 32767#define MAXV 10typedef int InfoType;typedef structchar cityname;int no;InfoType info;VertexType;typedef struct15int edgesMAXVMAXV;int n,e;VertexType vxsMAXV;MGraph;void Ppath(int path,int i,int

11、 v)int k;k=pathi;if(k=v) return;Ppath(path,k,v);printf(“%d,“,k);void Dispath(int dist,int path,int s,int n,int v)int i;for(i=0;iAik+Akj) Aij=Aik+Akj;pathij=k;Dispath2(A,path,g.n);void main()int i,j,z,x;MGraph g;int AMAXV=INF,5,INF,7,INF,INF,INF,INF,4,INF,INF,INF,8,INF,INF,INF,INF,9,INF,INF,5,INF,INF

12、,6,INF,INF,INF,5,INF,INF,3,INF,INF,INF,1,INF;g.n=6;g.e=10;for(i=0;ig.n;i+)for(j=0;jg.n;j+)g.edgesij=Aij;printf(“* 交通咨询系统 *n“);printf(“* 1-查看系统中的城市代号 *n“);printf(“* 2-一个城市到所有城市的最短路径 *n“);19printf(“* 3-任意的两个城市之间的最短路径 *n“);printf(“* 0-退出 *n“);printf(“n“);printf(“请选择:“);scanf(“%d“, while(z!=0)switch(z)c

13、ase 1:printf(“0北京,1天津,2上海,3广州,4南京,5厦门n“); printf(“n“);main();scanf(“%d“,break;case 2:printf(“请输入城市代号:“);scanf(“%d“,switch(x)case 0:printf(“以下是最短路径:n“);Dijkstra(g,x);break;case 1: printf(“以下是最短路径:n“);Dijkstra(g,x);break;case 2: printf(“以下是最短路径:n“);Dijkstra(g,x);break;case 3:printf(“以下是最短路径:n“);Dijkst

14、ra(g,x);break;case 4: 20printf(“以下是最短路径:n“);Dijkstra(g,x);break;case 5: printf(“以下是最短路径:n“);Dijkstra(g,x);break; default :printf(“输入有误,请重新输入n“);printf(“n“);main();printf(“n“);main();scanf(“%d“,break;case 3:Floyd(g);printf(“请选择:“);printf(“n“);main();scanf(“%d“,break;case 0:exit(-1);break;default:printf(“输入有误,请重新输入n“);printf(“n“);main(); 7.2 参考文献数据库教程(第三版) 李春葆 尹为民 李蓉蓉 蒋晶珏 喻丹丹 编著M清华大学出版社数据库教程上机实验指导(第三版) 李春葆 尹为民 李蓉蓉 蒋晶珏 喻丹丹 编著M清华大学出版社218. 评分表计算机与通信学院课程设计评分表课程名称: 数据结构 教师签名: 日 期: 项 目 评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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