交通咨询系统C语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CHINA

交通咨询系统

目录

一、需求分析 (2)

1、程序的功能及设计要求 (2)

2、输入输出的要求 (2)

二、环境说明 (2)

三、详细设计 (3)

1、模块设计 (3)

2、画出各函数的调用关系图、主要函数的流程图。 3

2、详细代码 (4)

四、调试分析 (4)

1、测试数据: (4)

2、借鉴的资料 (5)

五、课程总结 (6)

六、附录 (6)

需求分析

1、程序的功能及设计要求

在交通网络非常发达、交通工具和交通方式不断更新的今天,

人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也感兴趣。对于这样一个人们关心的问题,通过建立交通网络图的存储结构图,提供用户查询的功能,功能一:通过输入城市名及任意两个城市的距离,查询任意两个城市之间的最短

距离,从而达到最省目的;功能二:通过输入城市名以及任意两个程序的距离,查询中转路线最少。程序所具有的功能特色本程序主要目的是为了给用户提供路径咨询,可以通过输入设置,延续程序的拓展性。

设计要求及分析

设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的中转次数最

少问题或最低花费或最少时间(最短路径)问题。

该设计共分三个部分:一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后

再实现任意两个城市顶点之间的最短路径问题。

1.建立交通网络图的存储结构

要实现设计要求,首先要定义交通图的存储结构:邻接链表和邻接矩阵;

2•解决任意两个城市顶点之间的中转次数最少的问题;

3•解决任意两个城市顶点之间的最短路径(最低花费或最少时间)问题。

2、输入输出的要求

定义变量类型应该保持类型一致,通过键盘输入,确保输入输出一致,使最短路径途径以及最短路径能够简单明了的输出,同时保持程序简洁美观,效果明显。输入要求为输入界面直观、亲切;有利于快速输入;有利于准确输入;有利于输入、修改;方便操作。输出要求:输出要求应简单、直观,一目了然,尽量符合用户的习惯,便于用户阅读、理解与使用。输出内容应尽量汉字化,从而使输出格式醒目;各种输出设计要长考虑以利于系统发展和输出项目扩充、变动的需要;输出操作方便

二、环境说明

系统:WIND0S7

开发软件:vc6+

三、详细设计

1、模块设计

交通咨询系统模块图如下

由模块图可知,该设计共分三个部分:一是建立交通网络图的存储结构;二是解决单源最短

路径问题;最后再实现任意两个城市顶点之间的最短路径问题。

开始运行程序,输入命令,进入各种不同的功能区,进行各自的功能,分别运行,然后输出结果。结束后,如果退出就结束,不退出重复上面的功能

2、画出各函数的调用关系图、主要函数的流程图。

通过Mian主函数

调用函数void creatDN(lode &g)

调用函数void ShortestPath_DIJ(lode &g,char a[],char b[])

调用函数void void TransferDispose(lode &G,char a[],char b[])

主流程图如上图所示

通过void creatDN(lode &g)函数

调用函数int localvex(lode & g,char *m)

通过void ShortestPath_DIJ(lode &g,char a[],char b[])函数

调用函数int localvex(lode & g,char *m)

调用函数void Ppath(lode &g,int P[],int i,int v)

通过void void TransferDispose(lode &G,char a[],char b[])函数调用函数Ini tQueue(L in kQueue &Q)

调用函数En Queue(L in kQueue & Q,i nt e) 调用函数DeQueue(L in kQueue & Q,i nt e) 调用函数int localvex(lode & g,char *m)

2、详细代码

见附录六

四、调试分析

1、测试数据:

准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。

构建网络图:

L ■耳'DA/C 6WC6 iMyP reject5-MS 5\De buc\4£ 5, exr .

查询中转次数少:

查询最短距离并退出:

2、借鉴的资料

[1]《数据结构C语言版》严蔚敏、吴伟民,清华大学出版社,2002

五、课程总结

这次任务分配,从难度上来说,我这个交通咨询系统程序并不复杂,在书本上基本能找到一

摸一样的程序,但关键是理解,虽然书上的程序能看懂,但实践设计不比理解,要是练得少,往往捉襟见肘,要学会融会贯通,那就难上加难了。所以这次就不断演练,不断打击信心,我想还是练少了,酱油打多了,尽管这学期课听的还是很多,但效果还是不好。

总的来说,这次变成还是学到了一些东西,尽管微乎其微,算法毕竟是死的,人的大脑是活的,只有不断的实验,才能找到信心,也才能学到东西,但还是可以学到很多东西,怎样的思考方法,怎样连接使逻辑结构语句更完善,所以在编程中和调试过程中要成认真分析和善

于发现问题并及时解决的习惯,不懂的及时问老师或者其他同学。通过本次实验,就要掌握

了最短路径问题,并结合图的储存结构、狄克斯特拉算法、广度优先遍历等解决了交通咨询系统的设计。源程序打出来后有多处错误,大小写错误、符号错误、遗漏等等,经反复检查调试后实验成功。

六、附录

源程序清单(带注释)

#i nclude"stdio.h"

#i nclude"stri ng.h"

#i nclude"stdlib.h"

#defi ne INFINITY 65315

in t visited[20];

//邻接链表

typedef struct arcno de{ int adjvex; //城市编号struct arcnode *n extarc;

}arc no de;

typedef struct vnode { char ctn ame[20]; arcnode *firstarc;

}adjlist[20]; // 城市个数

//邻接邻接表

typedef struct no de{

int adjvex; int route; struct node *n ext;} no de;

typedef struct arccell{

int adj; //两城市之间的距离

}adjmatrix[20][20];

typedef struct{

adjmatrix arcs;

adjlist vexs;

int v,a;〃顶点边数

}lode;

//定义城市在位置

typedef struct QNode{

int data;

相关文档
最新文档