飞机订票系统(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们!

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++实现矩阵类(附代码和功能)

    C++实现矩阵类(附代码和功能)本文由两部分组成,第一部分介绍一个在win10系统上运行的exe程序,第二部分介绍通过C++实现矩阵运算的方法(功能会更强大,但不如exe文件操作方便)。用户界面如下,能够实现矩阵的加、减、乘、除运算,以及矩阵的转置,求逆,求行列式的值等。读者可以在下载该程序,直接在自己的电脑上运行。下载地址:https://download.csdn.net/do…

    2022年6月28日
    25
  • cdn加速以及前后分离SpringBoot+Vue 配置https及SSL证书「建议收藏」

    cdn加速以及前后分离SpringBoot+Vue 配置https及SSL证书「建议收藏」配置方法同上篇文章一样CDN加速配置,阿里云cdn内配置好以后即可剩下把前端服务器nginx内的证书文件上传以及配置写好即可。后端服务器也同上配置证书下载上传服务器配置好nginx即可。如果都配置好以后,不可以访问时,注意查看前端请求接口是否为https方式。如果为http时,检查是否更新服务器成功,如果成功后还不可以正常访问时,前端修改代码如下:vue.config.js内添加下行代码。index.html下添加代码:https:true完毕!…

    2022年8月19日
    4
  • pycharm将python程序打包_python 程序打包

    pycharm将python程序打包_python 程序打包关于使用Pycharm对python文件进行打包首先建立python项目的时候要按照标准来建设我使用的python配置的解释器,没有使用python的虚拟环境,因为虚拟环境建设出来的项目不是我想要的项目结构,包结构比较多,看着不是很舒服4.配置完成后点击创建创建完成后可以自己创建合适包结构创建完合适的包结构后,就可以编写python代码了,但要python代码运行开,需要配置运行环境9.环境配置调试好就可以运行调试python代码..

    2022年8月26日
    3
  • 大数据学习内容有哪些?大数据学习路线图

    大数据学习内容有哪些?大数据学习路线图很多人想学习大数据,但是都不清楚大数据学习应该怎么下手。大数据开发工程师简单整理了一下大数据学习路线图,希望对于学习大数据的朋友,有一定的帮助。 总的来说,如果是从零基础开始学习,总共分为八个阶段  第一阶段:HTML+css第二阶段:JAVASE学习第三阶段:javaweb第四阶段:企业级开发框架(JAVAEE)学完了java部门,就要开始大数据的技术学习…

    2022年5月24日
    40
  • 渗透测试常用工具汇总_常用渗透测试工具

    渗透测试常用工具汇总_常用渗透测试工具——D&X安全实验室工欲善其事,必先利其器。回到过去的旧时代,渗透测试是一件非常困难的事,并且需要大量的手动操作。然而如今,渗透测试工具是”安全军火库”中最常使用的装备,一整套的自动化测试工具似乎不仅改造了渗透测试人员,甚至还可以增强计算机的性能,进行比以往更全面的测试。对渗透测试人员来说不用任何自动化工具对网站或者应用程序进行渗透测试是一件十分困难的事。因此选择一个正确的工具则变得尤为重要,正确的选择甚至占去了渗透测试成功的半壁江山。本篇文章就来和大家介绍一…

    2022年8月12日
    2
  • 求和符号的定义和性质是什么_数学分级用虚线还是逗号

    求和符号的定义和性质是什么_数学分级用虚线还是逗号1.∑\sum∑的定义在数学中经常遇到多项式求和的问题,为了表述的方便,引入了求和符号来简化表述的方法,并且这样的的表述方法非常普遍,因此了解求和符号∑\sum∑及其运算性质就非常重要.看下面的和式:a1+a2+…+ana_1+a_2+…+a_na1​+a2​+…+an​表示n个数的和,为了简化表述,在1820年JosephFourier引入了定界的∑\sum∑表示法,并且得到了应用普及.上述和式表达如下:a1+a2+…+an=∑k=1naka_1+a_2

    2022年10月12日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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