飞机订票管理系统的编写

这是一个使用C语言编写的飞机订票管理系统,包括增加航班信息、显示航班信息、查找航班、订票、退票等功能。系统通过结构体数组存储航班数据,并实现了文件操作进行数据的读取和保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>//包含access函数的头文件
#include <windows.h>
#include <conio.h>
#include <io.h>
#define N 9999//定义最多的航班数
#define PRINT “%d\t%s\t%s\t星期 %s\t%d\t%d\t%f\n”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].pay,s[i].discount //宏定义输出格式
struct air //定义结构体数组
{
int num;//定义航班号
char start[20];//起点站
char over[20];//终点站
char time[10];//飞行时间
int count;//机票数量
int pay;//机票单价
float discount;//机票折扣
}s[N];
int i,a,m=0;//定义全局变量
char ii[10];

void add();//增加航班信息函数
void print();//显示航班信息
void search();//查找航班信息
void dingpiao();//订票业务
void tuipiao();//退票
void read();//读取文件
void save();//保存文件
void output();//输出格式
void paixu();//航班排序
void chushihua();//系统初始化
void build();//建立数据文件
void paixu1();//按航班号从小到大排序
void paixu2();// 从大到小排序
int head();//进入订票系统

int main()
{
int j;
system(“color b5”);
chushihua();
system(“cls”);
head();
system(“cls”);
do{
printf(“1.增加航班信息\n”
“\t2.浏览航班信息\n”
“\t\t3.查找航班信息(按航班号)\t\t\n”
“\t\t\t4.航班排序(按航班号)\n”
“\t\t\t\t5.订票业务\n”
“\t\t\t\t\t6.退票业务\n”
“\t\t\t\t\t\t0.退出\n”);
printf("=");
printf(“请在0-6中选择以回车键结束:”);
scanf("%d",&j);
switch(j)
{
case 1:add();system(“cls”);//调用增加航班函数
break;
case 2:print();system(“cls”);//调用显示模块
break;
case 3:search();system(“cls”);
break;
case 4:paixu();system(“cls”);
break;
case 5:dingpiao();system(“cls”);
break;
case 6:tuipiao();system(“cls”);
break;
case 0: //退出系统
save();system(“cls”);
printf("\n\n\n\t\t\t\t\n\n\t谢谢使用,再见!");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
break;
}
}while(j!=0);//判断是否调用其他函数
}
int head()
{
printf("
\n");
printf("* \n");
printf("
欢迎使用机票订票管理系统 \n");
printf("
*\n");
printf("
==========\n");
printf(“请按回车进入界面”);
getchar();
printf(“正在进入系统选项”);
for(a=0;a<3;a++)
{
printf(".");
Sleep(600);
}
printf("\n");
return 0;
}
void read()
{
FILE *fp;
if((fp=fopen(“hangban.dat”,“r”))==NULL)
{
printf(“创建文件失败!”);
getchar();
return ;
}
i=0;
while(!feof(fp))
{
fread(&s[i],sizeof(struct air),1,fp);//逐块读取数据
i++;
m++;//计算存在航班数
}
m–;
fclose(fp);
printf(“请稍等,正在初始化”);
for(a=0;a<3;a++)
{
printf(".");
Sleep(600);
}
printf("\n");
}
void save()
{
FILE *fp;
if((fp=fopen(“hangban.dat”,“w+”))NULL)
{
printf(“创立文件夹失败!”);
getchar();
return;
}
for(i=0;i<m;i++)//逐块保存数据
fwrite(&s[i],sizeof(struct air),1,fp);
fclose(fp);
printf(“正在保存数据并退出”);
for(a=0;a<3;a++)
{
printf(".");
Sleep(600);
}
printf("\n");
printf("\n");
}
void search()
{
int n;
do
{
printf("\n 请输入航班号: “);
scanf(”%d",&n); //输入查询的航班号
printf(“正在查询”);
for(a=0;a<5;a++)
{
printf(".");
Sleep(400);
}
printf("\n");
for(i=0;i<m;i++)
{
if(s[i].num
n)//按航班号判定输出条件
{
printf("\n 您所查找的航班信息为: \n");
printf(“航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n”);
printf(PRINT);//显示信息
printf("\n查询完毕,按回车键继续");
getchar();
getchar();
return;
}

	 }
	 printf("\n对不起,没有您需要的信息!\n");
	 printf("是否重新查找?请输入y或n按回车键结束 ");
	 scanf("%s",&ii);
}while(!strcmp(ii,"y"));

}
void dingpiao()
{
int n,x;
char a[10]=“y”;
do
{
search();//调用查询模块
if(!strcmp(ii,“n”))
{
printf(“对不起!没有找到您所需的航班,所以不能订票。\n”);
printf("\n请按回车键返回上层 “);
getchar();
getchar();
strcpy(ii,“n”);
break;
}
do
{
printf(“请输入您要订的机票数(以回车键结束):”);
scanf(”%d",&n);//输入订票数
printf(“请稍后,正在订票”);
for(x=0;x<3;x++)
{
printf(".");
Sleep(600);
}
printf("\n");
if(n<=0)//判断机票数是否出错
{
printf(“输入错误!至少需订一张机票。\n”);

		   }
		   else if(s[i].count==0)//判断机票是否售完
		   {
		   	printf("对不起,您所选择的航班的机票已售完!\n");
		   	break;

	  		} 
	  		else if(s[i].count!=0&&s[i].count>=n)//判断及机票数是否大于订票数
			{   
						s[i].count=s[i].count-n;
						printf("订票成功!");
						break;
			}
			else if(s[i].count<n)//判断机票数小于订票数
			{	
				printf("对不起,您选择的航班只剩%d张机票\n",s[i].count);
				printf("是否需要重新输入机票数?\n请输入y或者n以回车键结束: ");
				scanf("%s",&a);
				printf("请稍后,正在订票");
				for(x=0;x<3;x++)
				{
					printf(".");
					Sleep(600);
				 }
				 printf("/n"); 
				
			}
	}while(!strcmp(a,"y"));
	printf("是否需要订其他航班的机票?\n请输入y或n以回车键结束:");
	scanf("%s",&a);
}while(!strcmp(a,"y"));

}
void build()
{
FILE *fp;
if((fp=fopen(“hangban.dat”,“wb”))==NULL)
{
printf(“创建文件失败!”);
getchar();
return;
}
printf(“请依次输入航班信息(以回车键结束):\n”);
printf("------------------------------------------\n");
for(i=0;i<N;i++)
{
printf(“请输入航班号: “);
scanf(”%d”,&s[i].num);
printf(“请输入起始站: “);
scanf(”%s”,&s[i].start);
printf(“请输入终点站: “);
scanf(”%s”,&s[i].over);
printf(“请输入时间(星期几): “);
scanf(”%s”,&s[i].time);
printf(“请输入机票数: “);
scanf(”%d”,&s[i].count);
printf(“请输入机票单价: “);
scanf(”%d”,&s[i].pay);
printf(“请输入机票折扣: “);
scanf(”%f”,&s[i].discount);
fwrite(&s[i],sizeof(struct air),1,fp);
m++;
printf(“添加完毕,是否继续添加?请键入y或者n以回车键结束: “);
scanf(”%s”,&ii);
if(strcmp(ii,“y”)!=0)
{
fclose(fp);
return;
}

   }

}
void paixu()
{
int n;
printf("\n*******************************************");
printf(“1.按航班号从小到大排序\n”);
printf(“2.按航班号从大到小排序\n”);
printf("*******************************************\n");
printf(“请在1-2中选择以回车键结束: “);
scanf(”%d”,&n);//输入排序方式
switch(n)
{
case 1:paixu1();
break;
case 2:paixu2();
break;

}
printf("排序后的航班信息为: \n");
output();//显示排序后航班信息
printf("\n 请按回车键返回上层菜单 ");
getchar();
getchar();
/*for(a=0;a<5;a++)
 {
  printf(“.”);
  Sleep(400); 

 }
  printf("\n");*/ 

}
void paixu1()
{
int k,j;
struct air t;
for(i=0;i<m;i++)
{
k=i;
for(j=i+1;j<m;j++)
if(s[k].num>s[j].num)
k=j;
if(i!=k)
{
t=s[k];
s[k]=s[i];
s[i]=t;
}
}
printf(“正在排序,请稍后”);
for(a=0;a<5;a++)
{
printf(".");
Sleep(400);
}
printf("\n");
}
void paixu2()
{
int k,j;
struct air t;
for(i=0;i<m;i++)
{
k=i;
for(j=i+1;j<m;j++)
if(s[k].num<s[j].num )
k=j;
if(i!=k)
{
t=s[k];
s[k]=s[i];
s[i]=t;
}
}
printf(“正在排序,请稍后”);
for(a=0;a<5;a++)
{
printf(".");
Sleep(400);
}
printf("\n");
}
void output()
{
printf(“航班号\t起始站\t终点站\t时间\t机票数\t机票单价 机票折扣\n”);
for(i=0;i<m;i++)
printf(PRINT);//打印出信息
}
void tuipiao()//定义退票函数
{
int n,x;
char a[10];
do
{
search();
if(!strcmp(ii,“n”))
{
printf(“对不起!没有找到您所需的航班,所以不能退票。\n”);
printf("\n请按回车键返回上层菜单 “);
getchar();
getchar();
strcpy(ii,“n”);
break;
}
printf(“请输入您要退的机票数目: “);
scanf(”%d”,&n);
printf(“正在退票请稍等\n”);
for(x=0;x<3;x++)
{
printf(”.");
Sleep(600);

	}
	printf("/n");
	if(n<=0)//判断机票数是否有效
	printf("对不起,至少退一张票.\n");
	else {
	s[i].count=s[i].count+n;
	printf("退票成功\n");			
		}
	printf("是否继续退票,请输入y或n以回车键结束: ");
	scanf("%s",&a);
	
}while(!strcmp(a,"y"));//判断跳出循环 

}
void print()
{
printf(“正在加载,请稍后”);
for(a=0;a<5;a++)
{
printf(".");
Sleep(400);
}
printf("\n");
system(“cls”);
printf("\n 目前我们有以下航班:\n\n");
output();//调用输出格式函数
printf("\n 请按回车键返回上层菜单");
getchar();
getchar();
}
void add()
{
do{
printf(“请依次输入您要增加的航班信息(以回车键结束): \n”);
printf("-----------------------------------------\n");
printf(“请输入航班号: “);
scanf(”%d”,&s[m].num);
printf(“请输入起始站: “);
scanf(”%s”,&s[m].start);
printf(“请输入终点站: “);
scanf(”%s”,&s[m].over);
printf(“请输入时间(星期几): “);
scanf(”%s”,&s[m].time);
printf(“请输入机票数: “);
scanf(”%d”,&s[m].count);
printf(“请输入机票单价: “);
scanf(”%d”,&s[m].pay);
printf(“请输入机票折扣: “);
scanf(”%f”,&s[m].discount);
m++;
printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);
scanf("%s",ii);

}while(strcmp(ii,"y"));
printf("正在保存,请稍等");
for(a=0;a<5;a++)
 {
 	printf(".");
 	Sleep(600); 
 }
 printf("\n");	

}
void chushihua()
{
if(access(“hangban.dat”,0))
{
build();
}
else
read();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值