航空客运订票系统

  • 格式:doc
  • 大小:493.50 KB
  • 文档页数:16

课程设计报告:航空客运订票系统 题目:航空客运订票系统 班级: 姓名 学号: 完成日期: 2010-7-5

一、课程设计内容 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

二、需求分析 (1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); (2)系统能实现的操作和功能如下: ①录入:可以录入航班情况,全部数据可以只放在内存中,最好存储在文件中; ②查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; ③承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; ④承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

三、概要设计 系统结构图 四、源程序 详细代码: #include #include #include #include #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>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() { coutpre=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) { coutx;cout<=m); coutnext!=NULL) q=head->next; else { q=NULL;