飞机订票系统.docx

上传人:b****2 文档编号:17165103 上传时间:2023-07-22 格式:DOCX 页数:17 大小:18.53KB
下载 相关 举报
飞机订票系统.docx_第1页
第1页 / 共17页
飞机订票系统.docx_第2页
第2页 / 共17页
飞机订票系统.docx_第3页
第3页 / 共17页
飞机订票系统.docx_第4页
第4页 / 共17页
飞机订票系统.docx_第5页
第5页 / 共17页
飞机订票系统.docx_第6页
第6页 / 共17页
飞机订票系统.docx_第7页
第7页 / 共17页
飞机订票系统.docx_第8页
第8页 / 共17页
飞机订票系统.docx_第9页
第9页 / 共17页
飞机订票系统.docx_第10页
第10页 / 共17页
飞机订票系统.docx_第11页
第11页 / 共17页
飞机订票系统.docx_第12页
第12页 / 共17页
飞机订票系统.docx_第13页
第13页 / 共17页
飞机订票系统.docx_第14页
第14页 / 共17页
飞机订票系统.docx_第15页
第15页 / 共17页
飞机订票系统.docx_第16页
第16页 / 共17页
飞机订票系统.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

飞机订票系统.docx

《飞机订票系统.docx》由会员分享,可在线阅读,更多相关《飞机订票系统.docx(17页珍藏版)》请在冰点文库上搜索。

飞机订票系统.docx

飞机订票系统

#include

#include

#include

#include

#defineok1

typedefstructord_ros

{//单链表

charname[15];//已订票的客户姓名

intord_amt;//已订票数量

structord_ros*next1;

}ord_ros,*Link;

typedefstructwat_ros{//单链队

charname[15];//预订票的客户姓名

intwat_amt;//要订票数量

structwat_ros*next2;//下一个链队结点指针

}wat_ros,*Qptr;

typedefstruct{

Qptrfront;//单链队头结点

Qptrrear;//单链队尾结点

}linkQueue;

typedefstructairline{//创建一个航线的结构体

charair_num[15];//航班号

charsta_name[10];//起点站名

charter_name[10];//终点站名

chartff_time[10];//起飞时间

chardes_time[10];//下降时间

chardate[7];//航班日期(星期几)

intlevel;//仓位

intcheck;//票价

floatdisc;//折扣

inttkt_amt;//乘员定额

inttkt_sur;//余票

structairline*next;//指向下一个链结点的指针

structord_ros*order;//定义一个指向已订票客户的头结点指针

structwat_ros*bookqueue;//等候替补的客户名单域,分别指向排队等候名单队头队尾的指针

}airline,*Linklist;

structairline*L=NULL;//定义全局量

structord_ros*H;//为已订票客户链队来申请空间

linkQueueQ;//linkQueue类型的来申请空间

LinklistInitLinklist();//声明

intInsertLinklist(Linklisthead1);//声明

voidair_number();//通过航班号查询

voidter_place();//通过目的地查询

voidinput();//初始化录入功能

voidsearch();//查询功能

voidorder_tkt();//订票功能

voidreturn_tkt();//退票功能

voidmain()

{

intn;

H=(structord_ros*)malloc(sizeof(ord_ros));

Q.front=Q.rear=(Qptr)malloc(sizeof(wat_ros));

InitLinklist();

do{//打印主界面

printf("\t**********************************************************\n");

printf("\t*飞机订票系统*\n");

printf("\t*^^*\n");

printf("\t*;;;;*\n");

printf("\t*;;V;;1录入功能;;V;;*\n");

printf("\t*;;|;;;;|;;*\n");

printf("\t*;;;v;;;2查询功能;;;v;;;*\n");

printf("\t*;;;;*\n");

printf("\t*;;3订票功能;;*\n");

printf("\t*;;;;*\n");

printf("\t*;;||;;4退票功能;;||;;*\n");

printf("\t*;;;;;;;;;;;;*\n");

printf("\t*;;XX;;0退出系统;;XX;;*\n");

printf("\t*;;;;;;;;;;;;;;;;*\n");

printf("\t*;V;;V;*\n");

printf("\t*||||*\n");

printf("\t**********************************************************\n");

printf("\t请选择:

");

scanf("%d",&n);printf("\n");

switch(n)

{

case1:

input();//录入功能

break;

case2:

search();//查询功能

break;

case3:

order_tkt();//订票功能

break;

case4:

return_tkt();//退票功能

break;

case0:

//退出

printf("感谢你的使用,再见!

\n");

}

}while(n==1||n==2||n==3||n==4);

}

voidinput()//初始化的单链表*********************************************************录入功能

{

intj=1,m;

do{

if(!

InsertLinklist((Linklist)L))//向其中加入航班信息

{

printf("内存已满\n");exit(OVERFLOW);

}//向链表中加一结点

printf("\t是否要输入下一个航线记录?

\n");

printf("\t是请输入1\n");

printf("\t否请输入2\n\t");

scanf("%d",&m);//在这里依靠人来决定是否输入下一条航线记

}while(m==1);

}

LinklistInitLinklist()

{

L=(Linklist)malloc(sizeof(airline));

if(!

L)exit(OVERFLOW);

L->next=NULL;//建立一个带有头结点的单链表

return(L);

}

intInsertLinklist(LinklistL)//向航线链表添加新的结点

{

Linklistp;

p=(Linklist)malloc(sizeof(airline));//为一个新的结点分配空间

if(!

p)exit(OVERFLOW);

printf("\t请依次输入下面几项内容:

\n\n");//这里的输入采用一个个单独输入,避免了乱赋值的现象

printf("航班号\n");

scanf("%s",p->air_num);

printf("起点站\n");

scanf("%s",p->sta_name);

printf("终点站\n");

scanf("%s",p->ter_name);

printf("起飞时间\n");

scanf("%s",p->tff_time);

printf("下降时间\n");

scanf("%s",p->des_time);

printf("飞行日期\n");

scanf("%s",&p->date);

printf("舱位\n");

scanf("%d",&p->level);

printf("乘员定额\n");

scanf("%d",&p->tkt_amt);

printf("余票数\n");

scanf("%d",&p->tkt_sur);

printf("票价\n");

scanf("%d",&p->check);

printf("折扣\n");

scanf("%f",&p->disc);

p->order=(ord_ros*)malloc(sizeof(ord_ros));//为它申请空间

p->bookqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(wat_ros));//为它申请空间

p->next=L->next;

L->next=p;//这二句是链表中的插入一个结点

return(ok);

}

voiddisplay(structairline*p)

{

printf("------------------------------------------------------------------------------\n");

printf("¦%-6s¦%-6s¦%-6s¦%-7s¦%-7s¦%-4s¦%-4d¦%-7f¦%-4d¦%-4d¦\n",p->air_num,p->sta_name,

p->ter_name,p->tff_time,p->des_time,p->date,p->check,p->disc,p->tkt_amt,p->tkt_sur);

printf("------------------------------------------------------------------------------\n");

}

voidsearch()//******************************************************************查询功能

{

intn;

printf("\n\t\t***************************************\n");

printf("\t\t*航班信息查询系统*\n");

printf("\t\t*/;*\n");

printf("\t\t*|ee|*\n");

printf("\t\t*1通过目的地|{}|查询*\n");

printf("\t\t*_______________;^^;________________*\n");

printf("\t\t*;中国||航空;*\n");

printf("\t\t*`========--------..---------========'*\n");

printf("\t\t*||||*\n");

printf("\t\t*||*\n");

printf("\t\t*查询||号班航过通2*\n");

printf("\t\t*||*\n");

printf("\t\t*,---||---,*\n");

printf("\t\t*0退出'---<>---'系统*\n");

printf("\t\t*****************************************\n");

printf("\t请选择:

\n");

scanf("%d",&n);

switch(n)

{

case1:

ter_place();

break;

case2:

air_number();

break;

case0:

exit(0);

printf("欢迎您下次再次使用!

\n");

}

}

voidter_place()//通过目的地查询

{

charc[15];

Linklistp=L;

intm;

printf("\t请输入要查询的目的地:

\n");

scanf("%s",c);

do{

p=p->next;

if(p)

{

if(strcmpi((*p).ter_name,c)==0)

{

printf("------------------------------------------------------------------------------\n");

printf("¦航班号¦起点站¦终点站¦起飞时间¦下降时间¦航班日期¦票价¦折扣¦限员¦余票¦\n");

display(p);//调用预览信息

return;

}

}

else{

printf("\t对不起没有您要找的目的地:

\n\n");

m=0;

}

}while(m!

=0);

}

voidair_number()//通过目的地查询

{

charc[15];

Linklistp=L;

intm;

printf("\t请输入要查询的航班号:

\n");

scanf("%s",c);

do{

p=p->next;

if(p)

{

if(strcmpi((*p).air_num,c)==0)

{

printf("------------------------------------------------------------------------------\n");

printf("¦航班号¦起点站¦终点站¦起飞时间¦下降时间¦航班日期¦票价¦折扣¦限员¦余票¦\n");

display(p);//调用预览信息

return;

}

}

else

{//如果不匹配的话就做

printf("\t对不起没有你要找的航班号:

\n");m=0;

}

}while(m!

=0);

}

voidorder_tkt()//***************************************************************订票功能

{

Linklistp=L;//Linklist类型的L来指向链表头

ord_ros*h=H,*h1;//ord_ros定义客户的结点,方便插入与删除

linkQueueq=Q;//linkQueue类型的来,方便插入与删除

structwat_ros*q3;

charc[15];

intm=1,amount,n;

intydpiao=0,yd=0;

printf("请输入终点站名:

\n");

scanf("%s",c);

p=L->next;

if(p){

do{//查找一下,是否有这个航班

if(!

p)

{

printf("对不起,没有你要找的航班:

\n\n");

}

m=strcmpi(p->ter_name,c);

//通过比较来判定

if(m==0)

{

printf("------------------------------------------------------------------------------\n");

printf("¦航班号¦起点站¦终点站¦起飞时间¦下降时间¦航班日期¦票价¦折扣¦限员¦余票¦\n");

display(p);//调用预览信息

}

else

p=p->next;

}while(m!

=0);

if(m==0)

{//当有该航班时,进行订票

do{

printf("\n请输入你要订的票数:

\n");

scanf("%d",&amount);

if(amount<=p->tkt_sur)

{

h=p->order;

if(h)

{inti;

floatj;

j=amount*(p->disc*p->check);

h1=h;

h=h->next1;

h=(structord_ros*)malloc(sizeof(ord_ros));

printf("请输入你的名字:

\n");

scanf("%s",h->name);

h->ord_amt=amount;

h->next1=h1->next1;

h1->next1=h;

p->tkt_sur-=amount;//该航线的余票量应减掉该客户的订票量

for(i=0;i

printf("%s的座位号是:

%d\n",h->name,p->tkt_amt-p->tkt_sur+i);

printf("订票成功!

您需要支付%.2f元\n",j);

printf("\n祝您乘坐愉快!

\n");

}

}

else//余票量不足时

{

printf("余票量:

%d\n",p->tkt_sur);

printf("对不起,余票%d张不足,不能完成订票\n",p->tkt_sur);

printf("是否要重新订票?

\n");

printf("需要请输入1否则请按2预订请输入3:

\n");

scanf("%d",&m);

while(m==3)

{

printf("对不起,该航班的票已售完\n");

return;

q.front=p->bookqueue;

if(q.front==q.rear)

printf("没有人预订票,是否要预订?

\n");

elseif(q.front!

=q.rear)

printf("已有人预订票,是否要预订?

\n");

printf("预订请输入1否则输入2:

\n");

scanf("%d",&n);

if(n==1)

{

q3=(Qptr)malloc(sizeof(wat_ros));

printf("请输入你的姓名\n");

scanf("%s",q3->name);

printf("请输入订票数\n");

scanf("%d",&q3->wat_amt);

q3->next2=NULL;

q.rear->next2=q3;

q.rear=q3;

printf("你已经预订了!

\n");

return;

}

}

}

}while(m==1);

}

}

}

voidreturn_tkt()//***************************************************************退票功能

{

Linklistp=L;

ord_ros*h=H,*h1,*h2;

linkQueueq=Q;

charc[15],name1[15];

intm=1,piao,n;//定义相应变量

printf("请输入航班号:

\n");

scanf("%s",c);

p=L->next;

if(p)

{

do{//使用dowhile来查找是否有此航班

if(!

p)

{//如果是到了表尾且没有匹配,

printf("\n对不起,没有你要找的航班:

\n");

return;

}

if(strcmpi(p->air_num,c)==0)//比较航班号输出信息

{

printf("------------------------------------------------------------------------------\n");

printf("¦航班号¦起点站¦终点站¦起飞时间¦下降时间¦航班日期¦票价¦折扣¦限员¦余票¦\n");

display(p);//调用预览信息

m=0;

}

elsep=p->next;

}while(m!

=0);

if(m==0)

{//如果找到了,就来给他退票

do{

h=p->order;

if(h)

{

printf("请输入你的姓名:

\n");

scanf("%s",name1);

printf("请输入你订的票数:

\n");

scanf("%d",&piao);

h1=h;

h=h->next1;

if(strcmpi(h->name,name1)==0&&h->ord_amt==piao)//如果名字和订的票数相等,则就给他取消订票

{

structwat_ros*q3;

p->tkt_sur+=h->ord_amt;

h2=h;

h1->next1=h->next1;

free(h2);

printf("你取消订票成功\n");

return;

q.front=p->bookqueue;

if(q.front==q.rear)

{

printf("没有人预订票:

\n");

}

if((p->tkt_sur)>=(q.front->next2->wat_amt))

{

h2=(ord_ros*)malloc(sizeof(ord_ros));

strcpy(h2->name,q.front->next2->name);

h2->ord_amt=q.front->next2->wat_amt;

n=p->tkt_sur-q.front->next2->wat_amt;

p->tkt_sur=n;

q3=q.front->next2;

q.front->next2=q3->next2;//这二语句来删除结点

if(q.rear==q3)

q.rear=q.front;

free(q3);//释放空间

printf("链队中删除成功\n");

h2->next1=h->next1;

h->next1=h2;//为之插入进已订票客户链表中

printf("为预订的客户订票成功\n");

}

elseprintf("余票数不够,不能为预订客户订票!

\n");

}

else

{//如果没有找到,即系统中没有该人的信息,提示是否来重新查找

printf("对不起,该航班没有人订票或者是你没有订该航班的票\n");

printf("是否要重新查找并取消订票?

\n");

printf("需要请输入1否则请按2\n");

scanf("%d",&m);

}

}

}while(m==1);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2