<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      maiheliya

      導(dǎo)航

      2252309------對飛機(jī)(航空)訂票系統(tǒng)(C語言)進(jìn)行逆向?qū)W習(xí)、分析、思考、設(shè)計(jì)構(gòu)思、改進(jìn)............................

                               **飛機(jī)訂票系統(tǒng)**
      

      一、資料來源
      CSDN博主吳朋奉閱讀量最高的一篇博文--飛機(jī)訂票系統(tǒng)(C語言)----https://blog.csdn.net/weixin_47774641/article/details/111398063?spm=1001.2014.3001.5506
      二、運(yùn)行環(huán)境
      Windows 11 + DEVC++
      三、源代碼(來自博主吳朋奉)

      點(diǎn)擊查看代碼
      #include <stdio.h>
      #include <string.h>
      #include <stdlib.h>
      #define M 9999
       
       
      struct flight // 航班 
            {
            	char fliname[10];  // 航班號 
            	char sp[36];       // 起飛地點(diǎn) 
            	char de[36];       // 目的地 
            	int  num1;         // 座位數(shù)
      		int  num2;         // 已訂出票數(shù)
            };
      struct book // 預(yù)定 
            {
      	    char fliname[10];  // 航班號 
            	char na[50];       // 姓名 
            	char id[19];       // 身份證號(至多18位數(shù)) 
            	char ph[30];       // 手機(jī)號 
            	int  st;           // 狀態(tài)(1表示已經(jīng)預(yù)約,0則表示已經(jīng)退訂) 
      	  };
       
       
      FILE * fp1;
      FILE * fp2; 
      int count1 = 0;
      int count2 = 0;
      struct flight A[M];
      struct book   B[M];
       
       
      void init() // 初始化 
      {
      	fp1 = fopen("flightfile.txt", "r");
          if(fp1 == NULL)
              printf("can't open the flightfile! \n");
          else
      	{
      	  // 將文件指針移動(dòng)到文件開頭
      	  fseek(fp1, 0, SEEK_SET);
      	  
      	  // 從文件flightfile.txt中格式化讀取數(shù)據(jù)
      	  while(fscanf(fp1, "%s %s %s %d %d", A[count1].fliname, A[count1].sp, A[count1].de, &A[count1].num1, &A[count1].num2) == 5) count1 ++ ;
      	}
      	fclose(fp1);
      	
      	fp2= fopen("bookfile.txt", "r");
      	if(fp2 == NULL)
              printf("can't open the bookfile! \n");
          else
      	{
      	  // 將文件指針移動(dòng)到文件開頭
      	  fseek(fp2, 0, SEEK_SET); 
      	  
      	  // 從文件bookfile.txt中格式化讀取數(shù)據(jù)
      	  while(fscanf(fp2, "%s %s %s %s %d", B[count2].fliname, B[count2].na, B[count2].id, B[count2].ph, &B[count2].st) == 5) count2 ++ ;
      	}
      	fclose(fp2);
      }
       
       
      void menu() // 菜單 
      {
      	printf("請輸入你的選擇:\n");
      	printf("1.輸入航班信息\n");
      	printf("2.輸出航班信息\n");
      	printf("3.查找航班信息\n");
      	printf("4.訂票預(yù)約\n");
      	printf("5.退訂\n");
      	printf("6.訂票信息查詢\n");
      	printf("7.退出系統(tǒng)\n\n");
      }
       
       
      void save1() // 保存1(向flightfile.txt中保存) 
      {
      	int i;
      	
          fp1 = fopen("flightfile.txt", "w+");
          
          fseek(fp1, 0, SEEK_SET); // 將文件指針移動(dòng)到文件開頭
      	for(i=0; i<count1; i++) // 將數(shù)據(jù)格式化輸出到文件flightfile.txt中
      		fprintf(fp1, "%s %s %s %d %d\n", A[i].fliname, A[i].sp, A[i].de, A[i].num1, A[i].num2); 
      		
      	fclose(fp1);
      }
       
       
      void save2() // 保存2(向bookfile.txt中保存) 
      {
      	int i;
      	
          fp2 = fopen("bookfile.txt", "w+");
          
          fseek(fp2, 0, SEEK_SET); // 將文件指針移動(dòng)到文件開頭
      	for(i=0; i<count2; i++) // 將數(shù)據(jù)格式化輸出到文件bookfile.txt中
      		fprintf(fp2, "%s %s %s %s %d\n", B[i].fliname, B[i].na, B[i].id, B[i].ph, B[i].st); 
      		
      	fclose(fp2);
      }
       
       
      void input() // 輸入航班信息
      {
      	int i,flag=1;
      	
      	printf("請輸入航班號:");
          scanf("%s", A[count1].fliname);
          
          for(i=0; i<count1; i++) // 判定航班號是否已經(jīng)存在! 
      	    if(strcmp(A[count1].fliname, A[i].fliname) == 0)
      	        {
      	        	printf("該航班號已存在,請重新選擇輸入航班信息并輸入!\n\n");
      	          	flag = 0;
      	          	break;
      		    }
      		    
          if(flag == 1)
            {
          	printf("起飛地點(diǎn):");
      		scanf("%s", A[count1].sp);
      		printf("目的地:");
      		scanf("%s", A[count1].de);
      		printf("座位數(shù):");
      		scanf("%d", &A[count1].num1);
      		printf("已訂出票數(shù):");
      		scanf("%d", &A[count1].num2);
      		
      		printf("\n");
      		
      		count1 ++ ;
      		save1();
      	  }
      }
       
       
      void show() // 輸出航班信息
      {
      	int i;
      	
      	printf("航班號\t起飛地點(diǎn)\t目的地\t剩余座位數(shù)\n");
      	for(i=0; i<count1; i++)                                                                   
      	   {
       	      printf("%s\t%s        \t%s  \t%d\n", A[i].fliname, A[i].sp, A[i].de, A[i].num1-A[i].num2);
       	   }
       	   
       	printf("\n");
      }
       
       
      void find() // 查找航班信息(按線路查詢)
      {
      	int i, num=0, flag=1;
      	char sp[36];
      	char de[36];
      	
      	printf("請輸入起飛地點(diǎn):");
      	scanf("%s", sp);
      	printf("請輸入目的地:"); 
      	scanf("%s", de);
      	
      	printf("航班號\t起飛地點(diǎn)\t目的地\t剩余座位數(shù)\n");
      	for(i=0; i<count1; i++)
      	   {
      	   	  if(strcmp(sp, A[i].sp)==0 && strcmp(de, A[i].de)==0) // 按照用戶輸入的起飛地點(diǎn)和目的地到結(jié)構(gòu)體flight數(shù)組A中查找相應(yīng)的航班 
      	         {
      	       	   printf("%s\t%s        \t%s  \t%d\n", A[i].fliname, A[i].sp, A[i].de, A[i].num1-A[i].num2);
      	       	   num ++ ;
      			   flag = 0;
      		     }
      	   }  
      	   
          if(flag == 1)
      	   {
      	   	 printf("無       %s            %s      0\n", sp, de); 
      	   }	 
      	    
      	printf("本次共計(jì)為您查詢到%d次航班!\n\n", num);
      }
       
       
      void booking() // 訂票預(yù)約
      {
      	    int i, flag = 0;
      	    
      	    printf("請輸入航班號:");
      	    scanf("%s", B[count2].fliname);
      	    
      	    for(i=0; i<count1; i++)
      	       if( strcmp(B[count2].fliname, A[i].fliname)==0 && A[i].num1-A[i].num2>0 )
      	          {
      	          	flag = 1;
      	          	break;
      			  }
      	         
      	    if(flag == 1) 
      		  { 
      		    int j = -1;
      		    
      			printf("姓名:");
      			scanf("%s", B[count2].na);
      			printf("身份證號:");
      			scanf("%s", B[count2].id);
      			printf("手機(jī)號:");
      			scanf("%s", B[count2].ph);
      			printf("請您確認(rèn)輸入的信息:\n航班號:%s\n姓名:%s\n身份證號:%s\n手機(jī)號:%s\n", B[count2].fliname, B[count2].na, B[count2].id, B[count2].ph);
      			printf("輸入數(shù)字1確認(rèn)預(yù)約該航班,輸入數(shù)字2重新選擇訂票預(yù)約:");
      			scanf("%d", &j); 
      		
      			if(j == 1)
      			   {
      			   	  B[count2].st=1;
      			   	  count2 ++ ;
      	   	          A[i].num2 ++ ; // 預(yù)約成功后相應(yīng)的航班的已訂出票數(shù)++
      	   	          save2();
      	   	          save1();
      	   	          printf("您已成功預(yù)約航班號為%s從%s出發(fā)到達(dá)%s的航班!祝您旅途愉快!\n\n", B[count2-1].fliname, A[i].sp,A[i].de);
      			   }
      			   	 
      		    else
      		       printf("請您重新選擇訂票預(yù)約!\n\n");
      	      }  
      	      
      		else
      		    printf("該航班不存在或是該航班已無可預(yù)約座位,請重新選擇訂票預(yù)約并輸入存在的航班號!\n\n");
      }
       
       
      void unsubscribe() // 退訂
      {
      	    int i, flag=0;
      	    char fliname[10];  // 航班號 
            	char na[50];       // 姓名 
            	char id[19];       // 身份證號 
            	char ph[30];       // 手機(jī)號 
            	int  st;           // 狀態(tài)(1表示已經(jīng)預(yù)約,0則表示已經(jīng)退訂) 
            	
      	    printf("請輸入航班號:");
      	    scanf("%s", fliname);
      		printf("姓名:");
      		scanf("%s", na);
      		printf("身份證號:");
      		scanf("%s", id);
      		printf("手機(jī)號:");
      		scanf("%s", ph);
      		
      		for(i=0; i<count2; i++)
      	       if(  strcmp(fliname, B[i].fliname)==0 && strcmp(na, B[i].na)==0 && strcmp(id, B[i].id)==0 && strcmp(ph, B[i].ph)==0  )
      	          {
      	          	flag = B[i].st;
      	          	break;
      			  }
      		
      		if(flag == 1)
      		  {
      		  	printf("請輸入數(shù)字0確認(rèn)退訂該航班:");
      			scanf("%d", &B[i].st); 
      			while(B[i].st != 0)
      			     {
      			       printf("請輸入數(shù)字0確認(rèn)退訂該航班:");
      			       scanf("%d",&B[i].st); 
      				 }
      			save2();	 
      				 
      	   	    for(i=0; i<count1; i++)
      	   	       if(strcmp(fliname, A[i].fliname) == 0)
      	   	          break;
      	   	    A[i].num2 -- ; // 退訂成功后相應(yīng)的航班的已訂出票數(shù)--
      	   	    save1();
      	   	    
      	   	    printf("您已成功退訂航班號為%s從%s出發(fā)到達(dá)%s的航班!\n\n", fliname,A[i].sp, A[i].de);
      	      }
      	      
      		else
      		    printf("該航班未被您預(yù)約,請重新選擇退訂并輸入您已預(yù)約的航班號!\n\n");
      }
       
       
      void information() // 訂票信息查詢
      {
      	int i,j,flag = 1;
      	char fliname[10];  // 航班號 
          char na[50];       // 姓名 
          char id[19];       // 身份證號 
          char ph[30];       // 手機(jī)號 
          
          printf("航班號:"); 
          scanf("%s", fliname);
      	printf("姓名:");
      	scanf("%s", na);
      	printf("身份證號:");
      	scanf("%s", id);
      	printf("手機(jī)號:");
      	scanf("%s", ph);
      	
      	for(i=0; i<count2; i++)
      	   if(strcmp(fliname, B[i].fliname)==0 && strcmp(na, B[i].na)==0 && strcmp(id, B[i].id)==0 && strcmp(ph, B[i].ph)==0 && B[i].st==1)
      	    {
      	      flag = 0;
      	   	  for(j=0; j<count1; j++)
      	        if(strcmp(fliname, A[j].fliname)==0)
      		      {
      		      	printf("訂票信息查詢成功,信息如下:\n");
      		      	printf("航班號\t起飛地點(diǎn)\t目的地\n");
      		      	printf("%s\t%s\t        %s\n\n", A[j].fliname, A[j].sp, A[j].de);
      		      	break;
      			  }
      		  break;
      	    }
      	
      	if(flag) printf("未查詢到您的航班,請重新輸入信息查詢!\n\n"); 
      }
       
       
      int main()
      {
      	init(); // 初始化
      	
      	int choice;
      	
      	while(1)
      	{ 
      		menu(); // 菜單
      		
      		scanf("%d", &choice);
      		
      		switch(choice)
      		{
      			case 1: input(); break;                    // 輸入航班信息
      			case 2: show(); break;                     // 輸出航班信息
      			case 3: find(); break;                     // 查找航班信息
      			case 4: booking(); break;                  // 訂票預(yù)約
      			case 5: unsubscribe(); break;              // 退訂
      			case 6: information(); break;              // 訂票信息查詢 
      			case 7: exit(0); break;                    // 退出系統(tǒng)
      		}
      	}
      	
      	return 0;
      }
      

      四、源代碼運(yùn)行截圖





      五、思考與見解
      1、結(jié)構(gòu)體設(shè)計(jì)小問題:個(gè)人認(rèn)為飛機(jī)航班信息必不可少的除了博主設(shè)置的這幾項(xiàng)之外,預(yù)定機(jī)票的用戶一定要知道的是飛機(jī)起降時(shí)間和票價(jià);
      解決:在航班結(jié)構(gòu)體中加上起飛時(shí)間st、降落時(shí)間et和票價(jià)price,將相應(yīng)的文件輸入、輸出也做相應(yīng)的改變;
      2、(增加功能)修改航班信息:航班信息的改動(dòng)是不可避免的,因此決定添加此功能。
      3、(增加功能)刪除航班信息:飛機(jī)的飛行是由很多因素決定的,例如,天氣情況對飛行也有著決定性的作用,因此,航空人員會修改航班飛行時(shí)間,或者直接暫停此飛行路線。
      4、(增加功能)修改訂票信息:從用戶的角度考慮,預(yù)定機(jī)票(搶票)是在很快速的時(shí)間段內(nèi)完成的,一般搶票成功之后都需要查看一下自己的訂單,用戶因此也無法很確切地知道自己地訂票信息是否是正確的,為了保證用戶自己出行便利,如有差錯(cuò),可使用此功能修改自己地訂票信息。

      六、改動(dòng)后的代碼(對原來的代碼大部分都有改動(dòng),所以全部代碼都被附上)

      點(diǎn)擊查看代碼
      #include <stdio.h>
      #include <string.h>
      #include <stdlib.h>
      #define M 9999
       
       
      struct flight // 航班 
            {
            	int fliname;  // 航班號 
            	char sp[36];       // 起飛地點(diǎn) 
            	char de[36];       // 目的地 
            	int  num1;         // 座位數(shù)
      		int  num2;         // 已訂出票數(shù)
      		char st[10];        //起飛時(shí)間
      		char et[10];       //降落時(shí)間
      		int price;        //票價(jià)
            };
      struct book // 預(yù)定 
            {
      	    int fliname;  // 航班號 
            	char na[50];       // 姓名 
            	char id[19];       // 身份證號(至多18位數(shù)) 
            	char ph[30];       // 手機(jī)號 
            	int  st;           // 狀態(tài)(1表示已經(jīng)預(yù)約,0則表示已經(jīng)退訂) 
      	  };
       
       
      FILE * fp1;
      FILE * fp2; 
      int count1 = 0;
      int count2 = 0;
      struct flight A[M];
      struct book   B[M];
       
       
      void init() // 初始化 
      {
      	fp1 = fopen("flightfile.txt", "r");
          if(fp1 == NULL)
              printf("can't open the flightfile! \n");
          else
      	{
      	  // 將文件指針移動(dòng)到文件開頭
      	  fseek(fp1, 0, SEEK_SET);
      	  
      	  // 從文件flightfile.txt中格式化讀取數(shù)據(jù)
      	  while(fscanf(fp1, "%d %s %s %d %d %s %s %d", A[count1].fliname, A[count1].sp, A[count1].de, &A[count1].num1, &A[count1].num2, A[count1].st, A[count1].et, &A[count1].price) == 8) count1 ++ ;
      	}
      	fclose(fp1);
      	
      	fp2= fopen("bookfile.txt", "r");
      	if(fp2 == NULL)
              printf("can't open the bookfile! \n");
          else
      	{
      	  // 將文件指針移動(dòng)到文件開頭
      	  fseek(fp2, 0, SEEK_SET); 
      	  
      	  // 從文件bookfile.txt中格式化讀取數(shù)據(jù)
      	  while(fscanf(fp2, "%d %s %s %s %d", B[count2].fliname, B[count2].na, B[count2].id, B[count2].ph, &B[count2].st) == 5) count2 ++ ;
      	}
      	fclose(fp2);
      }
       
       
      void menu() // 菜單 
      {
      	printf("請輸入你的選擇:\n");
      	printf("1.輸入航班信息\n");
      	printf("2.輸出航班信息\n");
      	printf("3.查找航班信息\n");
      	printf("4.訂票預(yù)約\n");
      	printf("5.退訂\n");
      	printf("6.訂票信息查詢\n");
      	printf("7.刪除飛機(jī)信息\n");
      	printf("8.退出\n");
      }
       
       
      void save1() // 保存1(向flightfile.txt中保存) 
      {
      	int i;
      	
          fp1 = fopen("flightfile.txt", "w+");
          
          fseek(fp1, 0, SEEK_SET); // 將文件指針移動(dòng)到文件開頭
      	for(i=0; i<count1; i++) // 將數(shù)據(jù)格式化輸出到文件flightfile.txt中
      		fprintf(fp1, "%d %s %s %d %d %s %s %d\n", &A[i].fliname, A[i].sp, A[i].de, A[i].num1, A[i].num2, &A[i].st, &A[i].et, &A[i].price); 
      		
      	fclose(fp1);
      }
       
       
      void save2() // 保存2(向bookfile.txt中保存) 
      {
      	int i;
      	
          fp2 = fopen("bookfile.txt", "w+");
          
          fseek(fp2, 0, SEEK_SET); // 將文件指針移動(dòng)到文件開頭
      	for(i=0; i<count2; i++) // 將數(shù)據(jù)格式化輸出到文件bookfile.txt中
      		fprintf(fp2, "%d %s %s %s %d\n", B[i].fliname, B[i].na, B[i].id, B[i].ph, B[i].st); 
      		
      	fclose(fp2);
      }
       
       
      void input() // 輸入航班信息
      {
      	int i,flag=1;
      	
      	printf("請輸入航班號:");
          scanf("%d", A[count1].fliname);
          
          for(i=0; i<count1; i++) // 判定航班號是否已經(jīng)存在! 
      	    if(A[count1].fliname==A[i].fliname) 
      	        {
      	        	printf("該航班號已存在,請重新選擇輸入航班信息并輸入!\n\n");
      	          	flag = 0;
      	          	break;
      		    }
      		    
          if(flag == 1)
            {
          	printf("起飛地點(diǎn):");
      		scanf("%s", A[count1].sp);
      		printf("目的地:");
      		scanf("%s", A[count1].de);
      		printf("座位數(shù):");
      		scanf("%d", &A[count1].num1);
      		printf("已訂出票數(shù):");
      		scanf("%d", &A[count1].num2);
      		printf("起飛時(shí)間:");
      		scanf("%s", A[count1].st);
      		printf("落地時(shí)間:");
      		scanf("%s", A[count1].et);
      		printf("票價(jià):");
      		scanf("%d", &A[count1].price);
      		printf("\n");
      		
      		count1 ++ ;
      		save1();
      	  }
      }
       
       
      void show() // 輸出航班信息
      {
      	int i;
      	for(i=0; i<count1; i++)                                                                   
      	   {
       	      printf("航班號:%s 起飛時(shí)間:%s 目的地:%s 剩余座位數(shù):%d 起飛時(shí)間:%s 降落時(shí)間:%s 票價(jià):%d\n", A[i].fliname, A[i].sp, A[i].de, A[i].num1-A[i].num2,A[i].st,A[i].et,A[i].price);
       	   }
       	   
       	printf("\n");
      }
       
       
      void find() // 查找航班信息(按線路查詢)
      {
      	int i, num=0, flag=1;
      	char sp[36];
      	char de[36];
      	
      	printf("請輸入起飛地點(diǎn):");
      	scanf("%s", sp);
      	printf("請輸入目的地:"); 
      	scanf("%s", de);
      	
      	//printf("航班號\t起飛地點(diǎn)\t目的地\t剩余座位數(shù)\t起飛時(shí)間\t落地時(shí)間\t票價(jià)\n");
      	for(i=0; i<count1; i++)
      	   {
      	   	  if(strcmp(sp, A[i].sp)==0 && strcmp(de, A[i].de)==0) // 按照用戶輸入的起飛地點(diǎn)和目的地到結(jié)構(gòu)體flight數(shù)組A中查找相應(yīng)的航班 
      	         {
      	       	   printf("航班號:%s 起飛地點(diǎn):%s 目的地:%s 剩余座位數(shù):%d 起飛時(shí)間:%s 落地時(shí)間:%s 票價(jià):%d\n", A[i].fliname, A[i].sp, A[i].de, A[i].num1-A[i].num2,A[i].st,A[i].et,A[i].price);
      	       	   num ++ ;
      			   flag = 0;
      		     }
      	   }  
      	   
          if(flag == 1)
      	   {
      	   	 printf("無       %s            %s      0\n", sp, de); 
      	   }	 
      	    
      	printf("本次共計(jì)為您查詢到%d次航班!\n\n", num);
      }
       
       
      void booking() // 訂票預(yù)約
      {
      	    int i, flag = 0;
      	    
      	    printf("請輸入航班號:");
      	    scanf("%s", B[count2].fliname);
      	    
      	    for(i=0; i<count1; i++)
      	       if( (B[count2].fliname==A[i].fliname) && A[i].num1-A[i].num2>0 )
      	          {
      	          	flag = 1;
      	          	break;
      			  }
      	         
      	    if(flag == 1) 
      		  { 
      		    int j = -1;
      		    
      			printf("姓名:");
      			scanf("%s", B[count2].na);
      			printf("身份證號:");
      			scanf("%s", B[count2].id);
      			printf("手機(jī)號:");
      			scanf("%s", B[count2].ph);
      			printf("請您確認(rèn)輸入的信息:\n航班號:%s\n姓名:%s\n身份證號:%s\n手機(jī)號:%s\n", B[count2].fliname, B[count2].na, B[count2].id, B[count2].ph);
      			printf("輸入數(shù)字1確認(rèn)預(yù)約該航班,輸入數(shù)字2重新選擇訂票預(yù)約:");
      			scanf("%d", &j); 
      		
      			if(j == 1)
      			   {
      			   	  B[count2].st=1;
      			   	  count2 ++ ;
      	   	          A[i].num2 ++ ; // 預(yù)約成功后相應(yīng)的航班的已訂出票數(shù)++
      	   	          save2();
      	   	          save1();
      	   	          printf("您已成功預(yù)約航班號為%s從%s出發(fā)到達(dá)%s的航班!祝您旅途愉快!\n\n", B[count2-1].fliname, A[i].sp,A[i].de);
      			   }
      			   	 
      		    else
      		       printf("請您重新選擇訂票預(yù)約!\n\n");
      	      }  
      	      
      		else
      		    printf("該航班不存在或是該航班已無可預(yù)約座位,請重新選擇訂票預(yù)約并輸入存在的航班號!\n\n");
      }
       
       
      void unsubscribe() // 退訂
      {
      	    int i, flag=0;
      	    int fliname;  // 航班號 
            	char na[50];       // 姓名 
            	char id[19];       // 身份證號 
            	char ph[30];       // 手機(jī)號 
            	int  st;           // 狀態(tài)(1表示已經(jīng)預(yù)約,0則表示已經(jīng)退訂) 
            	
      	    printf("請輸入航班號:");
      	    scanf("%d", fliname);
      		printf("姓名:");
      		scanf("%s", na);
      		printf("身份證號:");
      		scanf("%s", id);
      		printf("手機(jī)號:");
      		scanf("%s", ph);
      		
      		for(i=0; i<count2; i++)
      		{
      		if (fliname==B[i].fliname)
      	       {
      	       	if(strcmp(na, B[i].na)==0 && strcmp(id, B[i].id)==0 && strcmp(ph, B[i].ph)==0  )
      	       	{
      	          	flag = B[i].st;
      	          	break;
      			  }
      		   }	
      		}
      	       
      	          
      		
      		if(flag == 1)
      		  {
      		  	printf("請輸入數(shù)字0確認(rèn)退訂該航班:");
      			scanf("%d", &B[i].st); 
      			while(B[i].st != 0)
      			     {
      			       printf("請輸入數(shù)字0確認(rèn)退訂該航班:");
      			       scanf("%d",&B[i].st); 
      				 }
      			save2();	 
      				 
      	   	    for(i=0; i<count1; i++)
      	   	       if(fliname==A[i].fliname) 
      	   	          break;
      	   	    A[i].num2 -- ; // 退訂成功后相應(yīng)的航班的已訂出票數(shù)--
      	   	    save1();
      	   	    
      	   	    printf("您已成功退訂航班號為%d從%s出發(fā)到達(dá)%s的航班!\n\n", fliname,A[i].sp, A[i].de);
      	      }
      	      
      		else
      		    printf("該航班未被您預(yù)約,請重新選擇退訂并輸入您已預(yù)約的航班號!\n\n");
      }
       
       
      void information() // 訂票信息查詢
      {
      	int i,j,flag = 1;
      	int fliname;  // 航班號 
          char na[50];       // 姓名 
          char id[19];       // 身份證號 
          char ph[30];       // 手機(jī)號 
          
          printf("航班號:"); 
          scanf("%d", fliname);
      	printf("姓名:");
      	scanf("%s", na);
      	printf("身份證號:");
      	scanf("%s", id);
      	printf("手機(jī)號:");
      	scanf("%s", ph);
      	
      	for(i=0; i<count2; i++)
      	{
      	   if(fliname==B[i].fliname)
      	   { 
      	    if(strcmp(na, B[i].na)==0 && strcmp(id, B[i].id)==0 && strcmp(ph, B[i].ph)==0 )
      		{
      			if(B[i].st==1)
      			{
      			flag = 0;
      	   	  for(j=0; j<count1; j++)
      	        if(fliname==A[j].fliname)
      		      {
      		      	printf("訂票信息查詢成功,信息如下:\n");
      		      	printf("航班號\t起飛地點(diǎn)\t目的地\n");
      		      	printf("%d\t%s\t        %s\n\n", A[j].fliname, A[j].sp, A[j].de);
      		      	break;
      			  }
      		  break;	
      			}
      	      
      	    }
      	}
      }
      	
      	if(flag) printf("未查詢到您的航班,請重新輸入信息查詢!\n\n"); 
      }
       
      void deleteflight()              //刪除模塊
      {
      	int fliname;  // 航班號 
            	char sp[36];       // 起飛地點(diǎn) 
            	char de[36];       // 目的地 
            	int  num1;         // 座位數(shù)
      		//int  num2;         // 已訂出票數(shù)
      		char st[10];        //起飛時(shí)間
      		//char et[10];       //降落時(shí)間
      		int price;        //票價(jià)	
      char sp1[20];
      char de1[20];
      char sysm[]="jim007";
      char youm[20];
      int i,w,p,q,k=0;
      printf("請輸入密碼:  ");
      scanf("%s",youm) ;           
      if(strcmp(sysm,youm)!=0)   
       {
                      printf("輸入密碼錯(cuò)誤!請確認(rèn)您是否是票務(wù)人員,如不是,請按任意鍵返回菜單重新選擇" );
      getchar();                         
       //getchar();
      //home();
      }
      else
          printf("1.按航班號刪除 \n");
          printf("2.按航線刪除 \n");
          printf("請?jiān)?-2中選擇刪除方式: ");
          scanf("%d",&q);            
          switch(q)
          {
          case 1:
           printf("請輸入航班號: ");
           scanf("%d",&p);            
           break;                   
          case 2:
           printf("請輸入起飛地點(diǎn): ");
           scanf("%s",&sp);        
           printf("請輸入降落地點(diǎn): ");
           scanf("%s",&de);         
           break;            
          }
       printf("\n\n航班號\t起飛地點(diǎn)\t降落地點(diǎn)\t起飛時(shí)間\t票價(jià)\t機(jī)票數(shù) \n\n");     
      for(i=0;i<=2;i++)
      {
      if(q==1&&A[i].fliname==p)
      {
        k++; 
        printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",A[i].fliname,A[i].sp,A[i].de,A[i].st,A[i].price,A[i].num1);
       } 
      if(q==2&&strcmp(A[i].sp,sp1)==0&&strcmp(A[i].de,de1)==0)
        { 
        k++;
        printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",A[i].fliname,A[i].sp,A[i].de,A[i].st,A[i].price,A[i].num1);
      }
      }
      if(k=0)
      printf("沒有找到此航班,無法刪除!");
      else   
      printf("確定刪除請按 1 否則請按 0:\n\n");
          scanf("%d",&w);
        if(w==1)
      for(i=0;i<=k;i++)
      {
        A[i].fliname=0;                       
        strcpy(A[i].sp,"0");           
        strcpy(A[i].de,"0");             
        strcpy(A[i].st,"0");
        A[i].price=0;         
        A[i].num1=0;
      }      
          getchar();                         
       //getchar();
      //home();
      }
      
       
      int main()
      {
      	init(); // 初始化
      	
      	int choice;
      	
      	while(1)
      	{ 
      		menu(); // 菜單
      		
      		scanf("%d", &choice);
      		
      		switch(choice)
      		{
      			case 1: input(); break;                    // 輸入航班信息
      			case 2: show(); break;                     // 輸出航班信息
      			case 3: find(); break;                     // 查找航班信息
      			case 4: booking(); break;                  // 訂票預(yù)約
      			case 5: unsubscribe(); break;              // 退訂
      			case 6: information(); break;              // 訂票信息查詢 
      			case 7: deleteflight();break;              // 退出系統(tǒng)   
      			case 8: exit(0); break;      
      			
      	}
      	
      	return 0;
      }
      }
      
      
      
      
      

      七、測試截圖

      八、總結(jié)反思
      1、首先是此次逆向軟件工程學(xué)習(xí)的不足之處,沒有做出來修改飛機(jī)訂票系統(tǒng)的修改航空信息這一項(xiàng),原因是:原作者的所有代碼里沒有使用指針,這使得修改這一操作編寫起來有難度,沒有做出來,就先編寫出了刪除飛機(jī)信息的功能,這功能在一定程度上彌補(bǔ)了修改信息的功能,如需要修改航班信息,可先直接刪除,再重新錄入;
      2、逆向軟件工程的優(yōu)缺點(diǎn):優(yōu)點(diǎn)是不用從0開始完成系統(tǒng)的編寫,看到初步形成的代碼,利于自己著力于思考提升的空間;缺點(diǎn)是每個(gè)代碼編寫者的思路和標(biāo)識方式都是不同的,還是需要花費(fèi)時(shí)間去整理出整個(gè)源代碼的思路;
      3、就我個(gè)人而言,目前來說,最難的點(diǎn)是編寫代碼這部分,需要多加練習(xí);就這次的自己整改,雖然添加的新功能不多,但是由于添加了新的結(jié)構(gòu)體元素進(jìn)去,需要改動(dòng)的地方較多,加上后續(xù)添加的刪除功能,調(diào)試花費(fèi)了最長的時(shí)間,總結(jié)來說,我的代碼編寫能力需得努力提高。

      posted on 2024-03-06 23:14  MMMmmmmmm·Tt  閱讀(66)  評論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 国产精品成熟老女人| 亚洲熟妇少妇任你躁在线观看无码| 亚洲中文久久久久久精品国产| 午夜DY888国产精品影院| 成码无人AV片在线电影网站| 亚洲一本大道无码av天堂| 国产精品亚洲综合久久小说| 最新的国产成人精品2022| 久久99热只有频精品8| 99re6在线视频精品免费下载| 中文国产日韩欧美二视频| 久久精品免视看成人国产| 久久精品国产亚洲AV麻豆长发| 97超级碰碰碰碰久久久久| 亚洲啪啪精品一区二区的| 国产羞羞的视频一区二区| 亚洲成aⅴ人在线观看| 亚洲午夜无码久久久久蜜臀av | 亚洲av免费成人精品区| 久久精品久久电影免费理论片| 国产无遮挡又黄又爽不要vip软件| 无遮高潮国产免费观看| 国产欧美在线手机视频| 亚洲欧美人成电影在线观看| 亚洲综合无码明星蕉在线视频| 国产综合色在线精品| 潮喷无码正在播放| 亚洲综合小综合中文字幕| 无码国产欧美一区二区三区不卡| 欧美人与禽2o2o性论交| 男女爽爽无遮挡午夜视频| 亚洲avav天堂av在线网爱情| 中文字幕亚洲综合久久青草| 无码av中文字幕久久专区| 亚洲国产一区二区三区四| 内射极品少妇xxxxxhd| 高清自拍亚洲精品二区| 亚洲综合精品一区二区三区| 18禁无遮挡啪啪无码网站破解版| 亚洲 中文 欧美 日韩 在线| 河北真实伦对白精彩脏话|