【数据结构】公交线路管理

来源:互联网 发布:怎么监控数据库的变化 编辑:程序博客网 时间: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;}



原创粉丝点击