飞机订票系统(C语言)

飞机订票系统(C语言)用C语言解决飞机订票系统***一、问题描述:根据以下功能说明,设计航班信息、客户信息、订票信息的存储结构,设计程序完成相应功能。*录入:*可以录入航班情况(数据可以存储在一个数据文件中,数据个数不能少于8个、自行设计数据构成);客户信息(姓名,证件号,电话等);订票信息(订单要有编号,其余数据自行设计)。****查询:****可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;****订票:**

大家好,又见面了,我是你们的朋友全栈君。

用C语言解决飞机订票系统***

  • 一、问题描述:

    根据以下功能说明,设计航班信息、客户信息、订票信息的存储结构,设计程序完成相应功能。

    *录入:* 可以录入航班情况(数据可以存储在一个数据文件中,数据个数不能少于8个、自行设计数据构成);客户信息(姓名,证件号,电话等);订票信息(订单要有编号,其余数据自行设计)。

    ****查询:****可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;

    ****订票:****(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;

    ****退票:****可退票,退票后修改相关数据文件;

    ****修改航班信息:****当航班信息改变可以修改航班数据文件;

  • 二、代码以及注意事项

    1.注意事项:

    提前将航班信息提前写入文档中,放到该代码文件夹中,在需要的时候读入文件就行。下图是我的文件夹:

    在这里插入图片描述

    • 注意:flight是提前要写好的航班信息文件

    就比如这样:

    飞机订票系统(C语言)

    而reserve文件在开始需为空,因为这是存储乘客信息的文件

    就比如:

    在这里插入图片描述

    2、好了废话这莫多直接上代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define m 40
#define n 100
typedef struct
{ 

int flightnum;
char time[40];
char city[20];
int price;
int discount;
int emptysit;
}Flightinfo;
typedef struct
{ 

Flightinfo Flight[m];
int length;
}FlList;
typedef struct
{ 

char name[20];
char IDnum[20];
char phonenum[20];
int flightnum;
}Reserved;
typedef struct 
{ 

Reserved client[n];
int length;
}ReList;
void Welcome()
{ 

printf("\t\t\t\t\t**********************\n");
printf("\t\t\t\t\t*欢迎进入飞机订票系统*\n");
printf("\t\t\t\t\t**********************\n");
}
void F_Read(FlList *L1)
{ 
   int i;
FILE *fp;
if((fp=fopen("flight_information.txt","r"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fscanf(fp,"%d",&(L1->length));
for(i=0;i<L1->length;i++)
fscanf(fp,"%d %s %s %d %d %d",&(L1->Flight[i].flightnum),L1->Flight[i].time,L1->Flight[i].city,&(L1->Flight[i].price),&(L1->Flight[i].discount),&(L1->Flight[i].emptysit));
fclose(fp);
}
void R_Read(ReList *L2)
{ 

FILE *fp;
int k;
if((fp=fopen("reserve_information.txt","r"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fscanf(fp,"%d",&(L2->length));
if(L2->length==0) return;
for(k=0;k<L2->length;k++)
fscanf(fp,"%c %c %c %d",L2->client[k].name,L2->client[k].IDnum,L2->client[k].phonenum,&(L2->client[k].flightnum));
fclose(fp);
}
void FNsearch(FlList *L1)
{ 
   int t,i;
printf("\t\t\t\t\t请输入要查询的航班号\n");
scanf("%d",&t);
for(i=0;i<L1->length;i++)
if(L1->Flight[i].flightnum==t) break;
if(i==L1->length) printf("不存在该航班!\n");
else
{ 

printf("\t\t\t\t\t该航班信息如下:\n");
printf("\t\t\t\t\t航班号:%d\n\t\t\t\t\t起降时间:%s\n\t\t\t\t\t起降城市:%s\n\t\t\t\t\t票价:%d\n\t\t\t\t\t票价折扣:%d\n\t\t\t\t\t空余座位数:%d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
}
}
void FCsearch(FlList *L1)
{ 
   int i;
char temp[20];
printf("\t\t\t\t\t请输入起降城市\n");
scanf("%s",temp);
for(i=0;i<L1->length;i++)
if(strcmp(L1->Flight[i].city,temp)==0) 
{ 

printf("\t\t\t\t\t符合条件的航班信息如下:\n");
printf("\t\t\t\t\t航班号:%d\n\t\t\t\t\t起降时间:%s\n\t\t\t\t\t起降城市:%s\n\t\t\t\t\t票价:%d\n\t\t\t\t\t票价折扣:%d\n\t\t\t\t\t空余座位数:%d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
}
}
void Fsearch(FlList *L1)
{ 

int k;
printf("\t\t\t\t\t请选择查询方式\n");
printf("\t\t\t\t\t* 1-------------按航班号查询 *\n");
printf("\t\t\t\t\t* 2-------------按起降城市查询 *\n");
scanf("%d",&k);
switch(k)
{ 

case 1:FNsearch(L1);break;
case 2:FCsearch(L1);break;
default:printf("\t\t\t\t\t操作错误!\n");break;
}
}
void Rsearch(ReList *L2)
{ 
   int i;
char temp[20];
if(L2->length==0) 
{ 

printf("\t\t\t\t\t当前订票人数为0,无法查询!\n");
return;
}
printf("\t\t\t\t\t请输入客户证件号\n");
scanf("%s",temp);
for(i=0;i<L2->length;i++)
if(strcmp(L2->client[i].IDnum,temp)==0) break;
if(i==L2->length) printf("\t\t\t\t\t不存在该客户!\n");
else
{ 

printf("\t\t\t\t\t该客户信息如下:\n");
printf("\t\t\t\t\t姓名:%s\n\t\t\t\t\t证件号:%s\n\t\t\t\t\t电话:%s\n\t\t\t\t\t预定航班:%d\n",L2->client[i].name,L2->client[i].IDnum,L2->client[i].phonenum,L2->client[i].flightnum);
}
}
void Search(FlList *L1,ReList *L2)
{ 

int k;
printf("\t\t\t\t\t请选择查询对象\n");
printf("\t\t\t\t\t* 1-------------航班信息 *\n");
printf("\t\t\t\t\t* 2-------------订票信息 *\n");
scanf("%d",&k);
switch(k)
{ 

case 1:Fsearch(L1);break;
case 2:Rsearch(L2);break;
default:printf("\t\t\t\t\t操作错误!\n");break;
}
}
void Recommend(FlList *L1,int i)
{ 

int k;
printf("\t\t\t\t\t抱歉,该航班已无空余座位\n");
for(k=0;k<L1->length;k++)
if((strcmp(L1->Flight[i].city,L1->Flight[k].city)==0)&&(k!=i)&&(L1->Flight[k].emptysit!=0))
{ 

printf("\t\t\t\t\t您可选择该相似航班:\n");
printf("\t\t\t\t\t航班号:%d\n\t\t\t\t\t起降时间:%s\n\t\t\t\t\t起降城市:%s\n\t\t\t\t\t票价:%d\n\t\t\t\t\t票价折扣:%d\n\t\t\t\t\t空余座位数:%d\n",L1->Flight[k].flightnum,L1->Flight[k].time,L1->Flight[k].city,L1->Flight[k].price,L1->Flight[k].discount,L1->Flight[k].emptysit);
}
}
void Pay(FlList *L1,ReList *L2,int i)
{ 

FILE *fp1,*fp2;
int k;
printf("\t\t\t\t\t请输入客户信息\n");
printf("\t\t\t\t\t姓名\n");
scanf("%s",L2->client[L2->length].name);
printf("\t\t\t\t\t证件号\n");
scanf(" %s",L2->client[L2->length].IDnum);
printf("\t\t\t\t\t电话\n");
scanf(" %s",L2->client[L2->length].phonenum);
L2->client[L2->length].flightnum=L1->Flight[i].flightnum;
printf("\t\t\t\t\t您应支付票价%d元\n",L1->Flight[i].price*L1->Flight[i].discount/10);
L1->Flight[i].emptysit--;
L2->length++;
if((fp1=fopen("flight_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp1,"%d\n",L1->length);
for(i=0;i<L1->length;i++)
fprintf(fp1,"%d %s %s %d %d %d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
fclose(fp1);
if((fp2=fopen("reserve_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp2,"%d\n",L2->length);
for(k=0;k<L2->length;k++)
fprintf(fp2,"%s %s %s %d\n",L2->client[k].name,L2->client[k].IDnum,L2->client[k].phonenum,L2->client[k].flightnum);
fclose(fp2);
printf("\t\t\t\t\t订票成功!\n");
}
void Reserve(FlList *L1,ReList *L2)
{ 

int i,t;
printf("\t\t\t\t\t请输入要预定班机的航班号\n");
scanf("%d",&t);
for(i=0;i<L1->length;i++)
if(L1->Flight[i].flightnum==t) break;
if(i==L1->length) 
{ 

printf("不存在该航班!\n");
return;
}
if(L1->Flight[i].emptysit==0) Recommend(L1,i);
else Pay(L1,L2,i);
}
void Withdraw(FlList *L1,ReList *L2)
{ 

FILE *fp1,*fp2;
int k,i;
char temp[20];
if(L2->length==0)
{ 

printf("操作错误!\n");
return;
}
printf("\t\t\t\t\t请输入客户证件号\n");
scanf("%s",temp);
for(k=0;k<L2->length;k++)
if(strcmp(temp,L2->client[k].IDnum)==0) break;
if(k==L2->length)
{ 

printf("该客户不存在!\n");
return;
}
for(i=0;i<L1->length;i++)
if(L2->client[k].flightnum==L1->Flight[i].flightnum) break;
L1->Flight[i].emptysit++;
for(;k<L2->length-1;k++)
L2->client[k]=L2->client[k+1];
L2->length--;
if((fp1=fopen("flight_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp1,"%d\n",L1->length);
for(i=0;i<L1->length;i++)
fprintf(fp1,"%d %s %s %d %d %d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
fclose(fp1);
if((fp2=fopen("reserve_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp2,"%d\n",L2->length);
for(k=0;k<L2->length;k++)
fprintf(fp2,"%s %s %s %d\n",L2->client[k].name,L2->client[k].IDnum,L2->client[k].phonenum,L2->client[k].flightnum);
fclose(fp2);
printf("\t\t\t\t\t退票成功!\n");
}
void Fadd(FlList *L1)
{ 

FILE *fp1;
int i;
printf("\t\t\t\t\t请输入新增航班信息\n");
printf("航班号\n");
scanf("%d",&(L1->Flight[L1->length].flightnum));
printf("起降时间\n");
scanf(" %s",L1->Flight[L1->length].time);
printf("起降城市\n");
scanf(" %s",L1->Flight[L1->length].city);
printf("票价\n");
scanf("%d",&(L1->Flight[L1->length].price));
printf("票价折扣\n");
scanf("%d",&(L1->Flight[L1->length].discount));
printf("空余座位数\n");
scanf("%d",&(L1->Flight[L1->length].emptysit));
L1->length++;
if((fp1=fopen("flight_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp1,"%d\n",L1->length);
for(i=0;i<L1->length;i++)
fprintf(fp1,"%d %s %s %d %d %d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
fclose(fp1);
}
void Fcan(FlList *L1)
{ 
   
FILE *fp1;
int i,t;
printf("请输入要取消航班的航班号\n");
scanf("%d",&t);
for(i=0;i<L1->length;i++)
if(L1->Flight[i].flightnum==t) break;
if(i==L1->length) 
{ 

printf("不存在该航班!\n");
return;
}
for(;i<L1->length-1;i++)
L1->Flight[i]=L1->Flight[i+1];
L1->length--;
if((fp1=fopen("flight_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp1,"%d\n",L1->length);
for(i=0;i<L1->length;i++)
fprintf(fp1,"%d %s %s %d %d %d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
fclose(fp1);
}
void Fchg(FlList *L1)
{ 

FILE *fp1;
int i,t;
printf("请输入要修改航班的航班号\n");
scanf("%d",&t);
for(i=0;i<L1->length;i++)
if(L1->Flight[i].flightnum==t) break;
if(i==L1->length) 
{ 

printf("不存在该航班!\n");
return;
}
printf("\t\t\t\t\t请输入新的起降时间\n");
scanf("%s",L1->Flight[i].time);
printf("\t\t\t\t\t请输入新的票价\n");
scanf("%d",&(L1->Flight[i].price));
printf("\t\t\t\t\t请输入新的票价折扣\n");
scanf("%d",&(L1->Flight[i].discount));
if((fp1=fopen("flight_information.txt","w"))==NULL)
{ 

printf("文件打开失败!\n");
exit(0);
}
fprintf(fp1,"%d\n",L1->length);
for(i=0;i<L1->length;i++)
fprintf(fp1,"%d %s %s %d %d %d\n",L1->Flight[i].flightnum,L1->Flight[i].time,L1->Flight[i].city,L1->Flight[i].price,L1->Flight[i].discount,L1->Flight[i].emptysit);
fclose(fp1);
}
void Adjust(FlList *L1)
{ 

int k;
printf("\t\t\t\t\t请选择要执行的功能\n");
printf("\t\t\t\t\t1---------增加航班\n");
printf("\t\t\t\t\t2---------取消航班\n");
printf("\t\t\t\t\t3---------改动信息\n");
scanf("%d",&k);
switch(k)
{ 

case 1:Fadd(L1);break;
case 2:Fcan(L1);break;
case 3:Fchg(L1);break;
}
}
int main()
{ 
   int k;
FlList Flist;
ReList Rlist;
Flist.length=0;
Rlist.length=0;
Welcome();
F_Read(&Flist);
R_Read(&Rlist);
do 
{ 
   
printf("\t\t\t\t\t**********************\n");
printf("\t\t\t\t\t* 请根据提示完成操作 *\n");
printf("\t\t\t\t\t* 1-------------查询 *\n");
printf("\t\t\t\t\t* 2-------------订票 *\n");
printf("\t\t\t\t\t* 3-------------退票 *\n");
printf("\t\t\t\t\t* 4-------------修改 *\n");
printf("\t\t\t\t\t* 5-------------退出 *\n");
printf("\t\t\t\t\t**********************\n");
scanf("%d",&k);
switch(k)
{ 

case 1:Search(&Flist,&Rlist);break;
case 2:Reserve(&Flist,&Rlist);break;
case 3:Withdraw(&Flist,&Rlist);break;
case 4:Adjust(&Flist);break;
case 5:break;
default:printf("\t\t\t\t\t无此功能,请重新输入!\n");break;
}
}while(k!=5);
}
  • 三、总结

    这是本人的第一篇博客,没办法谁让我还只是个弱鸡……

    本人目前大二能力有限不过也已经在自学Python、也对一点点前端。

    希望自己能在一个程序yuan的路上越走越远,加油hxd们!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147952.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 学了Java才搞懂JMeter测试计划

    学了Java才搞懂JMeter测试计划

    2020年11月20日
  • AC餐饮指的是什么_餐饮tc和ac的区别

    AC餐饮指的是什么_餐饮tc和ac的区别奶牛们在吃饭方面十分挑剔。每头奶牛都有自己喜欢的食物和饮料,并且不会食用其他不喜欢的食物和饮料。农夫约翰为他的奶牛们做了美味的饭菜,但他忘了对照他们的喜好来检查菜单。虽然他可能无法令所有奶牛满意,但他想给尽可能多的奶牛提供一顿完整的用餐—-既有食物可吃,也有饮料可喝。农夫约翰一共烹制了 F 种食物,并提供了 D 种饮料。约翰共有 N 头奶牛,其中第 i 头奶牛有 Fi 种喜欢的食物以及 Di 种喜欢的饮料。约翰需要给每头奶牛分配一种食物和一种饮料,并使得有吃有喝的奶牛数量尽可能大。每种食物

  • h2数据库使用_数据库教程

    h2数据库使用_数据库教程H2数据库是一个开源的关系型数据库。H2是一个采用java语言编写的嵌入式数据库引擎,只是一个类库(即只有一个jar文件),可以直接嵌入到应用项目中,不受平台的限制应用场景:可以同应用程序打包在一起发布,可以非常方便地存储少量结构化数据可用于单元测试可以用作缓存,即当做内存数据库H2的产品优势:纯Java编写,不受平台的限制;只有一个jar文件,适合作为嵌入式数据库使用;h2提供了一个十分方便的web控制台用于操作和管理数据库内容;功能完整,支持标准SQL和JDBC。麻雀虽小五

    2022年10月10日
  • voliate和synchronized「建议收藏」

    voliate和synchronized「建议收藏」线程安全考虑三个方面:原子性,可见性,有序性为什么使用voliate关键字?我们先来看正常情况下线程的执行

  • xcode编辑xib文件无限卡与编译错误解决

    xcode编辑xib文件无限卡与编译错误解决

  • 跨平台数据整合系统_lvc异构系统

    跨平台数据整合系统_lvc异构系统1.muleESB整合系统四种模式A.简单服务模式属于几个webService之间的同步调用,请求响应处理模式。B.桥接模式C.校验器模式校验器模式通过定义一个校验过滤器过滤服务请求,并同步返回

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号