ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:260.04KB ,
资源ID:4515617      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4515617.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(交通咨询系统-C语言.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

交通咨询系统-C语言.doc

1、CHINA 交通咨询系统 目录 一、 需求分析 2 1、 程序的功能及设计要求 2 2、 输入输出的要求 2 二、环境说明 2 三、详细设计 3 1、模块设计 3 2、画出各函数的调用关系图、主要函数的流程图。 3 2、详细代码 4 四、调试分析 4 1、测试数据: 4 2、借鉴的资料 5 五、课程总结 6 六、附录 6 一、 需求分析 1、 程序的功能及设计要求 在交通网络非常兴旺、交通工具和交通方式不断更新的今天, 人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也感兴趣。对于这样一个人们关心的问

2、题,通过建立交通网络图的存储构造图,提供用户查询的功能,功能一:通过输入城市名及任意两个城市的距离,查询任意两个城市之间的最短距离,从而到达最省目的;功能二:通过输入城市名以及任意两个程序的距离,查询中转路线最少。程序所具有的功能特色本程序主要目的是为了给用户提供路径咨询,可以通过输入设置,延续程序的拓展性。 设计要求及分析 设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的中转次数最少问题或最低花费或最少时间〔最短路径〕问题。 该设计共分三个局部:一是建立交通网络图的存储构造;二是解决单源最短路径问题;最后再实现任意两个城市顶点之间的最短路径问题。 1. 建立交通

3、网络图的存储构造 要实现设计要求,首先要定义交通图的存储构造:邻接链表和邻接矩阵; 2. 解决任意两个城市顶点之间的中转次数最少的问题; 3. 解决任意两个城市顶点之间的最短路径〔最低花费或最少时间〕问题。 2、 输入输出的要求 定义变量类型应该保持类型一致,通过键盘输入,确保输入输出一致,使最短路径途径以及最短路径能够简单明了的输出,同时保持程序简洁美观,效果明显。输入要求为输入界面直观、亲切;有利于快速输入;有利于准确输入;有利于输入、修改;方便操作。输出要求:输出要求应简单、直观,一目了然,尽量符合用户的习惯,便于用户阅读、理解与使用。输出内容应尽量汉字化,从而使输出

4、格式醒目;各种输出设计要长考虑以利于系统开展和输出工程扩大、变动的需要;输出操作方便 二、环境说明 系统:WINDOS7 开发软件:vc6+ 三、详细设计      1、模块设计  交通咨询系统模块图如下       由模块图可知,该设计共分三个局部:一是建立交通网络图的存储构造;二是解决单源最短路径问题;最后再实现任意两个城市顶点之间的最短路径问题。 开场运行程序,输入命令,进入各种不同的功能区,进展各自的功能,分别运行,然后输出结果。完毕后,如果退出就完毕,不退出重复上面的功能  2、画出各函数的调用关系图、主要函数的流程图。  通过Mian主函数  调用函数

5、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 *

6、m) 调用函数 void Ppath(lode &g,int P[],int i,int v) 通过void void TransferDispose(lode &G,char a[],char b[])函数 调用函数 InitQueue(LinkQueue &Q) 调用函数 EnQueue(LinkQueue &Q,int e) 调用函数 DeQueue(LinkQueue &Q,int e) 调用函数 int localvex(lode &g,char *m) 2、详细代码 见附录六 四、调试分析  1、测试数据:  准备典型的测试数据和测试方案,包括正确的输入及

7、输出结果和含有错误的输入及输出结果。  构建网络图:   查询中转次数少: 查询最短距离并退出: 2、借鉴的资料 [1]?数据构造C语言版? 严蔚敏、吴伟民,清华大学出版社,2002 五、课程总结  这次任务分配,从难度上来说,我这个交通咨询系统程序并不复杂,在书本上根本能找到一摸一样的程序,但关键是理解,虽然书上的程序能看懂,但实践设计不比理解,要是练得少,往往捉襟见肘,要学会融会贯穿,那就难上加难了。所以这次就不断演练,不断打击信心,我想还是练少了,酱油打多了,尽管这学期课听的还是很多,但效果还是不好。  总的来说,这次变成还是学到了一些东西,尽管微乎其微

8、算法毕竟是死的,人的大脑是活的,只有不断的实验,才能找到信心,也才能学到东西,但还是可以学到很多东西,怎样的思考方法,怎样连接使逻辑构造语句更完善,所以在编程中和调试过程中要成认真分析和蔼于发现问题并及时解决的习惯,不懂的及时问教师或者其他同学。通过本次实验,就要掌握了最短路径问题,并结合图的储存构造、狄克斯特拉算法、广度优先遍历等解决了交通咨询系统的设计。源程序打出来后有多处错误,大小写错误、符号错误、遗漏等等,经反复检查调试后实验成功。 六、附录  源程序清单〔带注释〕 #include"stdio.h" #include"string.h" #include"stdlib.h

9、" #define INFINITY 65315 int visited[20]; //邻接链表 typedef struct arcnode{ int adjvex; //城市编号 struct arcnode *nextarc; }arcnode; typedef struct vnode { char ctname[20]; arcnode *firstarc; }adjlist[20]; //城市个数 //邻接邻接表 typedef struct node{ int adjvex; int route; struct node *next;

10、}node; typedef struct arccell{ int adj; //两城市之间的距离 }adjmatrix[20][20]; typedef struct{ adjmatrix arcs; adjlist vexs; int v,a;//顶点 边数 }lode; //定义城市在位置 typedef struct QNode{ int data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear;

11、 }LinkQueue; int localvex(lode &g,char *m){ int i; for(i=0;i

12、通的路径条数:\n"); scanf("%d%d",&g.v,&g.a); for(i=0;i

13、printf("输入第%d条城市路径通过的两个城市以及所需的价钱:\n",k+1); scanf("%s%s%d",&v1,&v2,&w); i=localvex(g,v1); // printf("i=%d",i); j=localvex(g,v2); // printf("j=%d",j); g.arcs[i][j].adj=w; g.arcs[j][i].adj=g.arcs[i][j].adj; p=(arcnode *)malloc(sizeof(arcnode)); p->adjvex=j; p

14、>nextarc=g.vexs[i].firstarc; g.vexs[i].firstarc=p; s=(arcnode *)malloc(sizeof(arcnode)); s->adjvex=i; s->nextarc=g.vexs[j].firstarc; g.vexs[j].firstarc=s; } /* for(i=0;i

15、 arcnode *p;int i; printf("%4s%6s%12s\n","编号","顶点","相邻边编号"); for(i=0;inextarc){ printf("%4d",p->adjvex); printf("\n");}} /* for(i=0;i

16、][j].adj);}*/ void Ppath(lode &g,int P[],int i,int v){ int k; while(k!=v){ k=P[i]; if(k!=v) printf("%s,",g.vexs[k].ctname); /*输出顶点k*/ i=k; } // Ppath(P,k,v); /*找顶点k的前一个顶点*/ /*找到了起点那么返回*/ return; } //最短路径 void ShortestPath_DIJ(lode &g,char a

17、[],char b[]){ int v,w,i,min,v0,x; int final[20]; int D[20]; //最短路径长度 int P[20];//最短路径的顶点 v0=localvex(g,a); x=localvex(g,b); for(v=0;v

18、else P[v]=-1; } D[v0]=0; final[v0]=1; P[v0]=v0; //开场循环; for(i=1;i

19、j

20、径长度为%d\n",a,g.vexs[v].ctname,D[v]);} else printf("从%s到%s不存在路径\n",a,g.vexs[v].ctname); }*/ if(final[x]){ printf("%s到%s用最少的钱通过的城市为:",a,b); printf("%s,",a); Ppath(g,P,x,v0); printf("%s\n",b); printf("%s到%s的所需最少价钱为:%d\n",a,b,D[x]);} else

21、 printf("%s不能到达%s!\n",a,b); } /*void printf(lode *g){ int i;arcnode *p; for(i=0;ivexnum;i++){ printf("%d",g->AdjList[i].data); p=g->AdjList[i].firstarc; while(p!=0){ printf(" %d",p->adjvex); p=p->nextarc; } printf("\n"); } }*/ void InitQueue(LinkQueue &Q){

22、 Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); Q.front=Q.rear; Q.front->next=NULL; } LinkQueue EnQueue(LinkQueue &Q,int e){ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return Q; } int DeQueue(LinkQueue &Q

23、int e){ QueuePtr p; if(Q.front!=Q.rear){ p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; } free(p); return e; } //最少旅行中转次数处理 void TransferDispose(lode &G,char a[],char b[]) { int v0,v1,v,w,n=1;LinkQueue Q; arcnode *t; node *p,*q,*r,*s;

24、 p=(node*)malloc(G.v*sizeof(node)); for(v=0;vadjvex=v0; q->next=NULL; p[v0].next=q; EnQueue(Q,v0); while(Q.front!=Q.rear)//队列不空 { v=DeQueue(Q,v);

25、 t=G.vexs[v].firstarc; while(t!=NULL){ w=t->adjvex;//w为与城市v相连的第一个城市 if(!visited[w])//城市w未访问 { visited[w]=1;//将城市w设为已访问 q=&p[w];s=p[v].next; while(s!=NULL){ r=(node*)malloc(sizeof(node)); r->adjvex=s->adjvex;q->next=r;q=r; s=s->next;} r=(node*)malloc(sizeof(node));r->adjvex=w;r->next=NULL

26、q->next=r; if(w==v1)//w等于v1 { q=p[w].next;r=q->next; printf("\n旅行路线是:\n"); while(r!=NULL){ printf("从%s到%s\n",G.vexs[q->adjvex].ctname,G.vexs[r->adjvex].ctname); q=r; r=r->next;n++;} printf("最少中转次数是%d次\n\n",n-2); for(v=0;vnext; free(

27、s);} p[v].next=NULL;} free(p); return;} EnQueue(Q,w);}//将城市w入队 t=t->nextarc;//w等于城市v相连的下一个城市 }} for(v=0;vnext;free(s);} p[v].next=NULL; } free(p); printf("不存在%s到%s的路线",a,b); } void main() { int c=1,d=1;char a[20],b[20]; lode g;

28、creatDN(g); printf("欢送使用!\n"); while(d!=2){ printf("请输入你出发的城市:\n"); scanf("%s",a); printf("请输入你到达的城市:\n"); scanf("%s",b); printf("-----请选择你所需要的功能-----:\n"); printf("1:中转次数少的路线\n"); printf("2:两城市之间所需的钱最少\n"); //printf("3:退出系统!\n"); printf("请选择:\n"); getchar(); scanf("%d",&c); switch(c){

29、 case 1: TransferDispose(g,a,b); printf("\n"); break; case 2: ShortestPath_DIJ(g,a,b); break; } printf("继续查询吗?\n"); printf("继续请按1\n"); printf("退出请按2\n"); scanf("%d",&d); if(d==2) printf("谢谢使用!\n"); }} 【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】 页脚下载后可删除,如有侵权请告知删除!

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服