失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言课程设计 全国交通咨询模拟 全国交通咨询系统设计C语言

C语言课程设计 全国交通咨询模拟 全国交通咨询系统设计C语言

时间:2019-05-03 02:03:10

相关推荐

C语言课程设计 全国交通咨询模拟 全国交通咨询系统设计C语言

《全国交通咨询系统设计C语言》由会员分享,可在线阅读,更多相关《全国交通咨询系统设计C语言(51页珍藏版)》请在人人文库网上搜索。

1、* *建立一个模拟的交通网络(用有向网来表示),编程实现从某个城市 *出发到另 一个城市所需的最短的时间及路径。* *建立一个模拟的交通网络(用有向网来表示),编程实现从某个城市*出发到另一个城市所需的最短的时间及路径。* */#defi ne MAX_VERTEX_NUM 18#defi ne NULL 0#defi ne MAX_ARC_SIZE 100#defi ne MAX_ROUTE_NUM 5#i nclude#i nclude#i nclude#defi ne False 0#defi ne True 1#define INFINITY 10000 /* 预定义 */ typed。

2、ef struct int nu mber;float expe nditure;int begi ntime2;int arrivetime2;Vehide;typedef struct Vehide stataMAX_ROUTE_NUM;int last;in folist;typedef struct ArcNode int adjvex;struct ArcNode *n extarc;in folist info;ArcNode;typedef struct VNode char cit yn ame10;ArcNode *pla nefirstarc,*tra in firstar。

3、c; VNode,AdjListMAX_VERTEX_NUM;typedef struct AdjList vertices;int vex nu m,pla nearc nu m,tra inarcnum;ALGraph;typedef struct Node int adjvex;int route;struct Node *n ext;Node;typedef struct QNode int adjvex;struct QNode *n ext;QNode;typedef struct QNode *front;QNode *rear;Lin kQueue;typedef struct。

4、 TimeNode int adjvex;int route;int begi ntime2;int arrivetime2;struct TimeNode *childMAX_ROUTE_NUM;TimeNode,*TimeTree;struct arc int co;char vt10;char vh10;int bt2;int at2;float mo;aMAX_ARC_SIZE; /* 数据结构定义 */ char cityMAX_VERTEX_NUM10;int TTime2;int time2;int time12;int time22;in t cMAX_VERTEX_NUM;i。

5、nt dMAX_VERTEX_NUM; /* 变量定义 */*各种操作说明*/void Disp();void Admi nister(ALGraph *G);void cityedit(ALGraph *G);void CopyTimeTree(TimeTree p,TimeTree q);void createcityfile();void CreateGraph(ALGraph *G);void createpla nefile();void CreateTimeTree(TimeTree p,i nt i,i nt j,L in kQueue*Q,i nfolist(*arcs)MAX。

6、_VERTEX_NUM);void createtra in file();int Deletepla neArc(ALGraph *G);void DeleteQueue(Li nkQueue *Q,i nt *x);int DeletetrainArc(ALGraph *G);void DeleteVertex(ALGraph *G);void Dema ndDispose(i nt n ,ALGraph G);void DestoryTimeTree(TimeTree p);void En terpla neArc(ALGraph *G);void En terQueue(L in kQ。

7、ueue *Q,i nt x);void En tertrainArc(ALGraph *G);void En terVertex(ALGraph *G);void ExpenditureDispose(int k,infolist (*arcs)MAX_VERTEX_NUM,ALGraph G,int v0,i nt v1,float *M,i nt *fin al);void flightedit(ALGraph *G);void in itgraph(ALGraph *G);void In itQueue(L in kQueue *Q);int IsEmpty(L in kQueue *。

8、Q);int LocateVertex(ALGraph *G ,char *v);void Min Expe nditure(i nfolist arcs,float *expe nditure,i nt *route);void Mi nTime(i nfolist arcs,i nt *time,i nt *route);void Prin tGraph(ALGraph *G);int save(ALGraph *G);void TimeDispose(int k,infolist (*arcs)MAX_VERTEX_NUM,ALGraphG,int v0,intv1,i nt (*T)2。

9、,i nt *fin al);void TimeTreeDispose(Node *head,i nfolist (*arcs)MAX_VERTEX_NUM);void trai nedit(ALGraph *G);void TransferDispose(int k,infolist (*arcs)MAX_VERTEX_NUM,ALGraph G,int v0,i nt v1);void UserDema nd(ALGraph G);void VisitTimeTree(TimeTree p);void Disp() /*软件入口,显示函数*/textbackgro un d(7);text。

10、color(5);gotoxy(20,10);printf(n);gotoxy(20,11);printf(| 交通咨询系统 Version |n); gotoxy(20,12);prin tf(| |n);gotoxy(20,13);printf(| 一叶方舟 |n);gotoxy(20,14);prin tf(| |n);gotoxy(20,15);printf(n);gotoxy(40,20);printf(A_A 欢迎使用 A_A);sleep(3);clrscr(); int main()/*主函数,程序入口 */*显示程序功能选择界面*/ ALGraph G;int i;textb。

11、ackgro un d(7);textcolor(5); clrscr();Disp();printf(请选择程序功能:n);prin tf(*n);printf(* 1=管理员管理 *n);printf(* 2=用户咨询 *n);prin tf(* 3=显示交通系统 *n);printf(* 4=退出 *n);prin tf(*n); printf(请选择?);scan f(%d,&i);getchar();while(i!=4)clrscr();switch(i)case 1:Admi nister(&G); break;case 2:UserDema nd(G); break;case 。

12、3:Prin tGraph(&G); break;printf(n请选择程序功能:n);printf(H*n);printf(* 1=管理员管理 *n); printf(* 2=用户咨询 *n);prin tf(* 3=显示交通系统*n);printf(* 4=退出 *n);printf(H*n);printf(” 选择?);scan f(%d,&i);getchar();clrscr();gotoxy(20,10);printf(n);gotoxy(20,11);printf(|指导老师:夏汉民 老师|n);gotoxy(20,12);prin tf(| |n);gotoxy(20,13);。

13、printf(| 制作:李济舟 |n);gotoxy(20,14);prin tf(| |n);gotoxy(20,15);printf(n);gotoxy(40,20); printf(谢谢使用);sleep(1); gotoxy(40,20); printf(正在退出);for(i=0;i=24|bt1=60)printf(n时间输入有误,请重新输入n);scan f(%d:%d,&bt0,&bt1);getchar();printf(到达时间:);/*输入航班的到达时间at*/sca nf(%d:%d,&at0, &at1);getchar();while(at0=24|at1=60)p。

14、rintf(n时间输入有误,请重新输入n);sca nf(%d:%d,&at0, &at1);getchar();acount.co二code; /*a为程序头部定义的结构体*/ strcpy(aco un t.vt,vt);strcpy(aco un t.vh,vh);acou nt.bt0=bt0;acou nt.bt1=bt1;acou nt.at0=at0;acou nt.at1=at1;aco un t.mo 二mon ey;count+; /* 计数值 cou nt+1*/*/printf(继续输入?(Y/N); /*提示是否要继续输入航班信息: sca nf(%c, &flag)。

15、;getchar();prin tf(n);if(fp二fope n( ,wb)二二NULL) /*航班文件不能以读写形式打开*/printf(n无法打开文件!n); /*提示无法打开文件*/fprintf(fp,%d,count); /*将计数值count写入航班车文件*/ for(i=0;i=24|bt1=60)printf(n时间输入有误,请重新输入n);sca nf(%d:%d,&bt0,&bt1);getchar();printf(到达时间:);scan f(%d:%d,&at0,&at1);getchar();while(at0=24|at1v0|at1=60)printf(n时间。

16、输入有误,请重新输入n);sca nf(%d:%d,&at0, &at1);getchar();aco un t.co二code;strcpy(aco un t.vt,vt);strcpy(aco un t.vh,vh);acou nt.bt0=bt0;acou nt.bt1=bt1;acou nt.at0=at0;acou nt.at1=at1;aco un t.mo 二mon ey;coun t+;printf(继续输入?(Y/N);scan f(%c,&flag);getchar();prin tf(n);if(fp=fope n(,wb)二二NULL)printf(n无法打开文件!n)。

17、;fprin tf(fp,%d,co un t); for(i=0;ivex nu m;k+)if(strcmp(G-verticesk.cityname,v)=0) /*第k个结点中的城市名与传过来的城市名 相同*/j=k; /*记录位置*/break;return(j);void CreateGraph(ALGraph *G) /* 用 city , plan, train 三个文档创建城市交通系统*/int i,j,k;int arc_num;int coun t1,co un t2;int m,t;ArcNode *p,*q;FILE *fp;i=0;if(fp=fope n(,rb)。

18、二二NULL) /*打开城市文件,文件指针返回值为空*/printf(n无法打开文件!n);return;while(!feof(fp) /* 文件不为空 */fsca nf(fp,%1Os,cityi);i+;fclose(fp); /* 关闭文件 */j=0;while(jverticesj.cityname,cityj);/* 将 cityi中的内容复制到图的结构体的结点 数组中;*/G-verticesj.pla nefirstarc二NULL; /*图的结构体其他项赋初值;*/G-verticesj.tra in firstarc=NULL;j+;G-vex num 二i;if(fp。

19、=fope n( ,rb)=NULL)printf(n无法打开文件!n);k=0;fscanf(fp,%d,&count1); /* 打开航班信息文件*/while(kverticesi.pla nefirstarc;m=0;while(q匸NULL)if(q-adjvex=j) /*弧q中的邻接顶点与j相等*/t=q-+1; /*将数组ai中的内容都复制到弧q中*/q-t. nu mber二ak.co;q-t.expe nditure二ak.mo;q-t.begi ntimeO=ak.btO;q-t.begi ntime1=ak.bt1;q-t.arrivetime0=ak.at0;q-t.。

20、arrivetime1=ak.at1;q-=t;m=1;break;q二q_n extarc;if(m=0)p=(ArcNode*)malloc(sizeof(ArcNode); /* 开辟一个弧结点 */ p-adjvex=j;/*将数组ai中的内容都复制到新的弧结点中*/p-0. nu mber二ak.co;p-0.expe nditure二ak.mo;p-0.begi ntime0=ak.bt0;p-0.begi ntime1=ak.bt1;p-0.arrivetime0=ak.at0;p-0.arrivetime1=ak.at1;p-=0;p-n extarc=G-verticesi.。

21、pla nefirstarc;G-verticesi.pla nefirstarc二p; /* 将弧结点连接到适当的位置中去 */ arc_ nu m+;k+;G-pla nearc num 二arc_ num;if(fp二fope n( ,rb)二二NULL)printf(n无法打开文件!n);return;k=0;fscanf(fp,%d,&count2); /* 打开列车信息文件*/ while(kverticesi.tra in firstarc;m=0;while(q!=NULL) if(q-adjvex=j) /*弧q中的邻接顶点与j相等*/t=q-+1; /*将数组ai中的内容都。

22、复制到弧q中*/q-t. nu mber二ak.co;q-t.expe nditure二ak.mo;q-t.begi ntime0=ak.bt0;q-t.begi ntime1=ak.bt1;q-t.arrivetime0=ak.at0;q-t.arrivetime1=ak.at1;q-=t;m=1;break;q二q_n extarc;if(m=0)p=(ArcNode*)malloc(sizeof(ArcNode); /* 开辟一个弧结点 */ p-adjvex二j; /*将数组ai中的内容都复制到新的弧结点中*/ p-0. nu mber二ak.co;p-O.expe nditure二a。

23、k.mo;p-0.begi ntime0=ak.bt0;p-0.begi ntime1=ak.bt1;p-0.arrivetime0=ak.at0;p-0.arrivetime1=ak.at1;p-=0;p-n extarc=G-verticesi.tra in firstarc;G-verticesi.trainfirstarc二p; /*将弧结点连接到适当的位置中去*/arc_ nu m+;k+;G-tra inarcnum 二arc_ num;int save(ALGraph *G) /*保存城市交通系统到相应的文档*/int i,j,k,t;ArcNode *q;FILE *fp;j=。

24、0;while(jvex num)strcpy(cityj,G-verticesj.city name);j+;i=0;if(fp=fope n(,wb)二二NULL)printf(n错误,无法打开文件!n);while(ivex num)fprin tf(fp,%10s,cityi);i+;fclose(fp);k=0;for(i=0;ivex nu m;i+)q=G-verticesi.pla nefirstarc;while(q匸NULL)for(t=0;t;t+)strcpy(ak.vt,G-verticesi.cit yn ame); strcpy(ak.vh,G-verticesq。

25、-adjvex.city name);ak.co=q-t. nu mber; ak.mo=q-t.expe nditure; ak.btO=q-t.begi ntimeO; ak.bt1=q-t.begi ntime1; ak.at0=q-t.arrivetime0;ak.at1=q-t.arrivetime1;k+;q二q_n extarc;if(fp=fope n(,wb)二二NULL)printf(n无法打开文件!n);return 0;i=0;fprin tf(fp,%d,k);while(ivex nu m;i+)q=G-verticesi.tra in firstarc;while。

26、(q!=NULL)for(t=0;t;t+)strcpy(ak.vt,G-verticesi.cit yn ame); strcpy(ak.vh,G-verticesq-adjvex.cit yn ame); ak.co=q-t. nu mber;ak.mo=q-t.expe nditure; ak.bt0=q-t.begi ntime0; ak.bt1=q-t.begi ntime1; ak.at0=q-t.arrivetime0;ak.at1=q-t.arrivetime1;k+;q二q_n extarc;if(fp二fope n(,wb)二二NULL)printf(n无法打开文件!n);。

27、return 0;i=0;fprin tf(fp,%d,k);while(ivk)if(fwrite (&ai,sizeof(struct arc),1,fp)!=1)printf(n文件写入错误!n);i+;fclose(fp);return 1;void cityedit(ALGraph *G) /*显示城市编辑项目选择界面*/int i;printf(n请选择城市编辑项目:n);printf(1=增加城市n2=删除城市n);printf(” 选择?);scan f(%d,&i);getchar();if(i=1)En terVertex(G);if(i=2)DeleteVertex(G)。

28、;void EnterVertex(ALGraph *G) /* 增加城市 */char v10,c;int i;printf(n请输入新增城市的名称:);gets(v);i=LocateVertex(G,v);if(i=0&ivex num)printf(n错误!此城市已存在n);return;elseprintf(n 确认?(Y/N);c=getchar();getchar();if(c=Y |c二二y)i=G-vex num;strcpy(G-verticesi.city name,v);G-verticesi.pla nefirstarc二NULL;G-verticesi.tra in。

29、 firstarc=NULL;G-vex num 二i+1;save(G);else return;void DeleteVertex(ALGraph *G)/* G是程序头部定义的结构体*/*删除城市*/int i,j,k, n;char v10,c;ArcNode *p,*q,*m;printf(n请输入删除的城市:);/*提示”输入删除城市名”*/gets(v);printf(n确认?(Y/N); /*提示是否确定要删除(Y/N)*/c=getchar();getchar();if(c=Y |c二二y)n=0; /*0是记数标志,控制循环次数*/while (nvex num&strcm。

30、p(G-vertices n .cit yn ame,v)!=0)/*nvexnum)/*n=图G表头结点总个数*/printf(n错误!无法找到此城市!n); /*提示”无法找到此城市*/elsei二LocateVertex(G,v); /*利用G函数找到此城市名所处在G中位置*/p二G-verticesi.pla nefirstarc;while(p匸NULL)q=p;p=p-n extarc;free(q); /*删除从此结点出发的所有航班弧*/p=G-verticesi.tra in firstarc;while(p!=NULL)q=p;p=p-n extarc;free(q); /*。

31、删除从此结点出发的所有列车弧*/for(j=i;jvex nu m_1;j+)strcpy(G-verticesj.cit yn ame,G-verticesj+1.cit yn ame);/*将G第j个结点的信息依前移1位*/G-verticesj.pla nefirstarc二G-verticesj+1.pla nefirstarc;G-verticesj.tra in firstarc=G-verticesj+1.tra in firstarc;G-verticesj.planefirstarc二NULL; /* 将 G第 j 个结点的信息置空 */ G-verticesj.tra in。

32、 firstarc=NULL;for(k=0;kvexnum-1;k+) /*以下是删除所有指向此结点的航班弧*/p=G-verticesk.pla nefirstarc;while(p!=NULL)if(p-adjvexi)p-adjvex=p-adjvex-1;q=p;p=p-nextarc; /*p指向下一条飞机弧*/Elseif(p-adjvex=i) /* 该弧指向的顶点位置(p-adjvex )= i*/if(p=G-verticesk.planefirstarc)/*p 指向图 G 中 k 结点的第一条飞机弧 */ m=p;G-verticesk.pla nefirstarc二p。

33、-n extarc;/*将图G中k结点的第二条飞机弧改为第一弧*/p=p-nextarc; /*p指向下一条飞机弧*/free(m); /* 释放(m) */Elseq-nextarc二p-nextarc; /*将p的下一条弧赋给 q的下一条弧*/m=p;p=p-nextarc; /*p指向下一条飞机弧*/free(q); /* 释放(q)*/Elseq=p;p=p-nextarc; /*p指向下一条飞机弧*/for(k=0;kvexnum-1;k+) /*以下是删除所有指向此结点的列车弧*/p=G-verticesk.trainfirstarc; /*p 指向图 G 中 k结点的第一条列车弧。

34、 */ while(p匸NULL)if(p-adjvexi) /* 该弧指向的顶点位置(p-adjvex)i */p-adjvex=p-adjvex-1; /* 将该弧指向顶点位置-1*/q=p;p=p-nextarc; /*p指向下一条列车弧*/Elseif(p-adjvex=i) /* 该弧指向的顶点位置(p-adjvex)=i*/if(p=G-verticesk.trainfirstarc)/*p 指向图 G 中 k 结点的第一条列车 */m=p;G-verticesk.tra in firstarc=p-n extarc;/*将图G中k结点的第二条列车弧改为第一弧*/p=p-n ext。

35、arc;free(m);Elseq-n extarc=p-n extarc;m=p;p=p-n extarc;free(q);elseq=p;p=p-n extarc;G-vex nu m-;save(G);else return;void flightedit(ALGraph *G) /*飞机航班编辑项目选择界面*/int i; /* char q; */printf(n请选择飞机航班编辑项目:n);printf(1=新增航班n2=删除航班n);printf(” 选择?);scan f(%d,&i);getchar();if(i=1)En terpla neArc(G);if(i=2)Del。

36、etepla neArc(G);void trai nedit(ALGraph *G) /*列车车次编辑项目选择界面*/int i; /* char q; */printf(n请选择列车车次编辑项目:n);printf(1=新增车次n2=删除车次n);printf(” 选择?);sca nf(%d,&i);getchar();if(i=1)En tertrainArc(G);if(i=2)DeletetrainArc(G);void En terpla neArc(ALGraph *G) /* 增加飞机航班 */ int i,j,bt2,at2;int code;float mon ey;in。

37、t m,t;char vt10,vh10,c;ArcNode *p,*q;printf(n请输入新增飞机航班的信息:n);printf(飞机航班编号:);scan f(%d,&code);getchar();printf(起始城市:);gets(vt);getchar();printf(”目的城市:);gets(vh);printf(航班费用:);sca nf(%f,&mon ey);getchar();printf(起飞时间:);scan f(%d:%d,&btO,&bt1);getchar();while(bt0=24|bt1=60)printf(n时间输入有误,请重新输入n);sca n。

38、f(%d:%d,&bt0,&bt1);getchar();printf(到达时间:);scan f(%d:%d,&at0,&at1);getchar();while(at0=24|at1=60)printf(n时间输入有误,请重新输入n);sca nf(%d:%d,&at0, &at1);getchar();printf(n 确认?(Y/N);c=getchar();getchar();if(c=Y |c二二y)i二LocateVertex(G,vt);j二LocateVertex(G,vh);if(i=-1)printf(n错误!无法找到起始城市n); return;if(j=-1)prin。

39、tf(n错误!无法找到到达城市n); return;q=G-verticesi.pla nefirstarc;m=0;while(q匸NULL) if(q-adjvex=j)t=q-+1;q-t. nu mber二code;q-t.expe nditure 二mon ey;q-t.begi ntime0=bt0;q-t.begi ntime1=bt1;q-t.arrivetime0=at0;q-t.arrivetime1=at1;q-=t;m=1;break;q二q_n extarc;if(m=0)p=(ArcNode*)malloc(sizeof(ArcNode);p-adjvex=j;p-。

40、0. nu mber二code;p-0.expe nditure 二mon ey;p-0.beg in time0=bt0;p-0.begi ntime1=bt1;p-0.arrivetime0=at0;p-0.arrivetime1=at1;p-=0;p-n extarc=G-verticesi.pla nefirstarc;G-verticesi.pla nefirstarc二p;G-pla nearc nu m+;save(G); else return;void En tertrainArc(ALGraph *G) /* 增加列车车次 */ int i,j,bt2,at2;int co。

41、de;float mon ey;int m,t;char vt10,vh10,c;ArcNode *p,*q;printf(n请输入新增列车车次的信息:n);printf(列车车次编号:);sca nf(%d,&code);getchar();printf(起始城市:);gets(vt);getchar();printf(”目的城市:);gets(vh);printf(车次费用:);sca nf(%f,&mon ey);getchar();printf(发车时间:);sca nf(%d:%d,&btO,&bt1);getchar();while(bt0=24|bt1=60)printf(n时间输入有误,请重新输入n);sca。

如果觉得《C语言课程设计 全国交通咨询模拟 全国交通咨询系统设计C语言》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。