2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  軟件課程設(shè)計報告</b></p><p>  班級:光信1005班</p><p><b>  姓名: </b></p><p><b>  學(xué)號: </b></p><p><b>  目錄</b></p>&

2、lt;p>  軟件設(shè)計…………………………………………………………..2</p><p>  設(shè)計題目…………………………………………………………2</p><p>  設(shè)計要求…………………………………………………………2</p><p>  設(shè)計思想…………………………………………………………2</p><p>  流程圖……………

3、………………………………………………4</p><p>  軟件測試……………………………………………………………12</p><p>  航班信息查詢模塊測試…………………………………………12</p><p>  訂票模塊測試……………………………………………………17</p><p>  機(jī)票信息查詢模塊測試……………………………………

4、……19</p><p>  退票模塊測試……………………………………………………23</p><p>  算法改進(jìn)……………………………………………………………25</p><p>  開發(fā)體會……………………………………………………………26</p><p>  附錄:源代碼清單……………………………………………………28</p&g

5、t;<p>  參考文獻(xiàn)………………………………………………………………64</p><p><b>  1 軟件設(shè)計</b></p><p><b>  設(shè)計題目</b></p><p><b>  飛機(jī)票銷售系統(tǒng)</b></p><p><b>  

6、設(shè)計要求</b></p><p>  運(yùn)用C語言基本知識,結(jié)合相關(guān)算法思想和數(shù)據(jù)結(jié)構(gòu),編寫一個單微機(jī)系統(tǒng)下運(yùn)行的飛機(jī)票銷售系統(tǒng)。飛機(jī)票銷售系統(tǒng)模擬飛機(jī)票銷售人員的工作,應(yīng)實(shí)現(xiàn)航班信息查詢,訂票,機(jī)票信息查詢,退票等功能。</p><p><b>  1.3 設(shè)計思想</b></p><p>  本程序分為四個模塊,即航班信息查詢模

7、塊,訂票模塊,機(jī)票信息模塊,退票模塊。通過建立plane.txt和ticket.txt兩個文本文檔來儲存航班信息和已售出的機(jī)票信息。程序中,定義了airline和ticket兩個結(jié)構(gòu)體來分別儲存航班和機(jī)票信息,再使用struct airline *list1()和struct ticket *list2()來從文檔中讀取信息儲存在鏈表中,并輸出鏈表頭指針。</p><p>  航班信息查詢模塊功能由函數(shù)airli

8、ne()實(shí)現(xiàn),再分為按航班編號,目的地,起飛時間三種查找方式。通過airline()調(diào)用menu1(struct airline *)目錄函數(shù),再選擇進(jìn)入search11(struct airline *),search12(struct airline *),search13(struct airline *)三個函數(shù),來進(jìn)行信息查詢。</p><p>  訂票模塊功能由函數(shù)book()實(shí)現(xiàn),通過對輸入的航班編

9、號的判斷,來決定是否能夠訂票,訂票成功后將添加的機(jī)票信息回寫入ticket.txt中,并改動plane.txt中相應(yīng)的航班剩余機(jī)票信息。</p><p>  機(jī)票信息查詢模塊功能由ticketsearch()實(shí)現(xiàn),再分為按機(jī)票編號和旅客姓名兩種查找方式。通過ticketsearch()調(diào)用menu2(struct ticket)目錄函數(shù),再選擇進(jìn)入search21(struct ticket)和search22(

10、struct ticket)兩個函數(shù),來進(jìn)行信息的查詢。</p><p>  退票模塊功能由refund()函數(shù)來實(shí)現(xiàn),通過對輸入機(jī)票編號的判斷,來決定是否退票,退票成功后將退除的機(jī)票信息從ticket.txt中刪除,并改動plane.txt中相應(yīng)的航班剩余機(jī)票信息。</p><p><b>  1.4 流程圖</b></p><p><

11、;b>  主菜單流程圖</b></p><p>  airlinesearch()為航班查詢函數(shù),book()為機(jī)票訂購函數(shù),ticketsearch()為機(jī)票查詢函數(shù),refund()為退票函數(shù)。</p><p>  航班信息查詢菜單menu1(struct airline *p)</p><p>  search11(struct airlin

12、e *)為按航班編號查詢信息,search12(struct airline *)為按航班目的地查詢信息,search13(struct airline *)為按起飛時間查詢信息,menu()為主菜單。</p><p>  按航班編號查詢search11(struct airline *)函數(shù)流程圖</p><p>  search12(struct airline *)和search13

13、(struct airline *)同理,只是改了下輸入項和比較項。</p><p>  訂票book()函數(shù)流程圖</p><p>  機(jī)票信息查詢主菜單menu2(struct ticket *p)流程圖</p><p>  按機(jī)票編號查詢信息search21(struct ticket *)流程圖</p><p>  退票refund(

14、)流程圖:</p><p><b>  2 軟件測試</b></p><p>  2.1 航班信息查詢模塊測試</p><p>  進(jìn)入程序,首先進(jìn)入主菜單界面。</p><p>  選擇1,進(jìn)入航班信息查詢菜單界面</p><p>  選擇1,按航班編號查詢航班信息,輸入“ZH9658”。<

15、;/p><p>  查到的航班信息如下所示:</p><p>  輸入“a”,返回菜單后,如果選擇2,就按航班目的地查找,輸入“南京”。</p><p>  查到相應(yīng)的機(jī)票信息為:</p><p>  按”a”返回菜單后,如果選擇3,就按起飛時間查找,輸入“07:00”。</p><p><b>  查到的信息如

16、下:</b></p><p><b>  訂票模塊測試</b></p><p>  在主菜單中選擇2,進(jìn)行機(jī)票購買,顯示購票界面,按前面測試的,輸入到廣州的航班號“ZH9658”,輸入姓名“李俊彥”,性別“男”。</p><p>  如果剩余票,則顯示訂票成功,并顯示機(jī)票信息:</p><p>  再回主菜單

17、對“ZH9658”的航班信息進(jìn)行查詢,結(jié)合前面的測試,剩余票數(shù)由“5”變成了“4”。</p><p>  機(jī)票信息查詢模塊測試</p><p>  返回主菜單,選擇“3”進(jìn)入機(jī)票信息查詢模塊。</p><p>  選擇“1”,按機(jī)票編號查詢,輸入李俊彥的機(jī)票編號“51”.</p><p>  之后顯示其機(jī)票信息:</p><

18、;p>  返回機(jī)票信息查詢的菜單后,選擇“2”,按購票人姓名查詢機(jī)票信息,輸入“李俊彥”。</p><p>  之后顯示其機(jī)票信息:</p><p><b>  退票模塊測試</b></p><p>  回到主菜單,選擇“4”,進(jìn)入退票模塊,輸入要退機(jī)票的編號“51”.</p><p>  顯示所退票的信息后,再輸

19、入“1”確認(rèn)退票。</p><p>  再回到退票部分,輸入機(jī)票編號“51”。</p><p>  再回到航班信息查詢,查詢ZH9658航班的信息,剩余機(jī)票數(shù)由“4”變回了“5”。</p><p>  若進(jìn)行多張機(jī)票的訂購與退票,也能正常運(yùn)行。</p><p><b>  3 算法改進(jìn)</b></p>&

20、lt;p><b>  改進(jìn)一:</b></p><p>  在讀取機(jī)票信息,并儲存在鏈表的過程中,開始時,固定了循環(huán)讀入的次數(shù),則當(dāng)刪除機(jī)票信息或者添加機(jī)票信息后,會導(dǎo)致文件中的信息不能完全讀入到鏈表中。之后發(fā)現(xiàn)其問題,改為了用while(feof(fp)==0)循環(huán),邊將數(shù)據(jù)讀入鏈表,邊創(chuàng)建下一個鏈表節(jié)點(diǎn),直至文件末尾。</p><p><b>  

21、改進(jìn)二:</b></p><p>  在各個目錄的選擇過程時,先使用了int型的choice來儲存客戶的選擇,但當(dāng)客戶不按照提示,輸入char型的數(shù)據(jù)時,會導(dǎo)致程序不能識別,進(jìn)入死循環(huán)。發(fā)現(xiàn)這個問題后,我將choice改為了char型。但又由于輸入時的回車號,會被讀入下次的choice=getchar(),使程序運(yùn)行出錯。最后,我在choice=getchar()的前面加了getchar()來儲存回車

22、,改進(jìn)了這個問題。</p><p><b>  改進(jìn)三:</b></p><p>  在book()和refund()模塊中,由于要回寫,會有if((fp1=fopen("plane.txt","wt+"))==NULL),但當(dāng)用戶執(zhí)行到一半直接關(guān)閉程序時,由于未執(zhí)行回寫部分的語句,將導(dǎo)致txt文檔中的信息會沒有。之后,我將打開

23、文檔的語句剛放在回寫的前面,這樣當(dāng)用戶關(guān)閉時,txt里面的信息不會丟失。</p><p><b>  4 開發(fā)體會</b></p><p>  經(jīng)過了這次的飛機(jī)票銷售系統(tǒng)程序的開發(fā),讓我深刻地明白了,軟件的開發(fā)是一個體力活,是對眼力和腦力的一次考驗。</p><p>  開始時,由于對文件和鏈表的極度不熟悉,會對編寫這個程序感到十分的茫然。但

24、當(dāng)慢慢地了解了動態(tài)鏈表的建立過程,熟悉了用fscanf和fprintf對文件的寫出和寫入,我覺得自己應(yīng)該可以做了。</p><p>  程序功能模塊的劃分還算比較簡單,接下來就是一塊一塊的做。上學(xué)期在學(xué)c語言時,所編的程序一般就只有主函數(shù),即使是在學(xué)函數(shù)這塊,一般也就調(diào)用一兩個簡單的函數(shù),最多的程序也就100行。這次的最后有600多行,對函數(shù)的調(diào)用也是挺復(fù)雜的,其間還有許多對輸入輸出信息的處理,對文件及鏈表的操作

25、。整個這次微型軟件的編寫過程,讓我對軟件的編寫有了一定的認(rèn)識,同時自己程序的編寫能力也是得到了極大的提升,對結(jié)構(gòu)化的程序編寫方法有了很深的理解和體會。</p><p>  開始對文件打開時,不了解“a”,“r”,“w”等打開方式,會導(dǎo)致txt中的信息被清空。后來經(jīng)過了單獨(dú)的測試,才體會到了各種方式的用法,以及在程序中的位置不同而對程序的運(yùn)行造成不同的影響,最終能夠?qū)ξ募醋约旱南敕ㄈミM(jìn)行操作。</p>

26、<p>  將文件中的信息儲存到建立的鏈表中后,不知道如何在各個功能模塊中調(diào)用鏈表,覺得如果一個函數(shù)中建立一次就太麻煩了。后來想到了將建立鏈表的過程單獨(dú)的做成函數(shù),輸出鏈表的頭指針,再在函數(shù)中調(diào)用時,將頭指針賦給相應(yīng)的結(jié)構(gòu)指針就可以對整個鏈表進(jìn)行操作了。</p><p>  編寫到退票模塊時,才突然發(fā)現(xiàn)在訂票模塊沒有修改訂票后的航班信息。再重新考慮回寫問題時,經(jīng)常出現(xiàn)文件回寫未成功時,文件中的信息被

27、清空了,挺讓人郁悶的。這就是將航班和機(jī)票信息直接寫到txt中的壞處吧!不過在編寫大型軟件時,或許只能把信息存在文檔中,這就要求編寫人員在編寫時考慮到各種各樣的問題,防止出現(xiàn)將程序信息清空的現(xiàn)象吧。這個事情讓我了解到,編程序需要十分的細(xì)心,且要考慮很多的細(xì)節(jié),確實(shí)是個體力活。</p><p>  在編寫過程中,也發(fā)現(xiàn)了一些VC的類似bug的東西。比如:如果fprintf后面有scanf等一些等待輸入的指令時,會回寫

28、不進(jìn)去,即便它跟fprintf回寫的東西完全無關(guān);一些循環(huán),有的只能用for,有的又只能用while;在使用scanf和gets輸入字符和字符串時,有非常容易讀入錯誤,要在%c前加空格等等。</p><p>  這次的程序由于不再只是自己使用,所以需要人性化的輸入界面。這也是第一次設(shè)定界面,因此在設(shè)計輸入和輸出界面時,費(fèi)了不少精力,也因此調(diào)試了不少時間。雖然最后的界面與一般的程序界面還是有很大的差距,但也算是稍微

29、人性化了吧,仿佛感受到了上個世紀(jì)人們的用電腦的過程。</p><p>  經(jīng)過這次軟件設(shè)計,感覺自己對軟件編寫有了初步的認(rèn)識,對電腦上的一些程序有了一些新的認(rèn)識。比如機(jī)房上機(jī)登陸時的界面,應(yīng)該就是用C的吧;用鼠標(biāo)操作軟件,只是把輸入設(shè)備擴(kuò)展到了鼠標(biāo);使用一些程序時,基本地把其分解為幾個功能模塊等??傊?,經(jīng)過三個星期的努力,雖然辛苦,但真真實(shí)實(shí)地學(xué)到了很多的東西,這個過程也挺讓人難忘的。</p>&l

30、t;p><b>  附錄:源代碼清單</b></p><p>  #include<stdio.h></p><p>  #include<malloc.h></p><p>  #include<time.h></p><p>  #include<windows.h&g

31、t;</p><p>  #include<conio.h></p><p>  struct airline//儲存航班信息</p><p><b>  {</b></p><p>  char number[8];</p><p>  char place[5];</p>

32、;<p>  char time[6];</p><p><b>  int left;</b></p><p><b>  int sum;</b></p><p>  int price;</p><p>  struct airline *next;</p><

33、;p><b>  };</b></p><p>  struct ticket//儲存機(jī)票信息</p><p><b>  {</b></p><p>  int number1;</p><p>  char number2[8];</p><p>  char pl

34、ace[5];</p><p>  char time[6];</p><p>  char name[10];</p><p>  char sex[5];</p><p>  int price;</p><p>  struct ticket *next;</p><p><b>

35、;  };</b></p><p>  struct airline *list1();</p><p>  struct ticket *list2();</p><p>  void airlinesearch();</p><p>  void search11(struct airline *);</p>&

36、lt;p>  void search12(struct airline *);</p><p>  void search13(struct airline *);</p><p>  void menu();</p><p>  void menu1(struct airline *);</p><p>  void menu2(st

37、ruct ticket *);</p><p>  void book();</p><p>  void ticketsearch();</p><p>  void search21(struct ticket *);</p><p>  void search22(struct ticket *);</p><p&g

38、t;  void refund();</p><p>  struct airline *list1()//創(chuàng)建航班信息的鏈表</p><p><b>  {</b></p><p><b>  int n;</b></p><p>  struct airline *p1,*p2,*head;&l

39、t;/p><p><b>  FILE *fp;</b></p><p>  if((fp=fopen("plane.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("打開文件失敗\n&quo

40、t;);</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  if((p1=(struct airline *)malloc(sizeof(struct airline)))==NULL)//建立頭指針</p><p><b>

41、  {</b></p><p>  printf("內(nèi)存分配失敗\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  head=p1;p2=p1;</p><p>  fo

42、r(n=0;n<10;n++)//建立鏈表以儲存航班信息</p><p><b>  {</b></p><p>  p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  if((p1=(struct airline *)malloc(sizeo

43、f(struct airline)))==NULL)</p><p><b>  {</b></p><p>  printf("內(nèi)存分配失敗\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p

44、><p><b>  }</b></p><p>  p2->next=NULL;</p><p><b>  p1=head;</b></p><p>  while(p1!=NULL)</p><p><b>  {</b></p>

45、<p>  fscanf(fp,"%s %s %s %d %d %d\n",p1->number,p1->place,p1->time,&p1->left,&p1->sum,&p1->price);</p><p>  p2=p1->next;</p><p><b>  p1=p2;

46、</b></p><p><b>  }</b></p><p>  return(head);</p><p><b>  free(p1);</b></p><p>  fclose(fp);</p><p><b>  }</b><

47、;/p><p>  struct ticket *list2()//建立機(jī)票信息的鏈表</p><p><b>  {</b></p><p>  struct ticket *p1,*p2,*head;</p><p><b>  FILE *fp;</b></p><p> 

48、 if((fp=fopen("ticket.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("打開文件失敗\n");</p><p><b>  exit(0);</b></p><

49、p><b>  }</b></p><p>  if((p1=(struct ticket *)malloc(sizeof(struct ticket)))==NULL)//建立頭指針</p><p><b>  {</b></p><p>  printf("內(nèi)存分配失敗\n");</p&

50、gt;<p><b>  exit(0);</b></p><p><b>  }</b></p><p>  head=p1;p2=p1;</p><p>  while(feof(fp)==0)</p><p><b>  {</b></p>&

51、lt;p>  p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  fscanf(fp,"%d %s %s %s %s %s %d\n",&p1->number1,p1->number2,p1->place,p1->time,p1->name,p1->

52、sex,&p1->price);</p><p>  if((p1=(struct ticket *)malloc(sizeof(struct ticket)))==NULL)</p><p><b>  {</b></p><p>  printf("內(nèi)存分配失敗\n");</p><p&

53、gt;<b>  exit(0);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  p2->next=NULL;</p><p>  return(head);</p><p><b

54、>  free(p1);</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void menu()//主菜單</p><p><b>  {</b></p><p><b>  int

55、n;</b></p><p>  char choice;</p><p>  printf(" 歡迎使用飛機(jī)票銷售系統(tǒng)\n\n");</p><p>  printf("請選擇您要進(jìn)行的服務(wù)\n\n");</p><p>  for(n=0

56、;n<20;n++)</p><p>  {printf(" ");}</p><p>  printf("****************************************\n");</p><p>  printf(" ┃☆☆☆☆☆☆1.航班信息查詢◇◇☆☆

57、☆☆┃\n");</p><p>  printf(" ┃◇◇◇◇◇◇2.訂票 ◇◇◇◇◇◇┃\n");</p><p>  printf(" ┃○○○○○○3.機(jī)票信息查詢○○○○○○┃\n");</p><p>  printf

58、(" ┃△△△△△△4.退票 △△△△△△┃\n");</p><p>  for(n=0;n<20;n++)</p><p>  {printf(" ");}</p><p>  printf("********************************

59、********\n");</p><p>  printf("提示:如果是第一次輸入,請先按“space”再選擇\n");</p><p>  getchar();</p><p><b>  do</b></p><p><b>  {</b></p>

60、<p>  choice=getchar();</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case '1': system("cls");</p><p>  airlinesearch();</p&

61、gt;<p><b>  break;</b></p><p>  case '2': system("cls");</p><p><b>  book();</b></p><p><b>  break;</b></p><p

62、>  case '3': system("cls");</p><p>  ticketsearch();</p><p><b>  break;</b></p><p>  case '4': system("cls");</p><p>

63、<b>  refund();</b></p><p><b>  break;</b></p><p>  default: printf("您輸入的有誤");</p><p>  Sleep(2000);</p><p>  system("cls");&

64、lt;/p><p><b>  menu();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  }while(choice!='5');</p><p><b>

65、  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  menu();</b></p><p><b>  }</b></p><p>  void airlinesea

66、rch()//航班信息查詢</p><p><b>  {</b></p><p>  struct airline *head;</p><p>  head=list1();</p><p>  menu1(head);</p><p><b>  }</b></p

67、><p>  void menu1(struct airline *p)//查詢航班信息的主目錄</p><p><b>  {</b></p><p><b>  int n;</b></p><p>  char choice;</p><p>  printf("

68、 ╔════════╗\n");</p><p>  printf(" ║ ║\n");</p><p>  printf(" ║ 航班查詢模塊

69、 ║\n");</p><p>  printf(" ║ ║\n");</p><p>  printf(" ╚════════╝\n\n");</p><p>  pri

70、ntf("請按提示選擇您要查詢的方式\n\n");</p><p>  for(n=0;n<20;n++)</p><p>  {printf(" ");}</p><p>  printf("━━━━━━━━━━━━━━━━━━━━━\n");</p><p>  print

71、f(" ┃☆☆☆☆☆☆1.按航班編號查找 ☆☆☆☆┃\n");</p><p>  printf(" ┃◇◇◇◇◇◇2.按航班目的地查找 ◇◇◇◇┃\n");</p><p>  printf(" ┃○○○○○○3.按航班起飛

72、時間查找○○○○┃\n");</p><p>  printf(" ┃△△△△△△4.返回上級 △△△△┃\n");</p><p>  for(n=0;n<20;n++)</p><p>  {printf(" ");}</p><p&

73、gt;  printf("━━━━━━━━━━━━━━━━━━━━━\n");</p><p><b>  do</b></p><p><b>  {</b></p><p>  getchar();</p><p>  choice=getchar();</p>

74、<p>  switch(choice)</p><p><b>  {</b></p><p>  case '1': search11(p);</p><p><b>  break;</b></p><p>  case '2': search12(

75、p);</p><p><b>  break;</b></p><p>  case '3': search13(p);</p><p><b>  break;</b></p><p>  case '4': system("cls");<

76、;/p><p><b>  menu();</b></p><p><b>  break;</b></p><p>  default: printf("您輸入的有誤\n");</p><p>  Sleep(2000);</p><p>  system(

77、"cls");</p><p><b>  menu1(p);</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  }while(choice!='5');</p>

78、<p><b>  }</b></p><p>  void search11(struct airline *phead)//按航班編號查找</p><p><b>  {</b></p><p>  struct airline *p1,*p2;</p><p>  char pl

79、anenum[8],in;</p><p>  int n,flag=0;</p><p>  printf("請輸入所要查詢的航班編號\n");</p><p>  scanf("%s",planenum);//輸入航班號</p><p>  p1=p2=phead;</p><p

80、>  for(n=0;n<10;n++)//循環(huán)與鏈表中航班號比較</p><p><b>  {</b></p><p>  if(strcmp(p1->number,planenum)==0)</p><p><b>  {</b></p><p><b>  fla

81、g=1;</b></p><p>  Sleep(2000);</p><p>  system("cls");</p><p>  printf("您查詢的航班信息如下所示:\n\n\n\n");</p><p>  printf(" *************

82、*************************************************\n");</p><p>  printf(" 航班號\t目的地\t起飛時間 剩余票數(shù) 總票數(shù)\t機(jī)票價格\n");</p><p>  printf(" %s\t%s\t%s\t %d\t\t%d\t

83、 %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p><p>  printf(" **************************************************************\n\n\n");</p&g

84、t;<p>  printf("輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);</p><p>  while(in!='a')</p><p><b>  {</b></p><p>  printf(&

85、quot;輸入不合法\n");</p><p>  printf("輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);}</p><p>  Sleep(2000);</p><p>  system("cls");</p&g

86、t;<p>  menu1(phead);//重新輸入</p><p><b>  break;</b></p><p><b>  }</b></p><p>  p2=p1->next;</p><p><b>  p1=p2;</b></p>

87、;<p><b>  }</b></p><p>  if(flag==0)</p><p><b>  {</b></p><p>  printf("您輸入的信息有誤");</p><p>  Sleep(1000);</p><p> 

88、 system("cls");</p><p>  menu1(phead);//回到航班信息查詢目錄</p><p><b>  }</b></p><p><b>  }</b></p><p>  void search12(struct airline *phead)//

89、按目的地查找</p><p><b>  {</b></p><p>  struct airline *p1,*p2;</p><p>  char place[5],in;</p><p>  int n,flag=0;</p><p>  printf("請輸入所要查詢的航班目的地

90、\n");</p><p>  scanf("%s",place);//輸入目的地</p><p>  p1=p2=phead;</p><p>  for(n=0;n<10;n++)//循環(huán)與鏈表中航班目的地比較</p><p><b>  {</b></p><

91、p>  if(strcmp(p1->place,place)==0)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p>  Sleep(2000);</p><p>  system("cls");</p

92、><p>  printf("您查詢的航班信息如下所示:\n\n\n\n");</p><p>  printf(" **************************************************************\n");</p><p>  printf("

93、 航班號\t目的地\t起飛時間 剩余票數(shù) 總票數(shù)\t機(jī)票價格\n");</p><p>  printf(" %s\t%s\t%s\t %d\t\t%d\t %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p>

94、<p>  printf(" **************************************************************\n\n\n");</p><p>  printf("輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);&

95、lt;/p><p>  while(in!='a')</p><p><b>  {</b></p><p>  printf("輸入不合法\n");</p><p>  printf("輸入“a”返回上級\n");</p><p>  scan

96、f(" %c",&in);</p><p><b>  }</b></p><p>  Sleep(2000);</p><p>  system("cls");</p><p>  menu1(phead);//重新輸入</p><p><b

97、>  break;</b></p><p><b>  }</b></p><p>  p2=p1->next;</p><p><b>  p1=p2;</b></p><p><b>  }</b></p><p>  if(

98、flag==0)</p><p><b>  {</b></p><p>  printf("您輸入的信息有誤");</p><p>  Sleep(1000);</p><p>  system("cls");</p><p>  menu1(phead)

99、;//回到航班查詢目錄</p><p><b>  }</b></p><p><b>  }</b></p><p>  void search13(struct airline *phead)//按起飛時間查找</p><p><b>  {</b></p>

100、<p>  struct airline *p1,*p2;</p><p>  char time[5],in;</p><p>  int n,flag=0;</p><p>  printf("請輸入所要查詢的航班時間\n");</p><p>  scanf("%s",time);//輸

101、入航班時間</p><p>  p1=p2=phead;</p><p>  for(n=0;n<10;n++)//循環(huán)與鏈表中航班時間比較</p><p><b>  {</b></p><p>  if(strcmp(p1->time,time)==0)</p><p><b

102、>  {</b></p><p><b>  flag=1;</b></p><p>  Sleep(2000);</p><p>  system("cls");</p><p>  printf("您查詢的航班信息如下所示:\n\n\n\n");</p&

103、gt;<p>  printf(" **************************************************************\n");</p><p>  printf(" 航班號\t目的地\t起飛時間 剩余票數(shù) 總票數(shù)\t機(jī)票價格\n");</p><p>

104、;  printf(" %s\t%s\t%s\t %d\t\t%d\t %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p><p>  printf(" ********************************

105、******************************\n\n\n");</p><p>  printf("輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);</p><p>  while(in!='a')</p><p>&

106、lt;b>  {</b></p><p>  printf("輸入不合法\n");</p><p>  printf("輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);</p><p><b>  }</b

107、></p><p>  Sleep(2000);</p><p>  system("cls");</p><p>  menu1(phead);//重新輸入</p><p><b>  break;</b></p><p><b>  }</b>&

108、lt;/p><p>  p2=p1->next;</p><p><b>  p1=p2;</b></p><p><b>  }</b></p><p>  if(flag==0)</p><p><b>  {</b></p><

109、;p>  printf("您輸入的信息有誤");</p><p>  Sleep(1000);</p><p>  system("cls");</p><p>  menu1(phead);//回到航班查詢目錄</p><p><b>  }</b></p>

110、<p><b>  }</b></p><p>  void book()//訂票</p><p><b>  {</b></p><p>  struct airline *head1,*p1,*p2;</p><p>  struct ticket *head2,*p3,*p4,*ad

111、d;</p><p>  char planenum[8],name[10],sex[5],in;</p><p>  int flag=0;</p><p>  FILE *fp1,*fp2;</p><p>  if((fp2=fopen("ticket.txt","at+"))==NULL)//以

112、追加的形式打開文本文檔</p><p><b>  {</b></p><p>  printf("打開文件失敗\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>

113、  if((add=(struct ticket *)malloc(sizeof(struct ticket)))==NULL)</p><p><b>  {</b></p><p>  printf("內(nèi)存分配失敗\n");</p><p><b>  exit(0);</b></p>

114、<p><b>  }</b></p><p>  head1=list1();</p><p>  p1=p2=head1;</p><p>  head2=list2();</p><p>  p3=p4=head2;</p><p>  state:printf("**

115、******************************************************************************");</p><p>  printf(" ╔════════╗\n");</p><p>  printf("

116、 ║ ║\n");</p><p>  printf(" ║ 訂票模塊 ║\n");</p><p>  printf(" ║ ║

117、\n");</p><p>  printf(" ╚════════╝\n");</p><p>  printf("********************************************************************************");

118、</p><p>  printf("\n\n請輸入您要乘坐的飛機(jī)的航班號\n");</p><p>  scanf("%s",planenum);//輸入航班號</p><p>  while(p1!=NULL)//與鏈表中航班編號比較</p><p><b>  {</b>&l

119、t;/p><p>  if(strcmp(p1->number,planenum)==0&&p1->left!=0)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p>  printf("請輸入您的姓名: &

120、quot;);</p><p>  scanf(" %s",name);</p><p>  printf("請輸入您的性別: ");</p><p>  scanf(" %s",sex);</p><p><b>  break;</b></p>

121、<p><b>  }</b></p><p>  p2=p1->next;</p><p><b>  p1=p2;</b></p><p><b>  }</b></p><p>  if(flag==0)</p><p><

122、b>  {</b></p><p>  printf("您輸入的信息有誤");</p><p>  Sleep(2000);</p><p>  system("cls");</p><p>  goto state;//重新輸入</p><p><b&g

123、t;  }</b></p><p>  strcpy(add->number2,p1->number);</p><p>  strcpy(add->place,p1->place);</p><p>  strcpy(add->time,p1->time);</p><p>  strcpy(

124、add->name,name);</p><p>  strcpy(add->sex,sex);</p><p>  add->price=p1->price;//新建剛訂的機(jī)票信息</p><p>  while(p4->next!=NULL)</p><p><b>  {</b><

125、;/p><p>  p3=p4->next;</p><p><b>  p4=p3;</b></p><p><b>  }</b></p><p>  add->number1=p4->number1+1;</p><p>  p4->next=add

126、;</p><p>  add->next=NULL;//將新建的節(jié)點(diǎn)與原鏈表連起來</p><p>  fprintf(fp2,"\n%d %s %s %s %s %s %d",add->number1,add->number2,add->place,add->time,add->name,add->sex,add->p

127、rice);//將訂票信息寫入文件</p><p>  printf("訂票成功\n");</p><p>  printf("機(jī)票信息如下:\n\n\n");</p><p>  printf("************************************************************

128、********************");</p><p>  printf(" 機(jī)票編號 航班號 目的地\t 起飛時間 姓名 性別 機(jī)票價格\n");</p><p>  printf(" %d\t%s %s\t %s\t %s\t%s\t %d\n",add->

129、number1,add->number2,add->place,add->time,add->name,add->sex,add->price);</p><p>  printf("********************************************************************************");</

130、p><p>  p1->left=p1->left-1;//該航班剩余機(jī)票數(shù)減1</p><p><b>  p1=head1;</b></p><p>  if((fp1=fopen("plane.txt","wt+"))==NULL)</p><p><b>

131、  {</b></p><p>  printf("打開文件失敗\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  while(p1!=NULL)//將改動后的航班信息寫入文本中</p&g

132、t;<p><b>  {</b></p><p>  fprintf(fp1,"%s %s %s %d %d %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p><p>  p2=p1->next;<

133、/p><p><b>  p1=p2;</b></p><p><b>  }</b></p><p>  fclose(fp1);</p><p>  fclose(fp2);</p><p>  free(add);</p><p>  printf(

134、"輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);//重新輸入</p><p>  while(in!='a')</p><p><b>  {</b></p><p>  printf("輸入不合法\n&quo

135、t;);</p><p>  printf("輸入“a”返回上級\n");</p><p>  scanf(" %c",&in);</p><p><b>  }</b></p><p>  Sleep(2000);</p><p>  system

136、("cls");</p><p>  menu();//回到目錄</p><p><b>  }</b></p><p>  void ticketsearch()</p><p><b>  {</b></p><p>  struct ticket *

137、head;</p><p>  head=list2();</p><p>  menu2(head);</p><p><b>  }</b></p><p>  void menu2(struct ticket *p)//查詢航班信息的主目錄</p><p><b>  {</

138、b></p><p><b>  int n;</b></p><p>  char choice;</p><p>  printf(" ╔════════╗\n");</p><p>  printf("

139、 ║ ║\n");</p><p>  printf(" ║ 航班查詢模塊 ║\n");</p><p>  printf(" ║ ║

140、\n");</p><p>  printf(" ╚════════╝\n\n");</p><p>  printf("請按提示選擇您要查詢的方式\n\n");</p><p>  for(n=0;n<20;n++)</p><p&

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論