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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、><p><b>  1.1主要功能3</b></p><p><b>  1.2程序模塊3</b></p><p><b>  1.3結(jié)構(gòu)體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說(shuō)明15</b></p><p><b>  2軟件測(cè)試15</b></p><p><b>  3算法改進(jìn)22</b></p>

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

7、息,管理員可以進(jìn)行航班信息的輸入、單個(gè)或全部航班信息的刪除、航班信息查詢(xún)、旅客信息輸入、機(jī)票信息查詢(xún)、機(jī)票訂購(gòu)以及機(jī)票退訂等功能,其中航班信息查詢(xún)支持按航班號(hào)查詢(xún)以及按目的地和起飛時(shí)間查詢(xún)兩種方式,機(jī)票信息查詢(xún)支持按航班號(hào)查詢(xún)、按旅客姓名查詢(xún)以及按機(jī)票編號(hào)查詢(xún)?nèi)N方式。程序運(yùn)行開(kāi)始時(shí)要輸入管理員密碼(默認(rèn)為U200914197),通過(guò)后可以自由進(jìn)行操作,但需要按提示操作。</p><p><b>  具

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

9、息輸入</p><p>  查詢(xún) ①航班信息查詢(xún) ②機(jī)票信息查詢(xún)</p><p><b>  航班信息維護(hù)</b></p><p><b>  訂票與退票</b></p><p><b>  1.2程序模塊</b></p><p>  菜單模塊 ①主

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

11、 ②機(jī)票信息查詢(xún)</p><p><b>  航班信息維護(hù)模塊</b></p><p><b>  訂票與退票模塊</b></p><p><b>  1.3結(jié)構(gòu)體</b></p><p>  struct FLIGHT // 航班信息結(jié)構(gòu)

12、

13、

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

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

16、lt;/p><p><b>  };</b></p><p>  struct TICKET // 機(jī)票信息結(jié)構(gòu) </p><p><b&g

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

18、p>  char takeoff_time[8];//起飛時(shí)刻</p><p>  char arrive_time[8];//到達(dá)時(shí)刻</p><p>  char gate_num[5];//登機(jī)口</p><p>  char seat_num[10];//座位號(hào)</p><p>  char name[10];//姓名</

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

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

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

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

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

24、oid filesave2();//保存本地機(jī)票信息</p><p>  void search_flight_num();//按航班號(hào)查詢(xún)航班信息</p><p>  void search_destination_time();//按目的地和起飛時(shí)間查詢(xún)航班信息</p><p>  void search_ticket_flight_num();//按航班號(hào)查詢(xún)

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

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

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

28、gt;</p><p><b>  航班信息輸入</b></p><p><b>  單個(gè)航班信息刪除</b></p><p>  全部航班信息刪除與此流程圖類(lèi)似,不再重復(fù)</p><p><b>  航班信息查詢(xún)</b></p><p>  機(jī)票信息查

29、詢(xún)與此類(lèi)似,不再重復(fù)。</p><p><b>  機(jī)票訂購(gòu)</b></p><p><b>  機(jī)票退訂</b></p><p><b>  1.7說(shuō)明</b></p><p>  此程序中除地名人名性別用中文輸入外,其他全用英文輸入,時(shí)間請(qǐng)用24時(shí)制且按09:04的格式輸入

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

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

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

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

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

35、候,由于文件操作以及鏈表操作均是上學(xué)期未學(xué)的,所以一直被阻攔到這里,不能繼續(xù)進(jìn)行,而后來(lái)熟悉了之后,再進(jìn)行操作則會(huì)非常順利。期間不斷的調(diào)試以及編譯運(yùn)行所增加的C語(yǔ)言知識(shí)是任何只靠記憶而知道的C語(yǔ)言知識(shí)多得多。而本次課程的學(xué)習(xí)更加加深了我們對(duì)C語(yǔ)言以及對(duì)實(shí)際編程困難的理解。這一次的飛機(jī)票售票系統(tǒng),讓我掌握了更多的編程思路和編程的經(jīng)驗(yàn),將在今后受益匪淺。</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 //所支持的機(jī)票最大數(shù)量</p><p>  struct FLIGHT // 航班信息結(jié)構(gòu)

38、

39、 </p><p><b>  {</b></p><p>  char flight_num[10];//航班號(hào)</p><

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

41、數(shù)</p><p>  unsigned int left;//剩余票數(shù)</p><p>  unsigned int price;//價(jià)格</p><p><b>  };</b></p><p>  struct TICKET // 機(jī)票信息結(jié)構(gòu)

42、 </p><p><b>  {</b></p><p>  char flight_num[10];//航班號(hào)</p><p>  char ticket_num[10];//機(jī)票編號(hào)</p>

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

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

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

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

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

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

49、();//讀取本地航班信息</p><p>  void fileread2();//讀取本地機(jī)票信息</p><p>  void filesave1();//保存本地航班信息</p><p>  void filesave2();//保存本地機(jī)票信息</p><p>  void search_flight_num();//按航班號(hào)查詢(xún)航

50、班信息</p><p>  void search_destination_time();//按目的地和起飛時(shí)間查詢(xún)航班信息</p><p>  void search_ticket_flight_num();//按航班號(hào)查詢(xún)機(jī)票信息</p><p>  void search_ticket_name();//按旅客姓名查詢(xún)機(jī)票信息</p><p

51、>  void search_ticket_num();//按機(jī)票編號(hào)查詢(xún)機(jī)票信息</p><p>  void rootmenu();//主菜單</p><p>  void menu1();//航班信息查詢(xún)方式菜單</p><p>  void menu2();//航班信息維護(hù)方式菜單</p><p>  void menu3();

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

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

54、>  printf(" 更流暢地使用請(qǐng)按提示操作。正常的程 \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請(qǐng)輸入管理員密碼,連續(xù)三次錯(cuò)誤將退出程序(初始為U200914197)\n");//密碼保護(hù)</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("*****************************歡迎使用飛機(jī)票銷(xiāo)售系統(tǒng)*****************************");</p><p>  printf("*

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

63、 *");</p><p>  printf("* 3.機(jī)票訂購(gòu) *");</p><p>  printf("*

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

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

66、  printf("請(qǐng)輸入選項(xiàng)!\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(" *航班信息查詢(xún)*

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

77、 2.按目的地和起飛時(shí)間 ");</p><p>  printf(" 3.退出 ");</p><p>  printf("請(qǐng)輸入選項(xiàng)!\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; *航班信息維護(hù)* \n");</p><p>  printf(" 1.航班信息輸入 ");</p><

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

87、;/p><p>  printf(" 4.退出 ");</p><p>  printf("請(qǐng)輸入選項(xiàng)!\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(" *旅客信息查詢(xún)* \n");</p><p>  printf("

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

97、ot; 3.按機(jī)票號(hào)查詢(xún) ");</p><p>  printf(" 4.退出 ");</p>&

98、lt;p>  printf("請(qǐng)輸入選項(xiàng)!\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) //檢查能否以只讀方式打開(kāi)文件</p><p><b>  {</b></p><p>  fp_fl

106、ight_info=fopen("flight_info.dat","wb"); //不能打開(kāi)文件就新建文件</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++) //將每個(gè)FLIGHT結(jié)構(gòu)讀取出來(lái)并計(jì)數(shù)</p><p><b>  continue;</b></p><p>  fclose(fp_flight_info);//關(guān)閉文件</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) //檢查能否以讀、寫(xiě)或新建方式打開(kāi)文件</p><p><b>  {</b></p><p>  printf("不能打開(kāi)文件.\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); //將所有信息寫(xiě)入本地文件</p><p>  fclose(fp_flight_info); //關(guān)閉文件</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("不能打開(kāi)文件.\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); //清空標(biāo)準(zhǔn)輸入設(shè)備緩存,以免對(duì)下面的輸入有影響</p><p>  printf("\n請(qǐng)輸入航班號(hào):"); </p><p>  gets(pp->flig

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

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

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

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

123、;  fflush(stdin);</p><p>  printf("\n是否繼續(xù)輸入航班信息?是請(qǐng)按 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>  /******************************機(jī)票信息輸入**********************************/ </p><p>  void ticket_info_input(struct FLIGHT *p) //根據(jù)

127、航班信息往機(jī)票中寫(xiě)入共有的信息</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);//將已有機(jī)票數(shù)加1按“0010”這樣的格式存到str1中作為機(jī)票編號(hào)的一部分</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)//檢查是否有同樣的機(jī)票編號(hào),由于退票可能造成有一樣的機(jī)票編號(hào)</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); //寫(xiě)入機(jī)票信息<

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和航班號(hào)后兩位組合到一起作為登機(jī)口號(hào)碼</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);//將已售出的機(jī)票數(shù)加1以格式“008”作為座位號(hào)</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)//檢查是否有同樣的座位號(hào),由于退票可能造成有一樣的座位號(hào)</p><p><b>  {</b></p><p>  b--;//往前檢查</p

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論