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

下載本文檔

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

文檔簡介

1、程序設(shè)計課程設(shè)計說明書課程名稱 程序設(shè)計 設(shè)計題目 飛機(jī)航班訂票系統(tǒng) 專業(yè)班級 計算機(jī)應(yīng)用技術(shù)201221 學(xué)生姓名 指導(dǎo)教師 起止日期2013年6月8日至2013年6月14日福建林業(yè)職業(yè)技術(shù)學(xué)院自動化工程系目錄1 設(shè)計內(nèi)容、任務(wù)以及要求11.1設(shè)計題目的內(nèi)容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)函數(shù)的測試314.6

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

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

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

5、提示信息),刪除航班(在刪除過程中如果沒有查找到要刪除的顯示提示信息),選擇航班訂票。內(nèi)部操作:將航班的信息存入文件中,并命名為FlightInfo.txt。將訂票情況信息存入文件中,并命名為SelectInfo.txt。相應(yīng)的航班編號存入SelectInfo.txt文件中為了接近實戰(zhàn)模擬飛機(jī)航班訂票系統(tǒng),增加了一些功能。增加功能有把系統(tǒng)分為了兩個部分,一個是官方操作,一個是客戶端。官方操作有密碼認(rèn)定和密碼修改,密碼的以文件形式存儲在硬盤里,以只讀認(rèn)定客戶,以只寫修改密碼。官方還有查看訂票情況,由函數(shù)統(tǒng)計出來的??蛻舳嗽黾恿藱C(jī)票顯示(顯示包括統(tǒng)計出來的座位號,以及航班號和學(xué)號)。2.2具體設(shè)計

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

7、來返回值的思想,以顯示座位號。(10)密碼的確認(rèn)以及修改,是利用文件存儲的永久性來實現(xiàn)的,以只讀來確認(rèn)密碼,以只寫來修改密碼的思想,來實現(xiàn)的官方操作 。2.3系統(tǒng)的總體流程圖進(jìn)入系統(tǒng)客戶端密碼認(rèn)定接下官方操作退出系統(tǒng)航班訂票信息顯示密碼修改預(yù)定航班刪除航班添加一個或多個航班查詢各航班察看全部航班接下頁 圖2.1系統(tǒng)的總體流程圖(1) 接上頁客戶端察看全部航班信息預(yù)定航班,顯示預(yù)定航班信息退出系統(tǒng) 查詢一個航班信息 2.2系統(tǒng)的總體流程圖(2)3 .功能模塊的詳細(xì)設(shè)計3.1結(jié)構(gòu)的定義為了方便使用結(jié)構(gòu)此系統(tǒng)結(jié)構(gòu)均為全局類型定義,其定義有如下兩個:typedef struct flight /航班信

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

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

10、(); /官方界面美化函數(shù)(12)void printf_han_shu_comsouer(); /顧客端界面美化函數(shù)(13)void time_han_shU() ; /時間函數(shù) 3.2.1判斷是否有這個航班函數(shù)根據(jù)要求在添加的時候要先判斷是否已有此航班信息,給出相應(yīng)的提示。所以以判斷函數(shù)的返回值來提示是否要對原有的航班信息進(jìn)行操作,因此判斷函數(shù)的類型為整型。其功能具體設(shè)計如下: 具體流程如下所示輸入航班號引入函數(shù)char ch只讀方式打開文件while(!feof(fp)讀出文件中的信息m=strcmp(dp.fnumber,ch);第一次比一次 if(m=0) if(m=0)語句判斷是否

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

12、相等。If語句是用來確定返回值,如果有與已知數(shù)據(jù)n 就是1否則為0; fclose(fp);關(guān)閉文件指針。 return n;返回3.2.2 刪除函數(shù)刪除一個航班的基本思想是,把文件中的數(shù)據(jù)全部讀出來,然后再放回去,與已知數(shù)據(jù)進(jìn)行比較,如果相等說明就是刪除的數(shù)據(jù),就不放回文件中。 具體流程如下所示引入航班號ch以只讀方式打開文件,把文件中的數(shù)據(jù)獨到結(jié)構(gòu)數(shù)組里關(guān)閉文件記錄結(jié)構(gòu)個數(shù)len=i;if(strcmp(alli.fnumber,ch)!=0)fp=fopen("FlightInfo.txt","w");i<len控制循環(huán)次數(shù)滿足條件fprin

13、tf(fp,"n%5s%10s%10s%10d%10d",alli.fnumber,alli.start,alli.destination,alli.time,alli.money);fclose(fp);圖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;作為

14、下面while(i<len)語句的循環(huán)控制。fp=fopen("FlightInfo.txt","w");語句以只寫的方式打開。將文件里的書局全部覆蓋掉。If語句中的:strcmp(alli.fnumber,ch)!=0判斷但當(dāng)前字符串是否和已知字符串是否相等,并以此來確定是否打印數(shù)據(jù)到文件中。如果哦相等說明與已知字符串相等。就不打印到文件中以此來刪除航班信息。fclose(fp);對打印到文件中數(shù)據(jù)保證存儲。3.2.3新建(添加)航班信息函數(shù)以追加方式打開文件,先輸入要輸入的個數(shù),再在for循環(huán)中輸入航班號,在for循環(huán)中先判斷是否已有次航班,如

15、果已有做出相應(yīng)的提示。沒有則接續(xù)輸入。輸入要輸入的航班各數(shù)scanf("%d",&n); 流程圖fp=fopen("FlightInfo.txt","a+")=NULLfor(i=1;i<=n;i+)控制輸入次數(shù)為假繼續(xù)輸入為假提示相關(guān)信息if(h=1)if(h=2)delete_a_filght(dp.fnumber);/刪除函數(shù)add_many_hangban() ;/添加函數(shù)add_many_hangban() ;/添加函數(shù)函數(shù)遞歸函數(shù)遞歸fprintf(fp,"n%5st%10st%10st%10dt%

16、10d",dp.fnumber,dp.start,dp.destination,dp.time,dp.money);選擇操作scanf("%s",dp.fnumber);m=judge_have_or_no_a_flight(dp.fnumber) 圖3.3代碼說明printf("nnntt請輸入要添加的航班個數(shù):");顯示提示信息,以增加程序的美觀。scanf("%d",&n)語句是要輸入的航班個數(shù)。if(fp=fopen("FlightInfo.txt","a+")=NUL

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

18、遞歸,應(yīng)用添加函數(shù)執(zhí)行添加循環(huán)。在for 循環(huán)中沒有應(yīng)用結(jié)構(gòu)數(shù)組,直接輸入一個,就把這個放到文件中。fprintf:語句是把內(nèi)存中的數(shù)據(jù)打印到文件中。view_all();是查看全部航班函數(shù),為了直接顯示是否添加成功,顯示文件中的全部信息。3.2.4察看所有的航班信息以只讀方式打開,以文件結(jié)束為標(biāo)志結(jié)束,從文件中讀一個就打印一個的思想。 流程圖fscanf(fp,"%s%s%s%d%d",dp.fnumber,dp.start,dp.destination,&dp.time,&dp.money);fclose(fp);FILE*fp;定義文件指針以只讀打開文

19、件文件結(jié)束打開打開失敗文件打開while 控制循環(huán)打印到屏幕上 圖3.4 代碼說明printf("航班號 起飛地點 終點 飛行時間(小時) 票價(元)nn");:此語句是對航班總體的說明while:語句為控制循環(huán),然后就讀一個打印一個,直到文件結(jié)束。printf("%5s %10s %10s %10d %10dnn",dp.fnumber,dp.start,dp.destination,dp.time,dp.money)打印內(nèi)容間的距離控制。fclose(fp);關(guān)閉文件指針。3.2.5查看一個航班函數(shù)和查看全部航班信息思想一樣,只是打印出來的時候只準(zhǔn)與

20、查找的航班信息打印。用一個if語句條件限制為m =strcmp(dp.fnumber,ch);m的值為0才打印出來。 流程圖以只讀方式打開文件文件結(jié)束!feof(fp)文件沒有結(jié)束不相等 fscanf(fp,"%s%s%s%d%dn",dp.fnumber,dp.start,dp.destination,&dp.time,&dp.money);判斷語句m=0printf("沒有你查找的航班號!n");printf("航班號 起飛地點 終點飛行時間(小時) 票價(元)nn");break;相等打印跳出n=0圖3.5fcl

21、ose(fp); 代碼說明ch導(dǎo)入字符要找的航班號。while(!feof(fp)控制循環(huán)。m =strcmp(dp.fnumber,ch); if(m=0) 控制是夠打印。break;如果打印了就跳出循環(huán)。根據(jù)if (n=0)判斷是否有與給定數(shù)據(jù)相等的,如果沒有會顯示提示信息3.2.6 密碼確認(rèn)函數(shù)先給定初始密碼,可以利用密碼修改函數(shù)進(jìn)行修改,密碼認(rèn)定是把文件中的字符讀出來和輸入的進(jìn)行對比,是否相等來實現(xiàn)的。 程序流程圖charmima20;密碼字符串n=0n=1return nfscanf(fp,"%s",yuanmima);!feof(fp)以只讀方式打開文建讀到內(nèi)存

22、中fclose(fp);關(guān)掉文件指針判斷是否與已知數(shù)據(jù)相等strcmp(mima,yuanmima)=0圖3.6為真為假 代碼說明char mima20;密碼最多有20個字符。while (!feof(fp)fscanf(fp,"%s",yuanmima);從文件中不把密碼拿出來。if(strcmp(mima,yuanmima)=0)與輸入字符進(jìn)行比較。等則輸入密碼正確,不等則輸入密碼不正確。返回值說明是否輸入正確,正確返回1,不對返回0.。3.2.7密碼修改函數(shù)設(shè)計思想先用密碼確認(rèn)函數(shù)確認(rèn)是否密碼正確,正確才讓進(jìn)入下一個環(huán)節(jié),修改是文件以只寫的方式打開,然后保存。函數(shù)流程

23、圖密碼錯誤引用密碼判斷函printf("t請輸入你的新密碼:");為真以只寫方式打開fclose(fp);保存新密碼修改成功退出密碼修改函數(shù)fprintf(fp,"%s",gaihoumima);輸入新密碼圖3.7 代碼說明n=mima_hanshu();/引入密碼確認(rèn)函數(shù)。If語句判斷是否密碼正確。正確系統(tǒng)讓進(jìn)行密碼修改,不正確不讓修改。fclose(fp);關(guān)閉文件。3.2.8飛機(jī)航班訂票統(tǒng)計函數(shù)以只讀方式打開文件,讀出每個航班號的訂票情況,然后打印出來。 程序流程以只讀方式打開航班文件讀到數(shù)組里while(!feof(rp) ;i+; len=i;

24、控制變量for(i=0;i<len;i+);語句決定循環(huán)次數(shù)每循環(huán)一次訂票文件打一次,if(strcmp(dpi.fnumber,piao.no)=0) n=n+1;打印結(jié)果fopen("SelectInfo.txt","r")結(jié)束圖3.8代碼說明printf("t%stt%dnn",dpi.fnumber,n);if(rp=fopen("FlightInfo.txt","r")=NULL)以只讀方式打開文件打印出來,航班信息。while(!feof(rp):控制循環(huán),把文件中的數(shù)據(jù)讀到數(shù)

25、組中。i+;為后面的for 循環(huán)做控制。在for 循環(huán)中沒統(tǒng)計一次,指針就指到文件末尾,所以每次統(tǒng)計都要重新打開文件。統(tǒng)計到一個則座位號加一,最終結(jié)果多以就是當(dāng)請客戶的座位號。fclose(fp);關(guān)閉文件指針。3.2.9 座位確定函數(shù)用的是統(tǒng)計的思想,只要文件中有何已知數(shù)據(jù)相等的票,那么統(tǒng)計變量自增一。然后打印出來。 程序流程fp=fopen("SelectInfo.txt","a+")打開文件while(!feof(fp)控制循環(huán)if(strcmp(hangban,piao.no)=0)判斷語句為真為假統(tǒng)計變量自增返回n圖3.9 代碼說明 “a+”可

26、寫可讀。while(!feof(fp)控制一次一次的讀出來, if(strcmp(hangban,piao.no)=0)和已知數(shù)據(jù)進(jìn)行比較,符合自增。不符合進(jìn)行下一次。fclose(fp);關(guān)閉文件return n;返回座位號。3.2.10訂票函數(shù)以先判斷再預(yù)定,成功輸入后把飛機(jī)票存入文件中。顯示群航班信息函數(shù)流程圖圖3.10輸入要預(yù)定的航班號;scanf("%s",stu.no);judge_have_or_no_a_flight(stu.no) ;/判斷函數(shù)判斷函數(shù)的引用zuowei_hao_sure(stu.no);/座位號確定函數(shù)跳出函數(shù)為真為假放到文件中打印飛機(jī)票

27、信息fclose(fp);代碼說明view_all();為了訂票方便引入了查看全部函數(shù)。while (m=1);要求直道輸入正確為止n=judge_have_or_no_a_flight(stu.no) ;/判斷函數(shù); 判斷是否有此航班if(stu.n>100)控制飛機(jī)票的數(shù)量不能超過限制人數(shù)。m=0;跳出循環(huán)。else printf("t無此次航班號,請重新輸入!nnn"); ;提示重新輸入。fprintf(fp,"n%10st%10st%d",stu.no,stu.xuehao,stu.n);fclose(fp);保存已預(yù)定的飛機(jī)票。print

28、f("t%stt%stt%dnn",stu.no,stu.xuehao,stu.n);打印飛機(jī)票。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 文本文檔中的信息圖4.2 添加后文本中的信息由文本中的信息的出,函數(shù)代碼有誤,原代碼為:fprintf(fp,"n%5s%10s%10s%10d%10dn", dp.fnu

29、mber,dp.start,dp.destination,&dp.time,&dp.money); 應(yīng)該改為:fprintf(fp,"n%5st%10st%10st%10dt%10d",dp.fnumber,dp.start,dp.destination,dp.time,dp.money);原因是寫道文件中的事整型數(shù)的地址。所以在文本中顯示的是亂碼。調(diào)試成功。4.2判斷函數(shù)的測試(判斷輸入的航班號是否已有,給出相應(yīng)的提示) 圖4.3判斷函數(shù)的測試圖4.4判斷函數(shù)的測試4.3 刪除函數(shù)的測試(引入刪除航班,先通過判斷函數(shù),再進(jìn)行刪除)圖4.5刪除函數(shù)的測試輸入

30、1后查看全部圖示為圖4.6刪除函數(shù)的測試成功的刪除航班。(以拿出來,再放回去的操作,設(shè)置是否打印,以此來實現(xiàn)刪除)4.4統(tǒng)計函數(shù)的測試(統(tǒng)計處已訂航班的票數(shù))圖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)

31、;if(strcmp(dpi.fnumber,piao.no)=0) n=n+1;printf("t%stt%dnn",dpi.fnumber,n);n=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,&quo

32、t;%s%s%d",piao.no,piao.xuehao,&piao.n); if(strcmp(dpi.fnumber,piao.no)=0) n=n+1;printf("t%stt%dnn",dpi.fnumber,n);n=0;fclose(fp); 圖4.8統(tǒng)計函數(shù)的測試說明修改成功,證明文件每讀一次文件指針就會指到文件末尾。4.5 密碼確認(rèn)函數(shù)的測試密碼函數(shù)利用文本文檔的長期存儲,以只讀的方式打開文件,和輸入字符串進(jìn)行比較。以是否相等來判斷密碼的對錯。以實現(xiàn)密碼確認(rèn)函數(shù)。圖4.9密碼確認(rèn)函數(shù)的測試根據(jù)設(shè)想密碼確認(rèn)函數(shù)成功實現(xiàn)。圖4.10密碼確認(rèn)

33、函數(shù)的測試4.6密碼的修改函數(shù)模擬密碼操作,先用密碼判斷函數(shù)判斷是否是正確的密碼,然后只寫的方式把新密碼打印進(jìn)去在保存的思想,來實現(xiàn)密碼修改。圖4.11密碼的修改函數(shù)的測試根據(jù)設(shè)計思想,符合事實。成功地 完成了密碼修改函數(shù)的實現(xiàn)。4.7 主函函數(shù)的測試 圖4.12 主函函數(shù)的測試根據(jù)if語句的判斷功能,系統(tǒng)可供官方操作,和客戶端。客戶端直接進(jìn)入,官方操作,為模擬真實系統(tǒng)設(shè)計了密碼認(rèn)定,才允許進(jìn)入。時間函數(shù)就在這時顯示和存儲。進(jìn)入官方操作后可以有如圖4.13所示的操作,進(jìn)入客戶端有如圖4.14的操作。 圖4.13主函函數(shù)的測試圖4.14主函函數(shù)的測試進(jìn)入一個操作后就是自身的循環(huán)操作,根據(jù)wehi

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

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

36、SG . C語言編程. 電子工業(yè)出版社. 2006. 5高福成,c語言程序設(shè)局,清華大學(xué)出版社、北方交通大學(xué)出版社,2004.原程序代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>int judge_have_or_no_a_flight(char);/判斷是否有這個航班void select_a_filght(); /訂票函數(shù)void xiugai_hanshu(); /密碼修改函數(shù)void view_all(); /察看所有的航班信息void sc

37、an_a_filght( char ch); /查看一個航班函數(shù)void add_many_hangban() ; /新建航班信息void delete_a_filght(char ch); /刪除函數(shù)void printf_han_shu(); /官方界面美化函數(shù)void printf_han_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() ; /飛機(jī)航班

38、統(tǒng)計函數(shù)typedef struct flight /航班信息機(jī)構(gòu)char fnumber5;char start20;char destination20;int time; /時間 以小時為單位int money; Fl;typedef struct consumer /頂票信息機(jī)構(gòu)char no5; /航班號char xuehao10; /學(xué)號int n; /座位號 select; /*&&&&&&&&&&&&&&&&&&&&&a

39、mp;&&&&&&&&&&&&&&&主函數(shù)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/ void main()/主函數(shù) int choice,n=1,m,t,w

40、;char ch5; time_han_shU();printf("nttt歡迎進(jìn)入飛機(jī)訂票系統(tǒng)!nn");printf("tt& <1> 官方操作。 nn");printf("tt& <2> 客戶端 。 nn"); printf("tt& <0> 退出系統(tǒng)。 nn");printf("tt請輸入你的選擇:");scanf("%d",&t);if(t=1)chongxin: w=mima_hanshu();/

41、密碼確認(rèn)函數(shù) while(n=1) if(w=1) printf_han_shu();/官方界面美化函數(shù) printf("t請輸入你選擇的功能:"); scanf("%d",&choice);printf("nn"); switch(choice) case 1: system("cls");view_all(); break; / 察看所有的航班信息 case 2:system("cls");view_all();/查看全部 printf("nntt請輸入你要查找的航班號:&

42、quot;); scanf("%s",&ch); scan_a_filght ( ch); /察看一個航班信息 break; case 3: system("cls");add_many_hangban(); break; /新建航班信息(添加函數(shù)) case 4:system("cls");printf("nntt請輸入你要刪除的航班號:"); scanf("%s",&ch); m=judge_have_or_no_a_flight( ch) ;/判斷是否有這個航班 if(m=

43、1) delete_a_filght( ch); /刪除函數(shù) printf("tt成功刪除!nn"); if(m!=1) printf("無此次航班!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)計函數(shù) case

44、 0: n=0;break; default:printf("請重新輸入沒有你輸入的選擇nn");break; else printf("tt密碼錯誤!n"); printf("tt請重新輸入密碼!nn"); goto chongxin; else if(t=2)while(n=1) printf_han_shu_comsouer();/顧客端界面美化函數(shù) printf("t請輸入你選擇的功能:"); scanf("%d",&choice); printf("nn")

45、; switch(choice) case 1: system("cls"); view_all(); break; / 察看所有的航班信息 case 2:system("cls"); view_all();/顯示全部 printf("t請輸入你要查找的航班號:"); scanf("%s",&ch); scan_a_filght ( ch); /察看一個航班信息 break; case 3:system("cls");select_a_filght(); break; /訂票函數(shù) cas

46、e 0: n=0;break; default: printf("nntt請重新輸入沒有你輸入的選項:n"); break; /*&&&&&&&&&&&&&&&&&&&&新建航班信息&&&&&&&&&&&&&&&&&&&&&&&&

47、;&&&&&&&&&&&&&&&&&&&&&&&&*/ void add_many_hangban() /新建航班信息int n ,i,m,h;FILE *fp;Fl dp;printf("nnntt請輸入要添加的航班個數(shù):");scanf("%d",&n);if(fp=fopen("FlightInfo.txt","a+&qu

48、ot;)=NULL)printf("file can not open!");exit(0);for(i=1;i<=n;i+)printf("請輸入第%d次航班nn",i); printf("t航班號:");scanf("%s",dp.fnumber);printf("n"); m=judge_have_or_no_a_flight(dp.fnumber); /判斷是否有這個航班 if(m=1) printf("t此次航班已有是否刪除!nn"); printf(&quo

49、t;t刪除重新輸入它請輸入<1>nn"); printf("t不刪除重新輸入請輸入<2>nn"); printf("t請輸入:"); scanf("%d",&h); if(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)

50、; printf("t目的地:");scanf("%s",dp.destination); printf("t飛行時間:");scanf("%d",&dp.time); printf("t票價:"); scanf("%d",&dp.money); fprintf(fp,"n%5st%10st%10st%10dt%10d",dp.fnumber,dp.start,dp.destination,dp.time,dp.money); fclose

51、(fp);view_all(); /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&察看全部航班信息&&&&&&&&&&&&am

52、p;&&&&&&&&&*/void view_all()FILE *fp;Fl dp;if(fp=fopen("FlightInfo.txt","r")=NULL)printf("file can not open!n");exit(0); printf("航班號 起飛地點 終點 飛行時間(小時) 票價(元)nn");while(!feof(fp)fscanf(fp,"%s%s%s%d%d",dp.fnumber,dp.st

53、art,dp.destination,&dp.time,&dp.money); printf("%5s %10s %10s %10d %10dnn",dp.fnumber,dp.start,dp.destination,dp.time,dp.money);fclose(fp);/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

54、amp;查看一個航班函數(shù)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/void scan_a_filght( char ch)/查看一個航班函數(shù)int m,n=0;FILE *fp;Fl dp;if(fp=fopen("FlightInfo.txt","r")=NULL)printf("file can no

溫馨提示

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

最新文檔

評論

0/150

提交評論