飞机订票系统

  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.mzph.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技术-它们可以帮助…