




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄TOC\o"1-5"\h\z設計目的1總體設計1詳細設計3調試與測試4源程序代碼4程序運行截圖16仍存在的問題18心得體會18設計進度表19參考文獻20一、正文(一)設計目的:假定民航機場共有n個航班,每個航班有一航班號、確定的航線(起始站、終點站)、確定的飛行時間(星期幾)和一定的成員訂額。設計一飛機訂票系統,使之能提供下列服務:1、航班信息錄入功能(航班信息用文件保存)包扌舌航班號、起始站、終點站、機票總數、已售機票數;2、航班信息瀏覽功能3、查詢航線:按航班號查詢、按終點站查詢、按航線查詢4、承辦訂票和退票業務(可選項)5、修改航班信息6、刪除航班信息(二)總體設計:編寫一個飛機訂票系統的程序,使該系統能夠實現對航班信息的錄入、瀏覽、查詢、修改、刪除以及訂票、退票的功能。根據題目要求,首先要制作一個主菜單顯示出各個操作的提示可供用戶選擇,進而一步步地深入操作。根據主菜單的內容再進一步編制具體操作的函數,各個功能均用專門編制的函數來完成。這就是看到題目后的最初的思路。因為飛機票管理系統含有各航班的各項信息,如航班號、航線、飛行時間、機票數目等必要信息,綜合考慮決定用結構體數組比較合適,根據題目要求定義如卜結構體類型:頭文件包含、全局變量定義和結構體定義源代碼:#include<stdio.h>//標準輸入、輸出頭文件#include<string.h>//包含字符串函數處理頭文件#include<stdlib.h>幷defineN1000〃定義最多的航班數#defiiiePRT"%-d%12s%12s%10s%12d%12d\n,,,s[i].num,s[i].start,s[i].over,s[i].tiine,s[i].count,s[i].selled〃定義輸出格式defineLB”航班號起始站終點站時間機票總數已曹票數5”〃定義打印列表格式stmctail-{mtnum;chaistart[20];chaiovei[20];chaitune[10];mtcount;〃機票總數mtselled;//已預定機票總數}s[N];mtliii=0;〃定義全局變量,記錄下航班信息的數量charii[10];〃用來選擇是否繼續的變量人概思路就是這樣!詳細設計(定義的每個函數均作介紹):1)初始化界面函數(face函數)在程序開始執行時調用該函數,在屏幕上打印出初始界面!并選擇要執行的操作!2)信息輸入函數(input函數)該函數里面調用for循環控制,該函數中用到一個全局變量k,用來控制該函數被再次調用時可以在已存放信息結構體后面繼續輸入數據,每當一個完整的航班信息輸入完畢后,會提示是否輸入下一個信息!按”0”j結束輸入!然后調用卜?面要介紹的信息保存函數(save函數)!保存完畢后退回到主菜單!3)信息保存函數(save函數)由于本程序設計時當輸入機票總數不是正數時就會結束保存航班信息,所以進入save函數時首先判斷機票總數是否人于0,人于0時候開始進入主體部分執行!主要過程是先打開文件,文件打開成功后調用文件格式輸出函數(?nnf函數)將信息保存到文件中區!4)文件讀取函數(read函數)該函數首先打開保存飛機票信息的文件,然后將保存的信息寫到飛機信息的結構體數組里面去(調用格式輸入函數fscanf),并將航班信息輸出到屏幕上!輸入完畢后關閉文件!5)信息打印函數(pnnt函數)該函數只是負責把調用read函數,并打印出航班信息輸出事的一些輔助信息!6)航班信息查找函數本函數用do.....wlule循環控制結構,進入函數后選擇查詢方式(可以按航班號、終點站、航線查詢),方式選擇后用switch語句飛機的航班號(或者起始站、終點站)!從switch語句出來后,首先調用文件讀取函數(read函數),輸出所有航班信息到屏幕上,然后在if語句中判斷剛才所輸入飛機的航班號(或者起始站、終點站)與數組中那個航班信息符合,找到后打印出來!循壞結束后,輸入“yes”(“no”),while判斷輸入的條件繼續(終止查找)!選擇終止查找后返回主菜單!7)航班信息刪除函數(Delete)航班刪除模塊與查找函數類似,也是用的do.....while循環控制結構,不同時要先輸入密碼才能進入函數!進入函數后要選擇刪除方式(按航班號、航線)刪除,輸入要刪除的航班號(航線)后,比如說選擇按航班號刪除,找到要刪除的航班數組下標1后,用for(intj=ij<m;j++){s[j]=s|j+l];}方式實現刪除,刪除完畢后打印出刪除過的航班信息列表,然后選擇“no”結束該函數,返回到主菜單!8)訂票函數(Eook函數)首先調用查詢函數(search函數),找到要預訂機票的航班,然后輸入要頂的機票數目,根據輸入的機票書修改已售機票書數值!然后保存信息!9)退票函數(Refimd(j函數與訂票函數類似,首先調用查詢函數(search函數),找到要預訂機票的航班,然后輸入要退的機票數目,根據輸入的機票書修改已售機票書數值!然后保存信息!10)修改函數(Modify函數)該函數與輸入函數類似,把數組里面的信息重新輸入一遍達到修改航班信息的功能!11)main函數輸入密碼后進入main函數,然后main函數負貫調用以上程序就行了!
源程序代碼:#include<stdio.h>#include<strmg.h>#include<stdlib.h>井defineN200stmctair{mtnum;chaistart[20];chaiovei[20];chaidm亡[10];mtcount;//機票總數mtselled;//已預定機票總數}s[N];#defiiiePRTH%-d%12s%12s%10s%12d%12d\nH,s[i].num5s[i].start,s[i].over5s[i].time,s[i].count,s[i].selled//定義輸出格式defineLB-航班號起始站終點站時間機票總數己售票數\n”〃定義打印列表格式voidface();voidmput();voidprintQ;voidsearch();voidDeleteQ;voidBookrngQ;voidModify();voidRefiind();voidsave();voidread();mti、m=0,k=0;^l\^l\^l\^l\^l\^l\^l\p\^l\^l\^l\p\ssssssssssssssstttttttttttttttuuuuuuuuuuuuuuuppppppppppppppp★********************************************************★“)?★*你可以選擇下面的操作:★*^l\^l\^l\^l\^l\^l\^l\p\^l\^l\^l\p\ssssssssssssssstttttttttttttttuuuuuuuuuuuuuuuppppppppppppppp★********************************************************★“)?★*你可以選擇下面的操作:★*1?輸入航班信息**n);★*2?瀏覽航班信息**n);★*3?查詢航班信息**n);★*4?刪除航班信息**n);★*5?訂票信息**n);★*6?修改信息*★「;★*7?退票信息**n);★*0?退出*★「;★********************************************************★")?★*制作人:#####學號:111111111111T);★*飛機票管理系統歡迎您★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★”);voidinam(){//delay(lOOO);system(McoloraOH);//設置背景和字體顏色//system(Hcolor100M);//yaiisemtj;chaifI]=HllllllllllH;〃設置密碼uity;pnntf(-飛機票管理系統WE);while(l){請輸入密碼進入系統An”);pnntf(請輸入密碼進入系統An”);scaiifV%s”,f);〃讀取密碼if(sticnip(f,HllllllllUn)==O){while(l){svstem(nclsM);face。;printf(-請在0-7中選擇以回車鍵結束:”);scaiifC%cT;&j);system(Mclsn);switch(j){case1:mput();//調用輸入模塊break;case2:prmtQ;//調用打印模塊break;case3:search();//調用查詢模塊break;case4:Delete();//調用刪除模塊break;case5:Booking();//調用訂票模塊break;case6:Modifv();//調用修改模塊break;case7:Refund();//調用退票模塊break;case0:gotoend;}prmtfC*\ii按任意鍵繼續……”);}}else{mtyy;pnmf(”輸入密碼錯誤!請檢查您的密碼是否正確!W);pnntf(”是否繼續輸密碼?按任意鍵繼續,0結束!scanf(?%cT&y);//在此需輸入任意一個整數值數值,程序才能繼續執行if(y==0)break;}}end:prmtf(n(=八歡迎再次回來A=)\nM);pnntff任意鍵退出系統!\n”);mthp2;scanf(H%d,\&hp2);}voidmput(){system(Mcolor8f*);‘pnntfC請依次輸入航班信息(機票總數為0結束輸入):-”完成輸入信息請鍵入w以回車鍵結束\1T);//打印提示信息pnntff\nM);intv;foi(i=k;i<N;i++)pnmf(”請輸入航班號小);scaiif(M%dH,&s[i].num);〃讀取航班號pnmf("請輸入起始站:”);scanf(H%s,\s[1].start);//i^取起始站prirnff請輸入終點站小);scanf(”%s”,s[i]?o\?);〃讀取終點站prirnff請輸入時間(星期)「);scanf(”%s”,s[i]?time);〃讀取時河pnmf(“請輸入總機票數(0結束):”);scanf(H%d,\&s[i].count);//i^取機票數primfC請輸入己售機票數:”);scanf(”%cT;&s[i]?selled);〃讀取機票數m++;//飛機信息錄入計數k++;pnmf("第%€1個信息已經輸完是否繼續?按任意鍵繼續(0結束scanfC%cT&y);//在此需輸入任意一個整數值數值,程序才能繼續執行if(y==0){saveQ;//保持輸入數據break;}}}voidsave()〃保存模塊程序{if(s[0].count>0){system(Mcolor78”);FILE*fp;//定義文件指針if((fp=fopen("D:\\飛機票系統數據保存?txtTw+O==NULL)〃打開文件并判斷是否出錯{一pnntf(”文件打開失敗「);//打印出錯提示}else{fprintfi(fp,LB);fpnntf(fp/=====—==============—===—=========aiM);for(i=0;i<m&&s[i].count>0;i++){fprintf(fp.PRT);}}fclose(fp);//關閉文件inthp;pnntf(-信息保存到文件成功!任意鍵返回主菜單!31T);scanf(”%d”,&hp);}else{intk;pnntff飛機票總數為零!輸入結束!\n”);prmtf(n任意鍵返回主菜單!5\iT);scanf(”%d役&k);voidread()//從文件讀取信息模塊system(McolorEO”);FILE%;〃定義文件指針if((fp=fopen(^D://飛機票系統數據保存?tx匚T))=NULL)〃打開文件,并判斷是否出錯pnntf(”創建文件失敗!”);//打印出錯提示elsefdr(i=0;i<m;i++){fscanf(fp,M%-d%12s%12s%1Os%12d%12d\iis[i].num,s[i].starLs[i].ovei;s[i].tiine.&s[i].count&s[i].selled);pnntf(PRT);}fclose(fp);//關閉文件}voidpiiiit()//打印模塊{system(Mcolor97”);charw[10];pnntf(^\n所有航班信息如下\iT);printf(LB);i-eadQ;//調用讀取文件函數pnntf("\n\ii按任意鍵回車鍵結束返回上層菜單:\n\ii");scanff%s”,w);}voidsearch()//查詢模塊{system(Mcolor5En);charname1[20];charname2[20];charii[10];intn,no,flag=0;do{pmitff請選擇查找方式:\11”);〃打印查詢方式菜單pmitffl?按航班號查找\n””2?按終點站查找血”?3按航線查找\n””0?返回\iT);pnntf(H請在0?3審選擇:\iiHAn\n按其他鍵以回車鍵結束返回主菜單An”);scanfC%d”,&n);〃讀取查找方式if(n=0)break;switch(n){case1:pnmf(”請輸入航班號:n);scanf(”%cf;&no);〃航班號break;case2:pnmf(”請輸入終點站名稱:”);scanff%sFame2);//讀取終點站break;case3:pnntf(”請輸入起始站名稱:");scaiif(M%sH4iame1);//讀取起始站pirntfC1請輸入終點站名稱:”);scaiif(M%sn4iame2);//終點站break;default:break;}pnntf(^\n已經存在的航班如.KW);printf^LB);read();//i^用讀取函數{if(strcmp(s[i].1)=0&&sticmp(s[i].ovei\name2)=0)//按終點站起始站判斷輸出條件{//pnntfC'n查找航班信息成功!\n\iT);pnmf(”\n下面是你要查找的航班信息\n\ii“);flag=l;printf(LB);printf(PRT)^/打印信息break:}if(strcmp(s[i].ovei;name2)=0){pnmf(”\n下面是你要查找的航班信息\n\ii“);flag=l;printf(LB);printf(PRT)^/打印信息break:}if(s[i].num==no)//按航班號判斷輸出條件{printf(-\n卞面是你要查找的航班信息\n\n”);flag=l;printf(LB);printf(PRT)^/打印信息break;}}no=0;〃將航班號賦值為0if(flag){pnntfCS您需要的信息查找完畢:5n是否繼續查找?請鍵入yes或no以回車鍵結束\n}else{prmtf(n\ii沒有您需要的信息:\iiH是否繼續查找?請鍵入yes或no以回車鍵結束\n}}while(strcmp(ii/,yesH)==O);//判斷結束while(strcmp(ii/,non)=0)break;}voidDeleteQ//刪除模塊{system(McolorIE”);charname1[20];
charname2[20];charii[10];charf[]=M2010146104H;//設置密碼intno,n,flag=0;pmitff請輸入密碼并以回車鍵結束:\nj;scaiifV%s”,f);〃讀取密碼if(strcnip(f/2010146104H)==0)〃判斷密碼是否正確do\n”);〃打印刪除方式菜單請在0-2中選擇以回車鍵結束:\『);pnntff\n”);〃打印刪除方式菜單請在0-2中選擇以回車鍵結束:\『);H*2?按航線刪除\n””*0?返回\n”);scanfT%cT:&n);//讀取刪除方式if(n==0)break;〃跳出循環switch(n)case1:pnntfC請輸入航班號:”);case1:pnntfC請輸入航班號:”);scanfC%cT,&iio);//讀取航班號pnntf(M\nreadQ;//調用讀取函數beak;//跳出循環case2:pnntf(”請輸入起始站名稱:Jscaiif(H%sH,name1);〃讀取起始站printf("請輸入終點站名稱:”);scaiif(H%sr\name2);//讀取終點站printf(n\Qread();//調用讀取函數break;//跳出循環}pnntf(M\nfbr(i=0:i<m;i++)已經存在的航班如l、An\n”);已經存在的航班如l、An\n”);刪除后的航班如卜?\n\ir);//if(s[i].num==no)//按航班號刪除pruitf^LB);flag=l;s[j]=s[j+l];}fbr(iiiti=0;i<m;i++)pnntf(PRT);}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025辦公室租賃合同范本參考
- 2025二手車買賣合同全國正式版
- 2025石油化工管道工程監理安全環保合同
- 2025室內涂料分包合同樣本
- 《綠色生活由我啟動》課件
- 2025醫療器械采購銷售合同模板
- 電子銀行承兌合同協議
- 電腦服務外包合同協議
- 電影股權轉讓合同協議
- 玉林農村建房合同協議
- DB33-1036-2021《公共建筑節能設計標準》
- 巖芯鑒定手冊
- 快速排序算法高校試講PPT
- 甘肅歷史與甘肅文化
- 工程勘察設計收費標準
- 高邊坡施工危險源辨識及分析
- SAP航空行業數字化轉型解決方案(優秀方案集)
- 江蘇工業企業較大以上風險目錄
- 《村衛生室管理辦法(試行)》課件(PPT 49頁)
- 監理質量評估報告(主體分部)
- 鍋爐爆炸事故演練方案(模板)
評論
0/150
提交評論