




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄設計目的 1總體設計 1詳細設計 3調試與測試4源程序代碼4程序運行截圖 1.6.仍存在的問題1.8.心得體會 1.8.設計進度表1.9.參考文獻 2.0.一、正文(一)設計目的 :假定民航機場共有n 個航班,每個航班有一航班號、確定的航線(起始站、終點站)、確定的飛行時間(星 期幾)和一定的成員訂額。設計一飛機訂票系統,使之能提供下列服務:1 、 航班信息錄入功能(航班信息用文件保存)包才舌航班號、起始站、終點站、機票總數、已售機票數;2 、 航班信息瀏覽功能3 、 查詢航線:按航班號查詢、按終點站查詢、按航線查詢4 、 承辦訂票和退票業務(可選項)5 、 修改航班信息6 、 刪除航班信
2、息(二)總體設計:編寫一個飛機訂票系統的程序,使該系統能夠實現對航班信息的錄入、瀏覽、查詢、修改、刪除以及訂 票、退票的功能。根據題目要求,首先要制作一個主菜單顯示出各個操作的提示可供用戶選擇,進而一步步 地深入操作。是看到題目后的最初根據主菜單的內容再進一步編制具體操作的函數,各個功能均用專門編制的函數來完成。這就 的思路因為飛機票管理系統含有各航班的各項信息,如航班號、航線、飛行時間、機票數目等必要信息,綜合考慮決定用結構體數組比較合適,根據題目要求定義如下結構體類型:頭文件包含、全局變量定義和結構體定義源代碼:#include<stdio.h> 標準輸入、輸出頭文件#incl
3、ude<string.h>/含字符串函數處理頭文件#include<stdlib.h>并define N 1000定義最多的航班數PRT#defiiie"%-d%12s %12s %10s %12d %12dn,si.num,si.start,si.over,si.tiine,si.count,si.selled 定義輸 出格式#defiiie LB ”航班號起始站終點站時間 機票總數 已曹票數 5 ”定義打印列表格式stmct ail -mt num;chai start20;chai ovei 20;chai tune 10;mt count;/ 機票總數
4、mt selled;/ 已預定機票總數sN;mti,m=0;定義全局變量,記錄下航班信息的數量charii10;用來選擇是否繼續的變量人概思路就是這樣!詳細設計(定義的每個函數均作介紹):1 ) 初始化界面函數( face 函數)在程序開始執行時調用該函數,在屏幕上打印出初始界面!并選擇要執行的操作!2 ) 信息輸入函數( input 函數)該函數里面調用for循環控制,該函數中用到一個全局變量k,用來控制該函數被再次調用時可以在已存放信息結構體后面繼續輸入數據,每當一個完整的航班信息輸入完畢后,會提示是否輸入下一個信息! 按 ” 0 ”j 結束輸入!然后調用卜 ?面要介紹的信息保存函數(sa
5、ve 函數)!保存完畢后退回到主菜單!3 ) 信息保存函數( save 函數)由于本程序設計時當輸入機票總數不是正數時就會結束保存航班信息,所以進入 save 函數時首先判斷機票總 數是否人于 0,人于 0 時候開始進入主體部分執行!主要過程是先打開文件,文件打開成功后調用文件格式 輸出函數(俎nnf 函數)將信息保存到文件中區!4 ) 文件讀取函數( read 函數)入函該函數首先打開保存飛機票信息的文件,然后將保存的信息寫到飛機信息的結構體數組里面去(調用格式輸數 fscanf ) ,并將航班信息輸出到屏幕上!輸入完畢后關閉文件!5)信息打印函數(pnnt函數)該函數只是負責把調用 rea
6、d函數,并打印由航班信息輸生事的一些輔助信息!6)航班信息查找函數本函數用dowlule循環控制結構,進入函數后選擇查詢方式(可以按航班號、終點站、航線查詢),方式選擇后用switch語句飛機的航班號(或者起始站、終點站)!從 switch語句由來后,首先調用文件讀取函數(read函數),輸由所有航班信息到屏幕上, 然后在if語句中判斷剛才所輸入飛機的航班號 (或者起始站、終點站) 與數組中那個航班信息符合,找到后打印由來!循壞結束后,輸入 “yes ”( “ no”)while判斷輸入的 條件繼續(終 止查找)!選擇終止查找后返回主菜單!7)航班信息刪除函數 (Delete )航班刪除模塊與
7、查找函數類似,也是用的dowhile循環控制結構,不同時要先輸入密碼才能進入函數!進 入函數后要選擇刪除方式(按航班號、航線)刪除,輸入要刪除的航班號(航線)后,比如說選擇按航班號刪除,找到要刪除的航班數組下標1后,用for (intj=ij<m;j+ ) sj=s|j+l ;方式實現刪除,刪除完畢后打印由刪除過的航班信息列表,然后選擇“no”結束該函數,返回到主菜單!8)訂票函數(Eook函數)首先調用查詢函數(search函數),找到要預訂機票的航班,然后輸入要頂的機票數目,根據輸入的機票書修改已售機票書數值!然后保存信息!9)退票函數(Rdbnd (J函數與訂票函數類似,首先調用查
8、詢函數(search函數),找到要預訂機票的航班,然后輸入要退的機票數目,根 據輸入的機票書修改已售機票書數值!然后保存信息!10)修改函數(Modify函數)該函數與輸入函數類似,把數組里面的信息重新輸入一遍達到修改航班信息的功能!11) m ain 函數輸入密碼后進入 main函數,然后main函數負貫調用以上程序就行了!源程序代碼:#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定義輸己售票數);mt count;/ 機票總數iiit selled;/已預定機票總數 sN;rFdefiiieH%-d%12s %12s%10s%12dstart,si.over ?si.tune,si.count,si.selled由格式#defiiie LB H航班號起始站終點站時間機票總數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火飛機票管理系統歡迎您*n);puts( HA, * )?puts( H"你可以選擇下面的操作:puts( puts( puts( puts( puts( puts( puts( puts( puts( puts( puts( ?輸入航班信息 ?瀏覽航班信息 ?查詢航班信息 ?刪除航班信息 ?訂票信息?修改信息 ?退票信息?退由););););* *”* 0 ;*”* 0 ; “)?文制作人:#學號:111111111111);void
11、 main()/delay(lOOO);system ( " coloi a0”設置背景和字體顏色system( Hcolor 100 H);/yaiiseintj; chaTf=Tlllllllir; 設置密碼Ult y;pnntf(-飛機票管理系統WE);wlule(l)pnntf( H請輸入密碼進入系統An" );scaufC%s ” ,f); 讀取密碼if(strcnip(f, H 11111111H n)=O)while(l)system( HclsM);face o ;pnntf(-請在0-7中選擇以回車鍵結束:"scan)C%cT ; &j)
12、;system( MclsH); switch(j)case 1: mput();/調用輸入模塊break;case 2:prmtQ;調用打印模塊break;case 3:search();/ 調用查詢模塊 break;case 4:De1ete();/調用刪除模塊 break;case 5:Booking();/調用訂票模塊break;case 6:Modifv();/ 調用修改模塊 break;case 7:RefundQ;調用退票模塊break;case 0:goto end;prmtfC*ii按任意鍵繼續”);elsenit vy ;pnntf( ”輸入密碼錯誤!請檢查您的密碼是否正確
13、 ! W);pnntf( ”是否繼續輸密碼?按任意鍵繼續,0 結束 !scanff% 出 &y); 在此需輸入任意一個整數值數值,程序才能繼續執行if(y=0)break;end:prmtf( n 歡迎再 次回來A=)n M);pnntfC*任意鍵退出系統! n” ) ;int hp2;scanff%d ” ,&hp2);void mput()system( M coloi 8f*);“ pnntfC 請依次輸入航班信息 (機票總數為 0 結束輸入 ):-”完成輸入信息請鍵入w 以回車鍵結束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 (” 請輸入終點站小);scanf (" % s> si? ovei ); 讀取終點站pnntf ("請輸入時間(星期)小); scanf (" s篇si ? time ); 讀取時間pnntf (“ 請輸入總機票數( 0 結束) : ”) ;scanf (H%dH,&si.count ) ;/iA 取機票數 pri
15、nts 請輸入已售機票數:”)scanf ( H%d H .&si.selled ) ;/ 讀取機票數m+;/ 飛機信息錄入計數 k+;pnntf ( "第: 1 個信息已經輸完是否繼續?按任意鍵繼續( 0 結束scanff%d役&y); 在此需輸入任意一個整數值數值,程序才能繼續執行if (y=0 )saveQ ; / 保持輸入數據break; void save() 保存模塊程序if(s0.count>0)system( M color 78 ” ) ;FILE % ;定義文件指針打開文件并判斷是否由錯if(?=fop “ WD飛機票系統數據保存?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);/ 關閉文件int hp;pnntf(-信息保存到文件成功!任意鍵返回主菜單!31TJ;scanf( " % d“,&hp); else int k;pnntfC飛機票總數為零!輸入結束!n”);prmtf( n任意鍵返回主菜單 T);scanf( " d 役 &k);voi
17、d read()/從文件讀取信息模塊pnntf(system( Mcolor E0 H);FILE %;定義文件指針if(fp=fopen("D:/飛機票系統數據保存?tx匚T)尸NULL) 打開文件,并判斷是否由錯創建文件失敗! ”);/ 打印由錯提示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、關閉文件 void piiiit()/ 打印模塊system( M color 97" ); char w 10;所有航班信息如下iTJ;printf( Hn pnntfALB);readQ;/調用讀取文件函數按任意鍵回車鍵結束返回上層菜單: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 ?按終點站查找血-” 3.按航線查找n ”0 ?返回 iT);pnntf( H 請在 0? 3 審選擇: ii H?iiii 按其他鍵以回車鍵結束返回主菜單An ” ) ;scanfC%d ",&n);讀取查找方式if(n=0)break;switch(n)case 1:pnntff 請輸入航班號: n) ;scanf( " d 役 &no); 航班號 break;case 2:pnmf ( ” 請輸入終點站名稱 : ” ) ;scaiif( M %sH4iame2);/ 讀取終點站 break;case 3:pnntf ( ” 請
20、輸入起始站名稱 :'*) ;scaiif( ,%sn4iame 1);/ 讀取起始站piuitfC* 請輸入終點站名稱:” ) ;scaiif( M%sH4iame2);/終點站break;default:break;pnntf(An 已經存在的航班如下 niT);pnntfALB);lead。;/用讀取函數if(strcmp(si . 1 )=0&&sticmp(si .oveiname2)=0)/按終點站起始站判斷輸出條件/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是否繼續查找您需要的信息查找完畢: n n?請鍵入yes 或 no 以回車鍵結束
22、n scaiif(M %s*ii);elseprmtf( nii是否繼續查找沒有您需要的信息: ii H?請鍵入yes 或 no 以回車鍵結束n scaiif(M %s*ii);,yes H)=O);/,no n)=0)判斷結束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;/ 設置密碼: n “ ) ; scaufC%s ” ,f); 讀取密碼 判斷密碼是否正確i
23、nt no,n,flag=0;pmitfC 請輸入密碼并以回車鍵結束if(strcnip(f, H2010146104 H)=0)pnntfC 請選擇刪除以方式回車鍵結束: pnntf(F ?按航班號刪除n”H *2 ? 按航線刪除n ” *0 ? 返回 n ” ) ;iT);););請在 0? 2 中選擇以回車鍵結束:scanff%dj&n);/ 讀取刪除方式 if(n=O)break; 跳出循環switch(n)case 1:printf( H 請輸入航班號:H) ;scanfC%d &iio);/ 讀取航班號printf( ,n已經存在的航班如 l 、 nread();/
24、 調用讀取函數break;/ 跳出循環case 2:pnntf(”請輸入起始站名稱:JscanfC%s ” ame 1 ); 讀取起始站prrntfC' 請輸入終點站名稱:” );scanf( ” s ” 4iame2); 讀取終點站printf( HQ已經存在的航班如 l 、 nread();/ 調用讀取函數 break;/ 跳出循環 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 縱膈腫瘤患者護理查房
- 2022年山東理工大學自考英語(二)練習題(附答案解析)
- 2022年福建農林大學自考英語(二)練習題(附答案解析)
- 河北省部分高中2024-2025學年高一下學期6月月考政治試卷(含答案)
- 開學安全教育美術
- 2025年工業工程與管理課程綜合考核試卷及答案
- 2025年建筑工程施工考試試卷及答案
- 教育讀書主題班會
- 山東省曲阜市昌平中學2025年英語八下期末檢測模擬試題含答案
- 人教版音樂五年級下冊第一單元 北國之聲(唱歌)《長城放鴿》課件
- AI技術支持的學情分析
- 核電站sdm手冊第7章
- JGJ-130-2011建筑施工扣件式鋼管腳手架安全技術規范(新版)
- 魯東教師心理健康期末考試復習題及參考答案
- 人教版八年級上冊:《蘆花蕩》課文原文
- 蛋白質純化技術PPT幻燈片課件
- 企業部門人員需求申請表
- 手太陰肺經ppt課件
- 城市居住區規劃設計規范(含條文說明)
- (完整版)《普通心理學-彭聃齡》知識要點
- 借款擔保人擔保承諾書
評論
0/150
提交評論