⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 air.c

📁 数据结构课程设计:(1)民航航班信息服务系统 (2)运动会分数统计 包括源代码、EXE文件、课程设计报告!比较全。
💻 C
📖 第 1 页 / 共 3 页
字号:
/*民航航班信息查询与客票发售服务系统*/

#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 + -