📄 air.c
字号:
/*民航航班信息查询与客票发售服务系统*/
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define Len sizeof(struct guest)
#define N 100 /*最多100个航班*/
#define Print1 " %-7s%-5s %-5d %-5d %-5d%-4d.%2d.%-5d %2d:%-6d%-7d%-2d\n",s[i].linenum,s[i].num,s[i].seatA,s[i].seatB,s[i].seatC,s[i].year,s[i].month,s[i].day,s[i].hour,s[i].minute,s[i].start,s[i].end
#define Print2 " %-7s%-5s %-9d %-4d %-8d%4d %-9d %3d\n",s[i].linenum,s[i].num,s[i].seatA-s[i].remainA,s[i].remainA,s[i].seatB-s[i].remainB,s[i].remainB,s[i].seatC-s[i].remainC,s[i].remainC
#define Print3 "%s %s %s %d.%d.%d %d:%d %s %d\n",p->name,p->linenum,p->num,p->year,p->month,p->day,p->hour,p->minute,p->seatlevel,p->ticketnum
struct air/*航班信息*/
{
char linenum[20]; /*航线号*/
char num[20]; /*航班号*/
int seatA; /*A,B,C等仓总座位数*/
int remainA; /*A,B,C等仓剩余座位数*/
int seatB;
int remainB;
int seatC;
int remainC;
int year,month,day;/*起飞时间*/
int hour,minute;
int start; /*起点与终点*/
int end;
}s[N];
struct guest/*客户信息*/
{
char name[20];
char linenum[20];
char num[20];
int year,month,day;
int hour,minute;
int ticketnum;
char seatlevel[10];
struct guest *next;
};
typedef struct QNode
{
char name[20];
char linenum[20];
char num[20];
int year,month,day;
int hour,minute;
int ticketnum; /*票数*/
char seatlevel[10]; /*座位等级*/
struct QNode *next;
}QNode;
typedef struct
{
QNode* front; /*队头*/
QNode* rear; /*队尾*/
}LinkQueue;
int m;
int Ye,Mo,Da; /*年,月,日*/
/*管理员输入航班信息*/
void input()
{
FILE *fp,*fp1;
char key[]="hh"; /*管理员密码*/
char input[20];
printf("输入密码:\n");
scanf("%s",input);
if(strcmp(input,key)==0) {
printf("请依次输入航班信息\n");
if((fp=fopen("flight.txt","w"))==NULL) {
printf("创建文件失败!\n\n");
getch();
}
if((fp1=fopen("f1.txt","w+"))==NULL) {
printf("创建文件失败!\n\n");
getch();
}
while(m<N) { /*输入航班信息*/
printf("是否输入航班信息(yes/no)\n");
scanf("%s",input);
if(strcmp(input,"yes")==0) {
printf("请输入航线号:");
scanf("%s",&s[m].linenum);
fprintf(fp,"%s",s[m].linenum);
fputs("\n",fp);
printf("请输入航班号:");
scanf("%s",&s[m].num);
fprintf(fp,"%s",s[m].num);
fputs("\n",fp);
printf("请输入各等舱的座位数:\n");
printf("A等舱的座位数:");
scanf("%d",&s[m].seatA);
fprintf(fp,"%d",s[m].seatA);
fputs("\n",fp);
s[m].remainA=s[m].seatA;
fprintf(fp,"%d",s[m].remainA);
fputs("\n",fp);
printf("B等舱的座位数:");
scanf("%d",&s[m].seatB);
fprintf(fp,"%d",s[m].seatB);
fputs("\n",fp);
s[m].remainB=s[m].seatB;
fprintf(fp,"%d",s[m].remainB);
fputs("\n",fp);
printf("C等舱的座位数:");
scanf("%d",&s[m].seatC);
fprintf(fp,"%d",s[m].seatC);
fputs("\n",fp);
s[m].remainC=s[m].seatC;
fprintf(fp,"%d",s[m].remainC);
fputs("\n",fp);
printf("请输入航班时间:\n");
printf("航班时间 年份:");
scanf("%d",&s[m].year);
s[m].year=checkyear(s[m].year);
fprintf(fp,"%d",s[m].year);
fputs("\n",fp);
printf("航班时间 月份:");
scanf("%d",&s[m].month);
s[m].month=checkmonth(s[m].month);
fprintf(fp,"%d",s[m].month);
fputs("\n",fp);
printf("航班时间 日期:");
scanf("%d",&s[m].day);
s[m].day=checkdata(s[m].day,s[m].month,s[m].year);
fprintf(fp,"%d",s[m].day);
fputs("\n",fp);
printf("请输入起飞时间:\n");
printf("起飞时间 hour(以24小时制)");
scanf("%d",&s[m].hour);
s[m].hour=checkhour(s[m].hour);
fprintf(fp,"%d",s[m].hour);
fputs("\n",fp);
printf("起飞时间 minutes");
scanf("%d",&s[m].minute);
s[m].minute=checkminute(s[m].minute);
fprintf(fp,"%d",s[m].minute);
fputs("\n",fp);
printf("请输入起飞起点:(1.北京2.上海3.广州4.长沙5.武汉)");
scanf("%d",&s[m].start);
s[m].start=checkstart(s[m].start);
fprintf(fp,"%d",s[m].start);
fputs("\n",fp);
printf("请输入终点:(1.北京2.上海3.广州4.长沙5.武汉)");
scanf("%d",&s[m].end);
s[m].end=checkend(s[m].end,s[m].start);
fprintf(fp,"%d",s[m].end);
fputs("\n",fp);
m++;
printf("第%d个航班信息已经输入完成\n",m);
}
else break;
}
}
else
printf("密码有误!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);
fclose(fp1);
}
/*检查年份是否正确*/
int checkyear(int year)
{
int input;
while(1) {
if((0<year)&&(year<10000)) break; /*输入在0和10000之间认为符合*/
else {
printf("输入有误,请重新输入:\n");
scanf("%d",&input);
year=input;
}
}
input=year;
return(input);
}
/*检查月份是否正确*/
int checkmonth(int month)
{
int input;
while(1) {
if((0<month)&&(month<13)) break; /*输入在0和13之间认为符合*/
else {
printf("输入有误,请重新输入:\n");
scanf("%d",&input);
month=input;
}
}
input=month;
return(input);
}
/*检查日期是否正确*/
int checkdata(int day,int month,int year)
{
int input,leap;
if(year%400==0)
leap=1;
else {
if(year%100!=0&&year%4==0) /*检查是否闰年*/
leap=1;
else
leap=0;
}
switch(month) {
case 12: /*这些月份有31天*/
case 10:
case 8:
case 7:
case 5:
case 3:
case 1: {
while(1) {
if(day>0&&day<32) break;
else {
printf("输入有误,请重新输入:");
scanf("%d",&input);
day=input;
}
}
break;
}
case 11: /*这些月份有30天*/
case 9:
case 6:
case 4: {
while(1) {
if(day>0&&day<31) break;
else {
printf("输入有误,请重新输入:");
scanf("%d",&input);
day=input;
}
}
break;
}
case 2:{
while(1) {
if(leap==1)
{if(day>0&&day<30) break;
else {
printf("输入有误,请重新输入:");
scanf("%d",&input);
day=input;
}
}
else {
if(day>0&&day<29) break;
else {
printf("输入有误,请重新输入:");
scanf("%d",&input);
day=input;
}
}
} break;
}
}
input=day;
return(input);
}
/*检查小时数是否正确*/
int checkhour(int hour)
{
int input;
while(1) {
if((0<=hour)&&(hour<=24)) break; /*输入在0和24之间认为正确*/
else {
printf("输入有误,请重新输入:\n");
scanf("%d",&input);
hour=input;
}
}
input=hour;
return(input);
}
/*检查分钟数是否正确*/
int checkminute(int minute)
{
int input;
while(1) {
if((0<=minute)&&(minute<=60)) break; /*输入在0和60之间认为正确*/
else {
printf("输入有误,请重新输入:\n");
scanf("%d",&input);
minute=input;
}
}
input=minute;
return(input);
}
/*检查起飞地点是否正确*/
int checkstart(int start)
{
int input;
while(1) {
if((0<start)&&(start<6)) break;
else {
printf("输入有误,请重新输入:\n");
scanf("%d",&input);
start=input;
}
}
input=start;
return(input);
}
/*检查终点是否正确*/
int checkend(int end,int start)
{
int input;
while(1) {
if((0<end)&&(end<6)&&(end!=start)) break;
else {
printf("输入有误,请重新输入:\n");
scanf("%d",&input);
end=input;
}
}
input=end;
return(input);
}
/*检查日期*/
int checkday(int year,int month,int day,int Ye,int Mo,int Da)
{
int leap;
if((year!=Ye)&&((Ye+1)==year)) {
day+=31;
return(day-Da);
}
else {
if(month==Mo)
return(day-Da);
else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -