【数据结构】公交线路管理
来源:互联网 发布:怎么监控数据库的变化 编辑:程序博客网 时间:2024/04/30 19:51
公交线路管理
问题描述:
对公交车线路信息的简单模拟,用菜单选择方式完成建立公交路线信息、修改公交路线信息和删除公交路线信息及其他相关功能。
代码:
#include <iostream>#include <string.h>#include <malloc.h>#include <stdio.h>using namespace std;typedef struct linknode{ int num;//车号 char driver[50];//司机 char stime[50];//发车时间 char start[50];//起始站 char end[50];//终点站 int station;//站数 linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList(Linklist head);//头插法建立链表Linklist findval(Linklist L,int k);//按值查找Linklist Deletenode(Linklist L,int n);//删除第n路公交车void ShowList(Linklist L);//输出链表内容void ShowPoint(Linklist L);//输出节点内容void Alter(Linklist L,int n);//修改公交信息void Init();//欢迎界面int main(void){ int x,y; Linklist L1=NULL; Node *p;flag: Init(); cin>>x; switch(x) { case 1: cout<<"请输入您要添加的信息,按照:车号--司机--发车时间--起始站--终点站--站数的顺序输入"<<endl; L1=CreateList(L1); goto flag; break; case 2: cout<<"请输入要查询的车号:"<<endl; cin>>y; p=findval(L1,y); ShowPoint(p); goto flag; break; case 3: cout<<"请输入要修改的车号:"<<endl; cin>>y; Alter(L1,y); goto flag; break; case 4: cout<<"请输入要删除的车号:"<<endl; cin>>y; L1=Deletenode(L1,y); goto flag; break; case 5: cout<<"所有公交车的信息为:"<<endl; ShowList(L1); goto flag; break; case 0: cout<<"感谢您使用本系统,下次再见"<<endl; break; } return 0;}Linklist CreateList(Linklist head){ Node *e; int n,s; char str1[50],str2[50],str3[50],str4[50]; e=(Linklist)malloc(sizeof(Node)); scanf("%d",&n); scanf("%s%s%s%s",str1,str2,str3,str4); scanf("%d",&s); strcpy(e->driver,str1); strcpy(e->stime,str2); strcpy(e->start,str3); strcpy(e->end,str4); e->num=n; e->station=s; e->next=head; head=e; return head;}Linklist findval(Linklist L,int n)//按值查找{ while(L!=NULL) { if(L->num==n) break; L=L->next; } if(L!=NULL) return L; else return NULL;}Linklist Deletenode(Linklist L,int n)//删除第n路公交车{ Linklist p,p1,L1,L2; p=p1=L1=L2=L; int k=0,x=0; while(p1!=NULL) { k++; p1=p1->next; } if(k==1) { p1=NULL; return p1; } else if(L->num==n) { L=L->next; return L; } while(L->next->num!=n) { x++; L=L->next; } if(x==k-1) { L->next=NULL; return p; } else { Node *q; while(L1->next->num!=n) L1=L1->next; q=L1->next; L1->next=q->next; free(q); return L2; }}void ShowList(Linklist L)//输出链表内容{ if(L==NULL) { cout<<"没有公交信息"<<endl; return; } while(L) { cout<<L->num<<"---"<<L->driver<<"---"<<L->stime<<"---"<<L->start<<"---"<<L->end<<"---"<<L->station<<endl; L=L->next; }}void ShowPoint(Linklist L){ if(L!=NULL) cout<<L->num<<"---"<<L->driver<<"---"<<L->stime<<"---"<<L->start<<"---"<<L->end<<"---"<<L->station<<endl;}void Alter(Linklist L,int n)//修改公交信息{ int x,a; char str[50]; Node *p=findval(L,n); printf("%d号公交车的信息如下:\n",n); ShowPoint(p); printf("请输入要修改的内容:\n"); printf("1 车号\n"); printf("2 司机\n"); printf("3 发车时间\n"); printf("4 起始站\n"); printf("5 终点站\n"); printf("6 站数\n"); cin>>x; switch(x) { case 1: printf("请输入新信息\n"); cin>>a; p->num=a; cout<<"信息修改完毕"<<endl; break; case 2: printf("请输入新信息\n"); scanf("%s",str); strcpy(p->driver,str); cout<<"信息修改完毕"<<endl; break; case 3: printf("请输入新信息\n"); scanf("%s",str); strcpy(p->stime,str); cout<<"信息修改完毕"<<endl; break; case 4: printf("请输入新信息\n"); scanf("%s",str); strcpy(p->start,str); cout<<"信息修改完毕"<<endl; break; case 5: printf("请输入新信息\n"); scanf("%s",str); strcpy(p->end,str); cout<<"信息修改完毕"<<endl; break; case 6: printf("请输入新信息\n"); cin>>a; p->station=a; cout<<"信息修改完毕"<<endl; break; }}void Init()//欢迎界面{ cout<<endl<<endl<<endl; cout<<"\t\t---------欢迎来到公交信息系统---------"<<endl; cout<<"\t\t-------------1 信息添加--------------"<<endl; cout<<"\t\t-------------2 信息查询--------------"<<endl; cout<<"\t\t-------------3 信息修改--------------"<<endl; cout<<"\t\t-------------4 信息删除--------------"<<endl; cout<<"\t\t-------------5 查询所有信息----------"<<endl; cout<<"\t\t-------------0 退出系统--------------"<<endl;}
阅读全文
0 0
- 公交线路管理 数据结构课程设计
- 【数据结构】公交线路管理
- 公交线路查询
- 呼和浩特公交线路
- 公交线路查询
- 公交线路查询
- XJOI 公交线路
- 上海公交线路一览
- 上海公交线路查询
- 上海公交线路查询2
- 上海公交线路查询3
- 上海公交线路查询4
- 济南最新公交线路(转)
- 上海公交线路一览表
- 上海公交线路一览表
- 公交线路查询应用实例
- 保定公交线路查询系统
- 地图定位 绘制公交线路
- 在eclipse中添加Tomcat服务器
- 线程学习总结1
- TLPI UNIX linux系统编程手册源代码运行
- 小白练打字:金山打字通
- 计算机网络---网络标准技术与协议及其分类
- 【数据结构】公交线路管理
- springcloud文件上传文件名乱码
- JAVA大数
- Kubernetes Job Controller源码分析
- 侧滑
- python多线程实践
- SlidingMenu绑定
- Failed to load E:\SDK\android-sdk-windows\build-tools\26.0.1\lib\dx.jar
- css3 一些简单的动画使用方法