C語言課程設計(飛機訂票系統(tǒng)說明書)_第1頁
C語言課程設計(飛機訂票系統(tǒng)說明書)_第2頁
C語言課程設計(飛機訂票系統(tǒng)說明書)_第3頁
C語言課程設計(飛機訂票系統(tǒng)說明書)_第4頁
C語言課程設計(飛機訂票系統(tǒng)說明書)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.PAGE.目錄設計目的………1總體設計………1詳細設計………3調試與測試……………………4源程序代碼……………4程序運行截圖…………16仍存在的問題…………18心得體會………18設計進度表……………………19參考文獻………20正文設計目的:假定民航機場共有n個航班,每個航班有一航班號、確定的航線〔起始站、終點站、確定的飛行時間〔星期幾和一定的成員訂額。設計一飛機訂票系統(tǒng),使之能提供下列服務:1、航班信息錄入功能<航班信息用文件保存>包括航班號、起始站、終點站、機票總數(shù)、已售機票數(shù);2、航班信息瀏覽功能3、查詢航線:按航班號查詢、按終點站查詢、按航線查詢4、承辦訂票和退票業(yè)務<可選項>5、修改航班信息6、刪除航班信息總體設計:編寫一個飛機訂票系統(tǒng)的程序,使該系統(tǒng)能夠實現(xiàn)對航班信息的錄入、瀏覽、查詢、修改、刪除以及訂票、退票的功能。根據(jù)題目要求,首先要制作一個主菜單顯示出各個操作的提示可供用戶選擇,進而一步步地深入操作。根據(jù)主菜單的內容再進一步編制具體操作的函數(shù),各個功能均用專門編制的函數(shù)來完成。這就是看到題目后的最初的思路。因為飛機票管理系統(tǒng)含有各航班的各項信息,如航班號、航線、飛行時間、機票數(shù)目等必要信息,綜合考慮決定用結構體數(shù)組比較合適,根據(jù)題目要求定義如下結構體類型:頭文件包含、全局變量定義和結構體定義源代碼:#include<stdio.h>//標準輸入、輸出頭文件#include<string.h>//包含字符串函數(shù)處理頭文件#include<stdlib.h>#defineN1000 //定義最多的航班數(shù) #definePRT"%-d%12s%12s%10s%12d%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].selled//定義輸出格式#defineLB"航班號起始站終點站時間機票總數(shù)已售票數(shù)\n"http://定義打印列表格式structair{intnum;charstart[20];charover[20];chartime[10];intcount;//機票總數(shù)intselled;//已預定機票總數(shù)}s[N];inti,m=0; //定義全局變量,記錄下航班信息的數(shù)量charii[10]; //用來選擇是否繼續(xù)的變量大概思路就是這樣!詳細設計〔定義的每個函數(shù)均作介紹:初始化界面函數(shù)〔face函數(shù)在程序開始執(zhí)行時調用該函數(shù),在屏幕上打印出初始界面!并選擇要執(zhí)行的操作!2信息輸入函數(shù)〔input函數(shù)該函數(shù)里面調用for循環(huán)控制,該函數(shù)中用到一個全局變量k,用來控制該函數(shù)被再次調用時可以在已存放信息結構體后面繼續(xù)輸入數(shù)據(jù),每當一個完整的航班信息輸入完畢后,會提示是否輸入下一個信息!按"0"j結束輸入!然后調用下面要介紹的信息保存函數(shù)〔save函數(shù)!保存完畢后退回到主菜單!信息保存函數(shù)〔save函數(shù)由于本程序設計時當輸入機票總數(shù)不是正數(shù)時就會結束保存航班信息,所以進入save函數(shù)時首先判斷機票總數(shù)是否大于0,大于0時候開始進入主體部分執(zhí)行!主要過程是先打開文件,文件打開成功后調用文件格式輸出函數(shù)〔fprinf函數(shù)將信息保存到文件中區(qū)!文件讀取函數(shù)〔read函數(shù)該函數(shù)首先打開保存飛機票信息的文件,然后將保存的信息寫到飛機信息的結構體數(shù)組里面去〔調用格式輸入函數(shù)fscanf,并將航班信息輸出到屏幕上!輸入完畢后關閉文件!信息打印函數(shù)〔print函數(shù)該函數(shù)只是負責把調用read函數(shù),并打印出航班信息輸出事的一些輔助信息!6>航班信息查找函數(shù)本函數(shù)用dowhile循環(huán)控制結構,進入函數(shù)后選擇查詢方式〔可以按航班號、終點站、航線查詢,方式選擇后用switch語句飛機的航班號〔或者起始站、終點站!從switch語句出來后,首先調用文件讀取函數(shù)〔read函數(shù),輸出所有航班信息到屏幕上,然后在if語句中判斷剛才所輸入飛機的航班號〔或者起始站、終點站與數(shù)組中那個航班信息符合,找到后打印出來!循環(huán)結束后,輸入"yes"〔"no",while判斷輸入的條件繼續(xù)〔終止查找!選擇終止查找后返回主菜單!7航班信息刪除函數(shù)〔Delete航班刪除模塊與查找函數(shù)類似,也是用的dowhile循環(huán)控制結構,不同時要先輸入密碼才能進入函數(shù)!進入函數(shù)后要選擇刪除方式〔按航班號、航線刪除,輸入要刪除的航班號〔航線后,比如說選擇按航班號刪除,找到要刪除的航班數(shù)組下標i后,用for<intj=i;j<m;j++>{s[j]=s[j+1];}方式實現(xiàn)刪除,刪除完畢后打印出刪除過的航班信息列表,然后選擇"no"結束該函數(shù),返回到主菜單!訂票函數(shù)〔Book函數(shù)首先調用查詢函數(shù)〔search函數(shù),找到要預訂機票的航班,然后輸入要頂?shù)臋C票數(shù)目,根據(jù)輸入的機票書修改已售機票書數(shù)值!然后保存信息!退票函數(shù)〔Refund<>函數(shù)與訂票函數(shù)類似,首先調用查詢函數(shù)〔search函數(shù),找到要預訂機票的航班,然后輸入要退的機票數(shù)目,根據(jù)輸入的機票書修改已售機票書數(shù)值!然后保存信息!修改函數(shù)〔Modify函數(shù)該函數(shù)與輸入函數(shù)類似,把數(shù)組里面的信息重新輸入一遍達到修改航班信息的功能!main函數(shù)輸入密碼后進入main函數(shù),然后main函數(shù)負責調用以上程序就行了!源程序代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineN200structair{intnum;charstart[20];charover[20];chartime[10];intcount;//機票總數(shù)intselled;//已預定機票總數(shù)}s[N];#definePRT"%-d%12s%12s%10s%12d%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].selled//定義輸出格式#defineLB"航班號起始站終點站時間機票總數(shù)已售票數(shù)\n"http://定義打印列表格式voidface<>;voidinput<>;voidprint<>;voidsearch<>;voidDelete<>;voidBooking<>;voidModify<>;voidRefund<>;voidsave<>;voidread<>;inti,m=0,k=0;voidface<>{system<"color0E">; puts<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★">;puts<"★*飛機票管理系統(tǒng)歡迎您*★">;puts<"★********************************************************★">;puts<"★*你可以選擇下面的操作:*★">;puts<"★*1.輸入航班信息*★">;puts<"★*2.瀏覽航班信息*★">;puts<"★*3.查詢航班信息*★">; puts<"★*4.刪除航班信息*★">;puts<"★*5.訂票信息*★">; puts<"★*6.修改信息*★">;puts<"★*7.退票信息*★">;puts<"★*0.退出*★">;puts<"★********************************************************★">; puts<"★*制作人:#####__*★">; puts<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★">;}voidmain<>{ //delay<1000>; system<"colora0">;//設置背景和字體顏色//system<"color100">;//yanse intj; charf[]="1111111111";//設置密碼inty;printf<"飛機票管理系統(tǒng)\n\n">;while<1>{printf<"請輸入密碼進入系統(tǒng):\n">;scanf<"%s",f>;//讀取密碼if<strcmp<f,"1111111111">==0>{while<1> { system<"cls">; face<>; printf<"請在0-7中選擇以回車鍵結束:">; scanf<"%d",&j>;system<"cls">; switch<j>{case1:input<>;//調用輸入模塊break;case2:print<>;//調用打印模塊break;case3:search<>;//調用查詢模塊break;case4:Delete<>;//調用刪除模塊break;case5:Booking<>;//調用訂票模塊break;case6:Modify<>;//調用修改模塊break;case7:Refund<>;//調用退票模塊break;case0:gotoend;} printf<"\n按任意鍵繼續(xù)">;}}else{ intyy;printf<"輸入密碼錯誤!請檢查您的密碼是否正確!\n\n">;printf<"是否繼續(xù)輸密碼?按任意鍵繼續(xù),0結束!\n",m>;scanf<"%d",&y>;//在此需輸入任意一個整數(shù)值數(shù)值,程序才能繼續(xù)執(zhí)行if<y==0>break;}}end:printf<"<=^^=>歡迎再次回來<=^^=>\n">; printf<"任意鍵退出系統(tǒng)!\n">; inthp2; scanf<"%d",&hp2>;}voidinput<>{system<"color8f">; printf<"請依次輸入航班信息〔機票總數(shù)為0結束輸入:""完成輸入信息請鍵入w以回車鍵結束\n">;//打印提示信息printf<"\n">;inty;for<i=k;i<N;i++>{printf<"請輸入航班號:">;scanf<"%d",&s[i].num>;//讀取航班號printf<"請輸入起始站:">;scanf<"%s",s[i].start>;//讀取起始站printf<"請輸入終點站:">;scanf<"%s",s[i].over>;//讀取終點站printf<"請輸入時間<星期>:">;scanf<"%s",s[i].time>;//讀取時間printf<"請輸入總機票數(shù)〔0結束:">;scanf<"%d",&s[i].count>;//讀取機票數(shù)printf<"請輸入已售機票數(shù):">;scanf<"%d",&s[i].selled>;//讀取機票數(shù)m++;//飛機信息錄入計數(shù)k++;printf<"第%d個信息已經輸完是否繼續(xù)?按任意鍵繼續(xù)<0結束>\n",m>;scanf<"%d",&y>;//在此需輸入任意一個整數(shù)值數(shù)值,程序才能繼續(xù)執(zhí)行if<y==0>{ save<>;//保持輸入數(shù)據(jù)break;}}}voidsave<>//保存模塊程序{ if<s[0].count>0> { system<"color78">;FILE*fp;//定義文件指針if<<fp=fopen<"D:\\飛機票系統(tǒng)數(shù)據(jù)保存.txt","w+">>==NULL>//打開文件并判斷是否出錯{printf<"文件打開失敗!">;//打印出錯提示}else{fprintf<fp,LB>;fprintf<fp,"============================================================\n">;for<i=0;i<m&&s[i].count>0;i++>{fprintf<fp,PRT>;}}fclose<fp>;//關閉文件inthp;printf<"信息保存到文件成功!任意鍵返回主菜單!\n\n">;scanf<"%d",&hp>; } else { intk; printf<"飛機票總數(shù)為零!輸入結束!\n">;printf<"任意鍵返回主菜單!\n\n">;scanf<"%d",&k>; }}voidread<>//從文件讀取信息模塊{ system<"colorE0">;FILE*fp;//定義文件指針if<<fp=fopen<"D://飛機票系統(tǒng)數(shù)據(jù)保存.txt","r">>==NULL>//打開文件,并判斷是否出錯printf<"創(chuàng)建文件失敗!">;//打印出錯提示elsefor<i=0;i<m;i++>{fscanf<fp,"%-d%12s%12s%10s%12d%12d\n",&s[i].num,s[i].start,s[i].over,s[i].time,&s[i].count,&s[i].selled>;printf<PRT>;}fclose<fp>;//關閉文件}voidprint<>//打印模塊{ system<"color97">;charw[10];printf<"\n所有航班信息如下\n">;printf<LB>;read<>;//調用讀取文件函數(shù)printf<"\n\n按任意鍵回車鍵結束返回上層菜單:\n\n">;scanf<"%s",w>;}voidsearch<>//查詢模塊{ system<"color5E">;charname1[20];charname2[20];charii[10];intn,no,flag=0;do{printf<"請選擇查找方式:\n">;//打印查詢方式菜單printf<"1.按航班號查找\n""2.按終點站查找\n""3.按航線查找\n""0.返回\n">;printf<"請在0-3中選擇:\n""\n\n按其他鍵以回車鍵結束返回主菜單:\n">;scanf<"%d",&n>;//讀取查找方式if<n==0>break;switch<n>{case1:printf<"請輸入航班號:">;scanf<"%d",&no>;//航班號break;case2:printf<"請輸入終點站名稱:">;scanf<"%s",name2>;//讀取終點站break;case3:printf<"請輸入起始站名稱:">;scanf<"%s",name1>;//讀取起始站printf<"請輸入終點站名稱:">;scanf<"%s",name2>;//終點站break;default: break;}printf<"\n已經存在的航班如下\n\n">;printf<LB>;read<>;//調用讀取函數(shù)for<i=0;i<m;i++>{if<strcmp<s[i].over,name1>==0&&strcmp<s[i].over,name2>==0>//按終點站起始站判斷輸出條件{//printf<"\n查找航班信息成功!\n\n">;printf<"\n下面是你要查找的航班信息\n\n">;flag=1;printf<LB>;printf<PRT>;//打印信息break;}if<strcmp<s[i].over,name2>==0>{printf<"\n下面是你要查找的航班信息\n\n">; flag=1;printf<LB>;printf<PRT>;//打印信息break;}if<s[i].num==no>//按航班號判斷輸出條件{printf<"\n下面是你要查找的航班信息\n\n">; flag=1;printf<LB>;printf<PRT>;//打印信息break;}}no=0;//將航班號賦值為0if<flag>{printf<"\n您需要的信息查找完畢:\n""是否繼續(xù)查找?請鍵入yes或no以回車鍵結束\n">;scanf<"%s",ii>;}else{printf<"\n沒有您需要的信息:\n""是否繼續(xù)查找?請鍵入yes或no以回車鍵結束\n">;scanf<"%s",ii>;}}while<strcmp<ii,"yes">==0>;//判斷結束while<strcmp<ii,"no">==0>break;}voidDelete<>//刪除模塊{ system<"color1E">;charname1[20];charname2[20];charii[10];charf[]="2010146104";//設置密碼intno,n,flag=0;printf<"請輸入密碼并以回車鍵結束:\n">;scanf<"%s",f>;//讀取密碼if<strcmp<f,"2010146104">==0>//判斷密碼是否正確{do{printf<"請選擇刪除以方式回車鍵結束:\n">;//打印刪除方式菜單printf<"*1.按航班號刪除\n""*2.按航線刪除\n""*0.返回\n">;printf<"\n\n請在0-2中選擇以回車鍵結束:\n">;scanf<"%d",&n>;//讀取刪除方式if<n==0>break;//跳出循環(huán)switch<n>{case1:printf<"請輸入航班號:">;scanf<"%d",&no>;//讀取航班號 printf<"\n已經存在的航班如下\n\n">;read<>;//調用讀取函數(shù)break;//跳出循環(huán)case2:printf<"請輸入起始站名稱:">;scanf<"%s",name1>;//讀取起始站printf<"請輸入終點站名稱:">;scanf<"%s",name2>;//讀取終點站printf<"\n已經存在的航班如下\n\n">;read<>;//調用讀取函數(shù)break;//跳出循環(huán)} printf<"\n刪除后的航班如下\n\n">;//for<i=0;i<m;i++>{if<s[i].num==no>//按航班號刪除{printf<LB>;flag=1;for<intj=i;j<m;j++>{s[j]=s[j+1];}m--;for<inti=0;i<m;i++>{printf<PRT>;}}if<strcmp<s[i].start,name1>==0&&strcmp<s[i].over,name2>==0>{ flag=1;printf<LB>;for<intk=i;k<m;k++>{s[k]=s[k+1];}m--;for<inti=0;i<m;i++>{printf<PRT>;}}}if<flag>{printf<"\n您需要的信息查找完畢:\n""是否繼續(xù)查找?請鍵入yes或no以回車鍵結束\n">;scanf<"%s",ii>;}else{printf<"\n沒有您需要的信息:\n""是否繼續(xù)查找?請鍵入yes或no以回車鍵結束\n">;scanf<"%s",ii>;}}while<strcmp<ii,"yes">==0>;//判斷結束while<strcmp<ii,"no">==0>break;}elseprintf<"\n對不起密碼錯誤!您不是管理員,不能使用此項功能!\n">;intq;scanf<"%d",&q>;}voidBooking<>//訂票模塊{ system<"color0E">;intn;chara[10];do{search<>;//調用查詢模塊printf<"請輸入您要訂的機票數(shù)以回車鍵結束:\n">;scanf<"%d",&n>;//讀取所訂機票數(shù)if<n<0||s[i].count<n>{printf<"請輸入有效的機票數(shù)!">;//判斷機票數(shù)是否出錯}if<s[i].count!=0&&s[i].count>=n>//判斷是否出錯{s[i].selled=s[i].selled+n;save<>;//調用保存函數(shù)printf<"訂票成功!\n\n">;}printf<"是否繼續(xù)?請輸入yes或no以回車鍵結束:\n">;//判斷是否繼續(xù)訂票scanf<"%s",a>;}while<!strcmp<a,"yes">>;//判斷結束while<!strcmp<a,"no">>break;//判斷結束}voidRefund<>//退票模塊{ system<"colorF0">;intn;chara[10];do{search<>;//調用查詢模塊printf<"請輸入您要退的機票數(shù)目:">;scanf<"%d",&n>;//輸入所退票數(shù)if<n<0>//判斷票數(shù)是否有效printf<"請輸入有效的機票數(shù)!">;else{s[i].selled=s[i].selled-n;save<>;//調用保存模塊printf<"退票成功!">;}printf<"是否繼續(xù)?請鍵入yes或no以回車鍵結束:">;//判斷是否繼續(xù)退票scanf<"%s",a>;}while<!strcmp<a,"yes">>;//判斷并跳出循環(huán)}voidModify<>//修改模塊{ system<"color4E">;structmodify//定義結構體{intmo;charstart1[20];charover1[20];chartime1[20];intcount1;intselled1;}M[1];charj[10];charf[]="2010146104";//設置密碼intn;printf<"請輸入密碼并以回車鍵結束:">;scanf<"%s",f>;//讀取密碼if<strcmp<f,"2010146104">==0>//判斷是否出錯{printf<LB>;read<>;//調用讀取模塊do{printf<"請選擇修改方式:\n""*1:按航班號修改:\n""*2:按航線修改:\n">;printf<"請在12中修改以回車鍵結束:\n">;scanf<"%d",&n>;//讀取修改方式switch<n>{case1:printf<"請輸入航班號:">;scanf<"%d",&M[0].mo>;//讀取航班號break;case2:printf<"請輸入起始站:">;scanf<"%s",M[0].start1>;//讀取起始站printf<"請輸入終點站:">;scanf<"%s",M[0].over1>;//讀取終點站break;}for<inti=0;i<m;i++>{if<strcmp<s[i].start,M[0].start1>==0&&strcmp<s[i].over,M[0].over1>==0>//判斷輸出條件{printf<"航班號起始站終點站時間機票總數(shù)已售票數(shù)\n">;printf<PRT>;break;}if<s[i].num==M[0].mo>//判斷輸出條件{printf<"航班號起始站終點站時間機票總數(shù)已售票數(shù)\n">;printf<PRT>;break;}}M[0].mo=0;//將結構體中的號為零printf<"\n請輸入新航班號、起始站、終點站、時間〔星期幾、機票總數(shù)、已售票數(shù):\n">;printf<"航班號起始站終點站時間機票總數(shù)已售票數(shù)\n">;scanf<"%d\t%s\t%s\t%s\t%d%d",&M[0].mo,M[0].start1,M[0].over1,M[0].time1,&M[0].count1,&M[0].selled1>;//定義輸入格式s[i].num=M[0].mo;//替換航班號strcpy<s[i].start,M[0].start1>;//替換其始站strcpy<s[i].over,M[0].over1>;//替換終點站strcpy<s[i].time,M[0].time1>;//替換時間s[i].count=M[0].count1;//替換機票數(shù)s[i].selled=M[0].selled1;//替換機票數(shù)save

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論