飛機(jī)航班訂票系統(tǒng)C語(yǔ)言程序設(shè)計(jì)報(bào)告_第1頁(yè)
飛機(jī)航班訂票系統(tǒng)C語(yǔ)言程序設(shè)計(jì)報(bào)告_第2頁(yè)
飛機(jī)航班訂票系統(tǒng)C語(yǔ)言程序設(shè)計(jì)報(bào)告_第3頁(yè)
飛機(jī)航班訂票系統(tǒng)C語(yǔ)言程序設(shè)計(jì)報(bào)告_第4頁(yè)
飛機(jī)航班訂票系統(tǒng)C語(yǔ)言程序設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、程序設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)課程名稱程序設(shè)計(jì)設(shè)計(jì)題目飛機(jī)航班訂票系統(tǒng)專業(yè)班級(jí)計(jì)算機(jī)應(yīng)用技術(shù) 201221學(xué)生姓名指導(dǎo)教師起止日期 2013年6月8日至2013年6月14日福建林業(yè)職業(yè)技術(shù)學(xué)院自動(dòng)化工程系目錄1 設(shè)計(jì)內(nèi)容、任務(wù)以及要求 11.1 設(shè)計(jì)題目的內(nèi)容 11.2 要求 12 總體設(shè)計(jì)思路 22.1 系統(tǒng)基本功能 22.2 具體設(shè)計(jì)思想 22.3 系統(tǒng)的總體流程圖 33 . 功能模塊的詳細(xì)設(shè)計(jì) 53.1 結(jié)構(gòu)的定義 5.3.2 各個(gè)函數(shù)的設(shè)計(jì)具體設(shè)計(jì)思想和流程圖 5.4功能模塊的調(diào)試及測(cè)試 274.1 添加函數(shù)的測(cè)試 274.2 判斷函數(shù)的測(cè)試 2.8.4.3 刪除函數(shù)的測(cè)試 284.4 統(tǒng)計(jì)函

2、數(shù)的測(cè)試 2.8.4.5 密碼確認(rèn)函數(shù)的測(cè)試 1.44.6 密碼的修改函數(shù) 314.7 主函函數(shù)的測(cè)試 325 總結(jié) 346 致謝 35參考文獻(xiàn) 36原程序代碼: 211 設(shè)計(jì)內(nèi)容、任務(wù)以及要求1.1 設(shè)計(jì)題目的內(nèi)容、任務(wù)主要利用 c 語(yǔ)言的文件操作能力設(shè)計(jì)開(kāi)發(fā)一個(gè)小型的飛機(jī)訂票系統(tǒng), 至少具 有如下功能: 信息讀出,可以查看全部航班信息和查詢一個(gè)航班信息。 可以進(jìn)行 添加(再添加過(guò)程中有重復(fù)顯示提示信息) 、刪除、訂票等基本操作。操作界面 要能使使用者看懂,以便使使用者正確使用。具體內(nèi)容如下:程序?qū)儆诜菙?shù)值計(jì)算型算法設(shè)計(jì), 學(xué)生需要設(shè)計(jì)出飛機(jī)訂票系統(tǒng)所需要的基 本功能,并設(shè)計(jì)簡(jiǎn)單的界面。(1

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

4、的航班,如果存在則將該航班刪除,否則給出提示信息, 提示該航班不存在e) 選擇一條航班,需要給出學(xué)號(hào)和航班編號(hào),如果航班編號(hào)不存在則 重新輸入,直到輸入正確為止,并將學(xué)號(hào)和相應(yīng)的航班編號(hào)存入 SelectInfo.txt 文件中(5) 航班基本信息包括航班編號(hào)、起點(diǎn)、終點(diǎn)、飛行時(shí)間和訂票額度這些簡(jiǎn) 單信息。(6) 航班信息文件中每一行存放一條航班的信息。1.2 要求要求:明確課程設(shè)計(jì)的目的,能根據(jù)課程設(shè)計(jì)的要求,查閱相關(guān)文獻(xiàn),為 完成設(shè)計(jì)準(zhǔn)備必要的知識(shí); 提高學(xué)生用高級(jí)語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力,重點(diǎn) 提高用 C 語(yǔ)言進(jìn)行文件操作和繪圖應(yīng)用的編程技術(shù)水平; 初步了解軟件開(kāi)發(fā)的 一般方法和步驟; 提

5、高撰寫(xiě)技術(shù)文檔的能力。2 總體設(shè)計(jì)思路2.1 系統(tǒng)基本功能外部操作:根據(jù)要求系統(tǒng)要有查看全部航班信息, 查詢一個(gè)航班, 添加航 班(再添加過(guò)程中如有重復(fù)顯示提示信息) ,刪除航班(在刪除過(guò)程中如果沒(méi) 有查找到要?jiǎng)h除的顯示提示信息) ,選擇航班訂票。內(nèi)部操作:將航班的信息存入文件中,并命名為 FlightInfo.txt 。將訂 票情況信息存入文件中,并命名為 SelectInfo.txt 。相應(yīng)的航班編號(hào)存入 SelectInfo.txt 文件中為了接近實(shí)戰(zhàn)模擬飛機(jī)航班訂票系統(tǒng), 增加了一些功能。 增加功能有把系 統(tǒng)分為了兩個(gè)部分, 一個(gè)是官方操作, 一個(gè)是客戶端。 官方操作有密碼認(rèn)定和 密碼

6、修改, 密碼的以文件形式存儲(chǔ)在硬盤(pán)里, 以只讀認(rèn)定客戶, 以只寫(xiě)修改密 碼。官方還有查看訂票情況,由函數(shù)統(tǒng)計(jì)出來(lái)的??蛻舳嗽黾恿藱C(jī)票顯示(顯 示包括統(tǒng)計(jì)出來(lái)的座位號(hào),以及航班號(hào)和學(xué)號(hào)) 。2.2 具體設(shè)計(jì)思想(1)以結(jié)構(gòu)化各個(gè)功能模塊,函數(shù)間的調(diào)用精簡(jiǎn)整個(gè)函數(shù)。(2)以全局結(jié)構(gòu)來(lái)隨時(shí)定義結(jié)構(gòu)數(shù)組以及機(jī)構(gòu)。(3)以寫(xiě)一個(gè)信息存一個(gè)的思想,實(shí)現(xiàn)多個(gè)添加功能。(4)以讀一個(gè)打印一個(gè)的思想,實(shí)現(xiàn)顯示全部信息。(5)以先判斷(以判斷函數(shù)給定是否有此航班)再打印的思想,來(lái)實(shí)現(xiàn)查 找是否有這個(gè)航班。(6)以先判斷 (以判斷函數(shù)給定是否有此航班) 再添加的思想,(添加中引用 了刪除函數(shù)以供用戶選擇) ,實(shí)現(xiàn)添

7、幾功能。(7)以先判斷(以判斷函數(shù)給定是否有此航班)再刪除的思想,刪除航班信息。(8)以循環(huán)統(tǒng)計(jì)(以統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)給定航班號(hào))訂票文件的的情況返回值 的思想,以顯示當(dāng)前訂票情況。(9)以統(tǒng)計(jì)(以統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)給定航班號(hào))來(lái)返回值的思想,以顯示座位 號(hào)。(10)密碼的確認(rèn)以及修改, 是利用文件存儲(chǔ)的永久性來(lái)實(shí)現(xiàn)的, 以只讀來(lái) 確認(rèn)密碼,以只寫(xiě)來(lái)修改密碼的思想,來(lái)實(shí)現(xiàn)的官方操作 。2.3系統(tǒng)的總體流程圖頁(yè)端上戶接客退出系統(tǒng)預(yù)定航班,顯示預(yù)定航班信息查詢一個(gè)航班信息察看全部航班信息2.2系統(tǒng)的總體流程圖(2)3 . 功能模塊的詳細(xì)設(shè)計(jì)3.1 結(jié)構(gòu)的定義為了方便使用結(jié)構(gòu)此系統(tǒng)結(jié)構(gòu)均為全局類型定義,其定義有

8、如下兩個(gè):typedef struct flight / char fnumber5;char start20;char destination20;int time; /int money; Fl;typedef struct consumerchar no5; /char xuehao10;int n; / select;航班信息機(jī)構(gòu)時(shí)間 以小時(shí)為單位/頂票信息機(jī)構(gòu)航班號(hào)/學(xué)號(hào)座位號(hào)3.2 各個(gè)函數(shù)的設(shè)計(jì)具體設(shè)計(jì)思想和流程圖此系統(tǒng)一共十四個(gè)函數(shù)如下所示:1)int judge_have_or_no_a_flight(char);/判斷是否有這個(gè)航班2)void delete_a_filgh

9、t(char ch);/刪除函數(shù)3)void add_many_hangban() ;/新建(添加)航班信息4)void view_all(); /察看所有的航班信息5)void scan_a_filght( char ch);/查看一個(gè)航班函數(shù)6)int mima_hanshu();/密碼確認(rèn)函數(shù)7)void xiugai_hanshu();/密碼修改函數(shù)8)void tongji_han_shu() ;/飛機(jī)航班統(tǒng)計(jì)函數(shù)9)int zuowei_hao_sure(char hangban); /座位確定函數(shù)10)void select_a_filght();/訂票函數(shù)11)void pri

10、ntf_han_shu();/官方界面美化函數(shù)12)void printf_han_shu_comsouer(); /顧客端界面美化函數(shù)13)void time_han_shU() ;/時(shí)間函數(shù)3.2.1 判斷是否有這個(gè)航班函數(shù) 根據(jù)要求在添加的時(shí)候要先判斷是否已有此航班信息, 給出相應(yīng)的提示。 所以以判斷函數(shù)的返回值來(lái)提示是否要對(duì)原有的航班信息進(jìn)行操作, 因此判斷函數(shù) 的類型為整型。其功能具體設(shè)計(jì)如下: 具 體 流 程 如 下 所 示輸入航班號(hào)只讀方式打開(kāi)文件if(m=O)語(yǔ)句判斷是否有何已知數(shù)據(jù)相等的讀完文件m=strcmp(dp.fnumber,ch);第一次比一次只要條件成立n=1,并

11、跳循 件關(guān)閉 文理F返回n的值return n;代碼說(shuō)明圖3.1以下代碼說(shuō)明請(qǐng)對(duì)照程序附件。ch為字符型字符串,添加函數(shù)在調(diào)用時(shí)引入的實(shí)參的值付給它,然后引入函數(shù)中應(yīng)用。FILE *fp:文件指針指向航班信息(Flight In fo.txt)存儲(chǔ)文本的緩存地址。If 語(yǔ)句是對(duì)文本是否打開(kāi)做出判斷。文件以只讀方式打開(kāi)。Fl dp; 是定義的航班信此結(jié)構(gòu)。While 語(yǔ)句是把文件里的數(shù)據(jù)讀到內(nèi)存里,然后和 ch 字符串比較,如果相 等m=0不相等它就不是一個(gè)定值了。strcmp(dp.fnumber,ch); 判斷是否讀出來(lái)的數(shù)據(jù)和已知數(shù)據(jù)是否相等。If 語(yǔ)句是用來(lái)確定返回值,如果有與已知數(shù)據(jù)

12、n 就是 1 否則為 0; fclose(fp); 關(guān)閉文件指針。return n; 返回n322刪除函數(shù)刪除一個(gè)航班的基本思想是,把文件中的數(shù)據(jù)全部讀出來(lái),然后再放回去, 與已知數(shù)據(jù)進(jìn)行比較,如果相等說(shuō)明就是刪除的數(shù)據(jù),就不放回文件中。具體流程如下所示引入航班號(hào)ch以只讀方式打開(kāi)文 件,把文件中的數(shù) .據(jù)獨(dú)到結(jié)構(gòu)數(shù)組里llen控制循環(huán)次數(shù)記錄結(jié)構(gòu)個(gè)數(shù)len=i;fp=fope n(Flightl nfo.txt.w):滿足條件if(strcmp(alli.fnumch)!=O)關(guān)閉文件fprl ntf(fp,n%5s%10s%10s%10d%10d.-fclose(fp);圖3.2代碼說(shuō)明C

13、h為引用的字符串Fl all100; 定義的結(jié)構(gòu)數(shù)組,來(lái)控制變量。把文件中的數(shù)據(jù)全部讀出來(lái), 放到結(jié)構(gòu)數(shù)組里以便操作。 if(fp=fopen(FlightInfo.txt,r)=NULL) 判 斷文件是否打開(kāi)。以只讀的方式。while 語(yǔ)句把文件里的數(shù)據(jù)讀到結(jié)構(gòu)數(shù)組里, 以 i 的自增來(lái)確保數(shù)據(jù)的完整。 len=i; 作為下面 while(ilen) 語(yǔ)句的循環(huán)控制。 fp=fopen(FlightInfo.txt,w); 語(yǔ)句以只寫(xiě)的方式打開(kāi)。將文件里的書(shū) 局全部覆蓋掉。If 語(yǔ)句中的: strcmp(alli.fnumber,ch)!=0 判斷但當(dāng)前字符串是否和已知 字符串是否相等, 并

14、以此來(lái)確定是否打印數(shù)據(jù)到文件中。 如果哦相等說(shuō)明與已知 字符串相等。就不打印到文件中以此來(lái)刪除航班信息。fclose(fp); 對(duì)打印到文件中數(shù)據(jù)保證存儲(chǔ)。323新建(添加)航班信息函數(shù)以追加方式打開(kāi)文件,先輸入要輸入的個(gè)數(shù),再在 for循環(huán)中輸入航班號(hào), 在for循環(huán)中先判斷是否已有次航班,如果已有做出相應(yīng)的提示。沒(méi)有則接續(xù)輸 入。流程圖圖3.3代碼說(shuō)明printf(nnntt 請(qǐng)輸入要添加的航班個(gè)數(shù) :); 顯示提示信息,以增加 程序的美觀。scanf(%d,&n) 語(yǔ)句是要輸入的航班個(gè)數(shù)。if(fp=fopen(FlightInfo.txt,a+)=NULL)printf(file ca

15、n not open!);exit(0); 語(yǔ)句以追加(既可以讀也可以寫(xiě),讀重文件頭開(kāi)始讀,寫(xiě)重 文件末尾寫(xiě)進(jìn))的方式打開(kāi)文件。m=judge_have_or_no_a_flight(dp.fnumber); / 判斷是否有這個(gè)航班: 把 實(shí)參 dp.fnumber 引入判斷函數(shù),返回一個(gè)值。If 語(yǔ)句:根據(jù) m 的值來(lái)提示是否當(dāng)前添加的航班號(hào)是否已有,并提示做相 應(yīng)的操作 . 有放棄刪除重新輸入,有刪除后重新輸入。if(h=1) :語(yǔ)句調(diào)用相應(yīng)的刪除函數(shù),把 dp.fnumber 作為實(shí)參引用到刪除 函數(shù)。然后用函數(shù)遞歸應(yīng)用在執(zhí)行循環(huán)操作。if(h=2) :語(yǔ)句直應(yīng)用函數(shù)遞歸,應(yīng)用添加函數(shù)執(zhí)

16、行添加循環(huán)。在 for 循環(huán)中沒(méi)有應(yīng)用結(jié)構(gòu)數(shù)組,直接輸入一個(gè),就把這個(gè)放到文件中。fprintf :語(yǔ)句是把內(nèi)存中的數(shù)據(jù)打印到文件中。view_all(); 是查看全部航班函數(shù),為了直接顯示是否添加成功,顯示文件 中的全部信息。3.2.4 察看所有的航班信息以只讀方式打開(kāi), 以文件結(jié)束為標(biāo)志結(jié)束, 從文件中讀一個(gè)就打印一個(gè)的思FILE*fp;定義文件指針打開(kāi)打開(kāi)失敗流程圖fscan f(fp,%s%s%s%d%d,dp打印到屏幕上文件打開(kāi)while控制循環(huán).fnu mber,dp.start,dp.desti natio* fclose(fp);圖3.4代碼說(shuō)明printf( 航班號(hào)起飛地點(diǎn)終

17、點(diǎn)飛行時(shí)間(小時(shí))票價(jià)(元)nn);:此語(yǔ)句是對(duì)航班總體的說(shuō)明while :語(yǔ)句為控制循環(huán),然后就讀一個(gè)打印一個(gè),直到文件結(jié)束。prin tf(%5s %10s%10s%10d %10dnn,dp.fnumber,dp.start,dp.desti nati on, dp.time,dp.m on ey)打印內(nèi)容間的距離控制。fclose(fp); 關(guān)閉文件指針。325查看一個(gè)航班函數(shù)和查看全部航班信息思想一樣,只是打印出來(lái)的時(shí)候只準(zhǔn)與查找的航班信息打印。用一個(gè)if語(yǔ)句條件限制為 m=strcmp(dp.fnumber,ch);m 的值為0才打印出來(lái)。流程圖代碼說(shuō)明ch導(dǎo)入字符要找的航班號(hào)。w

18、hile(!feof(fp)控制循環(huán)m =strcmp(dp.fnumber,ch);if(m=O)控制是夠打印。break;如果打印了就跳出循環(huán)。根據(jù)if (n=0)判斷是否有與給定數(shù)據(jù)相等的,如果沒(méi)有會(huì)顯示提示信息326密碼確認(rèn)函數(shù)先給定初始密碼,可以利用密碼修改函數(shù)進(jìn)行修改, 密碼認(rèn)定是把文件中的 字符讀出來(lái)和輸入的進(jìn)行對(duì)比,是否相等來(lái)實(shí)現(xiàn)的。程序流程圖代碼說(shuō)明char mima20;密碼最多有20個(gè)字符。fscan f(fp,%s,yua nm ima);從文件中不把密碼拿出來(lái)。if(strcmp(mima,yua nm ima)=O) 與輸入字符進(jìn)行比較。等則輸入密碼正確, 不等則輸

19、入密碼不正確。返回值說(shuō)明是否輸入正確,正確返回1,不對(duì)返回0.。327密碼修改函數(shù)設(shè)計(jì)思想先用密碼確認(rèn)函數(shù)確認(rèn)是否密碼正確,正確才讓進(jìn)入下一個(gè)環(huán)節(jié), 修改是文件以只寫(xiě)的方式打開(kāi),然后保存。函數(shù)流程圖圖3.7代碼說(shuō)明n=mima_hanshu();/引入密碼確認(rèn)函數(shù)。If語(yǔ)句判斷是否密碼正確。正確系統(tǒng)讓進(jìn)行密碼修改,不正確不讓修改fclose(fp); 關(guān)閉文件328飛機(jī)航班訂票統(tǒng)計(jì)函數(shù)以只讀方式打開(kāi)文件,讀出每個(gè)航班號(hào)的訂票情況,然后打印出來(lái)程序流程以只讀方式打開(kāi)航班文 件rwhile(!feof(rp);i+; len=i;控制變量Vfor(i=0;i100)控制飛機(jī)票的數(shù)量不能超過(guò)限制人數(shù)

20、。m=0;跳出循環(huán)。else printf(t無(wú)此次航班號(hào),請(qǐng)重新輸入!nnn); ;提示重新輸入。fprin tf(fp,n%10st%10st%d,stu. no,stu.xuehao,stu. n);fclose(fp)J保存已預(yù)定的飛機(jī)票。prin tf(t%stt%stt%dnn,stu. no,stu.xuehao,stu. n); 打印飛機(jī)票。3.2.10 官方界面美化函數(shù) 顧客端界面美化函數(shù) 時(shí)間函數(shù)為了主函數(shù)的簡(jiǎn)潔, 所以引入兩個(gè)顯示提示信息函數(shù)。 而時(shí)間函數(shù)是為了模 擬真實(shí)系統(tǒng)而引用的系統(tǒng)函數(shù), 以顯示當(dāng)前時(shí)間。 然后保存到文件中, 以便查詢 操作時(shí)間。4.功能模塊的調(diào)試及

21、測(cè)試4.1添加函數(shù)的測(cè)試圖4.1添加函數(shù)的測(cè)試4.1.1文本文檔中的信息f Flight Inf a -記轟斗 回岡文件d)騙揚(yáng)格式直看過(guò))幫fihGDgFgffg 1239?HQ 12399ilUFgFgfg 1239992 1239996圖4.2添加后文本中的信息由文本中的信息的出,函數(shù)代碼有誤,原代碼為: fprin tf(fp,n%5s%10s%10s%10d%10dn,dp.fnumber,dp.start,dp.desti natio n,&dp.time,&dp.m on ey);應(yīng)該改為:fprin tf(fp,n%5st%10st%10st%10dt%10d,dp.fnumb

22、er,dp.start,dp.des tin atio n,dp.time,dp.mo ney);原因是寫(xiě)道文件中的事整型數(shù)的地址。所以在文本中顯示的是亂碼。調(diào)試成功。4.2判斷函數(shù)的測(cè)試(判斷輸入的航班號(hào)是否已有,給出相應(yīng)的提示)圖4.3判斷函數(shù)的測(cè)試丄止= Ecvu-B.cri.ilL ssizicLZSet i. a.i.ox.1T-HQ詒輸X更添扣的航班十飆:11請(qǐng)輸入廉丄皮航姐航班號(hào)此歡九1址己育是否刪陳Tjd圖4.4判斷函數(shù)的測(cè)試4.3刪除函數(shù)的測(cè)試(引入刪除航班,先通過(guò)判斷函數(shù),再進(jìn)行刪除)圖4.5刪除函數(shù)的測(cè)試輸入1后查看全部圖示為=DacuiBent s andSet t i

23、ngXAdMinist ratdrT 1Debugchensong . |EFT起飛地點(diǎn)終點(diǎn)飛行時(shí)間l小時(shí)孚價(jià)元丫宓河北海南390&JfvO烏魯木齊倨建&B98H17黑龍江晁明3?圖4.6刪除函數(shù)的測(cè)試成功的刪除航班。(以拿出來(lái),再放回去的操作,設(shè)置是否打印,以此來(lái)實(shí) 現(xiàn)刪除)4.4統(tǒng)計(jì)函數(shù)的測(cè)試(統(tǒng)計(jì)處已訂航班的票數(shù))J匸ula匕nrt s: axid Sett ingsVAdaLinist ratQi:JWXT 1 Q|$Dit:bugcheiiSiDHig. B. .1艦班號(hào)已罡票數(shù)5262圖4.7統(tǒng)計(jì)函數(shù)的測(cè)試原代碼為 if(fp=fopen(Selectlnfo.txt,r)=NUL

24、L)printf(file can not open2 !n); exit(0);for(i=0;ile n;i+) while(!feof(fp)fsca nf(fp,%s%s%d,piao. no,piao.xuehao,&piao. n);if(strcmp(dpi.fnumb er,piao .no)=0) n=n+1;prin tf(t%stt%dnn,dpi.fnumber, n);n=0;fclose(fp);說(shuō)明文件指針已經(jīng)一到文件末尾,可以改變指針位置,或者是重復(fù)打開(kāi)文件指針 所以改為:for(i=0;ile n;i+)if(fp=fope n(SelectI nfo.txt

25、,r)=NULL)printf(file can not open2 !n); exit(0);while(!feof(fp)fscan f(fp,%s%s%d,piao. no,piao.xuehao,&piao. n);if(strcmp(dpi.fnumber,piao .no)=0) n=n+1;prin tf(t%stt%dnn,dpi.fnumber, n);n=0; fclose(fp); “皿4號(hào)nt 留 ojciU Sett面卜1。答荊DeIju盟Whtiiw盟I航班號(hào)己宇票教5262UFd31H17G9FSB83G61S1T2?89圖4.8統(tǒng)計(jì)函數(shù)的測(cè)試說(shuō)明修改成功,證明文

26、件每讀一次文件指針就會(huì)指到文件末尾4.5密碼確認(rèn)函數(shù)的測(cè)試密碼函數(shù)利用文本文檔的長(zhǎng)期存儲(chǔ),以只讀的方式打開(kāi)文件,和輸入字符串 進(jìn)行比較。以是否相等來(lái)判斷密碼的對(duì)錯(cuò)。以實(shí)現(xiàn)密碼確認(rèn)函數(shù)。圖4.9密碼確認(rèn)函數(shù)的測(cè)試 根據(jù)設(shè)想密碼確認(rèn)函數(shù)成功實(shí)現(xiàn)。L F: 7-10WDetJiigchensoD6, eie杯(黔牒選心本搽統(tǒng)有以卜功豈瀕你選擇-&察看全部航班信息-t也產(chǎn)戲一個(gè)航班信息-fc O添加骯班信息-防捌除昵a信息.金第勲定儂所要的航班-fc班訂票紜計(jì)顯示”ft Sl系統(tǒng)圖4.10密碼確認(rèn)函數(shù)的測(cè)試4.6密碼的修改函數(shù)圖4.11密碼的修改函數(shù)的測(cè)試根據(jù)設(shè)計(jì)思想,符合事實(shí)。成功地完成了密碼修改函

27、數(shù)的實(shí)現(xiàn)模擬密碼操作,先用密碼判斷函數(shù)判斷是否是正確的密碼,然后只寫(xiě)的方式 把新密碼打印進(jìn)去在保存的思想,來(lái)實(shí)現(xiàn)密碼修改。4.7主函函數(shù)的測(cè)試Neu t ino ic Fri Jul IM 13 :4b歐迎進(jìn)入飛機(jī)訂票系統(tǒng)甲& 百方操作“隹2客戶端。& 0彳艮出系統(tǒng)*請(qǐng)輸入你的選擇=圖4.12主函函數(shù)的測(cè)試根據(jù)if語(yǔ)句的判斷功能,系統(tǒng)可供官方操作,和客戶端??蛻舳酥苯舆M(jìn)入, 官方操作,為模擬真實(shí)系統(tǒng)設(shè)計(jì)了密碼認(rèn)定,才允許進(jìn)入。時(shí)間函數(shù)就在這時(shí)顯 示和存儲(chǔ)。進(jìn)入官方操作后可以有如圖4.13所示的操作,進(jìn)入客戶端有如圖4.14 的操作。圖4.13主函函數(shù)的測(cè)試圖4.14主函函數(shù)的測(cè)試進(jìn)入一個(gè)操作后

28、就是自身的循環(huán)操作,根據(jù)wehile(n=1)來(lái)反復(fù)的界面刷新和循環(huán)操作。在while的語(yǔ)句中改變n的值來(lái)控制循環(huán)的結(jié)束。5 總結(jié)經(jīng)過(guò)十天的程序設(shè)計(jì),基本掌握程序設(shè)計(jì)的基本方法和步驟。在這十天中悟出: 程序設(shè)要求有一定的基礎(chǔ)是必須的, 但是更多的是無(wú)論你 設(shè)計(jì)什么程序, 在設(shè)計(jì)前一定要有自己的設(shè)計(jì)理念、 設(shè)計(jì)思想, 也可以說(shuō)是中心 思想。否則在做程序的時(shí)候,請(qǐng)教一個(gè)高手,就有一種不同的方法。結(jié)果最終的 程序不倫不類, 設(shè)計(jì)完后會(huì)發(fā)現(xiàn)會(huì)有不同的漏洞。 在設(shè)計(jì)過(guò)程中要大膽的發(fā)揮自 己的想象力,要敢于不斷的創(chuàng)新, 要敢于嘗試, 我認(rèn)為這也是一種進(jìn)步的好方法。另外我還有一個(gè)小小的建議, 老師們給初學(xué)這

29、門(mén)課程的學(xué)生盡量不這門(mén)課的 神奇的地方講講, 我覺(jué)得會(huì)對(duì)那些對(duì)這門(mén)課感興趣的同學(xué)會(huì)更感興趣。 記得上次 老師第一次演示文件時(shí),有點(diǎn)相見(jiàn)恨晚,象被注射了興奮劑一樣。6 致謝在這十天的時(shí)間里,我學(xué)到了很多知識(shí),這些少不了老師辛苦指導(dǎo)。同 學(xué)之間的幫助,相互鼓勵(lì),以及相互探討,給了自己很大的信心,和跨域式 的進(jìn)步。所以首先要感謝各位老師和我一起奮斗的同學(xué)們。還要感謝我的父母,是他們給了我機(jī)會(huì)來(lái)學(xué)習(xí)。還要感謝所有為教育事業(yè)作出奉獻(xiàn)的人。參考文獻(xiàn)1 楊路明 . C 語(yǔ)言程序設(shè)計(jì)基礎(chǔ) . 北京郵電大學(xué)出版社 .2005.2 何欽銘,顏暉 . C 語(yǔ)言程序設(shè)計(jì)基礎(chǔ) . 高等教育出版社 .2008.3 張引.

30、C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì).杭州浙江大學(xué)出版社,2007.4 KOCHANSG . C 語(yǔ)言編程 . 電子工業(yè)出版社 . 2006.5 高福成, c 語(yǔ)言程序設(shè)局,清華大學(xué)出版社、北方交通大學(xué)出版 社, 2004.判斷是否有這個(gè)航班 訂票函數(shù) 密碼修改函數(shù) 察看所有的航班信息 查看一個(gè)航班函數(shù) 新建航班信息 刪除函數(shù) 官方界面美化函數(shù) 顧客端界面美化函數(shù) 密碼確認(rèn)函數(shù) 座位確定函數(shù) 時(shí)間函數(shù) 飛機(jī)航班統(tǒng)計(jì)函數(shù) 航班信息機(jī)構(gòu)時(shí)間 以小時(shí)為單位頂票信息機(jī)構(gòu)航班號(hào)學(xué)號(hào)座位號(hào)原程序代碼:#include#include #include #include int judge_have_or_no_a_fl

31、ight(char);/ void select_a_filght(); / void xiugai_hanshu(); / void view_all(); / void scan_a_filght( char ch); / void add_many_hangban() ; / void delete_a_filght(char ch); / void printf_han_shu(); / void printf_han_shu_comsouer(); / int mima_hanshu();/int zuowei_hao_sure(char hangban); / void time_

32、han_shU() ;/void tongji_han_shu() ;/typedef struct flight/char fnumber5;char start20;char destination20;int time; /int money; Fl;typedef struct consumer / char no5;/char xuehao10;/int n; / select;函數(shù)/*& 主 &*/void main()/ 主函數(shù)int choice,n=1,m,t,w;char ch5;time_han_shU();printf(ntttprintf(tt& printf(tt&

33、 printf(tt& 歡迎進(jìn)入飛機(jī)訂票系統(tǒng) !nn); 官方操作。 nn); 客戶端 。 nn); 退出系統(tǒng)。 nn);printf(tt 請(qǐng)輸入你的選擇 :);scanf(%d,&t);if(t=1)chongxin:w=mima_hanshu();/ 密碼確認(rèn)函數(shù)while(n=1)if(w=1)printf_han_shu();/ 官方界面美化函數(shù) printf(t 請(qǐng)輸入你選擇的功能 :);scanf(%d,&choice);printf(nn);switch(choice)case 1: system(cls);view_all(); break; / 察看所有的航班信息 case

34、 2:system(cls);view_all();/ 查看全部printf(nntt請(qǐng) 輸 入 你 要 查 找 的 航 班號(hào):);scanf(%s,&ch);scan_a_filght ( ch); / 察看一個(gè)航班信息 break;case 3: system(cls);add_many_hangban(); break; / 新建航班信息 ( 添加函數(shù))case 4:system(cls);printf(nntt 請(qǐng)輸入你要?jiǎng)h除的航班號(hào) :); scanf(%s,&ch);m=judge_have_or_no_a_flight( ch) ;/判斷是否有這個(gè)航班if(m=1) delete

35、_a_filght( ch); / 刪除函數(shù) printf(tt 成功刪除 !nn);if(m!=1) printf( 無(wú)此次航班 !n);break;case 5: system(cls);select_a_filght(); break; / 訂票函數(shù) case 6: system(cls);xiugai_hanshu(); break; / 密碼修改函數(shù) case 7: system(cls);tongji_han_shu(); break;/ 航班統(tǒng)計(jì)函數(shù) case 0: n=0;break;nn);break;default:printf(請(qǐng)重新輸入沒(méi)有你輸入的選擇else prin

36、tf(tt密碼錯(cuò)誤 !n);printf(tt goto chongxin;請(qǐng)重新輸入密碼 !nn);else if(t=2)while(n=1)printf_han_shu_comsouer();/ 顧客端界面美化函數(shù)printf(t 請(qǐng)輸入你選擇的功能 :); scanf(%d,&choice); printf(nn);switch(choice)察看所有的航班信息case 1: system(cls); view_all(); break; /case 2:system(cls);view_all();/ 顯示全部 printf(t 請(qǐng)輸入你要查找的航班號(hào) :); scanf(%s,&c

37、h);scan_a_filght ( ch); / 察看一個(gè)航班信息 break;case 3:system(cls);select_a_filght(); break; / 訂票函數(shù)case 0: n=0;break; default: printf(nntt請(qǐng) 重 新 輸 入 沒(méi) 有 你 輸 入 的 選項(xiàng) :n); break;航班信息/*& 新 建 &*/void add_many_hangban() / 新建航班信息int n ,i,m,h;FILE *fp;Fl dp;printf(nnntt 請(qǐng)輸入要添加的航班個(gè)數(shù) :); scanf(%d,&n);if(fp=fopen(Flig

38、htInfo.txt,a+)=NULL) printf(file can not open!);exit(0);for(i=1;i=n;i+)printf( 請(qǐng)輸入第c次航班nn,i);printf(t 航班號(hào) :);scanf(%s,dp.fnumber); printf(n);判斷是否有這個(gè)航m=judge_have_or_no_a_flight(dp.fnumber); /if(m=1)printf(tprintf(tprintf(tprintf(t此次航班已有是否刪除 !nn);刪除重新輸入它請(qǐng)輸入 nn);不刪除重新輸入請(qǐng)輸入 nn); 請(qǐng)輸入 :);scanf(%d,&h);if(

39、h=1)delete_a_filght(dp.fnumber); / 刪除函數(shù) n=n-1;add_many_hangban() ;/ 添加函數(shù) if(h=2) add_many_hangban() ;/ 添加函數(shù) printf(t起飛地 :);scanf(%s,dp.start);printf(t目的地 :);scanf(%s,dp.destination);printf(t飛行時(shí)間 :);scanf(%d,&dp.time);printf(t票價(jià) :); scanf(%d,&dp.money);fprintf(fp,n%5st%10st%10st%10dt%10d,dp.fnumber,d

40、p.start,dp.des tination,dp.time,dp.money);fclose(fp);view_all();/*&察&看&全& 部 航 班 信 息 &*/void view_all()FILE *fp;Fl dp; if(fp=fopen(FlightInfo.txt,r)=NULL) printf(file can not open!n); exit(0);printf( 航班號(hào) 起飛地點(diǎn) 終點(diǎn) 飛行時(shí)間 ( 小時(shí) ) 票價(jià)(元)nn);while(!feof(fp)fscanf(fp,%s%s%s%d%d,dp.fnumber,dp.start,dp.destinati

41、on,&dp.tim e,&dp.money);printf(%5s %10s %10s %10d %10dnn,dp.fnumber,dp.sta rt,dp.destination,dp.time,dp.money);fclose(fp);/*&查& 看 一 個(gè) 航 班 函 數(shù) &*/ void scan_a_filght( char ch)/ 查看一個(gè)航班函數(shù)int m,n=0;FILE *fp;Fl dp;if(fp=fopen(FlightInfo.txt,r)=NULL)printf(file can not open!);exit(0);while(!feof(fp)fscanf

42、(fp,%s%s%s%d%dn,dp.fnumber,dp.start,dp.destination,&dp.t ime,&dp.money);m =strcmp(dp.fnumber,ch);if(m=0) printf( 航班號(hào) 起飛地點(diǎn) 終點(diǎn) 飛行時(shí)間 ( 小時(shí) ) 票價(jià)(元)nn);printf(%5s%10s %10s %10d %10dnn,dp.fnumber,dp.start,dp .destination,dp.time,dp.money);n=1;break;if (n=0)printf( 沒(méi)有你查找的航班號(hào) !n);fclose(fp);除函數(shù)/*&刪 &*/ void

43、delete_a_filght(char ch)/ 刪除函數(shù) int i,len;FILE *fp;Fl all100;/航班最多有 100 班if(fp=fopen(FlightInfo.txt,r)=NULL)printf(file can not open!);exit(0);i=0;while(!feof(fp)fscanf(fp,%s%s%s%d%d,alli.fnumber,alli.start,alli.destination,&alli.time,&alli.money);i+;len=i;fclose(fp);fp=fopen(FlightInfo.txt,w);i=0;wh

44、ile(ilen) if(strcmp(alli.fnumber,ch)!=0)fprintf(fp,n%5s%10s%10s%10d%10d,alli.fnumber,alli.start,al li.destination,alli.time,alli.money);i+;fclose(fp);/*&判& 斷 是 否 有 這 個(gè) 航 班 &*/int judge_have_or_no_a_flight(char ch) / 判斷是否有這個(gè)航班int m,n=0; FILE *fp;Fl dp;if(fp=fopen(FlightInfo.txt,r)=NULL) printf(file c

45、an 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.fnumber,ch);if(m=0) n=1;/ 此次航班已有 break;fclose(fp); return n;/*&官& 方 界 面 美 化 函 數(shù) &*/void printf_han_shu()/ 官方界面美化函數(shù)printf(=n);printf(歡迎使用飛機(jī)訂票系統(tǒng) !nnnn );printf(本系統(tǒng)有以下功能供你選擇 .nn);printf(& 察看全部航班信息

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論