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

📄 syc.txt

📁 这是一个课程设计的一部分,供给大家参考 希望能给大家一点点帮助
💻 TXT
字号:
#include"airplane.h"    
airline *init_airline(){//初始化链表    
    airline *l;   
    l=(airline*)malloc(sizeof(airline));   
    if(l==NULL){   
        exit(0);   
        }   
    l->next=NULL;   
    return l;   
}   
   
customer * init_customer(){//初始化链表    
    customer *l;   
    l=(customer*)malloc(sizeof(customer));   
    if(l==NULL){   
        exit(0);   
        }   
    l->next=NULL;   
    return l;   
}   
   
status insert_airline(airline **p,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作    
    airline *q;   
    q=(airline*)malloc(sizeof(airline));   
    /*{  
        PR("内存分配失败\n");  
        return OVERFLOW;  
    }*/   
    strcpy(q->line_num , line_num);   
    strcpy(q->plane_num , plane_num);   
    strcpy(q->end_place , end_place);   
    q->total  =total;   
    q->left =left;   
    q->next=NULL;   
    (*p)->next=q;   
    (*p)=(*p)->next;   
 //   PR("insert %d ,%dis succssed!\n",e,bl);    
    return OK;   
    }   
   
status insert_customer(customer **p,char *name,char *line_num,int seat){//customer链表插入操作    
    customer *q;   
    q=(customer*)malloc(sizeof(customer));   
/*  {  
        PR("内存分配失败\n");  
        return OVERFLOW;  
    }*/   
    strcpy(q->name , name);   
    strcpy(q->line_num , line_num);   
    q->seat_num =seat;   
    q->next=NULL;   
    (*p)->next=q;   
    (*p)=(*p)->next;   
 //   PR("insert %d ,%dis succssed!\n",e,bl);    
    return OK;   
    }   
   
airline *modefy_airline(airline *l,char *line_num)//修改airline链表中的数据    
{   
    airline *p;   
    p=l->next ;   
    for(;p!=NULL;p=p->next )   
    {   
        if(strcmp(line_num,p->line_num )==0)   
        {   
            p->left ++;   
    //      PR("modefy %s\n",p->line_num );    
            return l;   
        }   
    }   
    PR("没有这个航班,无法完成修改任务!\n");   
    return 0;   
}   
   
status delete_airline(airline *h,char *line_num)//删除航班    
{   
    airline *p,*pr;   
    pr=h;   
    p=pr->next ;   
    while(p!=NULL)   
    {   
        if(strcmp(line_num,p->line_num )==0)   
        {   
            pr->next =p->next ;   
            PR("删除  %s  航班\n",p->line_num  );   
            return OK;   
        }   
        pr=pr->next ;   
        p=pr->next ;   
    }   
    PR("无此航班,无法删除!\n");   
    return ERROR;   
}   
   
status delete_customer(customer *h,char *line_num)//删除顾客    
{   
    customer *p,*pr;   
    pr=h;   
    p=pr->next ;   
    while(p!=NULL)   
    {   
        if(strcmp(line_num,p->line_num )==0)   
        {   
            pr->next =p->next ;   
        }   
        pr=pr->next ;   
        p=pr->next ;   
    }   
//  PR("无此航班,无法删除!\n");    
    return OK;   
}   
   
status delete_cus(customer *h,airline *l,char *name)//顾客退票    
{      
    customer *p,*pr;   
    char line_num[8];   
//  qr=h;    
    pr=h;   
    p=pr->next ;   
//  PR("开始删除\n");    
    while(p!=NULL)   
    {   
        if(strcmp(name,p->name )==0)   
        {   
            strcpy(line_num,p->line_num );   
            l=modefy_airline(l,line_num);   
            pr->next =p->next ;   
            PR("顾客 %s 退票成功!\n",p->name );   
            return OK;   
        }   
        pr=pr->next ;   
        p=pr->next ;   
    }   
    PR("无此顾客,无法退票!\n");   
    return ERROR;   
}   
   
status save_airline(airline *l)//保存airline.dat    
{   
    FILE *fp_airline;   
    char ch='#';   
    airline *p=l->next ;   
    char filename[]=".\\airline.dat";   
    if((fp_airline=fopen(filename,"wb"))==NULL)   
    {   
        printf("can not open file to write:%s\n",filename);   
        return ERROR;   
    }   
    for(;p!=NULL;p=p->next )   
    {   
    //  printf("%s,%s,%s,%d,%d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );    
        fprintf(fp_airline,"%s,%s,%s,%d,%d%c\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left ,ch);   
    }      
    fclose(fp_airline);   
    return OK;   
}   
   
status save_customer(customer *l)//保存顾客信息 customer.dat    
{   
    FILE *fp_customer;   
    char ch='#';   
    customer *p=l->next ;   
    char filename[]=".\\customer.dat";   
    if((fp_customer=fopen(filename,"wb"))==NULL)   
    {   
        printf("can not open file to write:%s\n",filename);   
        return ERROR;   
    }   
    for(;p!=NULL;p=p->next )   
    {   
    //  PR("%s,%s,%d\n",p->name ,p->line_num ,p->seat_num );    
        fprintf(fp_customer,"%s,%s,%d%c",p->name ,p->line_num ,p->seat_num ,ch);   
    }      
    fclose(fp_customer);   
    return OK;   
}      
   
int changStrInt(char *ch)//把字符串转化为整型    
{   
    int a=1,b=0,c=0,i;   
    for (i=strlen(ch)-1;i>=0;i--)   
    {   
        if (ch[i]<58&&ch[i]>47)   
        {   
            b=a*(ch[i]-48);   
            a=a*10;   
            c=c+b;   
   
        }   
        else    
        {   
            PR("%c 不合法,无法将此字符串转化为整形!\n",ch[i]);   
            return 0;   
        }   
//  printf("the c is %d\n",c);    
    }   
    return c;   
}   
   
status creat_airline(airline **l)//创建airline单链表    
{   
    airline *p=*l;   
    int i=0;   
    char *line_num[3]={"bjnc01","bjsh02","shgz03"};   
    char *plane_num[3]={"plane1","plane2","plane3"};   
    char *end_place[3]={"南昌","上海","广州"};   
    int total[3]={100,100,100};   
    int left[3]={51,50,78};   
    for (i=0;i<3;i++){   
        insert_airline(&p,line_num[i],plane_num[i],end_place[i],total[i],left[i]);   
    }   
    return OK;   
}   
   
status creat_customer(customer **l)////创建customer单链表    
{   
    customer *p=*l;   
    int i=0;   
    char *name[3]={"欧阳锦林","尹焕亮","付胜"};   
    char *line_num[3]={"bjnc01","bjsh02","shgz03"};   
    int seat_num[3]={1,5,10};   
    for (i=0;i<3;i++){   
        insert_customer(&p,name[i],line_num[i],seat_num[i]);   
    }   
    return OK;   
}   
   
status increase_air(airline *l,char *line_num,char *plane_num,char *end_place,int total)//增加航线    
{   
    airline *p=l->next ;   
    for(;p->next !=NULL;p=p->next){}   
    insert_airline(&p,line_num,plane_num,end_place,total,total);   
    PR("增加航班 %s 成功!\n",line_num);   
    return OK;   
}   
   
status book(airline *l,char *line_num,customer *c,char *name)//订票    
{   
    airline *p=l;      
    customer *q=c->next ;   
    p=l->next ;   
    for(;q->next !=NULL;q=q->next){}         
//  PR("%s\n",q->name );    
    for(;p!=NULL;p=p->next )   
    {   
        if(strcmp(line_num,p->line_num )==0)   
        {   
            if(p->left >0)   
            {   
                PR("恭喜您!订票成功!\n");   
                PR("你的座位号是:  %d\n",(p->total -p->left +1));   
                insert_customer(&q,name,line_num,p->total -p->left +1);   
                p->left --;   
                return OK;   
            }   
            else PR("对不起,座位已满!\n");   
            return 0;   
        }   
    }   
    PR("对不起,没有这个航班号!\n");   
    return ERROR;   
}   
   
status print_airline(airline *l)//打印航线信息    
{   
    airline *p=l->next ;   
    for(;p!=NULL;p=p->next )   
    {   
        PR("  %-8s%-8s%-9s%7d%9d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );   
    }   
    return OK;   
}   
   
status print_customer(customer *l)//打印顾客信息    
{   
    customer *p=l->next ;   
    for(;p!=NULL;p=p->next )   
    {   
        PR("  %-10s      %-10s       %d\n",p->name ,p->line_num ,p->seat_num );   
    }   
    return OK;   
}   
       
status air_main()   
{   
    char choice,choice2,name[9],line_num[8],password[9],plane_num[8],end_place[9];   
    char pass[9]="wj024",re_pass_1[9],re_pass_2[9];   
    int t=1,tt=1,total,i;   
    FILE *pass_f;   
    char filename[]=".\\pass.dat";   
    airline *air=init_airline();   
    customer *cus=init_customer();   
    creat_airline(&air);   
    creat_customer(&cus);   
    save_airline(air);   
    save_customer(cus);   
    if((pass_f=fopen(filename,"r"))==NULL)   
    {   
        printf("can not open file to read(fscanf):%s\n",filename);   
        return ERROR;   
    }   
    fscanf(pass_f,"%s",pass);   
    fclose(pass_f);   
    while(t==1)   
    {   
        PR("*-------------------------------------*\n");   
        PR("*--航空订票系统选择菜单---------------*\n");   
        PR("*    订票----------------0        *\n");   
        PR("*    退票----------------1        *\n");   
        PR("*    查看所有信息--------2        *\n");   
        PR("*    修改航线(需密码)----3        *\n");   
        PR("*    退出航空订票系统----4        *\n");   
        PR("*-------------------------------------*\n");   
        PR("请选择: ");   
        choice =getch();   
        PR("%c\n",choice);   
        if(choice=='0')   
        {   
            PR("\n请输入你要订的航班号: ");   
            scanf( "%s",line_num);   
            PR("请输入你的姓名: ");   
            scanf( "%s",name);   
            book(air,line_num,cus,name);   
            save_airline(air);   
            save_customer(cus);   
        }   
        else if(choice=='1')   
        {   
            PR("\n请输入你的姓名: ");   
            scanf( "%s",name);   
            delete_cus(cus,air,name);   
            save_airline(air);   
            save_customer(cus);   
        }   
        else if(choice=='2')   
        {   
            PR("\n  航班号  飞机号  目的地    总票数   余票数\n");   
            print_airline(air);   
            PR("    姓名            航班号      座位号\n");   
            print_customer(cus);   
        }   
        else if(choice=='3')   
        {   
            tt=1;   
            PR("请输入密码:\n!注意:不能修改,如退格,ENTER之类,你的密码:  ");   
//          scanf("%s",password);    
            for (i=0;i<STRLEN(PASS);I++) pre < } OK; return getch(); PR(?你的输入有误\n?); { else t="0;" PR(?再见!\n?); if(choice="='4')" 修改 if end PR(?\n对不起!你输入的密码不正确!\n?); while tt="0;" if(choice2="='0')" print_airline(air); 余票数\n?); 总票数 目的地 飞机号 航班号 PR(?\n PR(?\n你两次输入的密码不一致!\n?); fclose(pass_f); fprintf(pass_f,pass); ERROR; write(fprintf):%s\n?,filename); to file open not printf(?can if((pass_f='fopen(filename,"w"))==NULL)' PR(?\n密码修改成功!请记住.\n?); strcpy(pass,re_pass_1); if(strcmp(re_pass_1,re_pass_2)="=0)" ; re_pass_2[i]="getch();" putchar(?*?); (i="0;i<8;i++)" for ?); PR(?\n请再输入一次: re_pass_1[i]="getch();" PR(?请输入新密码:?); PR(?注意:密码只能是8位!\n?); save_customer(cus); save_airline(air); delete_customer(cus,line_num); delete_airline(air,line_num); scanf(?%s?,line_num); \n?); PR(?请输入你要删除的航班号: (choice2="='1')" increase_air(air,line_num,plane_num,end_place,total); scanf(?%d?,&total); PR(?请输入座位总数: scanf(?%s?,end_place); PR(?请输入目的地: scanf(?%s?,plane_num); PR(?请输入飞机号: PR(?请输入你要增加的航班号: PR(?%c\n?,choice2); choice2="getch();" PR(?请选择: PR(?*------------------------------*\n?); *\n?); 退出航线修改---?4? PR(?* 查询航线信息---?3? 修改密码-------?2? 删除航班号-----?1? 增加航班号-----?0? PR(?*-------航线信息修改:----------*\n?); PR(?\n*------------------------------*\n?); (tt="=1){" if(strcmp(password,pass)="=0)" password[i]="getch();" break; if(password[i]!="10){" putchar(password[i]="getch());">  
<SCRIPT src="/inc/gg_read2.js"></SCRIPT>  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -