c語(yǔ)言課程設(shè)計(jì)——飛機(jī)訂票系統(tǒng)說明書_第1頁(yè)
已閱讀1頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目 錄</b></p><p>  設(shè)計(jì)目的………………………………………………………1</p><p>  總體設(shè)計(jì)………………………………………………………1</p><p>  詳細(xì)設(shè)計(jì)………………………………………………………3</p><p>  調(diào)試與測(cè)試…………………………

2、…………………………5</p><p>  核心源程序清單和執(zhí)行結(jié)果…………………………………5</p><p>  源程序代碼……………………………………………5</p><p>  截圖……………………………………………………13</p><p>  仍存在的問題…………………………………………15</p><p>

3、;  心得體會(huì)………………………………………………………15</p><p>  設(shè)計(jì)進(jìn)度表……………………………………………………16</p><p>  參考文獻(xiàn)………………………………………………………17</p><p><b>  正文</b></p><p><b>  設(shè)計(jì)目的:</b>

4、;</p><p>  假定民航機(jī)場(chǎng)共有n個(gè)航班,每個(gè)航班有一航班號(hào)、確定的航線(起始站、終點(diǎn)站)、確定的飛行時(shí)間(星期幾)和一定的成員訂額。設(shè)計(jì)一飛機(jī)訂票系統(tǒng),使之能提供下列服務(wù):</p><p>  1、航班信息錄入功能(航班信息用文件保存) </p><p>  包括航班號(hào)、起始站、重點(diǎn)站、機(jī)票數(shù)等;</p><p>  2、航班信息瀏

5、覽功能</p><p><b>  3、按航班號(hào)排序</b></p><p>  4、查詢航線:按航班號(hào)查詢</p><p>  5、承辦訂票和退票業(yè)務(wù)(可選項(xiàng))</p><p><b>  總體設(shè)計(jì):</b></p><p>  編寫一個(gè)飛機(jī)訂票系統(tǒng)的程序,使該系統(tǒng)能夠?qū)崿F(xiàn)

6、對(duì)航班信息的錄入、瀏覽、排序、查詢以及訂票、退票的功能。根據(jù)題目要求,首先要制作一個(gè)主菜單顯示出各個(gè)操作的提示可供用戶選擇,進(jìn)而一步步地深入操作。根據(jù)主菜單的內(nèi)容再進(jìn)一步編制具體操作的函數(shù),各個(gè)功能均用專門編制的函數(shù)來完成。這就是看到題目后的最初的思路。</p><p>  在這附上總體模塊設(shè)計(jì)圖:</p><p>  因?yàn)轱w機(jī)訂票系統(tǒng)含有各航班的各項(xiàng)信息,如航班號(hào)、航線、飛行時(shí)間、機(jī)票數(shù)

7、目等必要信息,所以就決定用剛學(xué)不久的結(jié)構(gòu)體數(shù)組來存放航班的各項(xiàng)信息,根據(jù)題目要求定義如下結(jié)構(gòu)體類型:</p><p>  頭文件包含、全局變量定義和結(jié)構(gòu)體定義源代碼:</p><p>  #include<stdio.h>//標(biāo)準(zhǔn)輸入、輸出頭文件</p><p>  #include<string.h>//包含字符串函數(shù)處理頭文件&l

8、t;/p><p>  #include<process.h>//包含access函數(shù)的頭文件</p><p>  #define N 1000 //定義最多的航班數(shù)</p><p>  #define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].

9、over,s[i].time,s[i].count //宏定義輸出格式</p><p>  struct air //定義結(jié)構(gòu)體數(shù)組</p><p><b>  {</b></p><p>  int num;//定義航班號(hào)</p><p>  char start[20];//航班起始

10、站</p><p>  char over[20];//航班終點(diǎn)站</p><p>  char time[10];//飛行時(shí)間</p><p>  int count;//機(jī)票數(shù)量</p><p><b>  }s[N];</b></p><p>  int i,m=0;/

11、/定義全局變量,記錄下航班信息的數(shù)量</p><p>  char ii[10];//用來選擇是否繼續(xù)的變量</p><p>  以上就是我的總體設(shè)計(jì)思路。</p><p><b>  詳細(xì)設(shè)計(jì):</b></p><p>  在本次的課程設(shè)計(jì)中我負(fù)責(zé)編制的是初始化、建立數(shù)據(jù)文件、數(shù)據(jù)文件讀取、數(shù)據(jù)文件保存、增加航班

12、信息、訂票、退票業(yè)務(wù)函數(shù)的編寫。以下是我的負(fù)責(zé)部分的詳細(xì)設(shè)計(jì)內(nèi)容:</p><p><b>  定義系統(tǒng)初始化函數(shù)</b></p><p>  模塊功能:設(shè)立一個(gè)初始化函數(shù)來得到航班信息。具體設(shè)計(jì)是第一次運(yùn)行程序時(shí)自動(dòng)生成保存航班信息的文件,并輸入初始航班信息,待第二次開始就可以直接讀取該文件獲得已有的航班信息并可直接使用。運(yùn)用了access函數(shù)判斷文件是否存在。該函

13、數(shù)源代碼為:</p><p>  void chushihua()//初始化函數(shù)</p><p><b>  {</b></p><p>  if(access("hangban.dat",0))</p><p><b>  build();</b></p>

14、<p><b>  else</b></p><p><b>  read();</b></p><p><b>  }</b></p><p>  定義建立新數(shù)據(jù)文件的函數(shù)</p><p>  系統(tǒng)初始化后,沒有尋找到數(shù)據(jù)文件,則進(jìn)行新建數(shù)據(jù)文件,此函數(shù)的作用就是

15、進(jìn)行新建文件數(shù)據(jù)的錄入。運(yùn)用到了文件指針的定義FILE *fp,文件的打開fopen和關(guān)閉fclose、成塊讀寫函數(shù)中的fwrite;運(yùn)用for循環(huán)進(jìn)行各組數(shù)據(jù)的輸入,用m++記錄下輸入的航班數(shù)量,并運(yùn)用if語(yǔ)句判斷是否輸入下一條航班信息,若不繼續(xù)則返回主界面。該函數(shù)的源代碼為:</p><p>  定義讀取文件內(nèi)航班信息的函數(shù)</p><p>  系統(tǒng)初始化之后,若原始數(shù)據(jù)文件存在,則進(jìn)

16、行文件內(nèi)航班信息的讀取,以供接下來程序中的各個(gè)函數(shù)來使用。在該函數(shù)中同樣運(yùn)用到了文件指針FILE *fp、文件的打開fopen和關(guān)閉fclose、成塊讀寫函數(shù)中的fread、文件結(jié)束檢測(cè)函數(shù)feof同時(shí)配合while語(yǔ)句控制文件的讀取;m++記錄下讀取到的航班數(shù)量等。</p><p><b>  定義保存函數(shù)</b></p><p>  因?yàn)樵陲w機(jī)訂票系統(tǒng)中涉及到飛機(jī)

17、的訂票和退票業(yè)務(wù),還有按航班號(hào)的排序功能,所以我就定義了這個(gè)保存函數(shù)來保存下每次運(yùn)行系統(tǒng)后對(duì)整個(gè)訂票系統(tǒng)涉及到的資料的修改。為了簡(jiǎn)便程序,我就準(zhǔn)備將此函數(shù)放在整個(gè)系統(tǒng)得推出選項(xiàng)中,這樣就只在每次退出系統(tǒng)的時(shí)候進(jìn)行一次保存,將此次對(duì)文件修改的所有新信息都一次保存下來。這樣就實(shí)現(xiàn)了整個(gè)系統(tǒng)運(yùn)行時(shí)進(jìn)行一次讀取,推出時(shí)一次保存的設(shè)計(jì),大大簡(jiǎn)便了文件的調(diào)用和讀取。保存函數(shù)運(yùn)用到的知識(shí)點(diǎn)與讀取函數(shù)大致相同。此函數(shù)的源代碼為:</p>

18、<p>  有關(guān)文件讀取、寫入和保存的函數(shù)定義完了就開始設(shè)計(jì)與題目要求直接相關(guān)的函數(shù)了。</p><p><b>  定義訂票業(yè)務(wù)函數(shù)</b></p><p>  在這個(gè)函數(shù)中首先調(diào)用了search函數(shù)查找需要訂票的航班。運(yùn)用if語(yǔ)句實(shí)現(xiàn)訂票時(shí)的多種情況:訂票數(shù)輸入不正確、飛機(jī)票數(shù)不足等情況。訂票成功時(shí)運(yùn)用s[i].count=s[i].count-n;將已

19、被訂的機(jī)票數(shù)減去,以顯示新的即時(shí)航班信息</p><p><b>  定義退票業(yè)務(wù)函數(shù):</b></p><p>  與訂票函數(shù)相類似,只做稍稍修改就行退票成功是用s[i].count=s[i].count+n; 將航班的剩余票數(shù)加上去以顯示即時(shí)航班信息。</p><p><b>  定義主函數(shù)</b></p>

20、<p>  主函數(shù)主要就是提供系統(tǒng)的主菜單界面供用戶選擇。運(yùn)行主函數(shù)時(shí)首先調(diào)用chushihua函數(shù)判定數(shù)據(jù)文件是否存在、是否要進(jìn)行初始航班信息輸入;若已存在則進(jìn)入主界面菜單供用戶選擇,運(yùn)用swich語(yǔ)句對(duì)用戶的不同選擇來調(diào)用各功能的函數(shù)。并用do…while語(yǔ)句循環(huán)實(shí)現(xiàn)能夠讓用戶進(jìn)行多次的選擇。</p><p><b>  調(diào)試與測(cè)試</b></p><p

21、>  調(diào)試過程中曾經(jīng)遇到過一些問題,但是也不多,遇到過:訂票或退票的時(shí)候不能將剩余的票數(shù)加上和減去。后來經(jīng)過詳細(xì)的檢查與對(duì)照課本知識(shí)點(diǎn)找出了相應(yīng)的錯(cuò)誤點(diǎn),經(jīng)過修改加入票數(shù)加減語(yǔ)句,再經(jīng)過與保存函數(shù)的配合后實(shí)現(xiàn)了題目要求的功能。調(diào)試成功。</p><p>  核心源程序清單和執(zhí)行結(jié)果:</p><p><b>  源程序清單:</b></p><

22、;p>  #include<stdio.h>//標(biāo)準(zhǔn)輸入、輸出頭文件</p><p>  #include<string.h>//包含字符串函數(shù)處理頭文件</p><p>  #include<process.h>//包含access函數(shù)的頭文件</p><p>  #define N 1000//定義最多

23、的航班數(shù)</p><p>  #define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定義輸出格式</p><p>  struct air //定義結(jié)構(gòu)體數(shù)組</p><p>

24、<b>  {</b></p><p>  int num;//定義航班號(hào)</p><p>  char start[20];//航班起始站</p><p>  char over[20];//終點(diǎn)站</p><p>  char time[10];//飛行時(shí)間</p><p&

25、gt;  int count;//機(jī)票數(shù)量</p><p><b>  }s[N];</b></p><p>  int i,m=0;//定義全局變量</p><p>  char ii[10];</p><p>  void add();//函數(shù)聲明增加航班信息函數(shù)</p><p

26、>  void print(); //顯示航班信息</p><p>  void search();//查找航班信息</p><p>  void dingpiao();//訂票業(yè)務(wù)</p><p>  void tuipiao();//退票</p><p>  void read();//讀取文件</p&g

27、t;<p>  void save();//保存文件</p><p>  void output();//輸出格式</p><p>  void paixu();//航班排序</p><p>  void chushihua();//系統(tǒng)初始化</p><p>  void build();//建立數(shù)據(jù)文件&l

28、t;/p><p>  void paixu1();//按航班號(hào)從小到大排序</p><p>  void paixu2();//從大到小</p><p>  void main()//主函數(shù)</p><p><b>  {</b></p><p><b>  int j; &l

29、t;/b></p><p>  chushihua();//系統(tǒng)初始化判斷是否存在原始數(shù)據(jù)文件</p><p>  printf(" O(^_^)O歡迎使用天鑫飛機(jī)訂票系統(tǒng)(*^__^*)\n");//打印出系統(tǒng)主界面</p><p><b>  do</b></p>

30、<p><b>  {</b></p><p>  printf("================================================================================ "); </p><p>  printf("1.增加航班信息\n"</p&

31、gt;<p>  "\t2.瀏覽航班信息\n"</p><p>  "\t\t3.查找航班信息(按航班號(hào))\t\t╮(╯_╰)╭\n"</p><p>  "\t\t\t4.航班排序(按航班號(hào))\n"</p><p>  "\t\t\t\t5.訂票業(yè)務(wù)\n" </p&

32、gt;<p>  "\to(︶︿︶)o\t\t\t6.退票業(yè)務(wù)\n"</p><p>  "\t\t\t\t\t\t0.退出\n");</p><p>  printf("==============================================================================

33、== "); </p><p>  printf("請(qǐng)?jiān)?-6中選擇以回車鍵結(jié)束: ");</p><p>  scanf("%d",&j);</p><p><b>  switch(j)</b></p><p><b>  {</b>&

34、lt;/p><p>  case 1: add();//調(diào)用增加航班函數(shù)</p><p><b>  break;</b></p><p>  case 2:print();//調(diào)用顯示模塊</p><p><b>  break;</b></p><p>  case

35、3:search();//調(diào)用查找模塊</p><p><b>  break;</b></p><p>  case 4:paixu();//調(diào)用排序函數(shù)</p><p><b>  break;</b></p><p>  case 5:dingpiao();//調(diào)用訂票模塊</p

36、><p><b>  break;</b></p><p>  case 6:tuipiao();//調(diào)用退票模塊</p><p><b>  break; </b></p><p>  case 0://退出系統(tǒng)</p><p><b>  save();&

37、lt;/b></p><p>  printf("謝謝使用,再見! ");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  }while(j!=0);//判斷是否調(diào)用其他函數(shù)</p><p

38、><b>  }</b></p><p>  void chushihua()//定義系統(tǒng)初始化函數(shù)</p><p><b>  {</b></p><p>  if(access("hangban.dat",0))</p><p><b>  {</

39、b></p><p><b>  build();</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  read();</b></p><p><b

40、>  }</b></p><p>  void build()//定義建立數(shù)據(jù)文件函數(shù)</p><p><b>  {</b></p><p>  FILE *fp;//定義文件指針</p><p>  if((fp=fopen("hangban.dat","wb

41、"))==NULL)//打開文件并判定是否出錯(cuò) </p><p><b>  {</b></p><p>  printf("創(chuàng)建文件失敗! ");//打印出錯(cuò)提示</p><p>  getchar();</p><p><b>  return;</b>&

42、lt;/p><p><b>  }</b></p><p>  printf("請(qǐng)依次輸入航班信息(以回車鍵結(jié)束):\n"); //打印提示信息</p><p>  printf("----------------------------------------------------------------

43、---------- \n");</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf("請(qǐng)輸入航班號(hào): "); </p><p>  scanf("%d",&s[i].num);

44、//輸入航班號(hào)</p><p>  printf("請(qǐng)輸入起始站: ");</p><p>  scanf("%s",s[i].start);//輸入起始站</p><p>  printf("請(qǐng)輸入終點(diǎn)站: ");</p><p>  scanf("%s"

45、,s[i].over);//輸入終點(diǎn)站</p><p>  printf("請(qǐng)輸入時(shí)間(星期幾): ");</p><p>  scanf("%s",s[i].time);//輸入時(shí)間</p><p>  printf("請(qǐng)輸入機(jī)票數(shù): ");</p><p>  scanf

46、("%d",&s[i].count);//輸入機(jī)票數(shù)</p><p>  fwrite(&s[i],sizeof(struct air),1,fp);</p><p><b>  m++;</b></p><p>  printf("添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車鍵結(jié)束:")

47、;</p><p>  scanf("%s",ii);</p><p>  if(strcmp(ii,"y")!=0)//判斷是否繼續(xù)添加航班信息</p><p><b>  {</b></p><p>  fclose(fp);//關(guān)閉文件</p>&l

48、t;p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void read()//定義讀取文件函數(shù)</p>

49、;<p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("hangban.dat","r"))==NULL)</p><p><b>  {</b></p>

50、<p>  printf("創(chuàng)建文件失敗! ");</p><p>  getchar();</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  i=0;</b></p&

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

52、+;//計(jì)算存在航班數(shù)</p><p><b>  }</b></p><p><b>  m--;</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void save()//定義保

53、存函數(shù)</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("hangban.dat","wb"))==NULL) </p><p><b>  {</

54、b></p><p>  printf("創(chuàng)建文件失敗! ");</p><p>  getchar();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(i=0;i<m;

55、i++)//逐塊保存數(shù)據(jù)</p><p>  fwrite(&s[i],sizeof(struct air),1,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void add()//定義增加航班信息函數(shù)</p><

56、p><b>  {</b></p><p><b>  do{</b></p><p>  printf("請(qǐng)依次輸入您要增加的航班信息(以回車鍵結(jié)束): \n"); //打印提示信息</p><p>  printf("---------------------------

57、----------------------------------------------- \n");</p><p>  printf("請(qǐng)輸入航班號(hào): "); </p><p>  scanf("%d",&s[m].num);//讀取航班號(hào)</p><p>  printf("請(qǐng)輸入起

58、始站: ");</p><p>  scanf("%s",s[m].start);//讀取起始站</p><p>  printf("請(qǐng)輸入終點(diǎn)站: ");</p><p>  scanf("%s",s[m].over);//讀取終點(diǎn)站</p><p>  prin

59、tf("請(qǐng)輸入時(shí)間: ");</p><p>  scanf("%s",s[m].time);//讀取時(shí)間</p><p>  printf("請(qǐng)輸入機(jī)票數(shù): ");</p><p>  scanf("%d",&s[m].count);//讀取機(jī)票數(shù)</p>

60、<p><b>  m++;</b></p><p>  printf("添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車鍵結(jié)束:");</p><p>  scanf("%s",ii);</p><p>  }while(!strcmp(ii,"y"));//判斷是否繼續(xù)添

61、加</p><p><b>  }</b></p><p>  void output()//定義輸出格式函數(shù)</p><p><b>  {</b></p><p>  printf("航班號(hào)\t\t起始站\t\t終點(diǎn)站\t\t時(shí)間\t\t機(jī)票數(shù)\n");//信息標(biāo)題&

62、lt;/p><p>  for(i=0;i<m;i++)</p><p>  printf(PRINT);//打印出信息</p><p><b>  }</b></p><p>  void print()//定義顯示航班信息函數(shù)</p><p><b>  {</b>

63、;</p><p>  printf("\n目前我們有如下航班:\n");</p><p>  output();//調(diào)用輸出格式函數(shù)</p><p>  printf("\n請(qǐng)按回車鍵返回上層菜單 ");</p><p>  getchar();</p><p>  ge

64、tchar();</p><p><b>  }</b></p><p>  void search()//定義查詢函數(shù)</p><p><b>  {</b></p><p><b>  int n;</b></p><p><b> 

65、 do</b></p><p><b>  {</b></p><p>  printf("\n請(qǐng)輸入航班號(hào): ");</p><p>  scanf("%d",&n);//輸入查詢的航班號(hào)</p><p>  for(i=0;i<m;i++)<

66、/p><p><b>  { </b></p><p>  if(s[i].num==n)//按航班號(hào)判定輸出條件</p><p><b>  { </b></p><p>  printf("\n您所查找的航班信息為:\n ");</p><p>  p

67、rintf("航班號(hào)\t\t起始站\t\t終點(diǎn)站\t\t時(shí)間\t\t機(jī)票數(shù) \n\n");</p><p>  printf(PRINT);//顯示信息 </p><p>  printf("\n查詢完畢,按回車鍵繼續(xù)");</p><p>  getchar();</p><p>  getcha

68、r();</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\n對(duì)不起,沒有您需要的信息!\n ");</p><p&g

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

70、p>  void dingpiao()//定義訂票業(yè)務(wù)函數(shù)</p><p><b>  {</b></p><p><b>  int n;</b></p><p>  char a[10]="y";</p><p><b>  do</b><

71、;/p><p><b>  {</b></p><p>  search();//調(diào)用查詢模塊</p><p>  if(!strcmp(ii,"n"))</p><p><b>  {</b></p><p>  printf("對(duì)不起!沒有找到

72、您所需要的航班,所以不能訂票。\n");//未查找到所需航班</p><p>  printf("\n請(qǐng)按回車鍵返回上層菜單 ");</p><p>  getchar();</p><p>  getchar();</p><p>  strcpy(ii,"n");</p>

73、<p><b>  break;</b></p><p><b>  }</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  printf("請(qǐng)輸入您要訂的機(jī)票數(shù)(以回車鍵結(jié)束)

74、: ");</p><p>  scanf("%d",&n);//輸入所訂機(jī)票數(shù)</p><p>  if(n<=0)//判定機(jī)票數(shù)是否出錯(cuò)</p><p><b>  {</b></p><p>  printf("輸入錯(cuò)誤!至少需訂1張機(jī)票。\n&quo

75、t;);</p><p><b>  }</b></p><p>  else if(s[i].count==0)//判定機(jī)票是否售完</p><p><b>  {</b></p><p>  printf("對(duì)不起,你所選擇的航班的機(jī)票已售完!\n");</p>

76、<p><b>  break;</b></p><p><b>  }</b></p><p>  else if(s[i].count!=0&&s[i].count>=n)//判定機(jī)票數(shù)是否大于等于訂票數(shù)</p><p><b>  {</b></p>

77、;<p>  s[i].count=s[i].count-n;</p><p>  printf("訂票成功! ");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  else if(s[i].count

78、<n)//判定機(jī)票數(shù)是否小于訂票數(shù)</p><p><b>  { </b></p><p>  printf("對(duì)不起,你所選擇的航班只剩 %d張機(jī)票\n", s[i].count);</p><p>  printf("是否需要重新輸入機(jī)票數(shù)?請(qǐng)輸入y或n以回車鍵結(jié)束: ");//判定是否重新輸

79、入訂票數(shù)</p><p>  scanf("%s",a);</p><p><b>  }</b></p><p>  }while(!strcmp(a,"y"));</p><p>  printf("是否需要訂其他航班的機(jī)票?請(qǐng)輸入y或n以回車鍵結(jié)束: ")

80、;</p><p>  scanf("%s",a);</p><p>  }while(!strcmp(a,"y"));//判定是否繼續(xù)訂票</p><p><b>  }</b></p><p>  void tuipiao()//定義退票函數(shù)</p>&l

81、t;p><b>  {</b></p><p><b>  int n;</b></p><p>  char a[10];</p><p><b>  do</b></p><p><b>  {</b></p><p> 

82、 search();//調(diào)用查詢函數(shù)</p><p>  if(!strcmp(ii,"n"))</p><p><b>  {</b></p><p>  printf("對(duì)不起!沒有找到您所需要的航班,所以不能退票。\n");</p><p>  printf("

83、\n請(qǐng)按回車鍵返回上層菜單 ");</p><p>  getchar();</p><p>  getchar();</p><p>  strcpy(ii,"n");</p><p><b>  break;</b></p><p><b>  }<

84、;/b></p><p>  printf("請(qǐng)輸入您要退的機(jī)票數(shù)目: ");</p><p>  scanf("%d",&n);//輸入所退票數(shù)</p><p>  if(n<=0)//判定票數(shù)是否有效</p><p>  printf("輸入錯(cuò)誤!至少需退1張機(jī)

85、票。 ");</p><p><b>  else </b></p><p><b>  {</b></p><p>  s[i].count=s[i].count+n;</p><p>  printf("退票成功! ");</p><p>&

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

87、><p><b>  }</b></p><p>  void paixu()//定義排序函數(shù)</p><p><b>  {</b></p><p><b>  int n;</b></p><p>  printf("\n*********

88、*********************************************************************** "); </p><p>  printf("1.按航班號(hào)從小到大排序\n"</p><p>  "\t2.按航班號(hào)從大到小排序\n");</p><p>  pri

89、ntf("******************************************************************************** "); </p><p>  printf("請(qǐng)?jiān)?-2中選擇以回車鍵結(jié)束: ");</p><p>  scanf("%d",&n);//輸入排

90、序方式</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:paixu1();//調(diào)用從小到大排序函數(shù)</p><p><b>  break;</b></p><p>  c

91、ase 2:paixu2();//調(diào)用從大到小排序函數(shù)</p><p><b>  break;</b></p><p><b>  }</b></p><p>  printf("排序后的航班信息為:\n");</p><p>  output();//顯示排序后航班信息

92、</p><p>  printf("\n請(qǐng)按回車鍵返回上層菜單 ");</p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b></p><p>  void paixu1()//定義從小到大排序函數(shù)<

93、;/p><p><b>  {</b></p><p><b>  int k,j;</b></p><p>  struct air t;</p><p>  for(i=0;i<m;i++)//選擇法排序</p><p><b>  {</b>&

94、lt;/p><p><b>  k=i;</b></p><p>  for(j=i+1;j<m;j++)</p><p>  if(s[k].num>s[j].num)</p><p><b>  k=j;</b></p><p><b>  if(i!=

95、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>  }&

96、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void paixu2()//定義從大到小排序函數(shù)</p><p><b>  {</b></p><p><b>  

97、int k,j;</b></p><p>  struct air t;</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&

98、lt;m;j++)</p><p>  if(s[k].num<s[j].num)</p><p><b>  k=j;</b></p><p><b>  if(i!=k)</b></p><p><b>  {</b></p><p><

99、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>  }</b></p><p><b&g

100、t;  }</b></p><p>  以上即為我們的源程序清單。</p><p><b>  執(zhí)行結(jié)果:</b></p><p>  程序最終運(yùn)行情況如所貼圖表。</p><p>  第一次運(yùn)行程序(輸入初始數(shù)據(jù))</p><p>  界面提示輸入原始數(shù)據(jù):請(qǐng)輸入航班號(hào)→請(qǐng)輸入起始站

101、→請(qǐng)輸入終點(diǎn)站→請(qǐng)輸入飛行時(shí)間→請(qǐng)輸入機(jī)票數(shù)。我按照提示一次輸入了4個(gè)航班信息后按提示輸入“n”則不再繼續(xù)輸入,系統(tǒng)顯示出了主菜單界面。接著按0退出程序,顯示“謝謝使用,再見?!?lt;/p><p>  圖表 1—主菜單界面</p><p>  第二次運(yùn)行程序(進(jìn)行航班信息的瀏覽)</p><p>  運(yùn)行程序就不再顯示輸入航班信息了,而是直接顯示出了主菜單界面(如圖表

102、1)。在提示中輸入“2” →顯示航班信息。輸出如下航班信息(如圖表2),確實(shí)顯示出輸入的4個(gè)航班信息。</p><p>  圖表 2—顯示航班信息</p><p><b>  查詢航班信息</b></p><p>  在主菜單界面輸入3→請(qǐng)輸入航班號(hào)→輸入“1010” →顯示出所查找的信息(如圖表3)</p><p> 

103、 圖表 3—查詢航班信息</p><p><b>  航班排序</b></p><p>  在主菜單界面輸入4→按照提示輸入“2”(按航班號(hào)從大到小排序)→顯示出排序后的航班信息(如圖表4)</p><p><b>  圖表 4—航班排序</b></p><p><b>  訂票業(yè)務(wù)<

104、;/b></p><p>  在主菜單輸入5→提示輸入航班號(hào)→輸入1010→顯示出該航班信息并提示輸入訂票數(shù):輸入3→“訂票成功” (如圖表5)</p><p>  圖表 5—訂票業(yè)務(wù)1</p><p>  票數(shù)不足情況(如圖表6):</p><p>  圖表 6—訂票業(yè)務(wù)2</p><p><b> 

105、 仍存在的問題:</b></p><p>  系統(tǒng)只是按照題目的要求做的,雖然是很好地完成了題目要求的所有模塊,但是在整個(gè)編程過程中我們也曾嘗試增加我們感興趣的功能,但是失敗了。</p><p><b>  心得體會(huì):</b></p><p>  經(jīng)過此次的課程設(shè)計(jì),可以很明確的了解到自己哪些知識(shí)點(diǎn)掌握的比較好,哪些知識(shí)點(diǎn)運(yùn)用的還不

106、夠熟練。通過此次課程設(shè)計(jì)也學(xué)會(huì)綜合運(yùn)用理論知識(shí)來分析和解決實(shí)際問題的能力、養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的程序設(shè)計(jì)習(xí)慣,實(shí)現(xiàn)由知識(shí)向智能的初步轉(zhuǎn)化;學(xué)會(huì)遵循軟件開發(fā)過程的基本規(guī)范,運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的方法,按照課程設(shè)計(jì)的題目要求,并與同組成員共同完成設(shè)計(jì)、編寫、調(diào)試和測(cè)試應(yīng)用程序及編寫文檔的任務(wù)。</p><p><b>  指導(dǎo)教師(簽字):</b></p><p>  

107、教研室主任(簽字):</p><p>  批準(zhǔn)日期: 年 月 日課程設(shè)計(jì)進(jìn)度表</p><p><b>  二、參考文獻(xiàn)</b></p><p>  [1]胡建平,《C語(yǔ)言程序設(shè)計(jì)》,清華大學(xué)出版社</p><p>  [2]胡建平、刑振祥,《C語(yǔ)言程序設(shè)計(jì)學(xué)習(xí)指導(dǎo)》,清華大學(xué)出版社</p&g

溫馨提示

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

評(píng)論

0/150

提交評(píng)論