航空订票系统航空订票系统
#include
#include
#include
#include
typedef struct plane_info
{
int number,seat_now,seat_total,price;
char time_go[16],time_to[16],place_go[20],place_to[20];
float discount;
struct plane_info * next;
}p_info;
typedef struct cust_info
{
char name...
航空订票系统
#include
#include
#include
#include
typedef struct plane_info
{
int number,seat_now,seat_total,price;
char time_go[16],time_to[16],place_go[20],place_to[20];
float discount;
struct plane_info * next;
}p_info;
typedef struct cust_info
{
char name[20];
int numb_id,amount_t,numb_p,numb_ord;
struct cust_info * next;
}c_info;
void luru();
void xiugai();
void chaxun();
void dingpiao();
void tuipiao();
p_info * read_p();
c_info * read_c();
void write_p(p_info *);
void write_c(c_info *);
void free_p(p_info *);
void free_c(c_info *);
///*****************主界面数******************/////
void welcome()
{
int choice,i=0;
system("cls");
do
{
printf("\t\t**************航空订票系统**************\n");
printf("\t\t* *\n");
printf("\t\t* ? 1.录入航班 *\n");
printf("\t\t* *\n");
printf("\t\t* ? 2.查询航班 *\n");
printf("\t\t* *\n");
printf("\t\t* ? 3.修改航班 *\n");
printf("\t\t* *\n");
printf("\t\t* ? 4.顾客订票 *\n");
printf("\t\t* *\n");
printf("\t\t* ? 5.顾客退票 *\n");
printf("\t\t* *\n");
printf("\t\t* ? 0.退出系统 *\n");
printf("\t\t* *\n");
printf("\t\t****************************************\n");
printf("\t\t请选择:");
scanf("%d",&choice);
system("cls");
switch(choice)
{
case 0: exit(0);
case 1: luru(); break;
case 3: xiugai(); break;
case 2: chaxun(); break;
case 4: dingpiao(); break;
case 5: tuipiao(); break;
default: printf("您的输入有误,请重新选择:\n\n");
}
}while(choice!=0);
}
//*****************航班信息录入功能***********************// void luru()
{
char choice;
p_info * p;
FILE * fp;
if((fp=fopen("plane.dat","ab"))==NULL) {printf("打开错
误!");getch();welcome();}
do
{
system("cls");
printf("请输入要录入的航班信息:\n");
printf("航班号 起飞时间 抵达时间 始发地 目的地 票价 折扣情况 座位
总数 剩余座位数\n");
p=(p_info *)malloc(sizeof(p_info));
p->next=NULL;
scanf("%d%s%s%s%s%d%f%d%d",&(p->number),p->time_go,p->time_to,p->place_go,p-
>place_to,&(p->price)
,&(p->discount),&(p->seat_total),&(p->seat_now));
fwrite(p,sizeof(p_info),1,fp);
printf("继续录入请输入0,否则返回上一级菜单\n");
choice=getch();
}while(choice=='0');
fclose(fp);
system("cls");
}
//*****************航班信息的修改*******************// void xiugai()
{
int number;
p_info *p, *head;
head=read_p();
printf("请输入需要修改的航班号:");
scanf("%d",&number);
p=head;
while(p!=NULL)
{
if(p->number==number)
{
printf("您要修改的航班信息为:\n");
printf("航班号 起飞时间 抵达时间 始发地 目的地 票价 折扣情况
座位总数 剩余座位数\n");
printf("\n%d %s %s %s %s %d %f %d %d\n",p->number,p->time_go,p-
>time_to,p->place_go
,p->place_to,p->price,p->discount,p->seat_total,p->seat_now);
printf("\n请输入要修改后的航班信息\n");
printf("航班号 起飞时间 抵达时间 始发地 目的地 票价 折扣情况
座位总数 剩余座位数\n");
scanf("%d%s%s%s%s%d%f%d%d",&(p->number),p->time_go,p->time_to,p->place_go,p-
>place_to,&(p->price)
,&(p->discount),&(p->seat_total),&(p->seat_now));
break;
}
p=p->next;
}
if(p!=NULL)
{
write_p(head);
printf("您已成功修改%d号航班\n",p->number);
}
else
{
printf("对不起,该航班不存在\n");
}
free_p(head); //释放该链
printf("单击任意键退出");
getch();
system("cls"); //清屏 }
// 实现航班信息查询功能
void chaxun()
{
int choice, number;
char place_go[20], place_to[20];
p_info *head=NULL, *p;
void chaxun_1(p_info * p, int number);
void chaxun_2(p_info * p, char * place_go, char * place_to);
head=read_p(); //航班信息链表的初始化
if(head==NULL)
{ printf("没有航班信息!\n单击任意键退出......\n"); getch(); welcome();}
p=head;
do
{
system("cls");
printf("0.返回主菜单\t1.航班号查询\t2.始发地查询\n");
printf("请输入查询方式:");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\n请输入要查询的航班号:");
scanf("%d",&number);
chaxun_1(head,number);
break;
case 2:
printf("请输入要查询的始发地与目的地:");
scanf("%s%s",place_go,place_to);
chaxun_2(head, place_go, place_to);
break;
}
}while(choice!=0);
welcome();
free_p(head);
}
/********************实现订票功能*********************/ void dingpiao()
{
long length=0;
p_info *head_p=NULL,*p2;
c_info *p, *p1, *head_c;
char choice;
head_c=read_c();
head_p=read_p();
if(head_p==NULL)
{printf("没有航班信息,不能订票!");getch();welcome(); }
p1=head_c;
p2=head_p;
FILE * fp;
if((fp=fopen("customer.dat","ab"))==NULL) {printf("打开失
败!");getch();welcome();}
if(p1!=NULL)
{
while(p1!=NULL)
{ p1=p1->next;length++; }
}
do
{
printf("请输入订票者信息:\n");
printf("姓名,证件号,数量,航班号\n");
p=(c_info *)malloc(sizeof(c_info));
scanf("%s%d%d%d",p->name,&(p->numb_id),&(p->amount_t),&(p->numb_p) );
p->numb_ord=length+1;p->next=NULL;
while(p2!=NULL)
{
if(p2->number==p->numb_p) break;
p2=p2->next;
}
if(p2==NULL)
{ printf("没有航班信息!不能订票\n"); getch();welcome();}
else
{
printf("您查询的航班信息为:\n");
printf("航班号 起飞时间 抵达时间 始发地 目的地 票价 折扣情况
座位总数 剩余座位数\n");
printf("\n%d %s %s %s %s %d %f %d %d\n",p2->number,p2->time_go,
p2->time_to,p2->place_go
,p2->place_to,p2->price,p2->discount,p2->seat_total,p2->seat_now);
}
if(p2->seat_now-p->amount_t<0)
{ printf("对不起,该航班只剩%d张票.\n暂时不能订
票.\n",p2->seat_now);getch();break;}
p2->seat_now=p2->seat_now-p->amount_t;
length++;
fwrite(p,sizeof(c_info),1,fp);
printf("您已成功订票!\n订单号是:%d",p->numb_ord);
printf("\n继续订票请输入0,否则返回上一级菜单\n");
choice=getch();
}while(choice=='0');
fclose(fp);
write_p(head_p);
free_p(head_p);
free_c(head_c);
welcome();
}
//***********************实现退票功能**********************//
void tuipiao()
{
char name[20];
int numb_ord, numb_id;
p_info *head_p, *p_p;
c_info *head_c, *p_c, *p1_c=NULL;
head_p=read_p();
head_c=read_c();
p_p=head_p;
p_c=head_c;
if(p_c==NULL)
{
printf("没有客户信息!\n单击任意键退出......");
getch();welcome();
}
printf("请输入客户姓名:\n");
scanf("%s",name);
printf("请输入证件号:\n");
scanf("%d",&numb_id);
printf("请输入订单号:\n");
scanf("%d",&numb_ord);
while(p_c!=NULL)
{
if(strcmp(name,
p_c->name)==0&&numb_ord==p_c->numb_ord&&p_c->numb_id==numb_id) break;
p1_c=p_c;
p_c=p_c->next;
}
if(p_c==NULL)
{
printf("该顾客信息不存在,单击任意键退出");
getch(); welcome();
}
else // 将链表信息重新写到文件中
{
while(p_p!=NULL)
{
if(p_p->number==p_c->numb_p) break;
p_p=p_p->next;
}
p_p->seat_now=p_p->seat_now+p_c->amount_t; //相关航班信息票数恢复
if(p1_c==NULL) //删除退票顾客信息结点
{ head_c=NULL; free(p_c); }
else
{
p1_c->next=p_c->next;
free(p_c);
}
write_p(head_p);
write_c(head_c);
printf("退票成功,单击任意键退出");
getch();
}
free_p(head_p);
free_c(head_c);
welcome();
}
//**************** 实现以航班号查询 *******************// void chaxun_1(p_info * p, int number)
{
while(p!=NULL) //执行条件:未到尾结点
{
if(p->number==number) break;
p=p->next;
}
if(p==NULL) {printf("\a对不起该航班信息不存在!\n");getch();chaxun();}
printf("符合要求的航班信息如下所示:\n");
printf("航班号 起飞时间 抵达时间 始发地 目的地 票价 折扣情况 座位总数
剩余座位数\n");
printf("%d %s %s %s %s %d %f %d %d\n",p->number,p->time_go,p->t
ime_to,p->place_go
,p->place_to,p->price,p->discount,p->seat_total,p->seat_now);
printf("任意键返回......");
getch();
}
// *******************实现以始发地及目的地查询******************//
void chaxun_2(p_info * p, char * place_go, char * place_to)
{
int count=0;
printf("\n符合要求的航班信息如下所示:\n");
printf("\n航班号 起飞时间 抵达时间 始发地 目的地 票价 折扣情况 座位
总数 剩余座位数\n");
while(p!=NULL)
{
if(strcmp(place_go,p->place_go)==0&&strcmp(place_to,p->place_to)==0)
{
printf("%d %s %s %s %s %d %f %d %d\n\n",p->number,p->time_go,p-
>time_to,p->place_go
,p->place_to,p->price,p->discount,p->seat_total,p->seat_now);
count++;
}
p=p->next;
}
if(count==0) printf("\n\a对不起,没有符合您要求的航班\n\n");
else printf("共有%d个航班符合您的要求\n",count);
printf("任意键返回......");
getch();
}
//****************初始化航班信息文件链表*************************
p_info * read_p()
{
p_info *p1, *p2,*p3,*head=NULL;
FILE *fp;
if((fp=fopen("plane.dat","rb"))==NULL)
{
printf("航班信息不存在\n单击任意键退出!\n");
getch();welcome();
}
while(!feof(fp))
{
p1=(p_info *)malloc(sizeof(p_info));
fread(p1,sizeof(p_info),1,fp);
if(head==NULL)
{
p1->next=NULL;
head=p1;
p2=p1;
}
else
{
p1->next=NULL;
p2->next=p1;
p3=p2;
p2=p1; //p2永远指向最后一个结点
}
}
free(p2);
if(head==p1)
{
head=NULL;
}
else
p3->next=NULL;
fclose(fp);
return(head);
}
//***************初始化顾客信息链表******************//
c_info * read_c() {
c_info *p1,*p3, *p2,*head=NULL;
FILE *fp;
if((fp=fopen("customer.dat","rb"))==NULL)
{
printf("顾客信息不存在\n单击任意键退出!\n");
getch(); welcome();
}
while(!feof(fp))
{
p1=(c_info *)malloc(sizeof(c_info));
fread(p1,sizeof(c_info),1,fp);
if(head==NULL)
{
p1->next=NULL;
head=p1;
p2=p1;
}
else
{
p1->next=NULL;
p2->next=p1;
p3=p2;
p2=p1;
}
}
free(p2);
if(head==p1)
{
head=NULL;
}
else
p3->next=NULL;
fclose(fp);
return(head);
}
/************将航班信息链表写入到航班信息文件中**********/
void write_p(p_info *p)
{
FILE * fp;
if((fp=fopen("plane.dat","wb"))==NULL)
{ printf("不能打开航班信息文件"); getch();welcome();}
while(p!=NULL)
{
fwrite(p,sizeof(p_info),1,fp);
p=p->next;
}
fclose(fp);
}
/*************将顾客信息链表写入到顾客信息文件中**********/
void write_c(c_info *p)
{
FILE * fp;
if((fp=fopen("customer.dat","wb"))==NULL)
{ printf("不能打开航班信息文件"); getch();welcome();}
while(p!=NULL)
{
fwrite(p,sizeof(c_info),1,fp);
p=p->next;
}
fclose(fp);
}
//****************释放航班信息链表 ***************//
void free_p(p_info *p)
{
p_info *p1;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
}
//*****************释放顾客信息链表*******************//
void free_c(c_info *p)
{
c_info *p1;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
}
////主函数//////
void main()
{
welcome();
}
本文档为【航空订票系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。