数据结构课程设计交通咨询系统.doc

上传人:laozhun 文档编号:2396717 上传时间:2023-02-17 格式:DOC 页数:25 大小:689.50KB
返回 下载 相关 举报
数据结构课程设计交通咨询系统.doc_第1页
第1页 / 共25页
数据结构课程设计交通咨询系统.doc_第2页
第2页 / 共25页
数据结构课程设计交通咨询系统.doc_第3页
第3页 / 共25页
数据结构课程设计交通咨询系统.doc_第4页
第4页 / 共25页
数据结构课程设计交通咨询系统.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数据结构课程设计交通咨询系统.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计交通咨询系统.doc(25页珍藏版)》请在三一办公上搜索。

1、课 程 设 计 报 告课程名称 数据结构课程设计 课题名称 交通咨询系统 专 业 通信工程 班 级 通信1001班 学 号 姓 名 指导教师 田娟秀 胡瑛 曹燚 2012年 7 月 6 日湖南工程学院课 程 设 计 任 务 书课程名称 数据结构 课 题 交通咨询系统 专业班级 通信1001班 学生姓名 学 号 指导老师 田娟秀 胡瑛 曹燚 审 批 田娟秀 任务书下达日期 2012 年 7 月 1 日任务完成日期 2012 年 7 月 6 日1.1任务书课题六:交通咨询系统:在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。对于这

2、样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。 要求完成以下功能:(a) 以图中顶点表示湖南省各市(至少包括8个以上的城市),存放城市名称、代号、简介等信息,以边表示路径,存放路径长度等有关信息,先建立交通网络图的存储结构;(b) 为用户提供图中任何城市有关信息的查询;(c) 为用户提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。(d) 为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的

3、最短路径。选做内容:(1)提供图的编辑功能:增、删城市;增删路径;修改已有信息等;(2)交通图的仿真界面。1.2 选题方案:所选题目根据学号确定,学号模6加1,即(学号%6+1)。如你的学号为9,则所选题目号为:9%6+1(题目4)。注意,所有的课题都要求用图形方式演示步骤和结果。同学们可以自己针对数据结构课程中所讲算法来设计一个演示过程的算法。1.3设计要求:1.3.1 课程设计报告规范(1)需求分析a.程序的功能。b.输入输出的要求。(2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是

4、什么样的结构,它们之间有什么关系等。(3)详细设计a.采用C语言定义相关的数据类型。b 写出各模块的类C码算法。c.画出各函数的调用关系图、主要函数的流程图。(4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。b.程序调试中遇到的问题以及解决问题的方法。c.课程设计过程经验教训、心得体会。(5)使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。(6)书写格式a.设计报告要求用A4纸打印成册:b.一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。(7)附录源程序清单(带注释)1.

5、3.2 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分:(1)平时出勤 (占10%)(2)系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)(3)程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)(4)设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。(5)独立完成情况(占10%)。1.3.3 课程验收要求(1)运行所设计的系统。(2)回答有关问题。(3)提交课程设

6、计报告。(4)提交软盘(源程序、设计报告文档)。(5)依内容的创新程度,完善程序情况及对程序讲解情况打分。2 进度安排第 20 周:星期一 8:0012:00 上课 星期一 14:3018:30 上机星期二 14:3018:30 上机 星期三 8:0012:00 上机 附:课程设计报告装订顺序:封面、任务书、目录、正文、评分表、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总

7、结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。 目 录一 需求分析71.1 程序的功能71.2 输入输出的要求7二概要设计82.1 程序的模块组成82.2 每个模块的功能82.3 存储数据及其关系10三详细设计103.1 采用C语言定义相关类型103.2 写出各模块的类C码算法113.3 调用关系图14四调试分析以及心得体会154.1 测试数据154.2 心得体会17五 使用说明18六 附录19七评分表24一 需求分析1.1 程序的功能在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时

8、间等问题也很感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。 要求完成以下功能(a) 以图中顶点表示湖南省各市(至少包括8个以上的城市),存放城市名称、代号、简介等信息,以边表示路径,存放路径长度等有关信息,先建立交通网络图的存储结构;(b) 为用户提供图中任何城市有关信息的查询;(c) 为用户提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。(d) 为用户提供指定城市的交通查询,即查询

9、指定城市到其他城市之间的最短路径。选做内容:(1)提供图的编辑功能:增、删城市;增删路径;修改已有信息等;(2)交通图的仿真界面。1.2 输入输出的要求在用户刚进入主界面后,系统就会提示输入建立交通网络的储存结构,输入顶点个数和和边数,随后会有系统进行提示输入顶点信息以及他们的权值,即I,j和w,依次根据边的信息个数进行输入。随之进行的是查询页面,输入选择按钮进行功能查询选择。如,选择1:表示的是查询任意两个城市之间的一条最短路径,选择2:表示的是查询指定城市到其他城市之间的最短路径,选择0:表示你将要退出程序查询系统。二概要设计2.1 程序的模块组成本程序主要有三个模块组成,他们分别是:邻接

10、矩阵建立有向图,查询任意两个城市之间的一条最短路径,查询指定城市到其他城市之间的最短路径。三个模块的概图:用户进入系统交通网络构建任意两个城市的 最短距离查询两个指定城市的最短距离查询结果,退出系统 图 2.12.2 每个模块的功能邻接矩阵建立交通网络N结束k=e,k+输入n,e开始 输入i,j,w Y 图 2.2.1查询指定城市到其他城市之间的最短路径开始 输入顶点v狄克斯特拉算法输出路径,距离结束 图 2.2.2 查询任意两个城市之间的一条最短路径:开始输出路径,距离输入起点v,终点w结束调用弗洛伊德算法 图2.2.32.3 存储数据及其关系比如下列五个数据之间的存储及其关系12453 图

11、 2.3上图说明:上图各个节点之间会有一条或者两条边,当输入他们的信息时根据他们的方向进行有向图的存储。并且每两个顶点之间(单向)都会有一个值w,即权值。如顶点1和2之间可以设置他的权值是2,顶点2到顶点5的权值可以是3,顶点5到顶点2的权值可以是4,等等。三详细设计3.1 采用C语言定义相关类型1定义一个,用来存储顶点信息。typedef struct VertexType vexsMAX; Adjmatrix arcsMAXMAX;MGraph; . 2定义一个Dijkstra函数void Dijkstra(MGraph *G,int v,int n);2定义一个Floyd函数void F

12、loyd(MGraph *G,int n);3.2 写出各模块的类C码算法邻接矩阵构造图结构函数数据类型定义:typedef struct VertexType vexsMAX; Adjmatrix arcsMAXMAX;MGraph;void CreateMGraph(MGraph *G,int n,int e)/邻接矩阵构成有向图 int i,j,k,w; for(i=1;ivexsi=(char)i; for(i=1;i=n;i+) for(j=1;jarcsij=IDF; printf(输入%d条边的i,j及w: n,e); for(k=1;karcsij=w; printf(有向图的

13、存储结构建立完毕!n);其中vexsMAX保存顶点信息,arcsMAXMAX用于保存边与边之间的信息。在构建时通过输入的边数i,j作为矩阵的行、列确定顶点的出度和入度。用邻接矩阵方法存储图。Dijkstra算法; 基本思想:设G(V,E)是一个带权有向图,把图中的顶点集合V分成两组,第一组为已经求出的最短路径的顶点集合(用S表示,初始时S中只有一个原点,以后每求得一条最短路径就加入的集合S中,知道全部顶点都加入到集合中),第二组,为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点就如S中。如果两个顶点之间有权值,并且各个路径的权值不同,就把最小的作为顶点与顶

14、点的最短距离。k yuv x z 图 3.3.1如图所示 若x+yk=u。同理若x+yu,D v1=0;Sv1=1; /原点编号放入s中 for(i=2;in;i+) min=IDF; for(w=1;w=n;w+) if(!Sw&D wmin) v=w;min=D w; Sv=1; /修改顶点u放入s中 for(w=1;warcsvwarcsvw; P w=v; 弗洛伊德算法:用邻接矩阵保存图存储后,另外需要存一个二维数组A存放当前顶点之间的最短路径长度。分量Aij表示当前顶点i到j的最短路径长度。弗洛伊德算法的基本思维是递推产生一个矩阵序列A0,A1,A2,.Ak, An,其中Akij表示

15、从顶点到vi到顶点vj的路径上所经过的顶点编号不大于k的最短路径长度。Aij=costijA(k+1)ij=minAkij,Aki+1k+1+Akk+1j 弗洛伊德主要算法,若Akij已求出,顶点i到顶点k+1的路径长度为Akik+1,顶点路径长度为Akij,顶点k+1到顶点j的路径长度为Akk+1j,如果此时 Akik+1+Akk+1j Akij,则将原来的顶点i到顶点j的路径改为顶点,否则不需要修改顶点i到j的路径。k+1ij Aki,k+1 Akk+1,j Aki,j 图 3.3.2 若Akik+1+Akk+1 j Akij,修改路径 过程: for(k=1;k=n;k+) for(i=

16、1;i=n;i+)for(j=1;j=n;j+) if(Dik+Dkj1 长度=0,1=2 长度=3,1=3 长度=3+3=8,1=4 长度=3+6=9;和下图完全一致图4.4.3 3为保证结果正确换一个顶点进行:如图4.4.4,计算可知结果正确。 图4.4.4 4查询一个顶点到另一个顶点的最短路径:如图4.4.5,经计算:可知结果正确。 图4.4.5 5选择 0 进行 退出程序的操作。如下图4.4.6 图4.4.6 4.2 心得体会 “平时不好干,遇事只能看”,经过这几天的数据结构的课程设计对这句话这真的别有一番的体会。“成功只属于有准备的人”,真的,这几天的课程设计让你不得不想起这句话。俗

17、话说“厚积薄发”,前期的积累,说不定什么时候就能够用上。这次就是这样,前期没有积累足够的知识储备,以至于拿到课程设计的任务书时感觉无所适从,不知道从何下手,真是老虎吃刺猬,无从下口。所以,在第一次上课时就什么都没有做,就那样在实验室里干看着别人在热热火火的搞自己的课程设计。于是乎自己只能看书,把自己以前丢失的都补回来。因为自己的不学习,导致这次的课设变得如此的艰难。当别人都已经快答辩了,我的程序还只有那可怜的几行,无独有偶,也就是这样,我一度准备放弃,心想就直接从网上拷贝一个就行了。可是,许三多的一句话敲醒了我,不抛弃,不放弃,对,不能放弃。就这样。我坚持了下去,开始从各个方面入手,查书,查资

18、料,一句一句的敲,一点一点的写,不会的问老师,请教同学。终于功夫不负有心人。临到答辩结束的我赶上了末班车。顺利的通过了答辩,抹掉分数的高低吧。还是有小小的成就感的。通过这次的课程设计我有懂得了好多数据结构的知识,以前上课没有听的,不知道的,这次都有所了解了,像有向图的构建,弗洛伊德算法,迪克斯特拉算法。这些知识从曾经的听说到现在的了解,进了一大步。不但如此,这次的课设也是我感觉到了数据结构的强大与神奇。渐渐的爱上他了。不仅让我了解了数据结构更加深了对它与C语言的联系的理解。课设已经结束了。真心的感谢我们的田老师,这么大热的天,当其他老师都在空调房里舒服时,她还是冒着火烈的太阳,赶过来给我们指导

19、。想让我们学到更多的知识。在这里,深情的说一句:老师,您辛苦了,谢谢您。同样感谢另外两个老师的知道。谢谢你们。五 使用说明第一步:运行程序。进入主界面。进一步提示输入图中的顶点,边数。第二步:输入边之后按回车,进入图的构建。依次输入各个边的的信息,i, j, w根据自己所设的图的不同进行设置。第三步:进入程序查询区域。有选择1或2或0分别表示你所选择的查询不同方式。 (1)选择1表示查询一个顶点至其他所有顶点的最短路径。会提示用户进行查询定点的选择。系统将会显示你要查询的最短路径。 (2)选择2表示查询任意两个点之间的最短路径,输入用户所要查询的起点和终点就会显示你要查询的最短路径。 (3)选

20、择0表示用户将要退出系统。六 附录#include#include#define MAX 100#define IDF 32767 /最大顶点数typedef char VertexType;typedef int Adjmatrix;typedef struct /设置数组保存顶点信息 VertexType vexsMAX; Adjmatrix arcsMAXMAX;MGraph; int D1MAX,P1MAX;int DMAXMAX,PMAXMAX;void CreateMGraph(MGraph *G,int n,int e); /建立图的存储结构void Dijkstra(MGrap

21、h *G,int v1,int n); /狄克特求最短路径void Floyd(MGraph *G,int n); /弗洛伊德算法void main() MGraph *G; int m,n,e,v,w,k; int xz=1; G=(MGraph *)malloc(sizeof(MGraph); printf( *欢迎进入交通咨询系统*n); printf(交通网络图的存储结构n); printf(输入图中顶点,边数n,e: ); scanf(%d %d,&n,&e); CreateMGraph(G,n,e); while(xz!=0) printf( *下一步*n); printf( *查

22、询城市之间的路径*n); printf( 1.查询一个城市到所有城市的最短路径n); printf( 2.查询任意的两个城市之间的最短路径n); printf(请选择: 1 or 2:n ); printf( 选择:0 退出: ); scanf(%d,&xz); if(xz=2) Floyd(G,n); /调用费洛伊德算法 printf(输入起点,终点:v,w: ); scanf(%d %d,&v,&w); k=Pvw;/k保存最短路径长度 if(k=0) printf(顶点%d 到 %d 无路径!n,v,w); else printf(从顶点%d到%d的最短路径是: %d,v,w,v); w

23、hile(k!=w) printf(-%d,k);/输入后继结点继续找下一个顶点 k=Pkw; printf(-%d,w); /输出终点 printf(路径长度: %dn,Dvw); else if(xz=1) printf(输入顶点 v: ); scanf(%d,&v); Dijkstra(G,v,n);/调用狄克斯特拉算法 printf(结束求最短路径,再见! n);void CreateMGraph(MGraph *G,int n,int e)/邻接矩阵构成有向图 int i,j,k,w; for(i=1;ivexsi=(char)i; for(i=1;i=n;i+) for(j=1;j

24、arcsij=IDF; printf(输入%d条边的i,j及w: n,e); for(k=1;karcsij=w; printf(有向图的存储结构建立完毕!n);void Dijkstra(MGraph *G,int v1,int n)/狄克特斯求最短路径用于求某一顶点到其他顶点的路径及长度 int D2MAX,P2MAX; int v,i,w,min; int SIDF; for (v=1;varcsv1v; if(D2vIDF) /路径初始化 P2v=v1; else P2v=0; D2v1=0;Sv1=1; /原点编号放入s中 for(i=2;in;i+) min=IDF; for(w=

25、1;w=n;w+) if(!Sw&D2wmin) v=w;min=D2w; Sv=1; /修改顶点u放入s中 for(w=1;warcsvwarcsvw; P2w=v; printf(路径长度 路径n); for(i=1;i=n;i+) /循环输出至其他每个顶点的路径 printf(%8d,D2i); printf(%8d,i); v=P2i; while(v!=0) printf(-%d,v); v=P2v; printf(n); void Floyd(MGraph *G,int n) /费洛伊德算法int i,j,k,v,w;for(i=1;i=n;i+) /设置路径长度d和路径path的初值for(j=1;jarcsij!=IDF)Pij=j;elsePij=0;Dij=G-arcsij;for(k=1;k=n;k+)for(i=1;i=n;i+)for(j=1;j=n;j+) if(Dik+DkjDij)Dij=Dik+Dkj; /修改长度Pij=Pik;七评分表计算机与通信学院课程设计评分表 课程名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告之后;2综合成绩按优、良、中、及格和不及格五级评定。)

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号