飛機訂票系統

  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\n","航班號","起飛城市","抵達城市","起飛時間","抵達時間","價格","是否滿倉","空座數");
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\n",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("\t\t抱歉,沒有可選的航班!\n");
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("\t\t請輸入你要刪除的航班號:");
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("\t\t刪除%s航班成功!\n",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("\t\t無此航班,無法刪除!\n");
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("\t\t顧客%s,%s退票成功!\n",name,ID_num);
241             return 1;
242         }
243         pr=pr->next;
244         p=pr->next;
245     }
246     printf("\t\t無此顧客,無法退票!\n");
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("\t\t請輸入你要增加的航班號:");
260         scanf("%s",flight_num);
261         printf("\t\t請輸入出發地:");
262         scanf("%s",start_place);
263         printf("\t\t請輸入目的地:");
264         scanf("%s",end_place);
265         printf("\t\t請輸入起飛時間:");
266         scanf("%s",start_time);
267         printf("\t\t請輸入抵達時間:");
268         scanf("%s",end_time);
269         printf("\t\t請輸入票價:");
270         scanf("%f",&price);
271         printf("\t\t請輸入剩余座位數:");
272         scanf("%d",&left);
273         printf("\t\t請輸入是否滿倉(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("\t\t增加航班%s成功!\n",flight_num);
277         printf("\t\t是否繼續錄入航班信息(1表示繼續錄入;0表示停止錄入).\n");
278         printf("\t\t請輸入:");
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\n","航班號","起飛城市","抵達城市","起飛時間","抵達時間","價格","是否滿倉","空座數");
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\n",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("\t\t抱歉,沒有航班號為%s的航班信息!\n",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\n","航班號","起飛城市","抵達城市","起飛時間","抵達時間","價格","是否滿倉","空座數");
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\n",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("\t\t抱歉,沒有從%s到%s的航班信息!\n",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\n","航班號","起飛城市","抵達城市","起飛時間","抵達時間","價格","是否滿倉","空座數");
323     for(;p!=NULL;p=p->next)
324     {
325         printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n",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("\t\t航班信息為空!\n");
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("\t\t請選擇航班查詢方式:\n");
337     printf("\t\t1表示按航班號進行查詢;\n");
338     printf("\t\t2表示按起飛抵達城市進行查詢;\n");
339     printf("\t\t3表示瀏覽全部航班信息.\n\t\t請選擇輸入:");
340     a=getch();
341     printf("%c\n",a);
342     if(a=='1')
343     {
344         printf("\t\t請輸入航班號:");
345         scanf("%s",flight_num);
346         flight_num_check(p,flight_num);
347     }
348     else if(a=='2')
349     {
350         printf("\t\t請輸入起飛城市:");
351         scanf("%s",start_place);
352         printf("\t\t請輸入抵達城市:");
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%\n","訂單號","姓名","證件號","航班號","訂票數量");
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%\n",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("\t\t抱歉,沒有%s,%s的訂單信息!\n",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%\n","訂單號","姓名","證件號","航班號","訂票數量");
386     for(;p!=NULL;p=p->next)
387     {
388         if(p->order_num==order_num)
389         {
390             printf("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
391             return 1;
392         }
393     }
394     printf("\t\t抱歉,沒有訂單號為%d的訂單信息!\n",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%\n","訂單號","姓名","證件號","航班號","訂票數量");
402     for(;p!=NULL;p=p->next)
403     {
404         printf("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
405         m=1;
406     }
407     if(m==0)
408         printf("\t\t訂單信息為空!\n");
409 }
410 void passenger_check(passengerList *PList)
411 {
412     char name[20],ID_num[15];
413     int order_num;
414     char a;
415     printf("\t\t請選擇訂單查詢方式:\n");
416     printf("\t\t1表示按客戶姓名和證件號進行查詢;\n");
417     printf("\t\t2表示按訂單號進行查詢;\n");
418     printf("\t\t3表示查看全部訂單信息.\n\t\t請選擇輸入:");
419     a=getch();
420     printf("%c\n",a);
421     if(a=='1')
422     {
423         printf("\t\t請輸入客戶姓名:");
424         scanf("%s",name);
425         printf("\t\t請輸入證件號:");
426         scanf("%s",ID_num);
427         ID_name_check(PList,name,ID_num);
428     }
429     else if(a=='2')
430     {
431         printf("\t\t請輸入訂單號:");
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("\t\t************航線信息修改*************\n\n");
447     printf("\t\t*************************************\n\n");
448     printf("\t\t*         增加航班-------1          *\n\n");
449     printf("\t\t*         刪除航班-------2          *\n\n");
450     printf("\t\t*         修改航班時間---3          *\n\n");
451     printf("\t\t*************************************\n\n");
452     printf("\t\t請選擇:");
453     a=getch();
454     printf("%c\n",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("\t\t請輸入要修改的航班的航班號:");
462         scanf("%s",flight_num);
463         if(flight_num_check(p,flight_num)==1)
464         {
465             printf("\t\t請輸入修改后的起飛時間:");
466             scanf("%s",start_time);
467             printf("\t\t請輸入修改后的抵達時間:");
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("\t\t航班%s時間修改成功!\n",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("\t\t請輸入信息:\n");
493     printf("\t\t請輸入起飛城市:");
494     scanf("%s",start_place);
495     printf("\t\t請輸入抵達城市:");
496     scanf("%s",end_place);
497     if(place_check(h,start_place,end_place)==1)
498     {
499         printf("\t\t航班號:");
500         scanf("%s",flight_num);
501         while(flight_num==NULL){
502             printf("航班號不能為空!\n");
503             printf("\t\t航班號:");
504             scanf("%s",flight_num);
505         }
506         while(p!=NULL){
507             if(strcmp(p->flight_num,flight_num)==0)
508             {
509                 printf("\t\t姓名:");
510                 scanf("%s",name);
511                 printf("\t\t證件號碼:");
512                 scanf("%s",ID_num);
513                 printf("\t\t訂票數量:");
514                 scanf("%d",&ticket_num);
515                 while(name==NULL){
516                     printf("客戶姓名不能為空!\n");
517                     printf("\t\t姓名:");
518                     scanf("%s",name);
519                 }
520                 while(ID_num==NULL){
521                     printf("客戶證件號碼不能為空!\n");
522                     printf("\t\t證件號碼:");
523                     scanf("%s",ID_num);
524                 }
525                 while(ticket_num==0){
526                     printf("客戶訂票數量不能為空!\n");
527                     printf("\t\t訂票數量:");
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("\t\t恭喜您,訂票成功!\n");
536                     return 1;
537                 }
538                 else
539                 {
540                     printf("\t\t***很遺憾,該航班已滿!***\n");
541                     printf("\t\t***如選擇其他航班請輸入-----1\n\t\t***不選則輸入-----0***\n");
542                     printf("\t\t輸入數字進行選擇:");
543                     scanf("%d",&k);
544                     if(k==1)
545                     {
546                         printf("\t\t此航線上的其他航班有:\n");
547                         if(find_same_flight(h,flight_num)==1)
548                         {
549                             printf("\t\t請輸入您選的航班:");
550                             scanf("%s",flight_num);
551                             insert_passengerList(h,PList,name,ID_num,flight_num, ticket_num);
552                             printf("\t\t恭喜您,訂票成功!\n");
553                             return 1;
554                         }
555                     }
556                 }
557             }
558             else
559                 p=p->next;
560         }
561         if(p==NULL)
562             printf("\t\t對不起,您輸入的航班不存在!\n");
563     }
564     return 0;
565 }
566 
567 void cancel(passengerList *&PList,flightnode *&h)
568 {
569     char name[20],ID_num[20];
570     printf("\t\t請輸入你的姓名:");
571     scanf("%s",name);
572     printf("\t\t請輸入你的證件號:");
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("\t\t************飛機訂票系統菜單*************\n");
590         printf("\t\t*****************************************\n");
591         printf("\t\t*         錄入信息----------1           *\n\n");
592         printf("\t\t*         訂    票----------2           *\n\n");
593         printf("\t\t*         退    票----------3           *\n\n");
594         printf("\t\t*         查詢航班----------4           *\n\n");
595         printf("\t\t*         查詢訂單----------5           *\n\n");
596         printf("\t\t*         修改航線----------6           *\n\n");
597         printf("\t\t*         保存退出----------0           *\n\n");
598         printf("\t\t*****************************************\n\n");
599         printf("\t\t請選擇服務:");
600         choice=getch();
601         printf("%c\n",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("\t\t再見!\n");
629             t=0;
630         }
631     }
632     save_flight(flight);
633     save_passenger(PList);
634     return 0; 
635 }

?

轉載于:https://www.cnblogs.com/geziyu/p/8016337.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390575.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決Mac10.13 Pod報錯 -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.fram

升級10.13以后Pod命令失效&#xff0c;解決辦法如下&#xff1a; 終端執行 brew link --overwrite cocoapods 復制代碼嘗試 Pod 命令是否已經恢復 若報錯繼續執行 brew reinstall cocoapodsbrew install rubybrew link --overwrite cocoapods 復制代碼嘗試 Pod 命令是否已經恢復…

angular示例_用示例解釋Angular動畫

angular示例為什么要使用動畫&#xff1f; (Why use Animations?) Modern web components frequently use animations. Cascading Style-sheets (CSS) arms developers with the tools to create impressive animations. Property transitions, uniquely named animations, mu…

selenium抓取_使用Selenium的網絡抓取電子商務網站

selenium抓取In this article we will go through a web scraping process of an E-Commerce website. I have designed this particular post to be beginner friendly. So, if you have no prior knowledge about web scraping or Selenium you can still follow along.在本文…

劍指 Offer 37. 序列化二叉樹

題目 序列化是將一個數據結構或者對象轉換為連續的比特位的操作&#xff0c;進而可以將轉換后的數據存儲在一個文件或者內存中&#xff0c;同時也可以通過網絡傳輸到另一個計算機環境&#xff0c;采取相反方式重構得到原數據。 請設計一個算法來實現二叉樹的序列化與反序列化…

ie8 ajaxSubmit 上傳文件提示下載

轉載 解決ie下ajaxsubmit上傳文件提示下載文件問題 主要是應為放回類型為json&#xff0c;返回text/html轉載于:https://www.cnblogs.com/yang-C-J/p/8963278.html

一個簡單的 js 時間對象創建

JS中獲取時間很常見&#xff0c;湊湊熱鬧&#xff0c;也獲取一個時間對象試試 首先&#xff0c;先了解js的獲取時間函數如下&#xff1a; var myDate new Date(); //創建一個時間對象 myDate.getYear(); // 獲取當前年份&#xff08;2位&#x…

裁判打分_內在的裁判偏見

裁判打分News flash: being an umpire is hard. Their job is to judge whether a ball that’s capable of moving upwards of 100 MPH or breaking 25 inches crossed through an imaginary zone before being caught. I don’t think many would argue that they have it ea…

數據庫sql課程設計_SQL和數據庫-初學者完整課程

數據庫sql課程設計In this course, Mike Dane will teach you database management basics and SQL.在本課程中&#xff0c;Mike Dane將教您數據庫管理基礎知識和SQL。 The course starts off with Mike helping you install MySQL on Windows or Mac. Then he explores topic…

LCP 07. 傳遞信息

小朋友 A 在和 ta 的小伙伴們玩傳信息游戲&#xff0c;游戲規則如下&#xff1a; 有 n 名玩家&#xff0c;所有玩家編號分別為 0 &#xff5e; n-1&#xff0c;其中小朋友 A 的編號為 0 每個玩家都有固定的若干個可傳信息的其他玩家&#xff08;也可能沒有&#xff09;。傳信息…

微信公眾號自動回復加超鏈接最新可用實現方案

你在管理微信號時是否會有自動回復或者在關鍵字觸發自動回復加一個超鏈接的需求呢&#xff1f;例如下圖像王者榮耀這樣&#xff1a; 很多有開發經驗的朋友都知道微信管理平臺會類似富文本編輯器&#xff0c;第一想到的解決方案會是在編輯框中加<a href網址 >顯示文字<…

devops開發模式流程圖_2020 Web開發人員路線圖–成為前端,后端或DevOps開發人員的視覺指南

devops開發模式流程圖There are many ways you can go about picking up the skills you need to become a developer.您可以采用多種方法掌握成為開發人員所需的技能。 There are linear curriculums that teach you a bit of everything - like freeCodeCamps full stack de…

從Jupyter Notebook切換到腳本的5個理由

意見 (Opinion) 動機 (Motivation) Like most people, the first tool I used when started learning data science is Jupyter Notebook. Most of the online data science courses use Jupyter Notebook as a medium to teach. This makes sense because it is easier for be…

leetcode 1833. 雪糕的最大數量

夏日炎炎&#xff0c;小男孩 Tony 想買一些雪糕消消暑。 商店中新到 n 支雪糕&#xff0c;用長度為 n 的數組 costs 表示雪糕的定價&#xff0c;其中 costs[i] 表示第 i 支雪糕的現金價格。Tony 一共有 coins 現金可以用于消費&#xff0c;他想要買盡可能多的雪糕。 給你價格…

MVC架構 -- 初學試水選課管理系統

項目文件網站地址&#xff1a;http://www.gegecool.cn:90/ 第一次對MVC 進行轉載于:https://www.cnblogs.com/wtusoso/p/8032120.html

rest api 示例2_REST API教程– REST Client,REST Service和API調用通過代碼示例進行了解釋

rest api 示例2Ever wondered how login/signup on a website works on the back-end? Or how when you search for "cute kitties" on YouTube, you get a bunch of results and are able to stream off of a remote machine?有沒有想過網站上的登錄/注冊在后端如…

win10子系統linux編譯ffmpeg

android-ndk-r14b(linux版) ffmpeg-4.0 開啟win10子系統&#xff08;控制面板-》程序和功能-》啟用或關閉Windows功能 然后在 適用與 Linux 的 Windows 子系統前面打勾&#xff09; 然后點擊確定&#xff0c;等待安裝&#xff0c;電腦會重啟 然后在win10應用商店 搜索ubuntu安裝…

ip登錄打印機怎么打印_不要打印,登錄。

ip登錄打印機怎么打印Often on Python, especially as a beginner, you might print( ) a variable in order to see what is happening in your program. It is possible if you rely on too many print statements throughout your program you will face the nightmare of h…

leetcode 451. 根據字符出現頻率排序

給定一個字符串&#xff0c;請將字符串里的字符按照出現的頻率降序排列。 示例 1:輸入: "tree"輸出: "eert"解釋: e出現兩次&#xff0c;r和t都只出現一次。 因此e必須出現在r和t之前。此外&#xff0c;"eetr"也是一個有效的答案。 示例 2:輸入…

Spring-Security 自定義Filter完成驗證碼校驗

Spring-Security的功能主要是由一堆Filter構成過濾器鏈來實現&#xff0c;每個Filter都會完成自己的一部分工作。我今天要做的是對UsernamePasswordAuthenticationFilter進行擴展&#xff0c;新增一個Filter&#xff0c;完成對登錄頁面的校驗碼的驗證。下面先給一張過濾器的說明…

如何使用Ionic和Firebase在短短三天內創建冠狀病毒跟蹤器應用程序

I am really fond of Hybrid App technologies – they help us achieve so much in a single codebase. Using the Ionic Framework, I developed a cross-platform mobile solution for tracking Coronavirus cases in just 3 days. 我真的很喜歡Hybrid App技術-它們可以幫助…