航班訂票系統(tǒng)報(bào)告_第1頁(yè)
航班訂票系統(tǒng)報(bào)告_第2頁(yè)
航班訂票系統(tǒng)報(bào)告_第3頁(yè)
航班訂票系統(tǒng)報(bào)告_第4頁(yè)
航班訂票系統(tǒng)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 學(xué)生姓名: 莫 倩 雯 專 業(yè): 信 息 安 全 班 級(jí): 0441002 學(xué) 號(hào): 2010212153 2011年12月3日數(shù)據(jù)結(jié)構(gòu)期中報(bào)告 訂票系統(tǒng)一、 設(shè)計(jì)目的:假定民航機(jī)場(chǎng)共有n個(gè)航班,每個(gè)航班有一航班號(hào)、確定的航線(起始站、終點(diǎn)站)、確定的飛行時(shí)間(星期幾)和一定的成員訂額。設(shè)計(jì)一飛機(jī)訂票系統(tǒng),使之能提供下列服務(wù):1、航班信息錄入功能(航班信息用文件保存) 包括航班號(hào)、起始站、重點(diǎn)站、機(jī)票數(shù)等;2、航班信息瀏覽功能3、按航班號(hào)排序4、查詢航線:按航班號(hào)查詢5、承辦訂票和退票業(yè)務(wù)(可選項(xiàng))二、總體設(shè)計(jì):編寫(xiě)一個(gè)飛機(jī)訂票系統(tǒng)的程序,使該系統(tǒng)能夠?qū)崿F(xiàn)對(duì)航班信息的錄入、瀏

2、覽、排序、查詢以及訂票、退票的功能。根據(jù)題目要求,首先要制作一個(gè)主菜單顯示出各個(gè)操作的提示可供用戶選擇,進(jìn)而一步步地深入操作。根據(jù)主菜單的內(nèi)容再進(jìn)一步編制具體操作的函數(shù),各個(gè)功能均用專門(mén)編制的函數(shù)來(lái)完成。這就是看到題目后的最初的思路。三、詳細(xì)設(shè)計(jì)#include /標(biāo)準(zhǔn)輸入、輸出頭文件#include /包含字符串函數(shù)處理頭文件#include /包含動(dòng)態(tài)存儲(chǔ)與釋放函數(shù)頭文件#define N 10000#define PRINT %-d%12s%12s%10s%12dn,si.num,si.start,si.over,si.time,si.count /定義輸出格式struct air /定

3、義結(jié)構(gòu)體數(shù)組 ,記錄航班信息 int num; /航班號(hào) char start20; /起點(diǎn)站 char over20; /終點(diǎn)站 char time10; int count; /該航班票數(shù) 統(tǒng)計(jì)sN;int i; /僅用于for循環(huán),免得老是定義int m=0; /定義 m 為全局變量,表示 航班 總 號(hào)數(shù)char pwd=123; /管理員密碼char password10; /用戶輸密碼void input(); /輸入航班信息void print(); /輸出航班信息void save(); /保存航班信息void read(); /讀取航班信息void search(); /查找航

4、班信息void shanchu(); /刪除航班信息void dingpiao(); /訂票信息void tuipiao(); /退票信息void xiugai(); /修改信息void main() int j; do printf( - 1.輸入航班信息 - nn - 2.瀏覽航班信息 - nn - 3.修改航班信息 - nn - 4.查找航班信息 - nn - 5.刪除航班信息 - nn - 6.訂票信息 - nn - 7.退票信息 - nn - 0.退出 - nn); printf(nn); printf(請(qǐng)?jiān)?-7中選擇,以回車(chē)鍵結(jié)束:nn); scanf(%d,&j); switc

5、h(j) case 1: input();/調(diào)用輸入模塊 break; case 2:print();/調(diào)用打印模塊 break; case 3:xiugai();/調(diào)用修改模塊 break; case 4:search();/調(diào)用查找模塊 break; case 5:shanchu();/調(diào)用刪除模塊 break; case 6:dingpiao();/調(diào)用訂票模塊 break; case 7:tuipiao();/調(diào)用退票模塊 break; case 0:; break; while(j!=0); /判斷結(jié)束 printf(謝謝使用,再見(jiàn)!n);/主函數(shù)結(jié)束void input()/打印模

6、塊程序 int y; printf(請(qǐng)輸入密碼并以回車(chē)鍵結(jié)束:nn); scanf(%s,password); /讀取密碼 if(strcmp(pwd,password)=0) printf(請(qǐng)依次輸入航班信息(機(jī)票數(shù)位0結(jié)束輸入):nn 完成輸入信息請(qǐng)鍵入w以回車(chē)鍵結(jié)束nn); /打印提示信息 for(i=0;iN;i+) printf(請(qǐng)輸入航班號(hào):n); scanf(%d,&si.num); /讀取航班號(hào) printf(請(qǐng)輸入起始站:n); scanf(%s,si.start);/讀取起始站 printf(請(qǐng)輸入終點(diǎn)站:n); scanf(%s,si.over);/讀取終點(diǎn)站 print

7、f(請(qǐng)輸入時(shí)間:n); scanf(%s,si.time);/讀取時(shí)間 printf(請(qǐng)輸入機(jī)票數(shù):n); scanf(%d,&si.count);/讀取機(jī)票數(shù) m+; printf(第%d個(gè)信息已經(jīng)輸完是否繼續(xù)?按數(shù)字鍵+回車(chē)?yán)^續(xù),按 0結(jié)束,m); scanf(%d,&y); if(y=0) save();/將結(jié)構(gòu)體信息存盤(pán) print();/輸出輸入的航班信息 break; else printf(輸入密碼錯(cuò)誤!請(qǐng)檢查您的密碼是否正確!謝謝!再見(jiàn)!nn);void save()/保存模塊程序 FILE *fp,*fp1;/定義文件指針 if(fp=fopen(chen.dat,wb)=N

8、ULL)/打開(kāi)文件并判斷是否出錯(cuò) printf(創(chuàng)建文件失敗!nn);/打印出錯(cuò)提示 getchar(); return; if(fp1=fopen(hao.dat,wb)=NULL)/打開(kāi)文件并判斷是否出錯(cuò) printf(創(chuàng)建文件失敗!nn);/打印出錯(cuò)提示 getchar(); return; for(i=0;im;i+) if(fwrite(&si,sizeof(struct air),1,fp)=0)/向文件寫(xiě)入數(shù)據(jù),并判斷是否出錯(cuò) printf(向文件輸入數(shù)據(jù)失敗!nn); fprintf(fp1,%d,m); /將航班 總號(hào)數(shù) 寫(xiě)入文件 fclose(fp);/關(guān)閉文件 fclos

9、e(fp1);/關(guān)閉文件void read()/從文件讀取信息模塊 FILE *fp,*fp1;/定義文件指針 if(fp=fopen(chen.dat,rb)=NULL)/打開(kāi)文件,并判斷是否出錯(cuò) printf(出錯(cuò),請(qǐng)檢查文件是否存在,按任意鍵返回住菜單);/打印出錯(cuò)提示 getchar(); if(fp1=fopen(hao.dat,rb)=NULL)/打開(kāi)文件并判斷是否出錯(cuò) printf(創(chuàng)建文件失敗!nn);/打印出錯(cuò)提示 getchar(); return; fscanf(fp1,%d,&m);/讀取出航班 總 號(hào)數(shù) for(i=0;im;i+) fread(&si,sizeof(

10、air),1,fp);/從文件中讀取航班信息 fclose(fp);/關(guān)閉文件 fclose(fp1);/關(guān)閉文件void print()/打印模塊 char w10; read();/調(diào)用讀取文件函數(shù) printf(航班號(hào) 起始站 終點(diǎn)站 時(shí)間 機(jī)票數(shù)n); for(i=0;im;i+) printf(PRINT);/打印信息 ,開(kāi)頭已經(jīng)定義輸出格式 printf(請(qǐng)按任意鍵回車(chē)鍵結(jié)束返回上層菜單以:n); scanf(%s,w);void search()/查詢模塊 char name120; /記錄起點(diǎn)站 char name220; /記錄終點(diǎn)站 char ii10; /按任意鍵結(jié)束的標(biāo)

11、識(shí) int n,no; /n是選擇菜單用的,no記錄航班號(hào) do printf(請(qǐng)選擇查找方式:nn);/打印查詢方式菜單 printf(1.按航班號(hào)查找nn 2.按終點(diǎn)站查找nn 3.按航線查找nn 0.返回nn); printf(請(qǐng)?jiān)?-3中選擇:nn 按其他鍵以回車(chē)鍵結(jié)束返回主菜單:nn); scanf(%d,&n);/讀取查找方式 if(n=0) break; switch(n) case 1: printf(請(qǐng)輸入航班號(hào):n); scanf(%d,&no);/航班號(hào) break; case 2: printf(請(qǐng)輸入終點(diǎn)站名稱:n); scanf(%s,name2);/讀取終點(diǎn)站 b

12、reak; case 3: printf(請(qǐng)輸入起始站名稱:n); scanf(%s,name1);/讀取起始站 printf(請(qǐng)輸入終點(diǎn)站名稱:n); scanf(%s,name2);/終點(diǎn)站 break; read();/調(diào)用讀取函數(shù) for(i=0;im;i+) if(si.num=no)/按航班號(hào)判斷輸出條件 printf(n查找航班信息成功!n); printf(航班號(hào) 起始站 終點(diǎn)站 時(shí)間 機(jī)票數(shù)n); printf(PRINT);/打印信息 break; if(strcmp(si.over,name1)=0|strcmp(si.over,name2)=0)/按終點(diǎn)站起始站判斷輸出

13、條件 printf(n查找航班信息成功!n); printf(航班號(hào) 起始站 終點(diǎn)站 時(shí)間 機(jī)票數(shù)n); printf(PRINT);/打印信息 break; no=0;/將航班號(hào)賦值為0 printf(沒(méi)有您需要的信息或查找完畢:nn 是否繼續(xù)查找?請(qǐng)鍵入yes或no以回車(chē)鍵結(jié)束n); scanf(%s,ii); while(strcmp(ii,yes)=0);/判斷結(jié)束void shanchu()/刪除模塊 char name120;/記錄起始站 char name220;/記錄終點(diǎn)站 char ii10; /按任意鍵結(jié)束的標(biāo)識(shí) int no,n; /n是選擇菜單用的,no記錄航班號(hào) pr

14、intf(請(qǐng)輸入密碼并以回車(chē)鍵結(jié)束:nn); scanf(%s,password);/讀取密碼 if(strcmp(pwd,password)=0) /判斷密碼是否正確 do printf(請(qǐng)選擇刪除以方式回車(chē)鍵結(jié)束:nn);/打印刪除方式菜單 printf(*1.按航班號(hào)刪除nn *2.按航線刪除nn *0.返回nn); printf(請(qǐng)?jiān)?-2中選擇以回車(chē)鍵結(jié)束:n); scanf(%d,&n);/讀取刪除方式 if(n=0) break; /跳出循環(huán) switch(n) case 1: printf(請(qǐng)輸入航班號(hào):n); scanf(%d,&no);/讀取航班號(hào) read();/調(diào)用讀取

15、函數(shù) break;/跳出循環(huán) case 2: printf(請(qǐng)輸入起始站 名稱:n); scanf(%s,name1);/讀取起始站 printf(請(qǐng)輸入終點(diǎn)站名稱:n); scanf(%s,name2);/讀取終點(diǎn)站 read();/調(diào)用讀取函數(shù) break;/跳出循環(huán) for(i=0;im;i+) if(si.num=no|strcmp(si.start,name1)=0&strcmp(si.over,name2)=0)/判斷輸入信息是否存在 si=sm-1; /注意下標(biāo)為零,用原來(lái)最后一條航班信息覆蓋到該條信息,然后把結(jié)構(gòu)體縮短 一位 m-; printf(刪除成功,是否繼續(xù)刪除n);

16、printf(請(qǐng)鍵入yes或no以回車(chē)鍵結(jié)束n); scanf(%s,ii); /讀取是否繼續(xù)信息 save(); /調(diào)用保存函數(shù) if(!strcmp(ii,yes) /判斷是否繼續(xù)刪除 break; while(1); /判斷結(jié)束 else printf(對(duì)不起密碼錯(cuò)誤!您不是管理員,不能使用此項(xiàng)功能!謝謝!再見(jiàn)!nn);void dingpiao()/訂票模塊 int n; char a10; do search();/調(diào)用查詢模塊 printf(請(qǐng)輸入您要訂的機(jī)票數(shù)以回車(chē)鍵結(jié)束:n); scanf(%d,&n);/讀取所訂機(jī)票數(shù) if(n=n)/判斷是否出錯(cuò) si.count=si.c

17、ount-n; save();/調(diào)用保存函數(shù) printf(訂票成功!nn); break; if(si.countn)/判斷是否出錯(cuò) printf(機(jī)票不足,請(qǐng)輸入有效的機(jī)票數(shù):n); break; printf(是否繼續(xù)? 請(qǐng)輸入yes或no以回車(chē)鍵結(jié)束:n);/判斷是否繼續(xù)訂票 scanf(%s,a); while(!strcmp(a,yes);/判斷結(jié)束void tuipiao()/退票模塊 int n; char a10; do search();/調(diào)用查詢模塊 printf(請(qǐng)輸入您要退的機(jī)票數(shù)目:n); scanf(%d,&n);/輸入所退票數(shù) if(n0) /判斷票數(shù)是否有效

18、printf(請(qǐng)輸入有效的機(jī)票數(shù)!n); si.count=si.count+n; save(); /調(diào)用保存模塊 printf(退票成功!nn); printf(是否繼續(xù)? 請(qǐng)鍵入yes或no以回車(chē)鍵結(jié)束:nn);/判斷是否繼續(xù)退票 scanf(%s,a); while(!strcmp(a,yes);/判斷并跳出循環(huán) getchar();void xiugai() /修改模塊 struct xiu /定義結(jié)構(gòu)體 int no; char name120; char name220; char time20; int count; x1; char j10; int n; printf(請(qǐng)輸入

19、密碼并以回車(chē)鍵結(jié)束:nn); scanf(%s,password); /讀取密碼 if(strcmp(pwd,password)=0) /判斷是否出錯(cuò) read(); /調(diào)用讀取模塊 do printf( 請(qǐng)選擇修改方式:nn *1,按航班號(hào)修改:nn *2,按航線修改: nn); printf(請(qǐng)?jiān)?-2中修改以回車(chē)鍵結(jié)束:nn); scanf(%d,&n); /讀取修改方式 switch(n) case 1:printf(請(qǐng)輸入航班號(hào):n); scanf(%d,&x0.no); /讀取航班號(hào) break; case 2:printf(請(qǐng)輸入起始站:n); scanf(%s,1

20、); /讀取起始站 printf(請(qǐng)輸入終點(diǎn)站:n); scanf(%s,2); /讀取終點(diǎn)站 break; for(i=0;im;i+) if(strcmp(si.over,1)=0&strcmp(si.over,2)=0)/判斷輸出條件 printf(航班號(hào) 起始站 終點(diǎn)站 時(shí)間 機(jī)票數(shù)n); printf(PRINT); break; if(si.num=x0.no) /判斷輸出條件 printf(航班號(hào) 起始站 終點(diǎn)站 時(shí)間 機(jī)票數(shù)n); printf(PRINT); break; printf(請(qǐng)輸入新航班號(hào)、起始站、終點(diǎn)站、時(shí)間(星期幾)、

21、機(jī)票數(shù):nn); printf(請(qǐng)輸入新航班號(hào):n); scanf(%d,&x0.no); /讀取航班號(hào) printf(請(qǐng)輸入新起始站:n); scanf(%s,1); /讀取起始站 printf(請(qǐng)輸入新終點(diǎn)站:n); scanf(%s,2); /讀取終點(diǎn)站 printf(請(qǐng)輸入新時(shí)間:n); scanf(%s,x0.time); /讀取時(shí)間 printf(請(qǐng)輸入新機(jī)票數(shù):n); scanf(%d,&x0.count); /讀取航班號(hào) si.num=x0.no; /修改航班號(hào) strcpy(si.start,1); /修改其始站 strcpy(si.over,2); /修改終點(diǎn)站 strcpy(si.time,x0.time); /修改時(shí)間 si.count=x0.count; /修改機(jī)票數(shù) save(); /調(diào)用保存模塊 x0.no=0; /將結(jié)構(gòu)體中的號(hào)為零 printf(是否繼續(xù)?請(qǐng)鍵入yes或no以回車(chē)鍵結(jié)束:nn); scanf(%s,j); while(strcmp(j,yes)=0); /判

溫馨提示

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

評(píng)論

0/150

提交評(píng)論