zoukankan      html  css  js  c++  java
  • 飞机订票系统

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <conio.h>
      5 typedef struct flightnode{
      6     char flight_num[10]; //航班号
      7     char start_time[10]; //起飞时间
      8     char end_time[10];   //抵达时间
      9     char start_place[20];//起飞城市
     10     char end_place[20];  //抵达城市
     11     int left;            //空座数
     12     float price;         //票价
     13     int isFull;          //航班是否满仓
     14     struct flightnode *next;//指向下一个结点
     15 }flightnode;//航班结点
     16 typedef struct passengernode{
     17     char name[20];      //姓名
     18     char ID_num[20];    //证件号
     19     char flight_num[10];//航班号
     20     int order_num;      //订单号
     21     int ticket_num;     //订票数量
     22     struct passengernode *next;//指向下一个结点
     23 }passengernode;//客户结点
     24 typedef struct passengerList
     25 {
     26     passengernode *head;
     27     passengernode *rear;
     28 }passengerList;
     29 void init_flight(flightnode *&h)//目的是要建立一个以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
     30 {
     31     h=(flightnode *)malloc(sizeof(flightnode));//申请头结点的空间
     32     if(h==NULL) exit(0);
     33     h->next=NULL;//将头结点h的指针域置为空
     34 }
     35 void init_passengerList(passengerList *&pList)
     36 {
     37     pList=(passengerList *)malloc(sizeof(passengerList));
     38     pList->head=(passengernode *)malloc(sizeof(passengernode));//创建头结点
     39     pList->rear=pList->head;
     40     pList->rear->order_num=0;//订单号从0开始计数
     41     pList->head->next=NULL;
     42 }
     43 void save_passenger(passengerList *PList)
     44 {
     45     FILE* fp = fopen("passenger.dat","wb");
     46     if(fp==NULL)
     47         return;
     48     passengernode *temp=PList->head->next;
     49     while(temp!=NULL)
     50     {
     51         fwrite(temp,sizeof(passengernode),1,fp);
     52         temp = temp->next;
     53     };
     54     fclose(fp);
     55 }
     56 void load_passenger(passengerList *PList)
     57 {
     58     FILE* fp = fopen("passenger.dat","rb");
     59     if(fp==NULL)
     60         return;
     61     passengernode *q;
     62     int n;
     63     while(!feof(fp))
     64     {
     65         q=(passengernode *)malloc(sizeof(passengernode));
     66         n =fread(q,sizeof(passengernode),1,fp);
     67         if(n!=1)
     68             break;
     69         PList->rear->next=q;
     70         PList->rear=q;
     71     }
     72     PList->rear->next=NULL;
     73     fclose(fp);
     74 }
     75 void save_flight(flightnode *h)
     76 {
     77     FILE* fp = fopen("flightList.dat","wb");
     78     if(fp==NULL)
     79         return;
     80     flightnode *temp=h->next;
     81     while(temp!=NULL)
     82     {
     83         fwrite(temp,sizeof(flightnode),1,fp);
     84         temp = temp->next;
     85     };
     86     fclose(fp);
     87 }
     88 void load_flight(flightnode *&h)
     89 {
     90     flightnode *pt=h;
     91     FILE* fp = fopen("flightList.dat","rb");
     92     if(fp==NULL)
     93         return;
     94     flightnode *q;
     95     int n;
     96     while(!feof(fp))
     97     {
     98         q=(flightnode *)malloc(sizeof(flightnode));
     99         n=fread(q,sizeof(flightnode),1,fp);
    100         if(n!=1)
    101             break;
    102         pt->next=q;
    103         pt=q;
    104     }
    105     pt->next=NULL;
    106     fclose(fp);
    107 }
    108 
    109 int find_same_flight(flightnode *h,char *flight_num)
    110 {
    111     flightnode *t=h->next,*p=h->next;
    112     int mark=0;
    113     printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s
    ","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
    114     while(t!=NULL && strcmp(t->flight_num,flight_num)!=0) t=t->next;
    115     while(p!=NULL){
    116         if((strcmp(t->start_place,p->start_place)==0)&&(strcmp(t->end_place,p->end_place)== 0)&&(strcmp(t->flight_num,p->flight_num)!=0))
    117         {
    118             printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d
    ",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->isFull,p->left);
    119             mark=1;
    120         }
    121         p=p->next;
    122     }
    123     if(mark==0)
    124     {
    125         printf("		抱歉,没有可选的航班!
    ");
    126         return 0;
    127     }
    128     return 1;
    129 }
    130 
    131 void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)
    132 //在录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中
    133 {
    134     flightnode *q;//定义q为新增加的航班结点的指针的形参
    135     flightnode *p=h;
    136     q=(flightnode *)malloc(sizeof(flightnode));//为q结点申请空间
    137     strcpy(q->flight_num,flight_num);
    138     strcpy(q->start_place,start_place);
    139     strcpy(q->end_place,end_place);
    140     strcpy(q->start_time,start_time);
    141     strcpy(q->end_time,end_time);
    142     q->left=left;
    143     q->price=price;
    144     q->isFull=isFull;
    145     //以上是用strcpy函数将新增加航班的各种信息复制到q结点中    
    146     q->next=p->next;//将q结点的指针域置为空
    147     p->next=q;
    148     p=p->next;//将指针后移
    149 }
    150 void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)
    151 //客户订票后,将客户结点插入客户链表中,并修改相应的航班信息。
    152 {
    153     flightnode *p=h->next;
    154     for(;p!=NULL;p=p->next)
    155         if(strcmp(p->flight_num,flight_num)==0)
    156         {
    157             p->left=p->left-ticket_num;
    158             if(p->left==0)
    159                 p->isFull=1;
    160         }
    161     passengernode *q=(passengernode *)malloc(sizeof(passengernode));//新建结点,存放新的客户订单信息
    162     strcpy(q->name,name);
    163     strcpy(q->ID_num,ID_num);
    164     strcpy(q->flight_num,flight_num);
    165     q->ticket_num=ticket_num;
    166     q->next=NULL;
    167     //将新订单连接到链表中
    168     PList->rear->next=q;
    169     q->order_num=PList->rear->order_num+1;//生成订单号
    170     PList->rear=q;
    171 }
    172 
    173 void delete_flight(flightnode *&h,passengerList *&PList)
    174 //目的要按照某个航班号删除航班结点
    175 {
    176     flightnode *p,*pr;
    177     passengernode *q,*qr;
    178     char flight_num[10];
    179     int mark=1;
    180     qr=PList->head;//pr为顾客链表的头结点
    181     q=qr->next;//用p作为中间指针对顾客链表中要删除的顾客结点进行查找
    182     pr=h;//pr为航线链表的头结点
    183     p=pr->next;//用p作为指针对航线链表中要删除的航班结点进行查找
    184     printf("		请输入你要删除的航班号:");
    185     scanf("%s",flight_num);
    186     while(p!=NULL)//要删除的航班存在,下面进行删除操作
    187     {
    188         if(strcmp(flight_num,p->flight_num)==0)
    189         {
    190             pr->next=p->next;//移动指针找着要删除的航班结点
    191             free(p);//删除操作
    192             printf("		删除%s航班成功!
    ",flight_num);
    193             mark=0;
    194             p=NULL;
    195         }
    196         if(pr->next!=NULL)
    197         {
    198             pr=pr->next;
    199             p=pr->next;
    200         }
    201     }
    202     if(mark==1)
    203         printf("		无此航班,无法删除!
    ");
    204     else
    205     {
    206         while(q!=NULL)//要删除的顾客存在,下面进行删除操作
    207         {
    208             if(strcmp(flight_num,q->flight_num)==0)
    209             {
    210                 qr->next=q->next;//移动指针找着要删除的顾客结点
    211                 free(q);
    212                 q=NULL;
    213             }
    214             if(qr->next!=NULL)
    215             {
    216                 qr=qr->next;
    217                 q=qr->next;
    218             }
    219         }
    220     }
    221 }
    222 int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)
    223 //目的是按照要退票的顾客的姓名查找该顾客结点,进行删除操作
    224 {
    225     passengernode *p,*pr=PList->head;//pr指向顾客链表的头结点
    226     p=pr->next;
    227     while(p!=NULL)
    228     {
    229         if(strcmp(name,p->name)==0&&strcmp(ID_num,p->ID_num)==0)
    230         {
    231             for(flightnode *f=h->next;f!=NULL;f=f->next)
    232                 if(strcmp(p->flight_num,f->flight_num)==0)
    233                 {
    234                     f->left=f->left+p->ticket_num;
    235                     f->isFull=0;
    236                     break;
    237                 }
    238             pr->next=p->next;
    239             free(p);
    240             printf("		顾客%s,%s退票成功!
    ",name,ID_num);
    241             return 1;
    242         }
    243         pr=pr->next;
    244         p=pr->next;
    245     }
    246     printf("		无此顾客,无法退票!
    ");
    247     return 0;
    248 }
    249 
    250 void add_flight(flightnode *&h)//录入航班信息后调用insert_flight函数增加航班
    251 {
    252     flightnode *p=h;
    253     char flight_num[10],start_time[10],end_time[10],start_place[20],end_place[20];
    254     int left,isFull,mark=1;
    255     float price,price_discount;
    256     for(;p->next!=NULL;p=p->next){}//移动指针,找到最后一个结点
    257     while(mark==1)
    258     {
    259         printf("		请输入你要增加的航班号:");
    260         scanf("%s",flight_num);
    261         printf("		请输入出发地:");
    262         scanf("%s",start_place);
    263         printf("		请输入目的地:");
    264         scanf("%s",end_place);
    265         printf("		请输入起飞时间:");
    266         scanf("%s",start_time);
    267         printf("		请输入抵达时间:");
    268         scanf("%s",end_time);
    269         printf("		请输入票价:");
    270         scanf("%f",&price);
    271         printf("		请输入剩余座位数:");
    272         scanf("%d",&left);
    273         printf("		请输入是否满仓(0表示没有满仓1以满仓):");
    274         scanf("%d",&isFull);
    275         insert_flight(p,flight_num,start_place,end_place,start_time,end_time,left,price, price_discount,isFull);
    276         printf("		增加航班%s成功!
    ",flight_num);
    277         printf("		是否继续录入航班信息(1表示继续录入;0表示停止录入).
    ");
    278         printf("		请输入:");
    279         scanf("%d",&mark);
    280     }
    281 }
    282 
    283 int flight_num_check(flightnode *h,char *flight_num)//用航班号进行查询
    284 {
    285     flightnode *p=h;
    286     printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s
    ","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
    287     for(;p!=NULL;p=p->next)
    288     {
    289         if(strcmp(p->flight_num,flight_num)==0)
    290         {
    291             printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d
    ",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->isFull,p->left);
    292             return 1;
    293         }
    294     }
    295     printf("		抱歉,没有航班号为%s的航班信息!
    ",flight_num);
    296     return 0;
    297 }
    298 int place_check(flightnode *h,char *start_place,char *end_place)//用起飞抵达城市进行查询
    299 {
    300     flightnode *p=h;
    301     int mark=0;
    302     printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s
    ","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
    303     for(;p!=NULL;p=p->next)
    304     {
    305         if(strcmp(p->start_place,start_place)==0&&strcmp(p->end_place,end_place)==0)
    306         {
    307             printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d
    ",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->isFull,p->left);
    308             mark=1;
    309         }
    310     }
    311     if(mark==0)
    312     {
    313         printf("		抱歉,没有从%s到%s的航班信息!
    ",start_place,end_place);
    314         return 0;
    315     }
    316     return 1;
    317 }
    318 void check_all_flight(flightnode *h)
    319 {
    320     flightnode *p=h;
    321     int m=0;
    322     printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s
    ","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
    323     for(;p!=NULL;p=p->next)
    324     {
    325         printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d
    ",p->flight_num, p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->isFull,p->left);
    326         m=1;
    327     }
    328     if(m==0)
    329         printf("		航班信息为空!
    ");
    330 }
    331 void flight_check(flightnode *h)//选择使用哪一个函数进行查询
    332 {
    333     flightnode *p=h->next;
    334     char flight_num[10],start_place[20],end_place[20];
    335     char a;
    336     printf("		请选择航班查询方式:
    ");
    337     printf("		1表示按航班号进行查询;
    ");
    338     printf("		2表示按起飞抵达城市进行查询;
    ");
    339     printf("		3表示浏览全部航班信息.
    		请选择输入:");
    340     a=getch();
    341     printf("%c
    ",a);
    342     if(a=='1')
    343     {
    344         printf("		请输入航班号:");
    345         scanf("%s",flight_num);
    346         flight_num_check(p,flight_num);
    347     }
    348     else if(a=='2')
    349     {
    350         printf("		请输入起飞城市:");
    351         scanf("%s",start_place);
    352         printf("		请输入抵达城市:");
    353         scanf("%s",end_place);
    354         place_check(p,start_place,end_place);
    355     }
    356     else if(a=='3')
    357         check_all_flight(p);
    358     else
    359         return;
    360 }
    361 
    362 int ID_name_check(passengerList *PList,char *name,char *ID_num)
    363 {
    364     passengernode *p=PList->head->next;
    365     int mark=0;
    366     printf("%-8s%-20s%-20s%-10s%-8s%
    ","订单号","姓名","证件号","航班号","订票数量");
    367     for(;p!=NULL;p=p->next)
    368     {
    369         if(strcmp(p->ID_num,ID_num)==0&&strcmp(p->name,name)==0)
    370         {
    371             printf("%-8d%-20s%-20s%-10s%-8d%
    ",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
    372             mark=1;
    373         }
    374     }
    375     if(mark==0)
    376     {
    377         printf("		抱歉,没有%s,%s的订单信息!
    ",name,ID_num);
    378         return 0;
    379     }
    380     return 1;
    381 }
    382 int order_num_check(passengerList *PList,int order_num)
    383 {
    384     passengernode *p=PList->head->next;
    385     printf("%-8s%-20s%-20s%-10s%-8s%
    ","订单号","姓名","证件号","航班号","订票数量");
    386     for(;p!=NULL;p=p->next)
    387     {
    388         if(p->order_num==order_num)
    389         {
    390             printf("%-8d%-20s%-20s%-10s%-8d%
    ",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
    391             return 1;
    392         }
    393     }
    394     printf("		抱歉,没有订单号为%d的订单信息!
    ",order_num);
    395     return 0;
    396 }
    397 void check_all_passenger(passengerList *PList)
    398 {
    399     passengernode *p=PList->head->next;
    400     int m=0;
    401     printf("%-8s%-20s%-20s%-10s%-8s%
    ","订单号","姓名","证件号","航班号","订票数量");
    402     for(;p!=NULL;p=p->next)
    403     {
    404         printf("%-8d%-20s%-20s%-10s%-8d%
    ",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
    405         m=1;
    406     }
    407     if(m==0)
    408         printf("		订单信息为空!
    ");
    409 }
    410 void passenger_check(passengerList *PList)
    411 {
    412     char name[20],ID_num[15];
    413     int order_num;
    414     char a;
    415     printf("		请选择订单查询方式:
    ");
    416     printf("		1表示按客户姓名和证件号进行查询;
    ");
    417     printf("		2表示按订单号进行查询;
    ");
    418     printf("		3表示查看全部订单信息.
    		请选择输入:");
    419     a=getch();
    420     printf("%c
    ",a);
    421     if(a=='1')
    422     {
    423         printf("		请输入客户姓名:");
    424         scanf("%s",name);
    425         printf("		请输入证件号:");
    426         scanf("%s",ID_num);
    427         ID_name_check(PList,name,ID_num);
    428     }
    429     else if(a=='2')
    430     {
    431         printf("		请输入订单号:");
    432         scanf("%d",&order_num);
    433         order_num_check(PList,order_num);
    434     }
    435     else if(a=='3')
    436         check_all_passenger(PList);
    437     else
    438         return;
    439 }
    440 
    441 void modify_flight(flightnode *&h,passengerList *&PList)
    442 {
    443     flightnode *p=h->next;
    444     char flight_num[10],start_time[10],end_time[10];
    445     char a;
    446     printf("		************航线信息修改*************
    
    ");
    447     printf("		*************************************
    
    ");
    448     printf("		*         增加航班-------1          *
    
    ");
    449     printf("		*         删除航班-------2          *
    
    ");
    450     printf("		*         修改航班时间---3          *
    
    ");
    451     printf("		*************************************
    
    ");
    452     printf("		请选择:");
    453     a=getch();
    454     printf("%c
    ",a);
    455     if(a=='1')
    456         add_flight(h);
    457     else if(a=='2')
    458         delete_flight(h,PList);
    459     else if(a=='3')
    460     {
    461         printf("		请输入要修改的航班的航班号:");
    462         scanf("%s",flight_num);
    463         if(flight_num_check(p,flight_num)==1)
    464         {
    465             printf("		请输入修改后的起飞时间:");
    466             scanf("%s",start_time);
    467             printf("		请输入修改后的抵达时间:");
    468             scanf("%s",end_time);
    469             for(;p!=NULL;p=p->next)
    470                 if(strcmp(flight_num,p->flight_num)==0)
    471                 {
    472                     strcpy(p->start_time,start_time);
    473                     strcpy(p->end_time,end_time);
    474                     printf("		航班%s时间修改成功!
    ",flight_num);
    475                 }
    476         }
    477     }
    478     else
    479         return;
    480 }
    481 
    482 int book(flightnode *&h,passengerList *&PList)
    483 {
    484     char name[20];       //姓名
    485     char ID_num[20];     //证件号
    486     char flight_num[10]; //航班号
    487     char start_place[20];//起飞城市
    488     char end_place[20];  //抵达城市
    489     int ticket_num;      //订票数量
    490     int k;
    491     flightnode *p=h->next;
    492     printf("		请输入信息:
    ");
    493     printf("		请输入起飞城市:");
    494     scanf("%s",start_place);
    495     printf("		请输入抵达城市:");
    496     scanf("%s",end_place);
    497     if(place_check(h,start_place,end_place)==1)
    498     {
    499         printf("		航班号:");
    500         scanf("%s",flight_num);
    501         while(flight_num==NULL){
    502             printf("航班号不能为空!
    ");
    503             printf("		航班号:");
    504             scanf("%s",flight_num);
    505         }
    506         while(p!=NULL){
    507             if(strcmp(p->flight_num,flight_num)==0)
    508             {
    509                 printf("		姓名:");
    510                 scanf("%s",name);
    511                 printf("		证件号码:");
    512                 scanf("%s",ID_num);
    513                 printf("		订票数量:");
    514                 scanf("%d",&ticket_num);
    515                 while(name==NULL){
    516                     printf("客户姓名不能为空!
    ");
    517                     printf("		姓名:");
    518                     scanf("%s",name);
    519                 }
    520                 while(ID_num==NULL){
    521                     printf("客户证件号码不能为空!
    ");
    522                     printf("		证件号码:");
    523                     scanf("%s",ID_num);
    524                 }
    525                 while(ticket_num==0){
    526                     printf("客户订票数量不能为空!
    ");
    527                     printf("		订票数量:");
    528                     scanf("%d",&ticket_num);
    529                 }
    530                 if(p->left>0&&p->left>=ticket_num)
    531                 {
    532                     insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);
    533                 
    534                     getch();
    535                     printf("		恭喜您,订票成功!
    ");
    536                     return 1;
    537                 }
    538                 else
    539                 {
    540                     printf("		***很遗憾,该航班已满!***
    ");
    541                     printf("		***如选择其他航班请输入-----1
    		***不选则输入-----0***
    ");
    542                     printf("		输入数字进行选择:");
    543                     scanf("%d",&k);
    544                     if(k==1)
    545                     {
    546                         printf("		此航线上的其他航班有:
    ");
    547                         if(find_same_flight(h,flight_num)==1)
    548                         {
    549                             printf("		请输入您选的航班:");
    550                             scanf("%s",flight_num);
    551                             insert_passengerList(h,PList,name,ID_num,flight_num, ticket_num);
    552                             printf("		恭喜您,订票成功!
    ");
    553                             return 1;
    554                         }
    555                     }
    556                 }
    557             }
    558             else
    559                 p=p->next;
    560         }
    561         if(p==NULL)
    562             printf("		对不起,您输入的航班不存在!
    ");
    563     }
    564     return 0;
    565 }
    566 
    567 void cancel(passengerList *&PList,flightnode *&h)
    568 {
    569     char name[20],ID_num[20];
    570     printf("		请输入你的姓名:");
    571     scanf("%s",name);
    572     printf("		请输入你的证件号:");
    573     scanf("%s",ID_num);
    574     delete_passenger(PList,h,name,ID_num);
    575 }
    576 
    577 int main()
    578 {
    579     char choice;
    580     int t=1;
    581     flightnode *flight;
    582     passengerList *PList;
    583     init_flight(flight);//初始化航班链表
    584     init_passengerList(PList);
    585     load_flight(flight);
    586     load_passenger(PList);
    587     while(t==1)
    588     {
    589         printf("		************飞机订票系统菜单*************
    ");
    590         printf("		*****************************************
    ");
    591         printf("		*         录入信息----------1           *
    
    ");
    592         printf("		*         订    票----------2           *
    
    ");
    593         printf("		*         退    票----------3           *
    
    ");
    594         printf("		*         查询航班----------4           *
    
    ");
    595         printf("		*         查询订单----------5           *
    
    ");
    596         printf("		*         修改航线----------6           *
    
    ");
    597         printf("		*         保存退出----------0           *
    
    ");
    598         printf("		*****************************************
    
    ");
    599         printf("		请选择服务:");
    600         choice=getch();
    601         printf("%c
    ",choice);
    602         system("cls");
    603         if(choice=='1'){
    604             add_flight(flight);
    605             getch();
    606             system("cls");
    607         }else if(choice=='2'){
    608             book(flight,PList);
    609             getch();
    610             system("cls");
    611         }else if(choice=='3'){
    612             cancel(PList,flight);
    613             getch();
    614             system("cls");
    615         }else if(choice=='4'){
    616             flight_check(flight);
    617             getch();
    618             system("cls");
    619         }else if(choice=='5'){
    620             passenger_check(PList);
    621             getch();
    622             system("cls");
    623         }else if(choice=='6'){
    624             modify_flight(flight,PList);
    625             getch();
    626             system("cls");
    627         }else if(choice=='0'){
    628             printf("		再见!
    ");
    629             t=0;
    630         }
    631     }
    632     save_flight(flight);
    633     save_passenger(PList);
    634     return 0; 
    635 }
  • 相关阅读:
    XPOSED优秀模块列表 网络强度
    XPOSED优秀模块列表 VLC 播放最小/最大速度编辑器 以慢动作观看您的视频
    XPOSED优秀模块列表 修复棒棒糖内存泄漏
    XPOSED优秀模块列表 通话黑名单 Blocker Pro
    XPOSED优秀模块列表 X 状态栏农历日期
    XPOSED优秀模块列表 公司门户的安全绕过
    XPOSED优秀模块列表 X吐司
    XPOSED优秀模块列表 无设备检查
    XPOSED优秀模块列表 XposedLowRamDevice
    XPOSED优秀模块列表 将 USB 用于 Marshmallow V 1.2
  • 原文地址:https://www.cnblogs.com/geziyu/p/8016337.html
Copyright © 2011-2022 走看看