版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄設(shè)計目的 1總體設(shè)計 1詳細(xì)設(shè)計 3調(diào)試與測試4源程序代碼4程序運(yùn)行截圖 1.6.仍存在的問題1.8.心得體會 1.8.設(shè)計進(jìn)度表1.9.參考文獻(xiàn) 2.0.一、正文(一)設(shè)計目的 :假定民航機(jī)場共有n 個航班,每個航班有一航班號、確定的航線(起始站、終點(diǎn)站)、確定的飛行時間(星 期幾)和一定的成員訂額。設(shè)計一飛機(jī)訂票系統(tǒng),使之能提供下列服務(wù):1 、 航班信息錄入功能(航班信息用文件保存)包才舌航班號、起始站、終點(diǎn)站、機(jī)票總數(shù)、已售機(jī)票數(shù);2 、 航班信息瀏覽功能3 、 查詢航線:按航班號查詢、按終點(diǎn)站查詢、按航線查詢4 、 承辦訂票和退票業(yè)務(wù)(可選項(xiàng))5 、 修改航班信息6 、 刪除航班信
2、息(二)總體設(shè)計:編寫一個飛機(jī)訂票系統(tǒng)的程序,使該系統(tǒng)能夠?qū)崿F(xiàn)對航班信息的錄入、瀏覽、查詢、修改、刪除以及訂 票、退票的功能。根據(jù)題目要求,首先要制作一個主菜單顯示出各個操作的提示可供用戶選擇,進(jìn)而一步步 地深入操作。是看到題目后的最初根據(jù)主菜單的內(nèi)容再進(jìn)一步編制具體操作的函數(shù),各個功能均用專門編制的函數(shù)來完成。這就 的思路因?yàn)轱w機(jī)票管理系統(tǒng)含有各航班的各項(xiàng)信息,如航班號、航線、飛行時間、機(jī)票數(shù)目等必要信息,綜合考慮決定用結(jié)構(gòu)體數(shù)組比較合適,根據(jù)題目要求定義如下結(jié)構(gòu)體類型:頭文件包含、全局變量定義和結(jié)構(gòu)體定義源代碼:#include<stdio.h> 標(biāo)準(zhǔn)輸入、輸出頭文件#incl
3、ude<string.h>/含字符串函數(shù)處理頭文件#include<stdlib.h>并define N 1000定義最多的航班數(shù)PRT#defiiie"%-d%12s %12s %10s %12d %12dn,si.num,si.start,si.over,si.tiine,si.count,si.selled 定義輸 出格式#defiiie LB ”航班號起始站終點(diǎn)站時間 機(jī)票總數(shù) 已曹票數(shù) 5 ”定義打印列表格式stmct ail -mt num;chai start20;chai ovei 20;chai tune 10;mt count;/ 機(jī)票總數(shù)
4、mt selled;/ 已預(yù)定機(jī)票總數(shù)sN;mti,m=0;定義全局變量,記錄下航班信息的數(shù)量charii10;用來選擇是否繼續(xù)的變量人概思路就是這樣!詳細(xì)設(shè)計(定義的每個函數(shù)均作介紹):1 ) 初始化界面函數(shù)( face 函數(shù))在程序開始執(zhí)行時調(diào)用該函數(shù),在屏幕上打印出初始界面!并選擇要執(zhí)行的操作!2 ) 信息輸入函數(shù)( input 函數(shù))該函數(shù)里面調(diào)用for循環(huán)控制,該函數(shù)中用到一個全局變量k,用來控制該函數(shù)被再次調(diào)用時可以在已存放信息結(jié)構(gòu)體后面繼續(xù)輸入數(shù)據(jù),每當(dāng)一個完整的航班信息輸入完畢后,會提示是否輸入下一個信息! 按 ” 0 ”j 結(jié)束輸入!然后調(diào)用卜 ?面要介紹的信息保存函數(shù)(sa
5、ve 函數(shù))!保存完畢后退回到主菜單!3 ) 信息保存函數(shù)( save 函數(shù))由于本程序設(shè)計時當(dāng)輸入機(jī)票總數(shù)不是正數(shù)時就會結(jié)束保存航班信息,所以進(jìn)入 save 函數(shù)時首先判斷機(jī)票總 數(shù)是否人于 0,人于 0 時候開始進(jìn)入主體部分執(zhí)行!主要過程是先打開文件,文件打開成功后調(diào)用文件格式 輸出函數(shù)(俎nnf 函數(shù))將信息保存到文件中區(qū)!4 ) 文件讀取函數(shù)( read 函數(shù))入函該函數(shù)首先打開保存飛機(jī)票信息的文件,然后將保存的信息寫到飛機(jī)信息的結(jié)構(gòu)體數(shù)組里面去(調(diào)用格式輸數(shù) fscanf ) ,并將航班信息輸出到屏幕上!輸入完畢后關(guān)閉文件!5)信息打印函數(shù)(pnnt函數(shù))該函數(shù)只是負(fù)責(zé)把調(diào)用 rea
6、d函數(shù),并打印由航班信息輸生事的一些輔助信息!6)航班信息查找函數(shù)本函數(shù)用dowlule循環(huán)控制結(jié)構(gòu),進(jìn)入函數(shù)后選擇查詢方式(可以按航班號、終點(diǎn)站、航線查詢),方式選擇后用switch語句飛機(jī)的航班號(或者起始站、終點(diǎn)站)!從 switch語句由來后,首先調(diào)用文件讀取函數(shù)(read函數(shù)),輸由所有航班信息到屏幕上, 然后在if語句中判斷剛才所輸入飛機(jī)的航班號 (或者起始站、終點(diǎn)站) 與數(shù)組中那個航班信息符合,找到后打印由來!循壞結(jié)束后,輸入 “yes ”( “ no”)while判斷輸入的 條件繼續(xù)(終 止查找)!選擇終止查找后返回主菜單!7)航班信息刪除函數(shù) (Delete )航班刪除模塊與
7、查找函數(shù)類似,也是用的dowhile循環(huán)控制結(jié)構(gòu),不同時要先輸入密碼才能進(jìn)入函數(shù)!進(jìn) 入函數(shù)后要選擇刪除方式(按航班號、航線)刪除,輸入要刪除的航班號(航線)后,比如說選擇按航班號刪除,找到要刪除的航班數(shù)組下標(biāo)1后,用for (intj=ij<m;j+ ) sj=s|j+l ;方式實(shí)現(xiàn)刪除,刪除完畢后打印由刪除過的航班信息列表,然后選擇“no”結(jié)束該函數(shù),返回到主菜單!8)訂票函數(shù)(Eook函數(shù))首先調(diào)用查詢函數(shù)(search函數(shù)),找到要預(yù)訂機(jī)票的航班,然后輸入要頂?shù)臋C(jī)票數(shù)目,根據(jù)輸入的機(jī)票書修改已售機(jī)票書數(shù)值!然后保存信息!9)退票函數(shù)(Rdbnd (J函數(shù)與訂票函數(shù)類似,首先調(diào)用查
8、詢函數(shù)(search函數(shù)),找到要預(yù)訂機(jī)票的航班,然后輸入要退的機(jī)票數(shù)目,根 據(jù)輸入的機(jī)票書修改已售機(jī)票書數(shù)值!然后保存信息!10)修改函數(shù)(Modify函數(shù))該函數(shù)與輸入函數(shù)類似,把數(shù)組里面的信息重新輸入一遍達(dá)到修改航班信息的功能!11) m ain 函數(shù)輸入密碼后進(jìn)入 main函數(shù),然后main函數(shù)負(fù)貫調(diào)用以上程序就行了!源程序代碼:#include<stdio.h>#include<strmg.h> #mclude<stdlib.h>井 define N 200stnict air mt num;chai stait20;chai ovei20;cha
9、i dm 亡10;PRT定義輸己售票數(shù));mt count;/ 機(jī)票總數(shù)iiit selled;/已預(yù)定機(jī)票總數(shù) sN;rFdefiiieH%-d%12s %12s%10s%12dstart,si.over ?si.tune,si.count,si.selled由格式#defiiie LB H航班號起始站終點(diǎn)站時間機(jī)票總數(shù)n” 定義打印列表格式void face(); void mput(); void print(); void search。; void DeleteQ; void BookiiigQ; void Modify。: void Refiind(); void save();
10、void read();mt 1411=0,k=0;void face() systeni( Hcoloi 0E M);puts( H”puts( H火飛機(jī)票管理系統(tǒng)歡迎您*n);puts( HA, * )?puts( H"你可以選擇下面的操作:puts( puts( puts( puts( puts( puts( puts( puts( puts( puts( puts( ?輸入航班信息 ?瀏覽航班信息 ?查詢航班信息 ?刪除航班信息 ?訂票信息?修改信息 ?退票信息?退由););););* *”* 0 ;*”* 0 ; “)?文制作人:#學(xué)號:111111111111);void
11、 main()/delay(lOOO);system ( " coloi a0”設(shè)置背景和字體顏色system( Hcolor 100 H);/yaiiseintj; chaTf=Tlllllllir; 設(shè)置密碼Ult y;pnntf(-飛機(jī)票管理系統(tǒng)WE);wlule(l)pnntf( H請輸入密碼進(jìn)入系統(tǒng)An" );scaufC%s ” ,f); 讀取密碼if(strcnip(f, H 11111111H n)=O)while(l)system( HclsM);face o ;pnntf(-請在0-7中選擇以回車鍵結(jié)束:"scan)C%cT ; &j)
12、;system( MclsH); switch(j)case 1: mput();/調(diào)用輸入模塊break;case 2:prmtQ;調(diào)用打印模塊break;case 3:search();/ 調(diào)用查詢模塊 break;case 4:De1ete();/調(diào)用刪除模塊 break;case 5:Booking();/調(diào)用訂票模塊break;case 6:Modifv();/ 調(diào)用修改模塊 break;case 7:RefundQ;調(diào)用退票模塊break;case 0:goto end;prmtfC*ii按任意鍵繼續(xù)”);elsenit vy ;pnntf( ”輸入密碼錯誤!請檢查您的密碼是否正確
13、 ! W);pnntf( ”是否繼續(xù)輸密碼?按任意鍵繼續(xù),0 結(jié)束 !scanff% 出 &y); 在此需輸入任意一個整數(shù)值數(shù)值,程序才能繼續(xù)執(zhí)行if(y=0)break;end:prmtf( n 歡迎再 次回來A=)n M);pnntfC*任意鍵退出系統(tǒng)! n” ) ;int hp2;scanff%d ” ,&hp2);void mput()system( M coloi 8f*);“ pnntfC 請依次輸入航班信息 (機(jī)票總數(shù)為 0 結(jié)束輸入 ):-”完成輸入信息請鍵入w 以回車鍵結(jié)束n” ) ;/ 打印提示信息pnntff iiM);int v;for(i=k;i<
14、;N;i+)prints 請輸入航班號:J;scaiif ( M%d ,&si.num) ; 讀取航班號pirntfC* 請輸入起始站: ”);scanf (" s M s 1. start ); 讀取起始站pnntf (” 請輸入終點(diǎn)站小);scanf (" % s> si? ovei ); 讀取終點(diǎn)站pnntf ("請輸入時間(星期)小); scanf (" s篇si ? time ); 讀取時間pnntf (“ 請輸入總機(jī)票數(shù)( 0 結(jié)束) : ”) ;scanf (H%dH,&si.count ) ;/iA 取機(jī)票數(shù) pri
15、nts 請輸入已售機(jī)票數(shù):”)scanf ( H%d H .&si.selled ) ;/ 讀取機(jī)票數(shù)m+;/ 飛機(jī)信息錄入計數(shù) k+;pnntf ( "第: 1 個信息已經(jīng)輸完是否繼續(xù)?按任意鍵繼續(xù)( 0 結(jié)束scanff%d役&y); 在此需輸入任意一個整數(shù)值數(shù)值,程序才能繼續(xù)執(zhí)行if (y=0 )saveQ ; / 保持輸入數(shù)據(jù)break; void save() 保存模塊程序if(s0.count>0)system( M color 78 ” ) ;FILE % ;定義文件指針打開文件并判斷是否由錯if(?=fop “ WD飛機(jī)票系統(tǒng)數(shù)據(jù)保存?txtTw
16、+O=NULL)pnntf(文件打開失?。?打印由錯提示 elsefpiintf( fp ± B);fpnntf( fp/ = aiM); for(i=0;i<m&&si.coimt>0;i+)fpiintf(fp.PRT); fclose(fp);/ 關(guān)閉文件int hp;pnntf(-信息保存到文件成功!任意鍵返回主菜單!31TJ;scanf( " % d“,&hp); else int k;pnntfC飛機(jī)票總數(shù)為零!輸入結(jié)束!n”);prmtf( n任意鍵返回主菜單 T);scanf( " d 役 &k);voi
17、d read()/從文件讀取信息模塊pnntf(system( Mcolor E0 H);FILE %;定義文件指針if(fp=fopen("D:/飛機(jī)票系統(tǒng)數(shù)據(jù)保存?tx匚T)尸NULL) 打開文件,并判斷是否由錯創(chuàng)建文件失?。?”);/ 打印由錯提示elsefdr(i=0;i<m;i+) fscanf(fp, M %-d% 12s% 12s% 1 Os% 12d% 12d'Ji 役& si.num,si.start.si.ovei;si.tiine.&si.count&si.selled ); pnntf(PRT);fclose(fp);/
18、關(guān)閉文件 void piiiit()/ 打印模塊system( M color 97" ); char w 10;所有航班信息如下iTJ;printf( Hn pnntfALB);readQ;/調(diào)用讀取文件函數(shù)按任意鍵回車鍵結(jié)束返回上層菜單:I111");pnntf( nnii scanf( ,%s,w); void search()/ 查詢模塊system( Mcolor 5E n);char name 1 20;char name220;char ii10;int n,no,flag=0;dopmitfc 請選擇查找方式:11 ” ) ;/ 打印查詢方式菜單pnntf(
19、Al.按航班號查找n”2 ?按終點(diǎn)站查找血-” 3.按航線查找n ”0 ?返回 iT);pnntf( H 請在 0? 3 審選擇: ii H?iiii 按其他鍵以回車鍵結(jié)束返回主菜單An ” ) ;scanfC%d ",&n);讀取查找方式if(n=0)break;switch(n)case 1:pnntff 請輸入航班號: n) ;scanf( " d 役 &no); 航班號 break;case 2:pnmf ( ” 請輸入終點(diǎn)站名稱 : ” ) ;scaiif( M %sH4iame2);/ 讀取終點(diǎn)站 break;case 3:pnntf ( ” 請
20、輸入起始站名稱 :'*) ;scaiif( ,%sn4iame 1);/ 讀取起始站piuitfC* 請輸入終點(diǎn)站名稱:” ) ;scaiif( M%sH4iame2);/終點(diǎn)站break;default:break;pnntf(An 已經(jīng)存在的航班如下 niT);pnntfALB);lead。;/用讀取函數(shù)if(strcmp(si . 1 )=0&&sticmp(si .oveiname2)=0)/按終點(diǎn)站起始站判斷輸出條件/prmtfC*n 查找航班信息成功 !niT) ;pnmf( ” n 下面是你要查找的航班信息 nn ” ) ; flag=l
21、 ;printfALB);printf(PRT)A/ 打印信息 break;if(strcmp(si .2)=0)pnmf( ” n 下面是你要查找的航班信息 nn ” ) ; flag=l ;printfALB);printf(PRT)A/ 打印信息 break;if(si.num=no)/ 按航班號判斷輸出條件pnntfOn卞面是你要查找的航班信息 nn ” )flag=l ;printfLB);printf(PRT/打印信息break;no=0; 將航班號賦值為if(flag)pnntfCS是否繼續(xù)查找您需要的信息查找完畢: n n?請鍵入yes 或 no 以回車鍵結(jié)束
22、n scaiif(M %s*ii);elseprmtf( nii是否繼續(xù)查找沒有您需要的信息: ii H?請鍵入yes 或 no 以回車鍵結(jié)束n scaiif(M %s*ii);,yes H)=O);/,no n)=0)判斷結(jié)束while(strcinp(ii/ while(strcmp(ii/ break;void DeleteQ/刪除模塊 system( M color IE);char name 1 20;char name220;char ii10;char fI= H2010146104 H;/ 設(shè)置密碼: n “ ) ; scaufC%s ” ,f); 讀取密碼 判斷密碼是否正確i
23、nt no,n,flag=0;pmitfC 請輸入密碼并以回車鍵結(jié)束if(strcnip(f, H2010146104 H)=0)pnntfC 請選擇刪除以方式回車鍵結(jié)束: pnntf(F ?按航班號刪除n”H *2 ? 按航線刪除n ” *0 ? 返回 n ” ) ;iT);););請在 0? 2 中選擇以回車鍵結(jié)束:scanff%dj&n);/ 讀取刪除方式 if(n=O)break; 跳出循環(huán)switch(n)case 1:printf( H 請輸入航班號:H) ;scanfC%d &iio);/ 讀取航班號printf( ,n已經(jīng)存在的航班如 l 、 nread();/
24、 調(diào)用讀取函數(shù)break;/ 跳出循環(huán)case 2:pnntf(”請輸入起始站名稱:JscanfC%s ” ame 1 ); 讀取起始站prrntfC' 請輸入終點(diǎn)站名稱:” );scanf( ” s ” 4iame2); 讀取終點(diǎn)站printf( HQ已經(jīng)存在的航班如 l 、 nread();/ 調(diào)用讀取函數(shù) break;/ 跳出循環(huán) printf( Mnfbr(i=0;i<m;i+)刪除后的航班如 FW);/if(si.num=no)/ 按航班號刪除printf(LB);flag=l;for(iiit j=ij<m;j+)sj=sj+l ;for(iiit i=O;i<m;i-H
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國駕駛員座椅行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國尼龍行李帶數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國天然螺旋藻精粉數(shù)據(jù)監(jiān)測研究報告
- 2025版道路建設(shè)項(xiàng)目監(jiān)理合同2篇
- 2025版綠色交通信托借款合同范本2篇
- 二零二五版施工合同擔(dān)保補(bǔ)充協(xié)議書規(guī)范范本3篇
- 二零二五年度個人房產(chǎn)抵押貸款擔(dān)保合同范本集4篇
- 父子之間不動產(chǎn)房產(chǎn)贈與合同書
- 公司辦公室裝飾裝修施工合同
- 團(tuán)體購房合同范文
- IT系統(tǒng)災(zāi)備和容災(zāi)解決方案項(xiàng)目設(shè)計方案
- 青島版二年級數(shù)學(xué)下冊(六三制)全冊課件【完整版】
- 主要負(fù)責(zé)人重大隱患帶隊檢查表
- 魯濱遜漂流記人物形象分析
- 危險廢物貯存?zhèn)}庫建設(shè)標(biāo)準(zhǔn)
- 新加坡小學(xué)二年級英語試卷practice 2
- 多層工業(yè)廠房主體結(jié)構(gòu)施工方案鋼筋混凝土結(jié)構(gòu)
- 救生艇筏、救助艇基本知識課件
- 阻燃壁紙匯報
- 梁若瑜著-十二宮六七二象書增注版
- 企業(yè)年會盛典元旦頒獎晚會通用PPT模板
評論
0/150
提交評論