标题:急求航空客运订票系统
只看楼主
cyzyh88
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-5-23
 问题点数:0 回复次数:3 
急求航空客运订票系统

急求航空客运订票系统

搜索更多相关主题的帖子: 订票 客运 航空 系统 
2007-05-25 13:12
清清2005
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-27
得分:0 

我也要啊

2007-05-28 21:00
longfeng867
Rank: 1
来 自:重庆
等 级:新手上路
威 望:1
帖 子:182
专家分:0
注 册:2007-5-20
得分:0 

最好是自己动手写一个~~~如果还想在软件行业有所作为的话


在这个连处女膜都可以伪造的世界里,还有什么值得我相信!
2007-10-04 00:43
S.H.E
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-12-20
得分:0 
我找到的,我也是计算机专业的
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define m 4                //3架飞机
#define n 5            //每架飞机5张票

struct node
{
    char name[21];
    char id[21];
    int  seat,plane,date;
    node *next,*pre;
};
struct wait
{
    char name[21];
    char id[21];
    char phone[8];
    int  seat,plane,date,count;
    wait *next,*pre;
};
struct piao
{
    int seat[n+1];
};

void makenull();        
void makenull_piao();
void makenull_information();
void list_menu();
void list_piao();
void makenull_wait();
void list_information();
void plane_information(node *head);
void book();
void add_information(node *head,int x,int y);
void add_wait(int x,int y);
void search_delete(int x);
void write_to_file();
void show_wait();
bool comp(node *x,node*y);

node *head1,*head2,*head3,*q;
wait *wait_head,*wait_end;
char c;
piao a[m];

void main()
{

    makenull();
    do
    {    list_menu();
        cout<<endl<<"choose an operation:  ";
        cin>>c;
        if (c!='6')
            switch(c)
        {
            case '0' : show_wait();break;
            case '1' : {list_piao();book();}break;
            case '2' : search_delete(1);break;
            case '3' : list_piao();break;
            case '4' : list_information();break;
            case '5' : search_delete(0);break;
            default :  break;
        }
    }while(c!='6');
    cout<<"Exit System ";
}
void makenull()
{
    makenull_piao();
    makenull_information();
    makenull_wait();
}
void list_menu()
{   cout<<endl<<"";
    cout<<endl<<"              菜单";
    cout<<endl<<"     ************************";
    cout<<endl<<"     *    0 . 查看排队情况  *";
    cout<<endl<<"     *    1 . 订票          *";
    cout<<endl<<"     *    2 . 退票          *";
    cout<<endl<<"     *    3 . 查看剩余票    *";
    cout<<endl<<"     *    4 . 查看飞机信息  *";
    cout<<endl<<"     *    5 . 查看乘客信息  *";
    cout<<endl<<"     *    6 . 退出          *";
    cout<<endl<<"     ************************";
    cout<<endl<<"";
}
void makenull_piao()
{
    FILE *fp;
    int i;
    if((fp=fopen("piao.dat","r")) == NULL )
    {
        fp=fopen("piao.dat","w");
        for (i=1;i<=m-1;i++)
            fwrite(&a[i],sizeof(piao),1,fp);
        fclose(fp);
        fp=fopen("piao.dat","r");
    }
    for(i=1;i<=m-1;i++)
        fread(&a[i],sizeof(piao),1,fp);
    fclose(fp);
}
void makenull_information()
{
    node *r;
    FILE *fp;
    int i,j,sum;

    sum=a[1].seat[0]+a[2].seat[0]+a[3].seat[0];
    fp=fopen("information.dat","r");
    head1=new node;
    head2=new node;
    head3=new node;
    head1->pre=NULL;
    head1->next=NULL;
    head2->pre=NULL;
    head2->next=NULL;
    head3->pre=NULL;
    head3->next=NULL;
    q=head1;
    for(i=1;i<=sum;i++)
    {
        j=0;
        r=new node;
        fread(r,sizeof(node),1,fp);
        q->next=r;
        r->pre=q;
        r->next=NULL;
        q=q->next;
        fclose(fp);
        if(i==a[1].seat[0]+1) {
            head2->next=q;
            q->pre->next=NULL;
            q->pre=head2;
        }
        if(i==a[1].seat[0]+a[2].seat[0]+1) {
            head3->next=q;
            q->pre->next=NULL;
            q->pre=head3;
        }
    }
}

void makenull_wait()
{
    wait *tempw;
    FILE *fp;
    tempw=new wait;
    int i;
    if((fp=fopen("wait.txt","r")) ==NULL )
    {
        fp=fopen("wait.txt","w");
        fclose(fp);
    }
    wait_end=new wait;
    wait_head=new wait;
    wait_end->next=NULL;
    wait_end->pre=NULL;
    wait_head=wait_end;
    wait_head->count=0;
    fp=fopen("wait.txt","r");
    fread(wait_head,sizeof(wait),1,fp);
                for(i=1;i<=wait_head->count;i++)
            {
                fread(tempw,sizeof(wait),1,fp);
                wait_end->next=tempw;
                tempw->pre=wait_end;
                tempw->next=NULL;
                wait_end=tempw;
            }
}



void list_piao()
{
    int i,j;
    for(i=1;i<=m-1;i++)
    {
        if(a[i].seat[0]!=n)
        {
            cout<<endl<<"第 "<<i<<" 架飞机剩余的票 :"<<endl;
            for(j=1;j<=n;j++)
                if (a[i].seat[j]==0) cout<<" "<<j;
            cout<<endl;
        }
        else cout<<endl<<"The "<<i<<" plane is full !"<<endl<<endl;
    }
}
void list_information()
{
    int x;
    do {cout<<endl<<"显示哪架飞机的信息 ? "; cin>>x;cout<<endl;}while(x<1 || x>=m);
    cout<<endl<<"第 "<<x<<" 架飞机的信息如下  "<<endl;
    if(x==1) plane_information(head1);
    if(x==2) plane_information(head2);
    if(x==3) plane_information(head3);
}

void plane_information(node *head)
{
    node *q;
    char ch;
    int x=0;
    if(head!=NULL && head->next!=NULL)
        q=head->next;
    else {
        q=NULL;
        cout<<"飞机空,无预订票 !"<<endl;
    }
    while(q!=NULL)
    {
        cout<<endl<<"*******************"<<endl;
        q->date=q->plane;
        cout<<"日期 :"<<q->date<<endl;
        cout<<"座位号 : "<<q->seat<<endl;
        cout<<"姓名 : "<<q->name;
        cout<<endl<<"ID 号 : "<<q->id;
        q=q->next;x++;
        if (x % 3 ==0) ch=getch();
    }
    cout<<endl;
}
void book()
{
    int i,j,p;
    cout<<endl<<"请选择地点:(1、2、3) ";
    do {
        cin>>i;
        if (i<1 || i>=m) {
            cout<<endl<<"**** 超出范围!****"<<endl<<"请重新输入:";
        }
        else
        {cout<<endl<<"你要订的是到"<<i<<"地的飞机"<<endl;
            cout<<endl<<"第 "<<i<<" 架飞机剩余的票 :"<<endl;
            for(p=1;p<=n;p++)
                if (a[i].seat[p]==0) cout<<" "<<p;
            cout<<endl;
            break;}
    }while(1);
    cout<<endl<<"请选择座位号 : ";
    do {
        cin>>j;
        if (j<1 || j>n) {
            cout<<endl<<"**** 超出范围!****"<<endl<<"请重新输入:";
        }
        else
        {
            q->date=i;
            cout<<endl<<"您的订票日期 : "<<q->date<<endl;
            break;
        }
    }while(1);

    if (a[i].seat[j]==0) {
        a[i].seat[j]=1;
        cout<<endl;
        a[i].seat[0]++;
        if(i==1) add_information(head1,1,j);
        if(i==2) add_information(head2,2,j);
        if(i==3) add_information(head3,3,j);
    }
    else
    {
        cout<<endl<<"**** 对不起,该座位已被预订,您被安排到订票等候队列 ****"<<endl;
        add_wait(i,j);
    }

}
void add_wait(int x,int y)
{
    wait *tempw;
    tempw=new wait;
    tempw->next=NULL;
    cout<<"请输入个人信息"<<endl;
    cout<<endl<<"*************"<<endl;
    cout<<"姓名 : ";cin>>tempw->name;
    cout<<"ID号 : ";cin>>tempw->id;
    cout<<"电话 :";cin>>tempw->phone;
    tempw->seat=y;
    tempw->plane=x;
    wait_end->next=tempw;
    tempw->pre=wait_end;
    wait_end=wait_end->next;
    cout<<endl<<"**** 正在排队等候 ****"<<endl;
    wait_head->count++;
    write_to_file();
}
void show_wait()
{
    wait *tempw;
    tempw=wait_head->next;
    if (tempw==NULL) cout<<endl<<"排队中没有人!"<<endl;
    while(tempw!=NULL)
    {
    cout<<tempw->name<<" - ";
    tempw=tempw->next;
    }
}
void add_information(node *head,int x,int y)
{
    node *temp;
    temp=new node;
    temp->pre=NULL;
    temp->next=NULL;
    cout<<"请输入个人信息"<<endl;
    cout<<endl<<"*************"<<endl;
    cout<<"姓名 : ";cin>>temp->name;
    cout<<"ID号 : ";cin>>temp->id;
    temp->seat=y;
    temp->plane=x;
    temp->next=head->next;
    temp->pre=head;
    if (head->next!=NULL) head->next->pre=temp;
    head->next=temp;
    write_to_file();
    cout<<endl<<"**** 订票成功 ****"<<endl;
}
void search_delete(int x)
{
    node *p,*q,*r;
    wait *tempw,*tempw2,*tempw3;
    int step=1,t1,t2,i;
    char ch;
    p=new node;
    tempw=new wait;
    tempw2=new wait;
    tempw3=new wait;
    q=head1;
    cout<<endl<<"请输入个人信息"<<endl;
    cout<<"*************"<<endl;
    cout<<endl<<"姓名 : ";cin>>p->name;
    do{
        q=q->next;
        if ( (q!=NULL) &&
            (comp(q,p)) )
        {
            cout<<endl;
            q->date=q->plane;
            cout<<"Located!"<<endl;
            cout<<"****************";
            cout<<endl<<"姓名 : "<<q->name;
            cout<<endl<<"ID号 : "<<q->id;
            cout<<endl<<"座位号 : "<<q->seat;
            cout<<endl<<"班机号 : "<<q->plane;
            cout<<endl<<"日期 : "<<q->date<<endl;
            if (x==1) {
                cout<<"删除该纪录 ? [Y/N] ";
                cin>>ch;
                if (ch=='Y' || ch=='y') {
                    t1=q->plane;
                    t2=q->seat;
                    a[t1].seat[t2]=0;
                    a[t1].seat[0]--;
                    r=q;q=q->pre;
                    r->pre->next=r->next;
                    if(r->next!=NULL) r->next->pre=r->pre;
                    delete(r);
                    cout<<"**** 记录删除成功 ! ****";
                    write_to_file();
                    tempw=wait_head;
                    for(i=0;i<wait_head->count;i++)
                    {
                        tempw=tempw->next;
                        if(tempw==NULL) break;
                        if((tempw->plane==t1) && (tempw->seat==t2))
                        {
                            strcpy(tempw3->name,tempw->name);
                            strcpy(tempw3->phone,tempw->phone);
                            cout<<endl<<"等候的人中有可以订票的了:"<<endl;
                            cout<<endl<<"姓名 : "<<tempw->name;
                            cout<<endl<<"ID号 : "<<tempw->id<<endl;
                            a[t1].seat[0]++;
                            a[t1].seat[t2]=1;
                            if(tempw->plane==1) add_information(head1,1,tempw->seat);
                            if(tempw->plane==2) add_information(head2,2,tempw->seat);
                            if(tempw->plane==3) add_information(head3,3,tempw->seat);
                            tempw2=tempw->pre;
                            tempw2->next=tempw->next;
                            if(tempw->next==NULL) wait_end=tempw2;
                            else  tempw->next->pre=tempw2;
                            delete(tempw);
                            wait_head->count--;
                            write_to_file();
                            cout<<endl<<"等候的"<<tempw3->name<<"已经成功订票,已经由电话"<<tempw3->phone<<"通知了"<<endl;
                            break;
                        }
                    }

                }
            }continue;
        }
        else
        {
            if (q==NULL)
            {
                step++;
                if(step==2) q=head2;
                if(step==3) q=head3;
                if(step==4) {cout<<endl<<"**** 信息检索完毕 ****";break;}
            }
        }
    }while(1);
}
bool comp(node *x,node *y)
{
    node *p,*q;
    int i,j,k;
    p=x;
    q=y;
    i=j=0;
    do
    {
        while ( (p->name[i] != q->name[j]) && (p->name[i] != '\0') ) i++;
            
        if (p->name[i] == '\0') {return(false);break;}
        else
        {
            k=i;
            while ( (p->name[k] == q->name[j]) && (q->name[j]!='\0') ) {k++;j++;}
            if (q->name[j]=='\0') return(true);
            else
            {
                j=0;
                i++;
            }
        }
    }while( (q->name[j]!='\0') && (p->name[i] != '\0') );
    return(false);
}

void write_to_file()
{
    FILE *fp;
    int i,j;
    int x[m];
    node *p;
    wait *tempw;
    tempw=new wait;
    tempw=wait_head;
    fp=fopen("piao.dat","w");
    for (i=1;i<=m-1;i++)
    {
        fwrite(&a[i],sizeof(piao),1,fp);
    }
    fclose(fp);

    fp=fopen("information.dat","w");
    x[0]=0;x[1]=a[1].seat[0];
    for(i=0,j=1;j<=m-1;j++) {i=i+a[j].seat[0];x[j]=a[j].seat[0]+x[j-1];}
    j=1;p=head1->next;
    for(j=1;j<=i;j++)
    {
        if(j==x[1]+1) p=head2->next;
        if(j==x[2]+1) p=head3->next;   
        if(p==NULL)break;
        fwrite(p,sizeof(node),1,fp);
        p=p->next;
    }
    fclose(fp);

    fp=fopen("wait.txt","w");
    for(j=0;j<=wait_head->count;j++)
    {   
        if(tempw==NULL)break;
        fwrite(tempw,sizeof(wait),1,fp);
        tempw=tempw->next;
    }
    fclose(fp);
}
2007-12-20 22:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-142487-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.356486 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved