数据结构航空客运订票系统.docx
- 文档编号:30698511
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:24
- 大小:97.69KB
数据结构航空客运订票系统.docx
《数据结构航空客运订票系统.docx》由会员分享,可在线阅读,更多相关《数据结构航空客运订票系统.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构航空客运订票系统
航空客运订票系统
程序要求:
1、问题描述
航空客运订票的业务活动包括:
查询航线、客票预订和办理退票等。
设计一个航空客运订票系统,以使上述业务可以借助计算机完成。
2、要求
1)每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括名字、订票量、舱位等级1、2、3)以及等候替补的客户名单;
2)系统实现的功能如下:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:
(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
存储结构:
航线的所有信息存储在一个结构体中,增加,查询,订票,退票等操作按队列的操作来实现。
程序流程图:
详细代码:
#include<>
#include<>
#include<>
#include<>
#definem4查看排队情况*";
cout< cout< cout< cout< cout< cout< cout< cout< } voidmakenull_piao() { FILE*fp; inti; if((fp=fopen("","r"))==NULL) { fp=fopen("","w"); for(i=1;i<=m-1;i++) fwrite(&a[i],sizeof(piao),1,fp); fclose(fp); fp=fopen("","r"); } for(i=1;i<=m-1;i++) fread(&a[i],sizeof(piao),1,fp); fclose(fp); } voidmakenull_information() { node*r; FILE*fp; inti,j,sum; sum=a[1].seat[0]+a[2].seat[0]+a[3].seat[0]; fp=fopen("","r"); head1=newnode; head2=newnode; head3=newnode; 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=newnode; 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; } } } voidmakenull_wait() { wait*tempw; FILE*fp; tempw=newwait; inti; if((fp=fopen("","r"))==NULL) { fp=fopen("","w"); fclose(fp); } wait_end=newwait; wait_head=newwait; wait_end->next=NULL; wait_end->pre=NULL; wait_head=wait_end; wait_head->count=0; fp=fopen("","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; } } voidlist_piao() { inti,j; for(i=1;i<=m-1;i++) { if(a[i].seat[0]! =n) { cout< "< for(j=1;j<=n;j++) if(a[i].seat[j]==0)cout<<""< cout< } elsecout< "< } } voidlist_information() { intx; do{cout< cout< if(x==1)plane_information(head1); if(x==2)plane_information(head2); if(x==3)plane_information(head3); } voidplane_information(node*head) { node*q; charch; intx=0; if(head! =NULL&&head->next! =NULL) q=head->next; else{ q=NULL; cout<<"飞机空,无预订票! "< } while(q! =NULL) { cout< q->date=q->plane; cout<<"日期: "< cout<<"座位号: "< cout<<"姓名: "< cout< "< q=q->next;x++; if(x%3==0)ch=getch(); } cout< } voidbook() { inti,j,p; cout< (1、2、3)"; do{ cin>>i; if(i<1||i>=m){ cout< ****"< "; } else {cout< cout< "< for(p=1;p<=n;p++) if(a[i].seat[p]==0)cout<<""< cout< break;} }while (1); cout< "; do{ cin>>j; if(j<1||j>n){ cout< ****"< "; } else { q->date=i; cout< "< break; } }while (1); if(a[i].seat[j]==0){ a[i].seat[j]=1; cout< 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< add_wait(i,j); } } voidadd_wait(intx,inty) { wait*tempw; tempw=newwait; tempw->next=NULL; cout<<"请输入个人信息"< cout< 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< wait_head->count++; write_to_file(); } voidshow_wait() { wait*tempw; tempw=wait_head->next; if(tempw==NULL)cout< "< while(tempw! =NULL) { cout< tempw=tempw->next; } } voidadd_information(node*head,intx,inty) { node*temp; temp=newnode; temp->pre=NULL; temp->next=NULL; cout<<"请输入个人信息"< cout< 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< } voidsearch_delete(intx) { node*p,*q,*r; wait*tempw,*tempw2,*tempw3; intstep=1,t1,t2,i; charch; p=newnode; tempw=newwait; tempw2=newwait; tempw3=newwait; q=head1; cout< cout<<"*************"< cout< ";cin>>p->name; do{ q=q->next; if((q! =NULL)&& (comp(q,p))) { cout< q->date=q->plane; cout<<"Located! "< cout<<"****************"; cout< "< cout< "< cout< "< cout< "< cout< "< 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 { 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< "< cout< "< cout< "< 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; elsetempw->next->pre=tempw2; delete(tempw); wait_head->count--; write_to_file(); cout< break; } } } }continue; } else { if(q==NULL) { step++; if(step==2)q=head2; if(step==3)q=head3; if(step==4){cout< } } }while (1); } boolcomp(node*x,node*y) { node*p,*q; inti,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); } voidwrite_to_file() { FILE*fp; inti,j; intx[m]; node*p; wait*tempw; tempw=newwait; tempw=wait_head; fp=fopen("","w"); for(i=1;i<=m-1;i++) { fwrite(&a[i],sizeof(piao),1,fp); } fclose(fp); fp=fopen("","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("","w"); for(j=0;j<=wait_head->count;j++) { if(tempw==NULL)break; fwrite(tempw,sizeof(wait),1,fp); tempw=tempw->next; } fclose(fp); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 航空 客运 订票 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)