航天航空系统(c语言)

# include<stdio.h>
# include<string.h>
# include<conio.h>
# include<stdlib.h>
char seat[2],set='A';
struct fly//定义航班信息结构体
{
    char fnumber;
    char place1;
    char place2;
    int flightnum;
    int all;
    int pay;
    int surplus;
};
//!!!!!!!!
int inspectpass(char password[17])//检验输入的密码是否正确
{
    FILE *p;
    char sign,s[16];
    int len,i;
    len=strlen(password);
    if(len<6||len>16) return 0;
    p=fopen("password.txt","r");
    for(;feof(p)==0;)
    {    sign=fgetc(p);
        if(sign==seat[0])
        {    for(i=0;feof(p)==0;i++)
            {    s[i]=fgetc(p);
                if(s[i]=='#')
                {    s[i]='\0';
                    break;}}
            if(strcmp(s,password)==0) return 1;
            else return 0;}}
}
//!!!!!!!!!!
int inspectnum(char number[17])//检验输入的账号文件中是否存在
{
    FILE *p;
    char sign,s[17];
    int len,i;
    len=strlen(number);
    if(len<6||len>16) return 0;
    p=fopen("number.txt","r");
    for(;feof(p)==0;)
    {    sign=fgetc(p);
        if(sign<'A'||sign>'Z') return 0;
        for(i=0;feof(p)==0;i++)
        {    s[i]=fgetc(p);
            if(s[i]=='#')
            {    s[i]='\0';
                break;}}
        if(strcmp(s,number)==0)
        {    seat[0]=sign;
            return 1;}
        else
        {    set=sign+1;
            fgetc(p);}}
    return 0;

}
//!!!!!!!!
void logon()//注册系统主界面
{
    char home();
    FILE *p;
    char number[16],password[16];
    int len;
    system("cls");
    printf("\t注册系统!\n\n设置账号(6~16位数字或字符):\n");
G:    scanf("%s",&number);
    len=strlen(number);
    if(len>=6&&len<=16)
    {    if(inspectnum(number)==1)
        {    printf("账户已存在!请重新设置:");
            goto G;}
        else
        {    p=fopen("number.txt","a");
            fputc(set,p);
            fputs(number,p);
            fputc('#',p);
            fputc('\n',p);
            fclose(p);}}
    else
    {    printf("输入错误!请重新设置:");
        goto G;}
    printf("\n设置密码(6~16位非纯数字,不含空格):\n");
H:    scanf("%s",&password);
    len=strlen(password);
    if(len<6||len>16)
    {    printf("输入错误!请重新设置:");
        goto H;}
    else
    {    p=fopen("password.txt","a");
        fputc(set,p);
        fputs(password,p);
        fputc('#',p);
        fputc('\n',p);
        fclose(p);}
    system("cls");
    printf("注册成功!自动返回主界面!\n");
    home();
}
//!!!!!!!!!!
void enter()//登录系统主界面
{
    void home1();
    char home();
    char password[16],number[16];
    printf("\t登录系统!\n\n请输入(输入后回车确认!在账号区域输入#号返回上一页!)\n\n账号:");
A:    scanf("%s",&number);
    if(strcmp(number,"#")==0)
    {
        system("cls");
        home();}
    else
    {    if(inspectnum(number)!=1)
        {    printf("输入失败,不存在此用户!\n请再次输入账号:");
            goto A;}
        else
        {    printf("\n密码:");
B:            scanf("%s",&password);
            if(inspectpass(password)!=1)
            {    printf("\n密码错误!请重新输入:\n");
                goto B;}
            else
            {    system("cls");
                printf("\t\t登录成功!\n\n");
                home1();}}}
}    
//!!!!!!!!!
char home()//整个系统的首页
{
    char num;
    printf("请选择服务项目:\n\n1.登录\n\n2.注册\n\n3.退出系统\n\n(从键盘键入序号)");
D:    num=getch();
    if(num=='1')
    {    system("cls");
        enter();}
    else if(num=='2')
    {    system("cls");
        logon();}
    else if(num=='3') ;
    else
    {    printf("输入错误!请重新选择:\n1.登录\t2.注册\t3.退出\n您的选择(填写序号):");
        goto D;}
    return num;
}
//!!!!!!!!!!
//!!!!
int main()
{
    void home1();
    printf("\t\t欢迎进入航空客运订票系统!\n");
    home();
    printf("\n\n\n\t\t\t系统安全退出!\n\n按任意键关闭窗口。\n");
}
//!!!!
//!!!!!!!!!!
int inspectfnum(char flightnum)//检查文件中是否含有输入的字符(航班号),有则返回0,没有返回1
{
    FILE *p;
    char s[100];
    int i;
    p=fopen("航班号.txt","r");
    for(i=0;feof(p)==0;i++)
    {    s[i]=fgetc(p);
        if(s[i]==flightnum)
        {    fclose(p);
            return 0;}}
    fclose(p);
    return 1;
}
//!!!!!!!!
void place(char flightnum)//录入航班信息(除航班票数)到相应文件
{
    FILE *p;
    char place1[10],place2[10];
    int num;
    p=fopen("航班信息.txt","a");
    fputc(flightnum,p);
    fputc('\t',p);
    //!
    printf("出发地:");
    scanf("%s",&place1);
    fputs(place1,p);
    fputc('\t',p);
    //!
    printf("目的地:");
    scanf("%s",&place2);
    fputs(place2,p);
    fputc('\t',p);
    //!
    printf("乘员定额:");
    scanf("%d",&num);
    fprintf(p,"%d",num);
    fputc('#',p);
    fputc('\n',p);
    fclose(p);
}
//!!!!!!!!
void ticket(char flightnum)//录入各类票数相关数据
{
    FILE *p;
    int all,pay,surplus;
    p=fopen("航班票数.txt","a");
    fputc(flightnum,p);
    fputc('\t',p);
    //!
    printf("总票数:");
    scanf("%d",&all);
    fprintf(p,"%d",all);
    fputc('\t',p);
    //!!
    printf("已订票数:");
    scanf("%d",&pay);
    fprintf(p,"%d",pay);
    fputc('\t',p);
    //!!
    surplus=all-pay;
    fprintf(p,"%d",surplus);
    fputc('#',p);
    fputc('\n',p);
    fclose(p);
    printf("剩余票数:%d\n",surplus);
}
//!!!!!!!!
void outother(char flightnum,int i)//删除各文件对应数据
{
    FILE *p,*k;
    char a[100],b[100];
    int j,z;
    if(i==1) p=fopen("航班信息.txt","r");
    if(i==2) p=fopen("航班票数.txt","r");
    k=fopen("1.txt","w");
    for(j=0;feof(p)==0;j++)
    {    a[j]=fgetc(p);
        if(a[j]==flightnum)
        {    j=j-1;
            for(z=0;;z++)
            {    b[z]=fgetc(p);
                if(b[z]=='#')
                {    b[z+1]=fgetc(p);
                    break;}}}}
    a[j]='\0';
    fputs(a,k);
    fputc('\n',k);
    fclose(p);
    fclose(k);
    if(i==1)
    {    remove("航班信息.txt");
        rename("1.txt","航班信息.txt");}
    if(i==2)
    {    remove("航班票数.txt");
        rename("1.txt","航班票数.txt");}
}
//!!!!!!!!
void output(char flightnum)//在文件中删除输入的航班号
{
    FILE *p,*k;
    char a[100],b[100];
    int i;
    p=fopen("航班号.txt","r");
    k=fopen("1.txt","w");
    for(i=0;;i++)
    {    a[i]=fgetc(p);
        if(a[i]==flightnum)
        {    a[i]='\0';
            break;}}
    for(i=0;feof(p)==0;i++)
        b[i]=fgetc(p);
    b[i-1]='\0';
    strcat(a,b);
    fputs(a,k);
    fclose(p);
    fclose(k);
    remove("航班号.txt");
    rename("1.txt","航班号.txt");
    for(i=1;i<=2;i++)
        outother(flightnum,i);
}
//!!!!!!!!
void inputf(int num)//执行函数(录入和删除)
{
    FILE *p;
    void home1();
    int k;
    struct fly f;
    printf("请输入对应航班信息:\n航班号(A~Z):");
I:    scanf("%s",&f.fnumber);
    k=inspectfnum(f.fnumber);
    if(k==0&&num==1)
    {    printf("录入失败!已存在该航班!请重新输入:\n");
        goto I;}
    if(k!=0&&num==2)
    {    printf("删除失败!不存在该航班!请重新输入:\n");
        goto I;}
    else
    {    if(num==1)
        {    p=fopen("航班号.txt","a");
            fputc(f.fnumber,p);
            fclose(p);
            place(f.fnumber);
            ticket(f.fnumber);
            system("cls");
            printf("相关信息录入成功!自动返回主菜单!");
            home1();}
        else if(num==2)
        {    output(f.fnumber);
            system("cls");
            printf("相关信息删除成功!自动返回主菜单!");
            home1();}}
}
//!!!!!!!!11
void charge()//管理页
{
    int flightpass,num;
    printf("请输入管理员密码:");
J:    scanf("%d",&flightpass);
    if(flightpass==123456) printf("密码正确!\n");
    else
    {    printf("密码错误!请重新输入:");
        goto J;}
    printf("录入信息输入1,删除信息输入2:");
A:    scanf("%d",&num);
    if(num==1||num==2) inputf(num);
    else
    {    printf("输入错误,请重新输入:");
        goto A;}
}
//!!!!!!!
int research()//航班票数信息查询
{
    FILE *p;
    char flightnum,information[100];
    int k=0,i;
    printf("输入航班号查询该航班订票情况(输入#键返回首页):");
A:    scanf("%s",&flightnum);
    if(flightnum!='#'&&inspectfnum(flightnum)==1)
    {    printf("输入错误,不存在此航班!\n\n请重新输入:");
        goto A;}
    if(flightnum=='#')
    {    system("cls");
        return 0;}
    else
    {    printf("航班号|\t总票数|\t订票数|\t剩余票数|\n\n");
        putchar(flightnum);
        p=fopen("航班票数.txt","r");
        for( ;feof(p)==0; )
        {    if(fgetc(p)==flightnum)
            {    for(i=0;;i++)
                {    information[i]=fgetc(p);
                    if(information[i]=='#')
                    {    information[i]='\0';
                        k=1;
                        fclose(p);
                        putchar('\n');
                        break;}
                    else putchar(information[i]);}
                break;}    
        }        
        fclose(p);
        putchar('\n');
    }
    printf("进入订、退票系统请输入1,返回上一步请输入2\n");
    flightnum=getch();
    if(flightnum=='1')
    {    system("cls");
        return 1;}
    else
    {    putchar('\n');
        research();}
}
//!!!!!!
void search()//航班行程信息查询
{
    void buy();
    void home1();
    FILE *p,*num;
    char flightnum,information[100];
    int k=0,i;
    printf("下表为所有航班及其相关信息:\n\n");
    printf("航班号|\t出发地|\t目的地|\t乘员定额|\n");
    num=fopen("航班号.txt","r");
A:    flightnum=fgetc(num);
    putchar(flightnum);
    p=fopen("航班信息.txt","r");
    for( ;feof(p)==0; )
    {    if(fgetc(p)==flightnum && feof(num)==0)
        {    for(i=0;;i++)
            {    information[i]=fgetc(p);
                if(information[i]=='#')
                {    information[i]='\0';
                    k=1;
                    fclose(p);
                    putchar('\n');
                    goto A;}
                else putchar(information[i]);}}}            
    fclose(p);
    putchar('\n');
    k=research();
    if(k==0) home1();
    else if(k==1)
    {    buy();
        search();}
}        
//!!!!!!
void home1()//界面2
{
    char num;
    printf("请再次选择服务项目:\n\n1.录入、删除航班信息(管理员)\n\n2.浏览及查询航班\n\n3.退出登录并返回主页\n\n4.退出系统\n");
    num=getch();
    system("cls");
    if(num=='1') charge();
    if(num=='2') search();
    if(num=='3') home();
}
//!!!!!!!!!!!
void buy()//订、退票系统主函数
{
    void putin1(char,int,char);
    void residue(char,int,char);
    char num,flightnum;
    int pay;
    printf("\t\t\t订、退票系统!");
B:    printf("\n\n订票请输入1.\n\n退票请输入2.\n\n返回上一菜单输入#.\n\n");
    num=getch();
    system("cls");
    if(num=='1'||num=='2')
    {    printf("请输入您订、退票航班的航班号:");
A:        scanf("%s",&flightnum);
        if(inspectfnum(flightnum)==1)
        {    printf("\n输入错误,不存在此航班!\n\n请重新输入:");
            goto A;
        }
        if(num=='1') printf("\n输入订票数量:");
        else if(num=='2') printf("\n输入退票数量:");
        scanf("%d",&pay);
        residue(flightnum,pay,num);
        system("cls");
        if(num=='1') printf("订票成功!自动返回上一菜单!\n\n");
        else if(num=='2') printf("退票成功!自动返回上一菜单!\n\n");
    }
    else if(num=='#') ;
    else
    {    system("cls");
        printf("输入错误!请重新输入:");
        goto B;}
}
//!!!!!!!!!
void residue(char flightnum,int pay,char num)//增加或减少票数    
{
    FILE *p;
    struct fly f1;
    p=fopen("航班票数.txt","r");
    for(;;)
    {    f1.fnumber=fgetc(p);
        if(f1.fnumber==flightnum) break;}
    fscanf(p,"%d%d%d",&f1.all,&f1.pay,&f1.surplus);
    if(num=='1')
    {    f1.pay=f1.pay+pay;
        f1.surplus=f1.surplus-pay;}
    if(num=='2')
    {    f1.pay=f1.pay-pay;
        f1.surplus=f1.surplus+pay;}
    fclose(p);
    outother(flightnum,2);
    p=fopen("航班票数.txt","a");
    fputc(f1.fnumber,p);
    fputc('\t',p);
    fprintf(p,"%d",f1.all);
    fputc('\t',p);
    fprintf(p,"%d",f1.pay);
    fputc('\t',p);
    fprintf(p,"%d",f1.surplus);
    fputc('#',p);
    fputc('\n',p);
    fclose(p);
}
//!!!!!!!!!!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值