航班售票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計實驗報告</p><p><b>  二、應(yīng)用題 </b></p><p>  航班信息的查詢與檢索</p><p>  該設(shè)計要求對飛機航班信息進行排序和查找??砂春桨嗟暮桨嗵?、起點站、終點站、起飛時間以及到達時間等信息進行查詢。</p><p>  對于本設(shè)計,先按關(guān)鍵字對航

2、班記錄進行排序,然后利用二分查找法對排好序的航班記錄按關(guān)鍵字實現(xiàn)快速查找,注意,滿足條件的記錄可能有多條。</p><p>  每個航班記錄包括八項,分別是:航班號、起點站、終點站、班期、起飛時間、到達時間、飛機型號以及票價等,假設(shè)航班信息表(8條記錄)如下表8-1所示。</p><p>  其中航班號一項的格式為:CZ3869,其中CZ是航空公司的別稱,用兩個大寫字母表示,后4位為航班編

3、號,這種航班號關(guān)鍵字可分成兩段,即字母和數(shù)字。其余七項輸入內(nèi)容因為不涉及本設(shè)計的核心,因此除了票價為數(shù)值型外,均定義為字符串型即可??稍黾佑喥惫芾砟K。</p><p><b>  一、需求分析 </b></p><p>  為達到題目的設(shè)計要求,選用文件讀取方式來存儲和讀取航班信息。因此可分為以下幾個板塊設(shè)計系統(tǒng)。</p><p>  voi

4、d add(); //函數(shù)聲明增加航班信息函數(shù)</p><p>  void print(); //顯示航班信息</p><p>  int search();//查找航班信息</p><p>  void dingpiao(); //訂票</p><p>  void tuipiao();//退票</p&

5、gt;<p>  void read(); //讀取文件</p><p>  void save(); //保存文件</p><p>  void output();//輸出格式</p><p>  void chushihua();//系統(tǒng)初始化</p><p>  void build();

6、//建立數(shù)據(jù)文件</p><p>  void paixu(int c);//按航班號從小到大排序</p><p><b>  二、環(huán)境說明 </b></p><p>  計算機品牌:戴爾7520</p><p>  計算機系統(tǒng):windows7</p><p>  計算機硬件配置:處理器Int

7、el i7-3612QMCPU</p><p><b>  內(nèi)存 8.00GB</b></p><p>  系統(tǒng)類型 64位操作系統(tǒng)</p><p>  編譯軟件:C-free5、Visual C++6.0</p><p><b>  三、詳細(xì)設(shè)計: </b></p><p>

8、;<b>  算法說明:</b></p><p>  子函數(shù)add()聲明增加航班信息函數(shù)</p><p>  子函數(shù)print()顯示航班信息</p><p>  子函數(shù)search()功能為查找航班信息,使用二分查找法查找所需航班信息,使用關(guān)鍵字查找方法</p><p>  子函數(shù)dingpiao實現(xiàn)訂票功能<

9、/p><p>  子函數(shù)tuipiao()實現(xiàn)退票功能</p><p>  子函數(shù)read()可從文件中讀取數(shù)據(jù)</p><p>  子函數(shù)save()保存數(shù)據(jù)到文件中</p><p>  子函數(shù)output()輸出航班信息</p><p>  子函數(shù)initialize()判斷是否已有存儲航班信息的文件</p&

10、gt;<p>  子函數(shù)build() 如沒有航班信息則新建立數(shù)據(jù)文件</p><p>  子函數(shù) paixu()用選擇排序法實現(xiàn)排序功能,按航班號從小到大排序</p><p><b>  存儲結(jié)構(gòu):</b></p><p>  本設(shè)計在程序中將航班信息用結(jié)構(gòu)數(shù)組進行存儲,程序結(jié)束后使用文本文件進行信息的讀入存儲。在下一次運行程序

11、時可以再次讀取該文件信息,并在程序中進行修改。</p><p><b>  流程圖:</b></p><p><b>  沒有文件信息</b></p><p><b>  有文件信息</b></p><p><b>  源代碼及程序說明:</b></

12、p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<process.h>//包含access函數(shù)的頭文件</p><p>  #include<conio.h></p><p

13、>  #define N 100//定義最多的航班數(shù)</p><p>  #define PRINT " %s\t\t%s %s 星期%s\t\t%d\t\t%d\t\t%s\t\t%d\t\t%d \n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].takeoff,s[i].arrive,s[i].typ

14、e,s[i].price,s[i].count </p><p>  struct air </p><p><b>  {</b></p><p>  char num[20];//航班號</p><p>  char start[20]; //起始站</p><p

15、>  char over[20];//終點站</p><p>  char time[40];//班期</p><p>  int takeoff; //起飛時間 </p><p>  int arrive; //到達時間</p><p>  char type[10];

16、 //機型 </p><p>  int price; //機票價格 </p><p>  int count;//機票數(shù)量</p><p><b>  }s[N];</b></p><p>  int i,m=0,j; //定義全局變量,m為航班數(shù) </p&g

17、t;<p>  char ii[10]; //操作判斷yes或no </p><p>  void add(); //函數(shù)聲明增加航班信息函數(shù)</p><p>  void print(); //顯示航班信息</p><p>  int search();//查找航班信息</p><p>

18、  void dingpiao();//訂票</p><p>  void tuipiao();//退票</p><p>  void read();//讀取文件</p><p>  void save();//保存文件</p><p>  void output();//輸出格式</p><p>

19、;  void initialize();//系統(tǒng)初始化</p><p>  void build();//建立數(shù)據(jù)文件</p><p>  void paixu(int c);//按航班號從小到大排序</p><p>  int main()</p><p><b>  {</b></p>

20、<p><b>  int j; </b></p><p>  initialize();//系統(tǒng)初始化判斷是否存在原始數(shù)據(jù)文件</p><p>  printf("\n");</p><p>  printf(" ==============================

21、 \n"); </p><p>  printf(" ==歡迎使用航班信息管理系統(tǒng)!== \n ");</p><p>  printf(" ============================== \n"); </p><p><b>  do&l

22、t;/b></p><p><b>  { </b></p><p>  printf(" ==== 1.增加航班信息 ====\n"</p><p>  " ==== 2.瀏覽航班信息 ====\n"</p><p>  " ==== 3.查找航班信息

23、 ====\n"</p><p>  " ==== 4.訂票業(yè)務(wù) ====\n" </p><p>  " ==== 5.退票業(yè)務(wù) ====\n"</p><p>  " ==== 0.退出 ====\n");</p><p>  printf(" ===

24、===========================\n"); </p><p>  printf("請在0-6中選擇以回車鍵結(jié)束: ");</p><p>  scanf("%d",&j);</p><p><b>  switch(j)</b></p><p&

25、gt;<b>  {</b></p><p>  case 1: add();</p><p><b>  break;</b></p><p>  case 2:print();</p><p><b>  break;</b></p><p>

26、;  case 3:search();</p><p><b>  break;</b></p><p>  case 4:dingpiao();</p><p><b>  break;</b></p><p>  case 5:tuipiao();</p><p>

27、<b>  break; </b></p><p>  case 0:</p><p><b>  save();</b></p><p>  printf("\n謝謝使用,再見!");</p><p><b>  break;</b></p&g

28、t;<p><b>  }</b></p><p>  }while(j!=0);//判斷是否調(diào)用其他函數(shù)</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void initialize()

29、//定義系統(tǒng)初始化函數(shù)</p><p><b>  {</b></p><p>  if(access("C:\\hangban.txt",0)) //確定文件或文件夾的訪問權(quán)限。即檢查某個文件的存取方式,比如//說是只讀方式、只寫方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。</p><p>&l

30、t;b>  {</b></p><p><b>  build();</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  read();</b></p>

31、<p><b>  }</b></p><p>  void build()//定義建立數(shù)據(jù)文件函數(shù)</p><p><b>  {</b></p><p>  FILE *fp;</p><p>  if((fp=fopen("C:\\hangban.txt&qu

32、ot;,"wb"))==NULL)//打開文件并判定是否出錯 </p><p><b>  {</b></p><p>  printf("創(chuàng)建文件失敗! ");</p><p>  getchar();</p><p><b>  return;</b&

33、gt;</p><p><b>  }</b></p><p>  printf(" =======================\n");</p><p>  printf(" 請依次輸入航班信息:\n"); </p><p>  printf("

34、 =======================\n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf("請輸入航班號: "); </p><p>  scanf("%s",&

35、amp;s[i].num);</p><p>  printf("請輸入起始站: ");</p><p>  scanf("%s",s[i].start);</p><p>  printf("請輸入終點站: ");</p><p>  scanf("%s"

36、;,s[i].over);</p><p>  printf("請輸入班期(星期幾): ");</p><p>  scanf("%s",s[i].time);</p><p>  printf("請輸入起飛時間:"); </p><p>  scanf("%d

37、",&s[i].takeoff); </p><p>  printf("請輸入到達時間:");</p><p>  scanf("%d",&s[i].arrive); </p><p>  printf("請輸入航班的機型:");</p><p>

38、;  scanf("%s",s[i].type); </p><p>  printf("請輸入航班機票價格:");</p><p>  scanf("%d",&s[i].price);</p><p>  printf("請輸入機票數(shù): ");</p>

39、<p>  scanf("%d",&s[i].count);</p><p>  fwrite(&s[i],sizeof(struct air),1,fp);</p><p><b>  m++;</b></p><p>  printf("\n添加完畢,是否繼續(xù)添加? 請鍵入y或n以

40、回車鍵結(jié)束:");</p><p>  scanf("%s",ii);</p><p>  printf("\n");</p><p>  if(strcmp(ii,"y")!=0)//判斷是否繼續(xù)添加航班信息</p><p><b>  {</b&g

41、t;</p><p>  fclose(fp);//關(guān)閉文件</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&

42、gt;</p><p>  void read() //定義讀取文件函數(shù)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("C:\\hangban.txt","

43、;r"))==NULL)</p><p><b>  {</b></p><p>  printf("創(chuàng)建文件失敗! ");</p><p>  getchar();</p><p><b>  return;</b></p><p><b

44、>  }</b></p><p><b>  i=0;</b></p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  fread(&s[i],sizeof(struct air),1,fp);//逐塊讀取數(shù)據(jù)&

45、lt;/p><p><b>  i++;</b></p><p>  m++; //計算存在航班數(shù)</p><p><b>  }</b></p><p><b>  m--;</b></p><

46、p>  fclose(fp);</p><p><b>  }</b></p><p>  void save()//定義保存函數(shù)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>

47、  if((fp=fopen("C:\\hangban.txt","w"))==NULL) </p><p><b>  {</b></p><p>  printf("創(chuàng)建文件失敗! ");</p><p>  getchar();</p><p><

48、b>  return;</b></p><p><b>  }</b></p><p>  for(i=0;i<m;i++)//逐塊保存數(shù)據(jù)</p><p>  fwrite(&s[i],sizeof(struct air),1,fp);</p><p>  fclose(fp);&

49、lt;/p><p><b>  }</b></p><p>  void add()//定義增加航班信息函數(shù)</p><p><b>  {</b></p><p><b>  do{</b></p><p>  printf("請依次輸入您要

50、增加的航班信息(以回車鍵結(jié)束): \n"); </p><p>  printf("==================\n");</p><p>  printf("請輸入航班號: "); </p><p>  scanf("%s",&s[m].num);</p&

51、gt;<p>  printf("請輸入起始站: ");</p><p>  scanf("%s",s[m].start);</p><p>  printf("請輸入終點站: ");</p><p>  scanf("%s",s[m].over);</p&g

52、t;<p>  printf("請輸入班期(星期幾): ");</p><p>  scanf("%s",s[m].time);</p><p>  printf("請輸入起飛時間:"); </p><p>  scanf("%d",&s[m].takeof

53、f); </p><p>  printf("請輸入到達時間:");</p><p>  scanf("%d",&s[m].arrive); </p><p>  printf("請輸入航班的機型:");</p><p>  scanf("%s"

54、,s[m].type); </p><p>  printf("請輸入航班機票價格:");</p><p>  scanf("%d",&s[m].price);</p><p>  printf("請輸入機票數(shù): ");</p><p>  scanf("

55、%d",&s[m].count);</p><p><b>  m++;</b></p><p>  printf("\n添加完畢,是否繼續(xù)添加?請鍵入y或n以回車鍵結(jié)束:");</p><p>  scanf("%s",ii);</p><p>  }whil

56、e(!strcmp(ii,"y"));//判斷是否繼續(xù)添加</p><p><b>  }</b></p><p>  void output()//定義輸出格式函數(shù)</p><p><b>  {</b></p><p>  printf("\n航班號\t\t

57、起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格 \t\t機票數(shù)\n");</p><p>  for(i=0;i<m;i++)</p><p>  printf(PRINT);</p><p><b>  }</b></p><p>  void pri

58、nt()//定義顯示航班信息函數(shù)</p><p><b>  {</b></p><p>  printf("\n目前我們有如下航班:\n");</p><p>  output();//調(diào)用輸出格式函數(shù)</p><p>  printf("\n請按回車鍵返回上層菜單 "

59、);</p><p>  getchar();</p><p>  getchar();</p><p><b>  } </b></p><p>  int again(int c)</p><p><b>  {</b></p><p>  int

60、 start=0;</p><p>  int end=m-1;</p><p><b>  int time;</b></p><p>  char n[20];</p><p><b>  switch(c)</b></p><p><b>  {</b&

61、gt;</p><p><b>  case 1:</b></p><p>  printf("\n請輸入航班號: ");</p><p>  scanf("%s",n); //輸入查詢的航班號</p><p>  printf("\

62、n您所查找的航班信息為:\n ");</p><p>  paixu(c); //從小到大排序一次 </p><p>  while(start<=end)</p><p><b>  {</b></p><p>  j=(start+end)/2;&

63、lt;/p><p>  if(strcmp(s[j].num,n)==0) //二分查找法 </p><p><b>  {</b></p><p><b>  j=start;</b></p><p>  while(j<=end)</p><p><b> 

64、 {</b></p><p>  if(strcmp(s[j].num,n)==0)</p><p><b>  {</b></p><p>  printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p>

65、;<p>  printf("%s\t\t%s\t\t%s\t\t星期%s\t\t%d\t\t%d\t\t%s\t\t%d\t\t%d \n",s[j].num,s[j].start,s[j].over,s[j].time,s[j].takeoff,s[j].arrive,s[j].type,s[j].price,s[j].count);</p><p><b>  i

66、i=='n';</b></p><p><b>  i=j;</b></p><p><b>  }</b></p><p><b>  j++;</b></p><p><b>  }</b></p><p

67、><b>  break;</b></p><p><b>  } </b></p><p>  else if (strcmp(n,s[j].num)<0) </p><p><b>  end=j-1;</b></p><p>  else if(strc

68、mp(n,s[j].num)>0) </p><p>  start=j+1; </p><p>  if(start>end)</p><p><b>  { </b></p><p>  printf("對不起,沒有您需要的信息!");</p><p><

69、;b>  break;</b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  return 0;</b></p><p><b>  case 2:</b>

70、</p><p>  printf("請輸入起始站: ");</p><p>  scanf("%s",n);</p><p>  printf("\n您所查找的航班信息為:\n ");</p><p>  paixu(c); //

71、從小到大排序一次 </p><p>  while(start<=end)</p><p><b>  { </b></p><p>  i=(start+end)/2;</p><p>  if(strcmp(s[i].start,n)==0) //二分查找法 </p><p><

72、;b>  {</b></p><p><b>  i=start;</b></p><p>  while(i<=end)</p><p><b>  {</b></p><p>  if(strcmp(s[i].start,n)==0)</p><p&g

73、t;<b>  {</b></p><p>  printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p><p>  printf(PRINT);</p><p><b>  }i++;</b><

74、/p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  } </b></p><p>  else if (strcmp(n,s[i].start)<0) </p><p><b&

75、gt;  end=i-1;</b></p><p>  else if(strcmp(n,s[i].start)>0) </p><p>  start=i+1; </p><p>  if(start>end)</p><p><b>  { </b></p><p>

76、  printf("對不起,沒有您需要的信息!");</p><p><b>  break;</b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  return 0

77、;</b></p><p><b>  case 3:</b></p><p>  printf("請輸入終點站: ");</p><p>  scanf("%s",n); </p><p>  printf("\n您所查找的航班信息為:\n ");

78、</p><p>  paixu(c); //從小到大排序一次 </p><p>  while(start<=end)</p><p><b>  { </b></p><p>  i=(end+start)/2;</p><p>  

79、if(strcmp(s[i].over,n)==0) //二分查找法 </p><p><b>  {</b></p><p><b>  i=start;</b></p><p>  while(i<=end)</p><p><b>  {</b></p>

80、;<p>  if(strcmp(s[i].over,n)==0)</p><p><b>  {</b></p><p>  printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p><p>  printf

81、(PRINT);</p><p><b>  }i++;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  } </b></p><p>  else

82、 if (strcmp(n,s[i].over)<0) </p><p><b>  end=i-1;</b></p><p>  else if(strcmp(n,s[i].over)>0) </p><p>  start=i+1; </p><p>  if(start>end)</p>

83、;<p><b>  { </b></p><p>  printf("對不起,沒有您需要的信息!");</p><p><b>  break;</b></p><p><b>  } </b></p><p><b>

84、  }</b></p><p>  return 0; </p><p><b>  case 4: </b></p><p>  printf("請輸入起飛時間: ");</p><p>  scanf("%d",&time);</p>&l

85、t;p>  printf("\n您所查找的航班信息為:\n ");</p><p>  paixu(c); //從小到大排序一次 </p><p>  while(start<=end)</p><p><b>  {</b></p><

86、p>  i=(end+start)/2;</p><p>  if(s[i].takeoff==time) //二分查找法 </p><p><b>  {</b></p><p><b>  i=start;</b></p><p>  while(i<=end)</p>

87、<p><b>  {</b></p><p>  if(s[i].takeoff==time)</p><p><b>  {</b></p><p>  printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n

88、");</p><p>  printf(PRINT);</p><p><b>  }i++;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }

89、 </b></p><p>  else if (s[i].takeoff>time) </p><p><b>  end=i-1;</b></p><p>  else if(s[i].takeoff<time) </p><p>  start=i+1; </p><p&

90、gt;  if(start>end)</p><p><b>  { </b></p><p>  printf("對不起,沒有您需要的信息!");</p><p><b>  break;</b></p><p><b>  } </b>

91、</p><p><b>  }</b></p><p>  return 0; </p><p><b>  case 5:</b></p><p>  printf("請輸入到達時間: ");</p><p>  scanf("%d&qu

92、ot;,&time); </p><p>  printf("\n您所查找的航班信息為:\n ");</p><p>  paixu(c); //從小到大排序一次 </p><p>  while(start<=end)</p><p><b>

93、  {</b></p><p>  i=(end+start)/2;</p><p>  if(s[i].arrive==time) //二分查找法 </p><p><b>  {</b></p><p><b>  i=start;</b></p><p>

94、;  while(i<=end)</p><p><b>  {</b></p><p>  if(s[i].arrive==time)</p><p><b>  {</b></p><p>  printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t

95、\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p><p>  printf(PRINT);</p><p><b>  }i++;</b></p><p><b>  }</b></p><p><b>  break;</b></p&g

96、t;<p><b>  } </b></p><p>  else if (s[i].arrive>time) </p><p><b>  end=i-1;</b></p><p>  else if(s[i].arrive<time) </p><p>  sta

97、rt=i+1; </p><p>  if(start>end)</p><p><b>  { </b></p><p>  printf("對不起,沒有您需要的信息!");</p><p><b>  break;</b></p><p>&l

98、t;b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p>

99、<p>  int search()//定義查詢函數(shù)</p><p><b>  {</b></p><p>  char n[20];int c; </p><p><b>  do</b></p><p><b>  { </b></p>

100、<p>  printf("\n請選擇查詢方式: \n");</p><p>  printf(" ==== 1.按航班號查詢 ====\n"</p><p>  " ==== 2.按起始站查詢====\n"</p><p>  " ==== 3.按終點站查詢 ====\n&q

101、uot;</p><p>  " ==== 4.起飛時間 ====\n"</p><p>  " ==== 5.到達時間 ====\n" );</p><p>  scanf("%d",&c);</p><p><b>  again(c);</b>

102、</p><p>  printf("是否重新查找?請鍵入y或n以回車鍵結(jié)束 ");</p><p>  scanf("%s",ii);</p><p>  }while(!strcmp(ii,"y")); //判定是否重新查找</p><p>&

103、lt;b>  return 0;</b></p><p><b>  } </b></p><p>  void dingpiao()//定義訂票業(yè)務(wù)函數(shù)</p><p><b>  {</b></p><p>  int n;int c=1;</p><p

104、>  char a[10]="n";</p><p><b>  do</b></p><p><b>  {</b></p><p>  again(c); </p><p>  if(!strcmp(ii,&q

105、uot;y"))</p><p><b>  {</b></p><p>  printf("對不起!沒有找到您所需要的航班,所以不能訂票。\n");//未查找到所需航班</p><p>  printf("\n請按回車鍵返回上層菜單 ");</p><p>  get

106、char();</p><p>  getchar();</p><p>  strcpy(ii,"n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  do</b&

107、gt;</p><p><b>  {</b></p><p>  printf("請輸入您要訂的機票數(shù)(以回車鍵結(jié)束): ");</p><p>  scanf("%d",&n);//輸入所訂機票數(shù)</p><p>  if(n<=0)//判定機票數(shù)是否出

108、錯</p><p><b>  {</b></p><p>  printf("輸入錯誤!至少需訂1張機票。\n");</p><p><b>  }</b></p><p>  else if(s[i].count==0)//判定機票是否售完</p><p&

109、gt;<b>  {</b></p><p>  printf("對不起,你所選擇的航班的機票已售完!\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  else if(s[i].coun

110、t!=0&&s[i].count>=n)//判定機票數(shù)是否大于等于訂票數(shù)</p><p><b>  {</b></p><p>  s[i].count=s[i].count-n;</p><p>  printf("訂票成功! ");</p><p><b>  

111、break;</b></p><p><b>  }</b></p><p>  else if(s[i].count<n)//判定機票數(shù)是否小于訂票數(shù)</p><p><b>  { </b></p><p>  printf("對不起,你所選擇的航班只剩 %d張機票\

112、n", s[i-2].count);</p><p>  printf("是否需要重新輸入機票數(shù)?請輸入y或n以回車鍵結(jié)束: ");//判定是否重新輸入訂票數(shù)</p><p>  scanf("%s",a);</p><p><b>  }</b></p><p>  }

113、while(!strcmp(a,"y"));</p><p>  printf("\n是否需要訂其他航班的機票?請輸入y或n以回車鍵結(jié)束: ");</p><p>  scanf("%s",a);</p><p>  }while(!strcmp(a,"y"));//判定是否繼續(xù)訂票

114、</p><p><b>  }</b></p><p>  void tuipiao()//定義退票函數(shù)</p><p><b>  {</b></p><p><b>  int n;</b></p><p><b>  int c=1

115、;</b></p><p>  char a[10];</p><p><b>  do</b></p><p><b>  {</b></p><p>  again(c);//調(diào)用查詢函數(shù)</p><p>  if(!strcmp(ii,"y&q

116、uot;))</p><p><b>  {</b></p><p>  printf("對不起!沒有找到您所需要的航班,所以不能退票。\n");</p><p>  printf("\n請按回車鍵返回上層菜單 ");</p><p>  getchar();</p>

117、<p>  getchar();</p><p>  strcpy(ii,"n");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  printf("請輸入您要退的機票數(shù)目: ");&l

118、t;/p><p>  scanf("%d",&n); //輸入所退票數(shù)</p><p>  if(n<=0)//判定票數(shù)是否有效</p><p>  printf("輸入錯誤!至少需退1張機票。 ");</p><p><b>  else </b></p

119、><p><b>  {</b></p><p>  s[i].count=s[i].count+n;</p><p>  printf("退票成功! ");</p><p><b>  }</b></p><p>  printf("是否繼續(xù)?

120、請鍵入y或n以回車鍵結(jié)束: ");//判定是否繼續(xù)退票</p><p>  scanf("%s",a);</p><p>  }while(!strcmp(a,"y"));//判定并跳出循環(huán) </p><p><b>  }</b></p><p>  void

121、 paixu(int c)//定義從小到大排序函數(shù)</p><p><b>  {</b></p><p><b>  int k,j;</b></p><p>  struct air t;</p><p><b>  switch(c)</b></p>&

122、lt;p><b>  {</b></p><p><b>  case 1:</b></p><p>  for(i=0;i<m;i++)//選擇法排序</p><p><b>  {</b></p><p><b>  k=i;</b>&l

123、t;/p><p>  for(j=i+1;j<m;j++)</p><p>  if(strcmp(s[k].num,s[j].num)>0)</p><p><b>  k=j;</b></p><p><b>  if(i!=k)</b></p><p><

124、b>  {</b></p><p><b>  t=s[k];</b></p><p>  s[k]=s[i];</p><p><b>  s[i]=t;</b></p><p><b>  }</b></p><p><b&g

125、t;  }</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  for(i=0;i<m;i++)//選擇法排序</p><p><b>  {</b></p><

126、;p><b>  k=i;</b></p><p>  for(j=i+1;j<m;j++)</p><p>  if(strcmp(s[k].start,s[j].start)>0)</p><p><b>  k=j;</b></p><p><b>  if(i!=

127、k)</b></p><p><b>  {</b></p><p><b>  t=s[k];</b></p><p>  s[k]=s[i];</p><p><b>  s[i]=t;</b></p><p><b>  }&

128、lt;/b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  for(i=0;i<m;i++)//選擇法排序</p><p>

129、<b>  {</b></p><p><b>  k=i;</b></p><p>  for(j=i+1;j<m;j++)</p><p>  if(strcmp(s[k].over,s[j].over)>0)</p><p><b>  k=j;</b><

130、;/p><p><b>  if(i!=k)</b></p><p><b>  {</b></p><p><b>  t=s[k];</b></p><p>  s[k]=s[i];</p><p><b>  s[i]=t;</b>

131、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  for(i=0;i<

132、m;i++)//選擇法排序</p><p><b>  {</b></p><p><b>  k=i;</b></p><p>  for(j=i+1;j<m;j++)</p><p>  if(s[k].takeoff>s[j].takeoff)</p><p&

133、gt;<b>  k=j;</b></p><p><b>  if(i!=k)</b></p><p><b>  {</b></p><p><b>  t=s[k];</b></p><p>  s[k]=s[i];</p><p

134、><b>  s[i]=t;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 5:</b></

135、p><p>  for(i=0;i<m;i++)//選擇法排序</p><p><b>  {</b></p><p><b>  k=i;</b></p><p>  for(j=i+1;j<m;j++)</p><p>  if(s[k].arrive>s

136、[j].arrive)</p><p><b>  k=j;</b></p><p><b>  if(i!=k)</b></p><p><b>  {</b></p><p><b>  t=s[k];</b></p><p>

137、  s[k]=s[i];</p><p><b>  s[i]=t;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><

138、b>  }</b></p><p><b>  }</b></p><p><b>  至此本程序結(jié)束</b></p><p><b>  四、調(diào)試分析:</b></p><p><b>  測試數(shù)據(jù):</b></p>&l

139、t;p>  1、輸入信息后創(chuàng)建后的文件</p><p>  2、再次啟動程序瀏覽信息:</p><p><b>  3、增加航班信息:</b></p><p>  顯示增加信息后結(jié)果:</p><p>  4、查找航班信息模塊:</p><p><b>  a、按航班號查詢<

140、/b></p><p><b>  b、按起始站查詢:</b></p><p><b>  c、按終點站查詢;</b></p><p>  d、按起飛時間查詢:</p><p>  e、按到達時間查詢:</p><p><b>  5、訂票模塊:</b&

141、gt;</p><p>  訂票后查詢該航班信息:</p><p><b>  6、退票模塊:</b></p><p>  退票后查詢該航班信息:</p><p><b>  五、課設(shè)總結(jié): </b></p><p>  在本次課程設(shè)計中,我主要負(fù)責(zé)的是航班信息管理系統(tǒng)的設(shè)計

142、與調(diào)試,在實驗過程中,遇到了很多問題。比如:信息寫入文件后讀出信息時產(chǎn)生錯誤,而且會使文件里的信息丟失,后改變所使用的寫入格式解決該問題。而后在對航班信息的查找模塊的完善時,程序邏輯不明確導(dǎo)致無法查找信息,故改為使用關(guān)鍵字精確查找信息。由此可見,一次實驗的設(shè)計、構(gòu)思、調(diào)試、完善都是寶貴的經(jīng)驗,能很好地考驗我們對數(shù)據(jù)結(jié)構(gòu)這門課程的認(rèn)知程度與掌握程度,加深對本課程知識點的認(rèn)識。但鑒于在設(shè)計過程中出現(xiàn)的諸多問題,反映出對課程的理解程度還是不夠

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論