軟件課程設計--c語言程序之飛機票訂票系統(tǒng)_第1頁
已閱讀1頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  袆膀葿衿螂腿薁螞肁膈芁袈羇膇莃蝕袃芇蒅袆蝿芆薈蠆肇芅莇蒁肅芄蒀螇罿芃薂薀裊節(jié)節(jié)螅螁芁莄薈肀莁蒆螄羆莀蕿薆袂荿羋螂螈莈蒁薅膆莇薃袀肂莆蚅蚃羈蒞蒞袈襖羂蕆蟻螀羈蕿袇聿肀艿蝕羅聿莁裊袁肈薄蚈袇肈蚆薁膆肇莆螆肂肆蒈蕿羈肅薀螄襖肄芀薇螀膃莂螃肈膃蒅薅羄膂蚇螁羀膁莇蚄袆膀葿衿螂腿薁螞肁膈芁袈羇膇莃蝕袃芇蒅袆蝿芆薈蠆肇芅莇蒁肅芄蒀螇罿芃薂薀裊節(jié)節(jié)螅螁芁莄薈肀莁蒆螄羆莀蕿薆袂荿羋螂螈莈蒁薅膆莇薃袀肂莆蚅蚃羈蒞蒞袈襖羂蕆蟻螀羈蕿袇聿

2、肀艿蝕羅聿莁裊袁肈薄蚈袇肈蚆薁膆肇莆螆肂肆蒈蕿羈肅薀螄襖肄芀薇螀膃莂螃肈膃蒅薅羄膂蚇螁羀膁莇蚄袆膀葿衿螂腿薁螞肁膈芁袈羇膇莃蝕袃芇蒅袆蝿芆薈蠆肇芅莇蒁肅芄蒀螇罿芃薂薀裊節(jié)節(jié)螅螁芁莄薈肀莁蒆螄羆莀蕿薆袂荿羋螂螈莈蒁薅膆莇薃袀肂莆蚅蚃羈蒞蒞袈襖羂蕆蟻螀羈蕿袇聿肀艿蝕羅聿莁裊袁肈薄蚈袇肈蚆薁膆肇莆螆肂肆蒈蕿羈肅薀螄襖肄芀薇螀膃莂螃肈膃蒅薅羄膂蚇螁羀膁莇蚄袆膀葿衿螂腿薁螞肁膈芁袈羇膇莃蝕袃芇蒅袆蝿芆薈蠆肇芅莇蒁肅芄蒀螇罿芃薂薀裊節(jié)節(jié)螅螁芁莄薈肀

3、莁蒆螄羆莀蕿薆袂荿羋螂螈莈蒁薅膆莇薃袀肂莆蚅蚃羈蒞蒞袈襖羂蕆蟻螀羈蕿袇聿肀艿蝕羅聿莁裊袁肈薄蚈袇肈蚆薁膆肇莆螆肂肆蒈蕿羈肅薀螄襖肄芀薇螀膃莂螃</p><p><b>  軟件課程設計報告</b></p><p><b>  目錄</b></p><p><b>  1軟件設計3</b></p

4、><p><b>  1.1主要功能3</b></p><p><b>  1.2程序模塊3</b></p><p><b>  1.3結構體3</b></p><p>  1.4文件指針定義4</p><p><b>  1.5函數(shù)聲明

5、4</b></p><p><b>  1.6流程圖5</b></p><p><b>  1.7說明15</b></p><p><b>  2軟件測試15</b></p><p><b>  3算法改進22</b></p>

6、;<p><b>  4開發(fā)體會22</b></p><p>  附錄:源代碼清單23</p><p><b>  1軟件設計</b></p><p><b>  1.1主要功能</b></p><p>  本程序最多支持管理100個航班信息,10000機票信

7、息,管理員可以進行航班信息的輸入、單個或全部航班信息的刪除、航班信息查詢、旅客信息輸入、機票信息查詢、機票訂購以及機票退訂等功能,其中航班信息查詢支持按航班號查詢以及按目的地和起飛時間查詢兩種方式,機票信息查詢支持按航班號查詢、按旅客姓名查詢以及按機票編號查詢三種方式。程序運行開始時要輸入管理員密碼(默認為U200914197),通過后可以自由進行操作,但需要按提示操作。</p><p><b>  具

8、體功能如下:</b></p><p>  菜單 ①主菜單 ②航班信息查詢方式菜單 ③航班信息維護方式菜單 ④機票信息查詢方式菜單</p><p>  文件讀取 ①本地航班信息讀取 ②本地機票信息讀取</p><p>  文件保存 ①本地航班信息保存 ②本地機票信息保存</p><p>  信息輸入 ①航班信息輸入 ②機票信

9、息輸入</p><p>  查詢 ①航班信息查詢 ②機票信息查詢</p><p><b>  航班信息維護</b></p><p><b>  訂票與退票</b></p><p><b>  1.2程序模塊</b></p><p>  菜單模塊 ①主

10、菜單 ②航班信息查詢方式菜單 ③航班信息維護方式菜單 ④機票信息查詢方式菜單</p><p>  文件讀取模塊 ①本地航班信息讀取 ②本地機票信息讀取</p><p>  文件保存模塊 ①本地航班信息保存 ②本地機票信息保存</p><p>  信息輸入模塊 ①航班信息輸入 ②機票信息輸入</p><p>  查詢模塊 ①航班信息查詢

11、 ②機票信息查詢</p><p><b>  航班信息維護模塊</b></p><p><b>  訂票與退票模塊</b></p><p><b>  1.3結構體</b></p><p>  struct FLIGHT // 航班信息結構

12、

13、

14、 </p><p><b>  {</b></p><p>  char flight_num[10];//航班號</p><p>  char start[10];//出發(fā)地</p><p>  char destination[10];//目的地</p><p&g

15、t;  char takeoff_time[8];//起飛時刻</p><p>  char arrive_time[8];//到達時刻</p><p>  unsigned int num;//總票數(shù)</p><p>  unsigned int left;//剩余票數(shù)</p><p>  unsigned int price;//價格&

16、lt;/p><p><b>  };</b></p><p>  struct TICKET // 機票信息結構 </p><p><b&g

17、t;  {</b></p><p>  char flight_num[10];//航班號</p><p>  char ticket_num[10];//機票編號</p><p>  char start[10];//出發(fā)地</p><p>  char destination[10];//目的地</p><

18、p>  char takeoff_time[8];//起飛時刻</p><p>  char arrive_time[8];//到達時刻</p><p>  char gate_num[5];//登機口</p><p>  char seat_num[10];//座位號</p><p>  char name[10];//姓名</

19、p><p>  char sex[4];//性別</p><p>  char id_num[20];//身份證號</p><p>  char phone_num[16];//聯(lián)系電話</p><p><b>  };</b></p><p>  struct FLIGHT all[M]; //航

20、班結構數(shù)組</p><p>  struct FLIGHT *pp; //指向航班的結構數(shù)組</p><p>  struct TICKET passenger[N]; //機票信息結構數(shù)組</p><p>  struct TICKET *qq; //</p><p><b>  1.4文件指針定義&

21、lt;/b></p><p>  FILE *fp_flight_info,*fp_ticket_info;//航班信息文件指針,機票信息文件指針</p><p><b>  1.5函數(shù)聲明</b></p><p>  void flight_info_input();//航班信息輸入函數(shù)</p><p>  vo

22、id flight_info_delete();//單個航班信息刪除</p><p>  void flight_info_deleteall();//全部航班信息刪除</p><p>  void ticket_info_input(struct FLIGHT *p);//機票信息輸入</p><p>  void ticket_book();//機票訂購<

23、/p><p>  void ticket_cancel();//機票退訂</p><p>  void fileread1();//讀取本地航班信息</p><p>  void fileread2();//讀取本地機票信息</p><p>  void filesave1();//保存本地航班信息</p><p>  v

24、oid filesave2();//保存本地機票信息</p><p>  void search_flight_num();//按航班號查詢航班信息</p><p>  void search_destination_time();//按目的地和起飛時間查詢航班信息</p><p>  void search_ticket_flight_num();//按航班號查詢

25、機票信息</p><p>  void search_ticket_name();//按旅客姓名查詢機票信息</p><p>  void search_ticket_num();//按機票編號查詢機票信息</p><p>  void rootmenu();//主菜單</p><p>  void menu1();//航班信息查詢方式菜單&

26、lt;/p><p>  void menu2();//航班信息維護方式菜單</p><p>  void menu3();//機票信息查詢方式菜單</p><p><b>  1.6流程圖</b></p><p><b>  main函數(shù)流程圖</b></p><p>  主菜單

27、void rootmenu()流程圖</p><p>  menu1,menu2,menu3的流程圖與主菜單的流程圖一樣,不再重復。</p><p><b>  本地文件讀取</b></p><p>  航班信息讀取與機票信息讀取流程圖是一樣的,不再重復。</p><p><b>  本地文件保存</b&

28、gt;</p><p><b>  航班信息輸入</b></p><p><b>  單個航班信息刪除</b></p><p>  全部航班信息刪除與此流程圖類似,不再重復</p><p><b>  航班信息查詢</b></p><p>  機票信息查

29、詢與此類似,不再重復。</p><p><b>  機票訂購</b></p><p><b>  機票退訂</b></p><p><b>  1.7說明</b></p><p>  此程序中除地名人名性別用中文輸入外,其他全用英文輸入,時間請用24時制且按09:04的格式輸入

30、(注意冒號為英文下輸入)。為了更流暢地運行程序請按提示操作。正常的程序退出只能使用主菜單下的保存退出,否則將丟失信息。系統(tǒng)的初始密碼為U200914197。接下來介紹關于程序中的一些具體實現(xiàn)。航班信息以及機票信息用的是結構數(shù)組存儲,且用結構指針進行傳遞。定義了兩個外部靜態(tài)型變量計數(shù)航班數(shù)以及已售機票數(shù),又定義了兩個文件指針分別指向存儲航班信息的文件和存儲機票信息的文件。為了將界面做的比較友好,做了四個菜單,且主函數(shù)中除了驗證密碼外功能外

31、,其他均是調用函數(shù)。航班信息包括航班號、出發(fā)地、目的地、起飛時刻、到達時刻、總票數(shù)、剩余票數(shù)、價格,機票信息包括航班號、機票編號、出發(fā)地、目的地、起飛時刻、到達時刻、登機口、座位號、姓名、性別、身份證號、聯(lián)系電話,其中航班號、出發(fā)地、目的地、起飛時刻、到達時刻、價格均是真實信息,總票數(shù)、剩余票數(shù)是隨手寫的,航班信息在顯示時均會顯示,且會有一個內部編號以供訂票用、刪除用,這樣在其它函數(shù)中就不用重復寫查詢函數(shù),機票編號是用B1+機票訂購次序

32、編號而成,登機口是用A+航</p><p>  改程序其實可以繼續(xù)增加功能,例如更改密碼的功能,有更加多的查詢方式,以及可以支持不同的輸入(如地名用中文、拼音、縮寫等),目的地還要顯示所降落的機場,所坐飛機的機型、艙位等級,支持更多的出發(fā)地(默認為武漢),還有就是支持不同的日期以及可以根據(jù)一個星期的航班信息查詢以后任一天的航班信息。</p><p><b>  2軟件測試<

33、/b></p><p><b>  3算法改進</b></p><p>  該程序如果用鏈表這種非線性存儲結構進行的話,效率可能會更高。而在進行程序時,有的地方也要分配內存以進行現(xiàn)場保護。這個程序中最大的問題是如何將退了之后的票再賣出,而機票號碼和座位號不會發(fā)生重復,開始時沒有注意到這個問題,后來發(fā)現(xiàn)了之后,經(jīng)過認真的思考,想到了可以先進性排異性查別,如果有相同

34、的則往前進行排查,發(fā)現(xiàn)有不同的就將其作為賣出票的號碼</p><p><b>  4開發(fā)體會</b></p><p>  經(jīng)過三個多星期的努力,我終于完成了此飛機票銷售系統(tǒng)的開發(fā)調試以及最終的順利運行,期間遇到的問題是原本在學習C語言時所未曾想到的。我們從少數(shù)幾個函數(shù)到能執(zhí)行一定功能的小型軟件,從單一程序到包含程序、數(shù)據(jù)、文檔的軟件,期間的飛躍不可謂不小。在最開始的時

35、候,由于文件操作以及鏈表操作均是上學期未學的,所以一直被阻攔到這里,不能繼續(xù)進行,而后來熟悉了之后,再進行操作則會非常順利。期間不斷的調試以及編譯運行所增加的C語言知識是任何只靠記憶而知道的C語言知識多得多。而本次課程的學習更加加深了我們對C語言以及對實際編程困難的理解。這一次的飛機票售票系統(tǒng),讓我掌握了更多的編程思路和編程的經(jīng)驗,將在今后受益匪淺。</p><p><b>  附錄:源代碼清單<

36、/b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #define M 100 //所支持的航班最大數(shù)量</p><p> 

37、 #define N 10000 //所支持的機票最大數(shù)量</p><p>  struct FLIGHT // 航班信息結構

38、

39、 </p><p><b>  {</b></p><p>  char flight_num[10];//航班號</p><

40、;p>  char start[10];//出發(fā)地</p><p>  char destination[10];//目的地</p><p>  char takeoff_time[8];//起飛時刻</p><p>  char arrive_time[8];//到達時刻</p><p>  unsigned int num;//總票

41、數(shù)</p><p>  unsigned int left;//剩余票數(shù)</p><p>  unsigned int price;//價格</p><p><b>  };</b></p><p>  struct TICKET // 機票信息結構

42、 </p><p><b>  {</b></p><p>  char flight_num[10];//航班號</p><p>  char ticket_num[10];//機票編號</p>

43、<p>  char start[10];//出發(fā)地</p><p>  char destination[10];//目的地</p><p>  char takeoff_time[8];//起飛時刻</p><p>  char arrive_time[8];//到達時刻</p><p>  char gate_num[5];/

44、/登機口</p><p>  char seat_num[10];//座位號</p><p>  char name[10];//姓名</p><p>  char sex[4];//性別</p><p>  char id_num[20];//身份證號</p><p>  char phone_num[16];//聯(lián)

45、系電話</p><p><b>  };</b></p><p>  struct FLIGHT all[M]; //航班結構數(shù)組</p><p>  struct FLIGHT *pp; //指向航班的結構數(shù)組</p><p>  struct TICKET passenger[N]; //機票信息結構數(shù)組

46、</p><p>  struct TICKET *qq; //</p><p>  FILE *fp_flight_info,*fp_ticket_info;//航班信息文件指針,機票信息文件指針</p><p>  static int flinum=0,ticnum=0;//外部靜態(tài)型變量,分別用來計數(shù)航班數(shù)量與機票數(shù)量</p>

47、<p>  char str[8]={"B1"};//用來組合生成機票編號</p><p>  void flight_info_input();//航班信息輸入函數(shù)</p><p>  void flight_info_delete();//單個航班信息刪除</p><p>  void flight_info_deleteall

48、();//全部航班信息刪除</p><p>  void ticket_info_input(struct FLIGHT *p);//機票信息輸入</p><p>  void ticket_book();//機票訂購</p><p>  void ticket_cancel();//機票退訂</p><p>  void fileread1

49、();//讀取本地航班信息</p><p>  void fileread2();//讀取本地機票信息</p><p>  void filesave1();//保存本地航班信息</p><p>  void filesave2();//保存本地機票信息</p><p>  void search_flight_num();//按航班號查詢航

50、班信息</p><p>  void search_destination_time();//按目的地和起飛時間查詢航班信息</p><p>  void search_ticket_flight_num();//按航班號查詢機票信息</p><p>  void search_ticket_name();//按旅客姓名查詢機票信息</p><p

51、>  void search_ticket_num();//按機票編號查詢機票信息</p><p>  void rootmenu();//主菜單</p><p>  void menu1();//航班信息查詢方式菜單</p><p>  void menu2();//航班信息維護方式菜單</p><p>  void menu3();

52、//機票信息查詢方式菜單</p><p>  void main()</p><p><b>  {</b></p><p>  printf(" 說明:此程序中除使用的地名人名性別用中文 \n");//系統(tǒng)說明</p><p&g

53、t;  printf(" 輸入外,其他全用英文輸入,時間請使 \n");</p><p>  printf(" 用24時制且按 09:08的格式輸入。為了 \n");</p><p

54、>  printf(" 更流暢地使用請按提示操作。正常的程 \n");</p><p>  printf(" 序退出只能使用主菜單下的保存退出, \n"); </p><p

55、>  printf(" 否則輸入的信息將丟失! \n");</p><p>  system("pause");</p><p>  char code[16];</p><p><b>  int

56、x=0;</b></p><p>  begin:printf("\n請輸入管理員密碼,連續(xù)三次錯誤將退出程序(初始為U200914197)\n");//密碼保護</p><p>  gets(code);</p><p>  if(strcmp("U200914197",code)!=0)</p>

57、<p><b>  {</b></p><p><b>  x++;</b></p><p><b>  if(x==3)</b></p><p><b>  {</b></p><p><b>  exit(1);</b>

58、;</p><p><b>  }</b></p><p>  goto begin;</p><p><b>  }</b></p><p>  pp=&all[0];//指針賦初值</p><p>  qq=&passenger[0];</p>

59、<p>  fileread1();//本地文件讀取</p><p>  fileread2();</p><p>  rootmenu();</p><p><b>  }</b></p><p>  /***************************主菜單*********************

60、**********/</p><p>  void rootmenu()</p><p><b>  {</b></p><p><b>  begin:</b></p><p>  fflush(stdin);</p><p>  system("cls&quo

61、t;);</p><p>  printf("*****************************歡迎使用飛機票銷售系統(tǒng)*****************************");</p><p>  printf("*

62、 *");</p><p>  printf("* 1.航班信息查詢 *");</p><p>  printf("* 2.旅客信息查詢

63、 *");</p><p>  printf("* 3.機票訂購 *");</p><p>  printf("*

64、 4.機票退訂 *");</p><p>  printf("* 5.航班信息維護 *");</p><p>  printf("*

65、 6.保存退出 *");</p><p>  printf("********************************************************************************");</p><p>

66、  printf("請輸入選項!\n");</p><p><b>  char c;</b></p><p>  c=getchar();</p><p>  if(c>='1'&&c<='6')</p><p><b>  {&

67、lt;/b></p><p><b>  switch(c)</b></p><p><b>  {</b></p><p><b>  case '1':</b></p><p><b>  menu1();</b></p&g

68、t;<p><b>  break;</b></p><p>  case '2': </p><p><b>  menu3();</b></p><p><b>  break;</b></p><p><b>  case '

69、;3':</b></p><p>  ticket_book();</p><p><b>  break;</b></p><p><b>  case '4':</b></p><p>  ticket_cancel();</p><p&g

70、t;<b>  break;</b></p><p><b>  case '5':</b></p><p><b>  menu2();</b></p><p><b>  break;</b></p><p><b>  ca

71、se '6':</b></p><p>  filesave1();</p><p>  filesave2();</p><p>  printf("謝謝使用!\n");</p><p><b>  exit(1);</b></p><p><

72、;b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p&g

73、t;  printf("ERROR!Please input again\n");</p><p>  system("pause");</p><p>  system("cls");</p><p>  goto begin;</p><p><b>  }</b

74、></p><p><b>  } </b></p><p>  /********************************子菜單1***********************************/</p><p>  void menu1()</p><p><b>  {</b&g

75、t;</p><p><b>  begin:</b></p><p>  fflush(stdin) ;</p><p>  system("cls");</p><p>  printf(" *航班信息查詢*

76、 \n");</p><p>  printf(" 1.按航班號 ");</p><p>  printf("

77、 2.按目的地和起飛時間 ");</p><p>  printf(" 3.退出 ");</p><p>  printf("請輸入選項!\n&qu

78、ot;);</p><p><b>  char c;</b></p><p>  c=getchar();</p><p>  if(c>='1'&&c<='3')</p><p><b>  {</b></p><p

79、><b>  switch(c)</b></p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  search_flight_num();</p><p><b>  break;<

80、;/b></p><p><b>  case '2':</b></p><p>  search_destination_time();</p><p><b>  break;</b></p><p><b>  case '3':</b&g

81、t;</p><p>  rootmenu();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b><

82、/p><p><b>  {</b></p><p>  printf("ERROR!Please input again\n");</p><p>  system("pause");</p><p>  system("cls");</p><

83、;p>  goto begin;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /****************************子菜單2***********************************/</p><p>  

84、void menu2()</p><p><b>  {</b></p><p><b>  begin:</b></p><p>  fflush(stdin);</p><p>  system("cls");</p><p>  printf(&qu

85、ot; *航班信息維護* \n");</p><p>  printf(" 1.航班信息輸入 ");</p><

86、;p>  printf(" 2.單個航班信息刪除 ");</p><p>  printf(" 3.全部航班信息刪除 ");<

87、;/p><p>  printf(" 4.退出 ");</p><p>  printf("請輸入選項!\n");</p><p><b>  char c;</b>

88、</p><p>  c=getchar();</p><p>  if(c>='1'&&c<='4')</p><p><b>  {</b></p><p><b>  switch(c)</b></p><p>

89、;<b>  {</b></p><p><b>  case '1':</b></p><p>  flight_info_input();</p><p><b>  break;</b></p><p><b>  case '2'

90、;:</b></p><p>  flight_info_delete();</p><p><b>  break;</b></p><p><b>  case '3':</b></p><p>  flight_info_deleteall();</p>

91、<p><b>  break;</b></p><p><b>  case '4':</b></p><p>  rootmenu();</p><p><b>  break;</b></p><p><b>  }</b&g

92、t;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("ERROR!Please input again\n");</p><

93、p>  system("pause");</p><p>  system("cls");</p><p>  goto begin;</p><p><b>  }</b></p><p><b>  }</b></p><p>

94、;  /*************************子菜單3**************************/</p><p>  void menu3()</p><p><b>  {</b></p><p><b>  begin:</b></p><p>  fflush(stdi

95、n);</p><p>  system("cls");</p><p>  printf(" *旅客信息查詢* \n");</p><p>  printf("

96、 1.按航班號查詢 ");</p><p>  printf(" 2.按姓名查詢 ");</p><p>  printf(&qu

97、ot; 3.按機票號查詢 ");</p><p>  printf(" 4.退出 ");</p>&

98、lt;p>  printf("請輸入選項!\n");</p><p><b>  char c;</b></p><p>  c=getchar();</p><p>  if(c>='1'&&c<='4')</p><p><b

99、>  {</b></p><p><b>  switch(c)</b></p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  search_ticket_flight_num();

100、</p><p><b>  break;</b></p><p><b>  case '2':</b></p><p>  search_ticket_name();</p><p><b>  break;</b></p><p>

101、<b>  case '3':</b></p><p>  search_ticket_num();</p><p><b>  break;</b></p><p><b>  case '4':</b></p><p>  rootmenu(

102、);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</

103、b></p><p>  printf("ERROR!Please input again\n");</p><p>  system("pause");</p><p>  system("cls");</p><p>  goto begin;</p><

104、;p><b>  }</b></p><p><b>  }</b></p><p>  /******************************本地文件讀取************************************/</p><p>  void fileread1()</p>&

105、lt;p><b>  {</b></p><p>  if((fp_flight_info=fopen("flight_info.dat","rb"))==NULL) //檢查能否以只讀方式打開文件</p><p><b>  {</b></p><p>  fp_fl

106、ight_info=fopen("flight_info.dat","wb"); //不能打開文件就新建文件</p><p><b>  }</b></p><p>  rewind(fp_flight_info); //指針重新定位到文件首部</p><p>  for(;fr

107、ead(pp,sizeof(struct FLIGHT),1,fp_flight_info)==1;pp++,flinum++) //將每個FLIGHT結構讀取出來并計數(shù)</p><p><b>  continue;</b></p><p>  fclose(fp_flight_info);//關閉文件</p><p><b> 

108、 }</b></p><p>  void fileread2()</p><p><b>  {</b></p><p>  if((fp_ticket_info=fopen("ticket_info.dat","rb"))==NULL)</p><p>  { f

109、p_ticket_info=fopen("ticket_info.dat","wb");</p><p><b>  }</b></p><p>  rewind(fp_ticket_info);</p><p>  for(;fread(qq,sizeof(struct TICKET),1,fp_fli

110、ght_info)==1;qq++,ticnum++)</p><p><b>  continue;</b></p><p>  fclose(fp_ticket_info);</p><p><b>  }</b></p><p>  /*****************************

111、**文件保存**************************************/</p><p>  void filesave1()</p><p><b>  {</b></p><p>  if((fp_flight_info=fopen("flight_info.dat","wb+"))

112、==NULL) //檢查能否以讀、寫或新建方式打開文件</p><p><b>  {</b></p><p>  printf("不能打開文件.\n");</p><p>  exit(1); //退出程序</p><p><b>  }</b></p>&

113、lt;p>  rewind(fp_flight_info); //指針重新定位到文件首部</p><p>  fwrite(&all[0],sizeof(struct FLIGHT),flinum,fp_flight_info); //將所有信息寫入本地文件</p><p>  fclose(fp_flight_info); //關閉文件</p>&

114、lt;p><b>  }</b></p><p>  void filesave2()</p><p><b>  { </b></p><p>  if((fp_ticket_info=fopen("ticket_info.dat","wb+"))==NULL)</p&

115、gt;<p><b>  {</b></p><p>  printf("不能打開文件.\n");</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  rewind(fp_ticke

116、t_info);</p><p>  fwrite(&passenger[0],sizeof(struct TICKET),ticnum,fp_ticket_info);</p><p>  fclose(fp_ticket_info);</p><p><b>  }</b></p><p>  /******

117、*************************航班信息輸入**********************************/</p><p>  void flight_info_input()</p><p>  { //依次輸入信息</p><p><b>  while(1

118、)</b></p><p><b>  {</b></p><p>  fflush(stdin); //清空標準輸入設備緩存,以免對下面的輸入有影響</p><p>  printf("\n請輸入航班號:"); </p><p>  gets(pp->flig

119、ht_num);</p><p>  strcpy(pp->start,"武漢"); //出發(fā)地默認為武漢</p><p>  printf("\n請輸入目的地:"); //需要始終使用漢字輸入</p><p>  gets(pp->destination);</p><p>  p

120、rintf("\n請輸入起飛時刻:"); //需要使用“09:24”類似的格式輸入時間</p><p>  gets(pp->takeoff_time);</p><p>  printf("\n請輸入到達時刻:");</p><p>  gets(pp->arrive_time);</p><

121、;p>  printf("\n請輸入總票數(shù):");</p><p>  scanf("%d",&pp->num);</p><p>  printf("\n請輸入剩余票數(shù):");</p><p>  scanf("%d",&pp->left);</

122、p><p>  printf("\n請輸入價格:");</p><p>  scanf("%d",&pp->price);</p><p>  flinum++; //航班數(shù)量增加1</p><p>  pp++; //指針挪到下一個結構</p><p>

123、;  fflush(stdin);</p><p>  printf("\n是否繼續(xù)輸入航班信息?是請按 Y 按其他退出\n");//判斷是否繼續(xù)輸入</p><p><b>  char cc;</b></p><p>  cc=getchar();</p><p>  if(cc=='

124、Y')</p><p><b>  {</b></p><p>  system("cls");</p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>

125、;  else</b></p><p><b>  {</b></p><p>  rootmenu();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }&l

126、t;/b></p><p><b>  }</b></p><p>  /******************************機票信息輸入**********************************/ </p><p>  void ticket_info_input(struct FLIGHT *p) //根據(jù)

127、航班信息往機票中寫入共有的信息</p><p><b>  {</b></p><p>  fflush(stdin); </p><p>  strcpy(qq->flight_num,p->flight_num); </p><p>  int a=ticnum+1;</p><

128、p>  char str3[8]={"A"}; </p><p>  V:char str1[8];</p><p>  sprintf(str1,"%s%04d",str,a);//將已有機票數(shù)加1按“0010”這樣的格式存到str1中作為機票編號的一部分</p><p>  for(int i=0;i<tic

129、num;i++)</p><p><b>  {</b></p><p>  if(strcmp(str1,passenger[i].ticket_num)==0)//檢查是否有同樣的機票編號,由于退票可能造成有一樣的機票編號</p><p><b>  {</b></p><p><b>

130、;  a--;</b></p><p><b>  goto V;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  strcpy(qq->ticket_num,str1); //寫入機票信息<

131、;/p><p>  strcpy(qq->start ,p->start); </p><p>  strcpy(qq->destination,p->destination); </p><p>  strcpy(qq->takeoff_time,p->takeoff_time); </p><p&g

132、t;  strcpy(qq->arrive_time,p->arrive_time); </p><p>  str3[1]=p->flight_num[strlen(p->flight_num)-2]; //將A和航班號后兩位組合到一起作為登機口號碼</p><p>  str3[2]=p->flight_num[strlen(p->flig

133、ht_num)-1]; //</p><p>  str3[3]='\0'; //</p><p>  strcpy(qq->gate_num,str3); </p><p><b>  int b;</b></p><p>  b=p->num-p->left+1;</

134、p><p>  B:char str2[5];</p><p>  sprintf(str2,"%03d",b);//將已售出的機票數(shù)加1以格式“008”作為座位號</p><p>  for(i=0;i<ticnum;i++)</p><p><b>  {</b></p><

135、p>  if(strcmp(str2,passenger[i].seat_num)==0&&strcmp(p->flight_num,passenger[i].flight_num)==0)//檢查是否有同樣的座位號,由于退票可能造成有一樣的座位號</p><p><b>  {</b></p><p>  b--;//往前檢查</p

溫馨提示

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

評論

0/150

提交評論