飛機航班訂票系統(tǒng)C語言程序設(shè)計報告_第1頁
飛機航班訂票系統(tǒng)C語言程序設(shè)計報告_第2頁
飛機航班訂票系統(tǒng)C語言程序設(shè)計報告_第3頁
飛機航班訂票系統(tǒng)C語言程序設(shè)計報告_第4頁
飛機航班訂票系統(tǒng)C語言程序設(shè)計報告_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設(shè)計課程設(shè)計說明書課程名稱程序設(shè)計設(shè)計題目飛機航班訂票系統(tǒng)專業(yè)班級計算機應(yīng)用技術(shù)201221學(xué)生姓名指導(dǎo)教師起止日期2013年6月8日至2013年6月14日福建林業(yè)職業(yè)牧*拷皖自劭化工程a目錄1設(shè)計內(nèi)容、任務(wù)以及要求11.1 計 fl 的aj "o'11.2要求12總體設(shè)計思路22. 1系統(tǒng)基本功能22. 2具體設(shè)計思想22.3系統(tǒng)的總體流程圖33 功能模塊的詳細(xì)設(shè)計53.1結(jié)構(gòu)的定義53.2各個函數(shù)的設(shè)計具體設(shè)計思想和流程圖54.功能模塊的調(diào)試及測試274. 1添加函數(shù)的測試274. 2判斷函數(shù)的測試284. 3刪除函數(shù)的測試284. 4統(tǒng)計函數(shù)的測試284.5密碼確認(rèn)

2、函數(shù)的測試144. 6密碼的修改函數(shù)31344.7主函函數(shù)的測試32 5總結(jié)6致謝35參考文獻36原程序代碼:211設(shè)計內(nèi)容、任務(wù)以及要求設(shè)計題目的內(nèi)容、任務(wù)主要利用c語言的文件操作能力設(shè)計開發(fā)一個小型的飛機訂票系統(tǒng),至少具 有如下功能:信息讀出,可以查看全部航班信息和查詢一個航班信息??梢赃M行 添加(再添加過程中有重復(fù)顯示提示信息)、刪除、訂票等基本操作。操作界面 要能使使用者看懂,以便使使用者正確使用。具體內(nèi)容如下:程序?qū)儆诜菙?shù)值計算型算法設(shè)計,學(xué)生需要設(shè)計出飛機訂票系統(tǒng)所需要的基 本功能,并設(shè)計簡單的界面。(1) 通過提示菜單選擇可以進行的操作。(2) 將航班的信息存入文件中,并命名為f

3、lighttnfo. txt。(3) 將訂票情況信息存入文件中,并命名為selecttnfo. txt。(4) 在本系統(tǒng)中可以進行管理系統(tǒng)包含的基本操作,其中包括a) 查看所有航班的信息b) 輸入一條航班的航班編號,從當(dāng)前航班中進行查找,如果找到則顯 示該航班的相關(guān)信息,如果沒有找到則給岀提示信息0)添加一條航班的基本信息,通過輸入航班編號,首先查找是否存在 該航班編號的航班,如果存在則提示重新輸入,否則將該航班按照 順序插入到相應(yīng)位置d) 刪除一條航班的基本信息,通過輸入航班編號,首先查找是否存在 該航班編號的航班,如果存在則將該航班刪除,否則給出提示信息, 提示該航班不存在e) 選擇一條航

4、班,需要給出學(xué)號和航班編號,如果航班編號不存在則 重新輸入,直到輸入正確為止,并將學(xué)號和相應(yīng)的航班編號存入 selecttnfo. txt 文件中(5) 航班基本信息包括航班編號、起點、終點、飛行吋間和訂票額度這些簡 單信息。(6) 航班信息文件中每一行存放一條航班的信息。12要求要求:明確課程設(shè)計的目的,能根據(jù)課程設(shè)計的要求,查閱相關(guān)文獻,為 完成設(shè)計準(zhǔn)備必要的知識;提高學(xué)生用高級語言進行程序設(shè)計的能力,重點 提高用c語言進行文件操作和繪圖應(yīng)用的編程技術(shù)水平;初步了解軟件開發(fā)的 一般方法和步驟;提高撰寫技術(shù)文檔的能力。2總體設(shè)計思路2. 1系統(tǒng)基本功能外部操作:根據(jù)耍求系統(tǒng)耍有查看全部航班信

5、息,查詢一個航班,添加航 班(再添加過程屮如有重復(fù)顯示提示信息),刪除航班(在刪除過程屮如果沒 有查找到要刪除的顯示提示信息),選擇航班訂票。內(nèi)部操作:將航班的信息存入文件中,并命名為flightinfo, txto將訂 票情況信息存入文件中,并命名為selectinfo, txto相應(yīng)的航班編號存入 selectinfo, txt 文件中為了接近實戰(zhàn)模擬飛機航班訂票系統(tǒng),增加了一些功能。增加功能有把系 統(tǒng)分為了兩個部分,一個是官方操作,一個是客戶端。官方操作有密碼認(rèn)定和 密碼修改,密碼的以文件形式存儲在硬盤里,以只讀認(rèn)定客戶,以只寫修改密 碼。官方還有查看訂票情況,由函數(shù)統(tǒng)計出來的??蛻舳嗽?/p>

6、加了機票顯示(顯 示包括統(tǒng)計岀來的座位號,以及航班號和學(xué)號)。2. 2具體設(shè)計思想(1)以結(jié)構(gòu)化各個功能模塊,函數(shù)間的調(diào)用精簡整個函數(shù)。(2)以全局結(jié)構(gòu)來隨時定義結(jié)構(gòu)數(shù)組以及機構(gòu)。(3)以寫一個信息存一個的思想,實現(xiàn)多個添加功能。(4)以讀一個打印一個的思想,實現(xiàn)顯示全部信息。(5)以先判斷(以判斷函數(shù)給定是否有此航班)再打印的思想,來實現(xiàn)查 找是否有這個航班。(6)以先判斷(以判斷函數(shù)給定是否有此航班)再添加的思想,(添加中引用 了刪除函數(shù)以供用戶選擇),實現(xiàn)添幾功能。(7)以先判斷(以判斷函數(shù)給定是否有此航班)再刪除的思想,刪除航班信息o(8)以循環(huán)統(tǒng)計(以統(tǒng)計函數(shù)統(tǒng)計給定航班號)訂票文件

7、的的情況返回值 的思想,以顯示當(dāng)前訂票情況。(9)以統(tǒng)計(以統(tǒng)計函數(shù)統(tǒng)計給定航班號)來返回值的思想,以顯示座位 號。(10)密碼的確認(rèn)以及修改,是利用文件存儲的永久性來實現(xiàn)的,以只讀來 確認(rèn)密碼,以只寫來修改密碼的思想,來實現(xiàn)的官方操作。2. 3系統(tǒng)的總體流程圖圖2.1系統(tǒng)的總體流程圖(1)2. 2系統(tǒng)的總體流程圖(2)/時間以小時為單位/頂票信息機構(gòu)/航班號學(xué)號/座位號3 功能模塊的詳細(xì)設(shè)計3. 1結(jié)構(gòu)的定義為了方便使用結(jié)構(gòu)此系統(tǒng)結(jié)構(gòu)均為全局類型定義,其定義有如下兩個typedef struct flight/航班信息機構(gòu)char fnumber5;char start20;char des

8、tination20;int time;int money; fl;typedef struct consumerchar no 5;char xuehao10;int n; select;3. 2各個函數(shù)的設(shè)計具體設(shè)計思想和流程圖此系統(tǒng)一共十四個函數(shù)如下所示:(1)intjudgc_havc_or_no_a_f 1 ight (char) ;/判斷是否有這個航班(2)voi ddelete_a_filght(char ch);刪除函數(shù)(3)voidadd many_hangban ();/新建(添加)航班信息(4)voidview_all ();/察看所有的航班信息(5)voidscan_a

9、_filght( char ch);/查看個航班函數(shù)(6)intmima_hanshu ();/密碼確認(rèn)函數(shù)(7)voi dxiugai_hanshu();/密碼修改函數(shù)(8)voidtongj i_han_shu();/飛機航班統(tǒng)計函數(shù)(9)intzuoweihaosure(char hangban);/座位確定函數(shù)(10)1 void select_a_filght();訂票函數(shù)(11)(void printf_han_shu();官方界面美化函數(shù)(12)1 void printf_han_shu_comsouer();/顧客端界面美化函數(shù)(13)1 void time han shu()

10、;/時間函數(shù)3. 2.1判斷是否有這個航班函數(shù)根據(jù)要求在添加的時候要先判斷是否己有此航班信息,給出相應(yīng)的提示。所 以以判斷函數(shù)的返回值來提示是否要對原有的航班信息進行操作,因此判斷函數(shù) 的類型為整型。其功能具體設(shè)計如下:具 體 流 程 如 下 所 示輸入航班號只讀方式打開文件m=strcmp(dp.fnumber,ch);第一次比一次if(m=0)語句判斷是否 有何已知數(shù)據(jù)相等的只要條件成立nhl并眺出循返回n的值return n;代碼說明圖3. 1以下代碼說明請對照程序附件。ch為字符型字符串,添加函數(shù)在調(diào)用時 引入的實參的值付給它,然后引入函數(shù)屮應(yīng)用。file *fp :文件指針指向航班信

11、息(flightinfo, txt)存儲文本的緩存地址。if語句是對文本是否打開做出判斷。文件以只讀方式打開。fl dp;是定義的航班信此結(jié)構(gòu)。while語句是把文件里的數(shù)據(jù)讀到內(nèi)存里,然后和ch字符串比較,如果相 等m二二0,不相等它就不是一個定值了。strcmp(dp. fnumber, ch);判斷是否讀出來的數(shù)據(jù)和已知數(shù)據(jù)是否相等。if語句是用來確定返回值,如果有與已知數(shù)據(jù)n就是1否則為0; fclose(fp);關(guān)閉文件指針。return n;返冋 n3.2.2刪除函數(shù)刪除一個航班的基本思想是,把文件中的數(shù)據(jù)全部讀出來,然后再放回去, 與已知數(shù)據(jù)進行比較,如果相等說明就是刪除的數(shù)據(jù),

12、就不放回文件屮。具體流程如下所示圖3.2代碼說明ch為引用的字符串。fl all100;定義的結(jié)構(gòu)數(shù)組,來控制變量。把文件中的數(shù)據(jù)全部讀出來, 放到結(jié)構(gòu)數(shù)組里以便操作。if (fp二fopen(flightinfo. txt", "r")二二null)判 斷文件是否打開。以只讀的方式。while語句把文件里的數(shù)據(jù)讀到結(jié)構(gòu)數(shù)組里,以i的自增來確保數(shù)據(jù)的完整。 len=i;作為下面while(i<len)語句的循環(huán)控制。fp=fopen(,zflightinfo. txt", v);語句以只寫的方式打開。將文件里的書 局全部覆蓋掉。tf語句中的:str

13、cmp(al 1 i. fnumber, ch) !=0判斷但當(dāng)前字符串是否和已知 字符串是否相等,并以此來確定是否打印數(shù)據(jù)到文件中。如果哦相等說明與已知 字符串相等。就不打印到文件中以此來刪除航班信息。fclose(fp);對打印到文件中數(shù)據(jù)保證存儲。3.2.3新建(添加航班信息函數(shù)以追加方式打開文件,先輸入要輸入的個數(shù),再在for循環(huán)中輸入航班號, 在for循環(huán)屮先判斷是否已有次航班,如果已有做出相應(yīng)的提示。沒有則接續(xù)輸 入。流程圖圖3.3代碼說明pdntf(nnntt請輸入要添加的航班個數(shù):);顯示提示信息,以增加 程序的美觀。scanf (%d, &n)語句是要輸入的航班個數(shù)。

14、if (fp=fopen(flightinfo, txt", a+")二二null)printf(f訂e can not open!,z);exit(0);語句以追加(既可以讀也可以寫,讀重文件頭開始讀,寫重 文件末尾寫進)的方式打開文件。m=judge_have_or_no_a_f 1 ight (dp. fnumber) ;/判斷是否有這個航班:把實參dp. fnumber引入判斷函數(shù),返冋一個值。if語句:根據(jù)m的值來提示是否當(dāng)前添加的航班號是否已有,并提示做相 應(yīng)的操作有放棄刪除重新輸入,有刪除后重新輸入。if(h=l):語句調(diào)用相應(yīng)的刪除函數(shù),把dp. fnumb

15、er作為實參引用到刪除 函數(shù)。然后用函數(shù)遞歸應(yīng)用在執(zhí)行循環(huán)操作。if(h=2):語句直應(yīng)用函數(shù)遞歸,應(yīng)用添加函數(shù)執(zhí)行添加循環(huán)。在for循環(huán)中沒有應(yīng)用結(jié)構(gòu)數(shù)組,直接輸入一個,就把這個放到文件中。 fprintf:語句是把內(nèi)存中的數(shù)據(jù)打印到文件中。vicw_allo;是查看全部航班函數(shù),為了直接顯示是否添加成功,顯示文件 屮的全部信息。3. 2. 4察看所有的航班信息以只讀方式打開,以文件結(jié)束為標(biāo)志結(jié)束,從文件中讀一個就打印一個的思 想。流程圖圖3.4代碼說明printfc航班號起飛地點終點 飛行時間(小時)票價(元)nw);:此語句是對航班總體的說明while:語句為控制循環(huán),然后就讀一個打印一

16、個,直到文件結(jié)束。printf (z,%5s%10s%10s%10d%10dnnz,, dp. fnumber, dp start, dp. destination, dp. time, dp. money)打印內(nèi)容間的距離控制。fclosc(fp);關(guān)閉文件指針。3. 2. 5查看一個航班函數(shù)和查看全部航班信息思想一樣,只是打印出來的時候只準(zhǔn)與查找的航班信息 打印。用一個遷語句條件限制為m =strcmp (dp. fnumber, ch) ;m的值為0才打印 出來。流程圖代碼說明ch導(dǎo)入字符要找的航班號。 while (!feof (fp)控制循環(huán)。m =strcmp(dp. fnumbe

17、r, ch) ;if (m=0) 控制是夠打印。break;如果打卬了就跳岀循環(huán)。根據(jù)if (n-0)判斷是否有與給定數(shù)據(jù)相等的,如果沒有會顯示提示信息3. 2. 6密碼確認(rèn)函數(shù)先給定初始密碼,可以利用密碼修改函數(shù)進行修改,密碼認(rèn)定是把文件中的 字符讀岀來和輸入的進行對比,是否相等來實現(xiàn)的。程序流程圖代碼說明char mima20;密碼最多有20個字符。while (!feof(fp) fscanf (fp, "%s", yuanmima);從文件屮不把密碼拿出來。i f(st rcmp (m i ma, yuanm i ma) =0)與輸入字符進行比較。等則輸入密碼正確,

18、 不等則輸入密碼不正確。返回值說明是否輸入正確,正確返回1,不對返回0.。3. 2. 7密碼修改函數(shù)設(shè)計思想先用密碼確認(rèn)函數(shù)確認(rèn)是否密碼正確,正確才讓進入下一個環(huán)節(jié), 修改是文件以只寫的方式打開,然后保存。函數(shù)流程圖圖3.7代碼說明n=mima_hanshu() ;/引入密碼確認(rèn)函數(shù)。if語句判斷是否密碼正確。正確系統(tǒng)讓進行密碼修改,不正確不讓修改。fclose(fp);關(guān)閉文件。3. 2. 8飛機航班訂票統(tǒng)計函數(shù)以只讀方式打開文件,讀岀每個航班號的訂票情況,然后打印岀來。程序流程代碼說明printf (/,t%stt%dnn/,, dpi. fnumber, n);if (rp=fopen(

19、,zf1 ightlnfo. txt", r)二二null)以只讀方式打開文件 打印岀來,航班信息。whilc(!fcof (rp):控制循環(huán),把文件中的數(shù)據(jù)讀到數(shù)組中。i+;為后面的for循環(huán)做控制。在for循環(huán)中沒統(tǒng)計一次,指針就指到文件末尾,所以每次統(tǒng)計都要重新 打開文件。統(tǒng)計到一個則座位號加一,最終結(jié)果多以就是當(dāng)請客戶的座位號。 fclosc(fp);關(guān)閉文件指針。3.2.9座位確定函數(shù)用的是統(tǒng)計的思想,只要文件中有何已知數(shù)據(jù)相等的票,那么統(tǒng)計變量自增 一。然后打印出來。程序流程圖3.9代碼說明“計”可寫可讀。wh ile(! feof (fp)控制一次一次的讀出來, if

20、(strcmp (hangban, piao. no)=0) 和已知數(shù)據(jù)進行比較,符合自增。不符合進行下一次。 fclose(fp);關(guān)閉文件 return n;返回座位號。3.2.10訂票函數(shù)以先判斷再預(yù)定,成功輸入后把飛機票存入文件中。代碼說明view_all();為了訂票方便引入了查看全部函數(shù)。while (m=l);要求直道輸入正確為止n=judge_have_or_no_a_flight (stu. no) ;/判斷函數(shù);判斷是否有此航班 if(stu.n>1007控前飛機票的數(shù)量不能超過限制人數(shù)。m=0;跳岀循環(huán)。else printf ct無此次航班號,請重新輸入!nnrt

21、);;提示重新輸入。fprintf (fp, n%10st%10st%d,stu. no, stu. xuehao, stu. n) ;fclose(fp)保存已預(yù)定的飛機票。printf (t%stt%stt%dnn", stu no, stu xuehao, stu n);打卬飛機票。3. 2. 10 官方界面美化函數(shù) 顧客端界面美化函數(shù) 時間函數(shù)為了主函數(shù)的簡潔,所以引入兩個顯示提示信息函數(shù)。而時間函數(shù)是為了模 擬真實系統(tǒng)而引用的系統(tǒng)函數(shù),以顯示當(dāng)前時間。然后保存到文件中,以便查詢 操作吋間。4.功能模塊的調(diào)試及測試4.1添加函數(shù)的測試圖4. 1添加函數(shù)的測試4. 1. 1文本

22、文檔中的信息f _= flightinfo-記事本口叵岡文件g)編輯g)格式©)查看 幫助gfgffg12399401239944fgfg12399921239996圖4.2添加后文本中的信息由文木中的信息的出,函數(shù)代碼有誤,原代碼為: fprintf (fp,,n%5s%10s%10s%10d%10dn,/,dp. fnumbcr, dp. start, dp. destination, &dp. time, &dp. moncy); 應(yīng) 該改為: fprintf(fp, "n%5st%10st%10st%10dt%10d", dp. fnumb

23、er,dp.start,dp.des tination, dp. time, dp. money);原因是寫道文件中的事整型數(shù)的地址。所以在文 木中顯示的是亂碼。調(diào)試成功。4. 2判斷函數(shù)的測試(判斷輸入的航班號是否已有,給出相應(yīng)的提示)| c' *c: docu*ents and sett ingsad>inist r at or 桌面710答辯debugchensong.|二 b兇航班號起飛地點終點飛行時間小時票價元alli南示巴黎58988y526河北海南3908二1圖4. 3判斷函數(shù)的測試圖4. 4判斷函數(shù)的測試4.3刪除函數(shù)的測試(引入刪除航班,先通過判斷函數(shù),再進行刪

24、除)圖4. 5刪除函數(shù)的測試輸入1后查看全部圖示為| c: "c:documents and settingsad*inistrator桌面710答辯debugchensong. q航班號起飛地點終點飛行時間小時票價兀y526河北海南3908ufo3烏魯木齊福建5898h176黑龍江昆明3999二1圖4. 6刪除函數(shù)的測試成功的刪除航班。(以拿出來,再放回去的操作,設(shè)置是否打印,以此來實 現(xiàn)刪除)4. 4統(tǒng)計函數(shù)的測試(統(tǒng)計處已訂航班的票數(shù))ca *c: docu>ent sand set t ingsad>inist r at or 桌面7-10答辯debugchens

25、ong航班號£y5262圖4. 7統(tǒng)計函數(shù)的測試原代碼為 if (fp二fopen ("selectinfo, txt", r)=null) printf(file can not open2 !n); exit (0);for(i=0;i<len;i+) while(!feof(fp)fscanf (fp, s%s%d,piao. no, piao. xuehao, &piao. n) ; if (strcmp(dpi. fnumb er, pi ao. no) =0)n二n+1;printf(t%stt%dnn,dpi fnumber,n);n=

26、0; fclose (fp);說明文件指針已經(jīng)一到文件末尾,可以改變指針位置,或者是重復(fù)打開文件指針。 所以改為:for (i=0; i<len; i+) if (fp二fopen ("selectinfo, txt", "r)=null) printf(file can not open2 !n);exit (0);while(!feof(fp) fscanf (fp, s%s%d,piao. no, piao. xuehao, &piao. n);if(strcmp(dpi fnumber, piao. no)二二0)n=n+l;printf(t

27、%stt%dnrt, dpi fnumber, n);n 二0;fclose (fp);圖4. 8統(tǒng)計函數(shù)的測試說明修改成功,證明文件每讀一次文件指針就會指到文件末尾。4. 5密碼確認(rèn)函數(shù)的測試密碼函數(shù)利用文本文檔的長期存儲,以只讀的方式打開文件,和輸入字符串 進行比較。以是否相等來判斷密碼的對錯。以實現(xiàn)密碼確認(rèn)函數(shù)。f: 7-10 答 d ebug chens ong.exe nixnew tine is fri jul 10 13:49:34 2009歡迎進入飛機訂票系統(tǒng)?& <1>官方操作。& <2>客戶端。& <0>退出系統(tǒng)。

28、請輸入(原圖4. 9密碼確認(rèn)函數(shù)的測試 根據(jù)設(shè)想密碼確認(rèn)函數(shù)成功實現(xiàn)。圖4. 10密碼確認(rèn)函數(shù)的測試4. 6密碼的修改函數(shù)模擬密碼操作,先用密碼判斷函數(shù)判斷是否是正確的密碼,然后只寫的方式 把新密碼打印進去在保存的思想,來實現(xiàn)密碼修改。c *f二10答辯debugchensong. exe日回3請輸入(原)密碼注請輸入你的新密碼=000000裡淺成功?歡迎使用飛機訂票系統(tǒng)?本系統(tǒng)有以下功能供你選擇& 丄察看全部航班信息.& 2 查找一個航班信息.& 3 添加航班信息.&刪除航班信息.& 5 預(yù)定你所要的航班.&密碼修改.& 7 航班訂票統(tǒng)

29、計顯示.圖4. 11密碼的修改函數(shù)的測試根據(jù)設(shè)計思想,符合事實。成功地 完成了密碼修改函數(shù)的實現(xiàn)。4.7主函函數(shù)的測試圖4. 12主函函數(shù)的測試根據(jù)辻語句的判斷功能,系統(tǒng)可供官方操作,和客戶端。客戶端直接進入, 官方操作,為模擬真實系統(tǒng)設(shè)計了密碼認(rèn)定,才允許進入。時間函數(shù)就在這時顯 示和存儲。進入官方操作后可以有如圖4. 13所示的操作,進入客戶端有如圖4. 14 的操作。圖4. 13主函函數(shù)的測試圖4. 14主函函數(shù)的測試進入一個操作后就是自身的循環(huán)操作,根據(jù)wehile(n-l)來反復(fù)的界面刷 新和循環(huán)操作。在while的語句中改變n的值來控制循環(huán)的結(jié)束??偨Y(jié)經(jīng)過十天的程序設(shè)計,基本掌握程

30、序設(shè)計的基本方法和步驟。在這十天中悟出:程序設(shè)要求有一定的基礎(chǔ)是必須的,但是更多的是無論你 設(shè)計什么程序,在設(shè)計前一定要有自己的設(shè)計理念、設(shè)計思想,也可以說是中心 思想。否則在做程序的時候,請教一個高手,就有一種不同的方法。結(jié)果最終的 程序不倫不類,設(shè)計完后會發(fā)現(xiàn)會有不同的漏洞。在設(shè)計過程中要人膽的發(fā)揮自 己的想彖力,要敢于不斷的創(chuàng)新,要敢于嘗試,我認(rèn)為這也是一種進步的好方法。另外我述有一個小小的建議,老師們給初學(xué)這門課程的學(xué)生盡量不這門課的 神奇的地方講講,我覺得會對那些對這門課感興趣的同學(xué)會更感興趣。記得上次 老師第一次演示文件時,有點相見恨晚,象被注射了興奮劑一樣。6致謝在這十天的時間里

31、,我學(xué)到了很多知識,這些少不了老師辛苦指導(dǎo)。同 學(xué)之間的幫助,相互鼓勵,以及相互探討,給了自己很大的信心,和跨域式 的進步。所以首先要感謝各位老師和我一起奮斗的同學(xué)們。還要感謝我的父母,是他們給了我機會來學(xué)習(xí)。還要感謝所有為教育事業(yè)作出奉獻的人。社,2004.參考文獻1 楊路明 c語言程序設(shè)計基礎(chǔ).北京郵電大學(xué)出版社.2005.2 何欽銘,顏暉.c語言程序設(shè)計基礎(chǔ).高等教育出版社2008.3 張引c程序設(shè)計基礎(chǔ)課程設(shè)計杭州浙江大學(xué)出版社,2007.4 k0ciiansgc語言編程.電子工業(yè)出版社.2006.5高福成,c語言程序設(shè)局,清華人學(xué)出版社、北方交通大學(xué)出版原程序代碼:#includes

32、tdio. h>#include<string. h>#include<stdlib. h>#includc<timc. h>int judge_have_or_no_a_f 1 ight (char) ;/判斷是否有這個航班void select_a_filght();訂票函數(shù)void xiugai_hanshu();/密碼修改函數(shù)void view_al 1 ();/察看所有的航班信息void sean_3_filght( char ch);查看一個航班函數(shù)void add_many_hangban();/新建航班信息void delete_a_f

33、ilght(char ch);刪除函數(shù)void printf_han_shu();官方界面美化函數(shù)void printf_hem_shu_comsouer();/顧客端界面美化函數(shù)int mima_hanshu();/密碼確認(rèn)函數(shù)int zuowei_hao_sure(char hangban);/座位確定函數(shù)void time_han_shu();時間函數(shù)void tongji_han_shu();/飛機航班統(tǒng)計函數(shù)typedef struct flightj/航班信息機構(gòu)ichar fnumber5;char start20;char destination20;int time;吋間以小

34、吋為單位int money; fl;typedef struct consumeri/頂票信息機構(gòu)ichar no 5;/航班號char xuehao10;學(xué)號int n;/座位號 select;/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&

35、;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/void main()/主函數(shù)int choice, n=l, m, t, w;char ch5;time han shu();printf (,znttt歡迎進入飛機訂票系統(tǒng)!nn);printf (,ztt& <1> 官方操作。nn);printf

36、(,ztt& <2> 客戶端。nrt);printf (,ztt& <0> 退出系統(tǒng)。nn);printf cztt請輸入你的選擇:);scanf ("%d,&t);if(t=l) chongxin:w=mima_hanshu() ;/密碼確認(rèn)函數(shù) while(n=l) if (w二二 1) printf_han_shu();官方界面美化函數(shù)printf ct請輸入你選擇的功能:); scanf ("%ct, &choice);printf(nn);switch(choice) case 1: system(,zcls

37、,z); view_all () ;break; /察看所有的航班信息case 2:systcm("cls); view_all () ;/查看全部 printf (,znntt請輸入你要查找的航班號:);scanf(s,&ch); scan_a_filght ( ch) ;/察看一個航班信息break;case 3: system("cls");add many hangban () ; break; /新建航班信息(添加函數(shù))case 4:system(,zcls,z);printfcnntt請輸入你要刪除的航班號:); scanf(s,&ch

38、);有這個航班有這個航班break;break;m=judgc_havc_or_no_a_f 1 ight ( ch); 判斷是否if(m=l) delete_a_filght ( ch) ;/刪除函數(shù)printf (z,tt 成功刪除! nnz,);if(m!=l) printfc無此次航班!n);case 5: system(cls); sclcct_a_filght() ; break;/訂票函數(shù)case 6: system(cls);xiugai hanshu() ; break; /密碼修改函數(shù) case 7: system(cls);tongji_han_shu() ; break

39、;/航班統(tǒng)計函數(shù)case 0: n=0;break;default :printf(,z請重新輸入沒有你輸入的選擇nn);break;elseprintf (z,tt 密碼錯誤! n);printf (,ztt請重新輸入密碼!nn);goto chongxin;printf_han_shu_comsouer ();顧客端界面美化函數(shù)printf ct請輸入你選擇的功能:); scanf ("%ct, &choice);printf (nn);switch(choice) case 1: system(cls");view_all () ; break; /察看所有的

40、航班信息case 2:system("cls); vicw_all () ;/顯示全部 printf (z,t請輸入你要查找的航班號:); scanf ("%s", &ch);scan_a_filght ( ch) ;/察看一個航班信息break;case 3:system("cls);select a filght () ; break;/訂票函數(shù)case 0: n=0;break;default:printf(z,nntt請重新輸入沒有你輸入的選 項:n); break;/*&&&&&&&

41、;&&&&&&&&&&&&& 新 建 航 班 信 息 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

42、amp;&&&*/void add_many_hangban ()/新建航班信息int n , i, m, h;file *fp;fl dp;printf cnnntt請輸入要添加的航班個數(shù):); seanf (%d, &n);if (fp=fopcn (,zf1 ightlnfo. txt", a+)=null) printf(“f訂e can not open!); exit (0);for(i=l;i<=n;i+) printf (,z請輸入第4次航班nn,z, i);printf (t 航班號:);scanf (%s, dp. fnumb

43、er); printf(n);m=judge_have_or_no_a_f 1 ight (dp. fnumber) ;/判斷是否有這個航 if(m=l) printf(,zt此次航班己有是否刪除!nn/z); printf czt刪除重新輸入它請輸入<l>nn,/); printf (,zt不刪除重新輸入請輸入<2>nn,z); printf ct 請輸入:); scanf (%d, &h);if (h二二 1) del ete_a_f i 1 ght (dp. fnumber) ;/刪除函數(shù)n=nl;add_many_hangban () ; /添加函數(shù) i

44、f (h二二2) add_many_hangban () ; /添加函數(shù)printf (,zt 起飛地:);scanf (s,dp. start); printf ("t 目的地:);scanf ("%s", dp. destination); printf (,zt 飛行時間:);scanf (d", &dp. time);printf (t 票價:);scanf (%d, &dp. money);fprintf(fp, n%5st%10st%10st%10dt%10d", dp. fnumber,dp. start,dp.d

45、es tination, dp. time, dp. money);fclose (fp); viewall ();/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 察看全部航班信息 &&&

46、&&&&&&&&&&&&&&&&&& */void viewall () "file *fp;fl dp;if (fp=fopen(z,f1 ightlnfo. txt",,zr,z) =null) printf(,zfile can not open!n); exit (0); printfc航班號 起飛地點終點 飛行時間(小時)票價(元)nn);while(!feof (fp) fscanf (fp, %s%s%s%d%ct;

47、dp. fnumber, dp. start, dp. destination, &dp. tim e, &dp. money);printf (z,%5s %10s%10s%10d%10dnnz,, dp. fnumber, dp. start, dp. dcstination, dp. time, dp. money);fclose (fp);/ *&&&&&&&&&&&&&&&&&&&&&&&

48、;&&&&&&查 看一個 航 班 函 數(shù)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/ void sca

49、n_a_filght( char ch)/查看一個航班函數(shù) ""int m, n二0;file *fp;fl dp;if (fp=fopen(z,f1 ightlnfo. txt",,zr,z) =null) printf(,zfile can not open!);exit (0);while(!feof(fp) fscanf(fp, s%s%s%d%dn,dp. fnumber, dp. start, dp. destination, &dp. t imc, &dp. money);m =strcmp(dp fnumber, ch);if (m

50、=0)printf (,z航班號起飛地點終點 飛行時間(小時)票價(元)nn,z);printf (5s%10s%10s%10d%10dnn,dp. fnumber, dp. start, dp.destination, dp. time, dp. money);n二 1;break;if (n=0) printf c沒有你查找的航班號!n,z);fclose (fp);/*&&&&&&&&&&&&&&&&&&&&&&&

51、amp;&&&&&&&&&&& 刪 除 函 數(shù) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */ void delete_a_f ilght (char ch)/刪除函數(shù) ""int i,len

52、;file *fp;fl all100;/航班最多有100班if (fp=fopencflightlnfo. txt,“r)二二null) printf czfi le can not open!,z); exit (0);i=0;while(!feof (fp) fscanf (fp,"%s%s%s%d%d,alli.fnumber,alli.start,alli.dcstina tion,&alli. time, &alli money);i+;len=i; fclose (fp); fp=fopen(,flightinfo. txt",,zw,z);i

53、 二0;wh ile(i<len)if(stremp(alli. fnumber, ch)!=0)fprintf (fp,n%5s%10s%10s%10d%10d", al 1i. fnumber, al 1i. start,al1 i destination,alli time, alli money);i+;)fclose(fp);/*&&&&&&&&&&&&&&&&&&&&&&&&&

54、amp; 判 斷 是 否 有 這 個 航 班 &&&&&&&&&&&&&&&&&&&&&&&&&&&*/int judge_have_or_no_a_flight (char ch)/判斷是否有這個航班int m, n二0;file *fp;fl dp;if (fp=fopen(,zflightinfo. txt", "r")二二null) print

55、f(,zfile can not open!); exit (0);while(!feof (fp) fscanf (fp, s%s%s%d%dn,dp. fnumber, dp. start, dp. destination, &dp. t ime, &dp. money);m =strcmp (dp fnumbcr,ch);if (m=0)n=l;/此次航班已有break;fclose(fp); rcturn n;/*&&&&&&&&&&&&&&&&

56、;&&&&&&&& 官 方 界 面 美 化 函 數(shù) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/ void printf_han_shu()/官方界面美化函數(shù)printf( -n );printf (“歡迎使用飛機訂票系統(tǒng)!nnnn );printf (,z本系統(tǒng)有

57、以下功能供你選擇.nrt);printf c&1察看全部航班信息.nn,z);printf(“&2查找一個航班信息.nn,z);printf (,z&3添加航班信息.nnz,);printf (“&4刪除航班信息.nn);printf (,z&5預(yù)定你所要的航班.nrt);printf c&6密碼修改.nn,z);printf(“&7航班訂票統(tǒng)計顯示.nrt);printf (,z&0退出系統(tǒng).n,z);printfc=nn/z);/*&&&&&&&&&&am

58、p;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/ void printf han shu comsouer()/顧客端界面美化函數(shù)prin tf (,=printf c printf(“ printf (,z printf (“ printf (,z printf c歡迎使用飛機訂票系統(tǒng)!nnnn “); 本

59、系統(tǒng)有以下功能供你選擇.nn,z);&1察看全部航班信息.nn,z);&2查找一個航班信息.nn,z);&3預(yù)定你所要的航班.nrt);&0推出系統(tǒng).n);printf (=/*&&&&&&&&&&&&&&&&&&&&&&&&&訂&&&&&&&&&&&&&&

60、;&&&&&&&&&&&&&&&&&&&*/ void select_a_filght () /訂票函數(shù) ""file *fp;int n, m=l;select stu;viewall (); while (m二二1)printfc t請輸入你要預(yù)定的航班:);scanf ("%s",stu no);printf ("nrt);n=judge_have_or_no_a_flight (stu.

61、 no) ;/判斷函數(shù) stu. n=zuowei_hao_sure(stu. no);座位號確定函數(shù) if (stu. n>100) printf (對不起你所預(yù)定的航班已全部被預(yù)訂!); exit (0);if(n 二二 1) printf ct請輸入你的學(xué)號:);seanf ("%s", stu xuehao);printf ("nrt);m二 0;else printf (,zt無此次航班號,請重新輸入! nnn,z);if (fp=fopen (z,selectinfo. txt,“a+)二二null) printf(,zfilc can not open!); exit (0);fprintf (fp,,zn%10st%10st%d,stu. no, stu. xuehao, stu. n); fclose(fp);printf (,zt 成功預(yù)定航班!nrt);printf (z,t你的飛機票信息是:nrt); printf ("t 航班號tt 學(xué)號tt座位號nrt);printf (t%stt%stt%dnn,stu. no, st

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論