课程设计-航空客运订票系统_第1页
课程设计-航空客运订票系统_第2页
课程设计-航空客运订票系统_第3页
课程设计-航空客运订票系统_第4页
课程设计-航空客运订票系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数据结构课程设计报告 课程名称_数据结构题目名称 航空客运订票系统 学生学院 计算机学院专业班级 11级软件1班 2012年 6月 29日一需求分析设计一个航空客运订票系统基本要求:1.每条航线所涉及的信息有:终点站名、航班号、飞机好、飞行周日、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、仓位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);2.作为示意系统 ,全部数据可以只放在内存中;3.系统能实现的操作和功能如下:(1)查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机好、星期几飞行,最近一天航班的日期和与票额;(2)承办订票业务:根据客户提出的要求(航班号

2、,订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员活余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;(3)承办退票业务:根据客户提供的情况(日期、航班)。为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则一次询问其他排队候补的客户。2 概要设计 用链队储存客户信息,用线性表储存航线函数声明void fromairlinenum();/通过航班号查询void fromendcity();/通过目的地查询void fromday();/通过时间查询void initial

3、ize();/初始化录入功能void airlinecheck();/查询功能void customerbooking();/订票功能void cancelfuntion();/退票功能void customerinformation();/用户信息查询三详细设计 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h>#define ok 1 typedef struct booking/单链表char name15;/已订票的客户姓名int tic

4、ket;/已订票数量struct booking *next1;booking,*link;typedef struct yetbooking/单链队char name15;/预订票的客户姓名 int moreticket;/ 要订票数量struct yetbooking *next2;/下一个链队结点指针yetbooking,*qptr;typedef struct qptr front;/单链队头结点qptr rear;/单链队尾结点linkqueue; typedef struct airline/创建一个航线的结构体char fightnum15;/航班号-char planenum1

5、5;/飞机号int fighttime;/起飞时间 int level;/舱位等级 int moreticket;/余票char endcity15;/降落城市int totalticket;/票数总额struct airline *next;/指向下一个链结点的指针 struct booking *bookingedlist;/定义一个指向已订票客户的头结点指针 struct yetbooking *bookdingqueue;linkqueue q;airline,*linklist;struct airline *l=null;/定义全局量struct booking *h;/为已订票客

6、户链队来申请空间/linkqueue q;/linkqueue类型的来申请空间linklist initlinklist();/声明int insertlinklist(linklist &head1);/声明void fromairlinenum();/通过航班号查询void fromendcity();/通过目的地查询void fromday();/通过时间查询void initialize();/初始化录入功能void airlinecheck();/查询功能void customerbooking();/订票功能void cancelfuntion();/退票功能void cu

7、stomerinformation();/用户信息查询void main()h=(struct booking*)malloc(sizeof(booking); /q.front=q.rear=(qptr)malloc(sizeof(yetbooking);initlinklist();int n;do /打印主界面printf("t 欢迎使用航空客运订票系统n"); printf("t+n"); printf("t=>1. 录入航班功能 =n"); printf("t=>2. 航班查询功能 =n");

8、 printf("t=>3. 订票功能 =n"); printf("t=>4. 退票功能 =n"); printf("t=>5. 用户信息查询 =n");printf("t=>6. 退出 =n"); printf("t+n"); printf("t请选择:"); scanf("%d",&n);printf("n");switch(n)case 1: initialize();/录入功能 break;cas

9、e 2: airlinecheck();/查询功能 break;case 3: customerbooking();/订票功能break;case 4: cancelfuntion();/退票功能 break;case 5: customerinformation();break;default :exit(0);/退出while(n=1|n=2|n=3|n=4|n=5);void initialize()/航班录入功能int j=1,m;doif(!insertlinklist(linklist) l) /向其中加入航班信息 printf("内存已满n"); exit(o

10、verflow);/向链表中加一结点printf("t是否要输入下一个航线记录?n"); printf("t是请输入1n"); printf("t否请输入2nt"); scanf("%d",&m); /在这里依靠人来决定是否输入下一条航线记while(m=1);linklist initlinklist()l=(linklist)malloc(sizeof(airline);if(!l) exit(overflow);l->next=null;/建立一个带有头结点的单链表return (l);int

11、insertlinklist(linklist &l)/向航线链表添加新的结点 linklist p;p=(linklist)malloc(sizeof(airline);/为一个新的结点分配空间if(!p) exit(overflow);printf("t请依次输入下面几项内容:nn");/这里的输入采用一个个单独输入,避免了乱赋值的现象 printf("航班号n"); scanf("%s",p->fightnum);printf("飞机号n");scanf("%s",p->

12、;planenum);printf("终点站n");scanf("%s",p->endcity); printf("飞行日期(星期)n"); scanf("%d",&p->fighttime); printf("舱位等级n"); scanf("%d",&p->level); printf("票数总额n"); scanf("%d",&p->totalticket);p->moretic

13、ket=p->totalticket; p->bookingedlist=(booking*)malloc(sizeof(booking);/为它申请空间p->bookdingqueue=p->q.front=p->q.rear=(qptr)malloc(sizeof(yetbooking);/为它申请空间 p->next=l->next; l->next=p;/这二句是链表中的插入一个结点p->q.front->next2=null;return ok;void airlinecheck()/查询功能int n;printf(&qu

14、ot;t 查 找 航 线 信 息 n"); printf("t+n"); printf("t=>1. 通过目的地查询 =n"); printf("t=>2. 通过航班号查询 =n");printf("t=>3. 通过日期查询 =n"); printf("t+n"); printf("t请选择:n"); scanf("%d",&n);switch(n)case 1:fromendcity();break;case 2:fr

15、omairlinenum(); break;case 3:fromday();break;default :break;void fromendcity()/通过目的地查询 char c15;linklist p=l;int m=1; printf("t请输入要查询的目的地:n");scanf("%s",c);do p=p->next;if(p)if(strcmpi(*p).endcity,c)=0) printf("t航班号:%sn",p->fightnum); printf("t飞机号:%sn",p

16、->planenum); printf("t飞行时间:周%dn",p->fighttime); printf("t票数总额%dn",p->totalticket); printf("t余票量:%dnnn",p->moreticket); m=0;else m=1;while(m!=1);if(m=1)printf("t对不起没有你要找的航班号:n");void fromairlinenum()/通过航班号查询 char c15; linklist p=l;int m=1; printf(&q

17、uot;t请输入要查询的航班号:n"); scanf("%s",c);do p=p->next;if(p) if(strcmpi(*p).fightnum,c)=0) printf("t航班信息:n");printf("t航班号:%sn",p->fightnum); printf("t飞机号:%sn",p->planenum); printf("t飞行时间:周%dn",p->fighttime);printf("t票数总额%dn",p->

18、;totalticket); printf("t余票量:%dnn",p->moreticket);m=0;else /如果不匹配的话就做 printf("t对不起没有你要找的航班号:n"); m=0;while(m!=0);void fromday()/通过日期查询航班int i;linklist p=l;int m=2; printf("t请输入日期:n");scanf("%d",&i);printf("t航班信息:n");do p=p->next;if(p)if(*p).

19、fighttime=i) printf("t航班号:%sn",p->fightnum); printf("t飞机号:%sn",p->planenum); printf("t飞行时间:周%dn",p->fighttime); printf("t票数总额%dn",p->totalticket); printf("t余票量:%dnnn",p->moreticket); m=0;else m=1;while(m!=1);if(m=1)printf("t对不起没有你

20、要找的航班号:n");void customerbooking()/订票功能 linklist p=l;/linklist类型的l来指向链表头 booking *h,*h1;/booking 定义客户的结点,方便插入与删除 / linkqueue q;/linkqueue类型的来 ,方便插入与删除 struct yetbooking *q3;char c15; int m=1,ticket,n;intydticket=0,yd=0; printf("请输入航班号:n"); scanf("%s",c); /p=l->next;if(p) d

21、o/查找一下,是否有这个航班if(!p) printf("对不起,没有你要找的航班:nn"); m=-1; break; /goto loop1;m=strcmpi(p->fightnum,c);/通过比较来判定if(m=0) printf("航班信息:n"); printf("航班号:%sn",p->fightnum); printf("飞机号:%sn",p->planenum); printf("飞行时间:周%dn",p->fighttime); printf(&qu

22、ot;票数总额%dn",p->totalticket); printf("余票量:%dn",p->moreticket);else p=p->next;while(m!=0);if(m=0)/当有该航班时,进行订票doprintf("n请输入你要订的票数:n"); scanf("%d",&ticket);while(ticket<=0)printf("票数应该大于0n");scanf("%d",&ticket); if(ticket<=p-

23、>moreticket)h=p->bookingedlist; if(h) h1=h; h=h->next1; h=(struct booking*)malloc(sizeof(booking); printf("请输入你的名字:n"); scanf("%s",h->name); h->ticket=ticket; h->next1=h1->next1; h1->next1=h; p->moreticket=p->moreticket-ticket; printf("订票成功:n&qu

24、ot;); m=2;else /余票量不足时 printf("余票量:%dn",p->moreticket); printf("对不起,余票 %d 张不足,不能完成订票n",p->moreticket); printf(" 是否要重新订票?n"); printf("需要请输入1n");printf("取消请按2: n");printf("预订请输入3 : n"); scanf("%d",&m); if(m=3)q3=(yetbookin

25、g*)malloc(sizeof(yetbooking); printf("请输入你的姓名n"); scanf("%s",q3->name);q3->moreticket=ticket; q3->next2=null; p->q.rear->next2=q3; p->q.rear=q3; printf("恭喜,预订成功!n"); while(m=1);void cancelfuntion()/*退票功能linklist p=l; booking *h=h,*h1,*h2; / linkqueue q

26、=q; char c15,name115; int m=1,ticket,n;/定义相应变量 printf("请输入航班号:n");scanf("%s",c); p=l->next; if(p) do /使用do while来查找是否有此航班if(!p)/如果是到了表尾且没有匹配, printf("n对不起,没有你要找的航班:n");m=-1;if(strcmpi(p->fightnum,c)=0)/比较航班号 输出信息printf("t航班信息:n"); printf("航班号:%sn&qu

27、ot;,p->fightnum); printf("飞机号:%sn",p->planenum); printf("飞行时间:周%dn",p->fighttime); printf("票数总额%dn",p->totalticket); printf("余票量:%dn",p->moreticket);m=0;else p=p->next;while(m>0);if(m=0)/如果找到了,则退票int i=1;doh=p->bookingedlist;printf(&quo

28、t;请输入你的姓名:n"); scanf("%s",name1); printf("请输入你订的票数:n"); scanf("%d",&ticket);while(ticket<=0)printf("票数不能小于等于零,请重新输入:n"); scanf("%d",&ticket);while(h) if(h) if(strcmpi(*h).name,name1)=0&&h->ticket=ticket)/如果名字和订的票数相等,则就给他取消订

29、票p->moreticket+=h->ticket;h2=h;if(i=1)h=h->next1;free(h2);elseh1->next1=h->next1;free(h2); printf("你取消订票成功n"); struct yetbooking *q3;if(p->q.front=p->q.rear)printf("没有人预订票:n");break;if(p->moreticket)>=(p->q.front->next2->moreticket)h2=(booking*

30、)malloc(sizeof(booking);strcpy(h2->name,p->q.front->next2->name); h2->ticket=p->q.front->next2->moreticket; n=p->moreticket-p->q.front->next2->moreticket; p->moreticket=n;q3=p->q.front;/if(p->q.rear=q3) free(q3);p->q.front=p->q.rear=null;elsep->q

31、.front=p->q.front->next2;/这二语句来删除结点free(q3); printf("链队中删除成功n");h2->next1=p->bookingedlist->next1; p->bookingedlist->next1=h2;/为之插入进已订票客户链表中 printf("为预订的客户订票成功n");break;else printf("余票数不够,不能为预订客户订票!n");elseh1=h;h=h->next1;if(!h) /如果没有找到,即系统中没有该人的信息,提示是否来重新查找 printf("对不起,该航班没有人订票或者是你没有订该航班的票n"); printf("是否要重新查找并取消订票?n"); printf("需要请输入1,取消请按2 n"); scanf("%d",&m);while(m=1);void customerinformation()char name15;char c15;int m=0; printf("*用户查询信息界面*n");printf("请输入用户名:n&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论