数据结构航空客运订票系统沐风书苑

上传人:无*** 文档编号:66583783 上传时间:2022-03-28 格式:DOC 页数:13 大小:81KB
返回 下载 相关 举报
数据结构航空客运订票系统沐风书苑_第1页
第1页 / 共13页
数据结构航空客运订票系统沐风书苑_第2页
第2页 / 共13页
数据结构航空客运订票系统沐风书苑_第3页
第3页 / 共13页
点击查看更多>>
资源描述
航空客运订票系统程序要求:1、 问题描述航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。设计一个航空客运订票系统,以使上述业务可以借助计算机完成。2、 要求1) 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括名字、订票量、舱位等级1、2、3)以及等候替补的客户名单;2) 系统实现的功能如下:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件存储结构:航线的所有信息存储在一个结构体中,增加,查询,订票,退票等操作按队列的操作来实现。程序流程图: Switch(1)录入功能请按次序输入航班号,飞机号,终点站,飞行日期,乘客总数,余票数等信息 查询功能通过目的地查询Switch(1)请输入要查询的目的地Switch(2)请输入要查询的航班号通过航班号查询Switch(2)Switch(3)订票功能请输入您需要的订票数订票成功订票数余票数输入你定的票数输入你的名字退票功能Switch(4)订票数余票数退票成功Switch(5)退出系统详细代码:#include #include #include #include #define m 4 /3架飞机#define n 5 /每架飞机5张票struct node char name21; char id21; int seat,plane,date; node *next,*pre;struct wait char name21; char id21; char phone8; int seat,plane,date,count; wait *next,*pre;struct piao int seatn+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 am;void main() makenull(); do list_menu(); coutendlc; 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); coutExit System ;void makenull() makenull_piao(); makenull_information(); makenull_wait();void list_menu() coutendl; coutendl 菜单; coutendl *; coutendl * 0 . 查看排队情况 *; coutendl * 1 . 订票 *; coutendl * 2 . 退票 *; coutendl * 3 . 查看剩余票 *; coutendl * 4 . 查看飞机信息 *; coutendl * 5 . 查看乘客信息 *; coutendl * 6 . 退出 *; coutendl *; coutendl;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(&ai,sizeof(piao),1,fp); fclose(fp); fp=fopen(piao.dat,r); for(i=1;ipre=NULL; head1-next=NULL; head2-pre=NULL; head2-next=NULL; head3-pre=NULL; head3-next=NULL; q=head1; for(i=1;inext=r; r-pre=q; r-next=NULL; q=q-next; fclose(fp); if(i=a1.seat0+1) head2-next=q; q-pre-next=NULL; q-pre=head2; if(i=a1.seat0+a2.seat0+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;icount;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(ai.seat0!=n) coutendl第 i 架飞机剩余的票 :endl; for(j=1;j=n;j+) if (ai.seatj=0) cout j; coutendl; else coutendlThe i plane is full !endlendl; void list_information() int x; do coutendlx;coutendl;while(x=m); coutendl第 x 架飞机的信息如下 next!=NULL) q=head-next; else q=NULL; cout飞机空,无预订票 !endl; while(q!=NULL) coutendl*date=q-plane; cout日期 :dateendl; cout座位号 : seatendl; cout姓名 : name; coutendlID 号 : id; q=q-next;x+; if (x % 3 =0) ch=getch(); coutendl;void book() int i,j,p; coutendli; if (i=m) coutendl* 超出范围!*endl请重新输入:; else coutendl你要订的是到i地的飞机endl; coutendl第 i 架飞机剩余的票 :endl; for(p=1;p=n;p+) if (ai.seatp=0) cout p; coutendl; break; while(1); coutendlj; if (jn) coutendl* 超出范围!*endldate=i; coutendl您的订票日期 : dateendl; break; while(1);if (ai.seatj=0) ai.seatj=1; coutendl; ai.seat0+; 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 coutendl* 对不起,该座位已被预订,您被安排到订票等候队列 *next=NULL; cout请输入个人信息endl; coutendl*endl; couttempw-name; couttempw-id; couttempw-phone; tempw-seat=y; tempw-plane=x; wait_end-next=tempw; tempw-pre=wait_end; wait_end=wait_end-next; coutendl* 正在排队等候 *count+; write_to_file();void show_wait() wait *tempw; tempw=wait_head-next; if (tempw=NULL) coutendl排队中没有人!endl; while(tempw!=NULL) coutnamenext; void add_information(node *head,int x,int y) node *temp; temp=new node; temp-pre=NULL; temp-next=NULL; cout请输入个人信息endl; coutendl*endl; couttemp-name; couttemp-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(); coutendl* 订票成功 *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; coutendl请输入个人信息endl; cout*endl; coutendlp-name; do q=q-next; if ( (q!=NULL) & (comp(q,p) ) coutdate=q-plane; coutLocated!endl; cout*; coutendl姓名 : name; coutendlID号 : id; coutendl座位号 : seat; coutendl班机号 : plane; coutendl日期 : dateendl; if (x=1) coutch; if (ch=Y | ch=y) t1=q-plane; t2=q-seat; at1.seatt2=0; at1.seat0-; 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;icount;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); coutendl等候的人中有可以订票的了:endl; coutendl姓名 : name; coutendlID号 : idplane=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(); coutendl等候的name已经成功订票,已经由电话phone通知了endl; break; continue; else if (q=NULL) step+; if(step=2) q=head2; if(step=3) q=head3; if(step=4) coutendlnamei != q-namej) & (p-namei != 0) ) i+; if (p-namei = 0) return(false);break; else k=i; while ( (p-namek = q-namej) & (q-namej!=0) ) k+;j+; if (q-namej=0) return(true); else j=0; i+; while( (q-namej!=0) & (p-namei != 0) ); return(false);void write_to_file() FILE *fp; int i,j; int xm; node *p; wait *tempw; tempw=new wait; tempw=wait_head; fp=fopen(piao.dat,w); for (i=1;i=m-1;i+) fwrite(&ai,sizeof(piao),1,fp); fclose(fp); fp=fopen(information.dat,w); x0=0;x1=a1.seat0; for(i=0,j=1;jnext; for(j=1;jnext; if(j=x2+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;jcount;j+) if(tempw=NULL)break; fwrite(tempw,sizeof(wait),1,fp); tempw=tempw-next; fclose(fp);13教学d
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!