航空客運訂票系統(tǒng).doc_第1頁
航空客運訂票系統(tǒng).doc_第2頁
航空客運訂票系統(tǒng).doc_第3頁
航空客運訂票系統(tǒng).doc_第4頁
航空客運訂票系統(tǒng).doc_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

洛 陽 理 工 學(xué) 院課 程 設(shè) 計 報 告 課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 設(shè)計題目 航空客運訂票系統(tǒng)專 課 程 設(shè) 計 任 務(wù) 書設(shè)計題目:航空客運訂票系統(tǒng)_設(shè)計內(nèi)容與要求:內(nèi)容:錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況; 訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班; 退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件; 客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。 修改航班信息:當航班信息改變可以修改航班數(shù)據(jù)文件要求:根據(jù)以上功能說明,設(shè)計航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計程序完成功能。 課 程 設(shè) 計 評 語 成績: 指導(dǎo)教師:_ 年 月 日洛 陽 理 工 學(xué) 院 課 程 設(shè) 計 報 告目錄一問題描述2二基本要求2三數(shù)據(jù)結(jié)構(gòu)2四總體設(shè)計3五詳細設(shè)計45.1錄入功能 void lurugongneng()45.2查詢功能 void chaxungongnen()45.3訂票功能 void dingpiaogongnen()65.4退票功能 void tuipiaogongnen()75.5修改功能 void xiugaigongnen()8六測試與調(diào)試96.1 程序的模塊96.2 程序的調(diào)試96.3 測試結(jié)果9七源程序清單16一問題描述通過此系統(tǒng)可以實現(xiàn)如下功能:錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況;訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。修改航班信息:當航班信息改變可以修改航班數(shù)據(jù)文件二基本要求根據(jù)以上功能說明,設(shè)計航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計程序完成功能。三數(shù)據(jù)結(jié)構(gòu)typedef struct Yidingkehu /單鏈表char name15;/已訂票的客戶姓名char ID15;/已訂票的客戶證件號int dingpiaoshu;/已訂票數(shù)量struct Yidingkehu *next1; Yidingkehu,*Link; typedef struct Weidingkehu/單鏈隊char name15;/預(yù)訂票的客戶姓名char ID15;/預(yù)訂票的客戶證件號int yudingpiao;/要訂票數(shù)量struct Weidingkehu *next2;/下一個鏈隊結(jié)點指針Weidingkehu,*Qptr; typedef struct Qptr front;/單鏈隊頭結(jié)點Qptr rear;/單鏈隊尾結(jié)點linkQueue; typedef struct Hangxian/創(chuàng)建一個航線的結(jié)構(gòu)體char hangbanhao15;/航班號char feijihao15;/飛機號int qifeishijian;/起飛時間int jiangluoshijian;int level;/倉位int yupiao;/余票int piaojia;/票價int zhekou;/折扣char zhongdianzhan15;/降落城市struct Hangxian *next;/指向下一個鏈結(jié)點的指針struct Yidingkehu *yiding;/定義一個指向已訂票客戶的頭結(jié)點指針struct Weidingkehu *yudingqueue; Hangxian,*Linklist;四總體設(shè)計主函數(shù)錄入功能查詢功能訂票功能退票功能修改功能通過目的地查詢通過航班號查詢五詳細設(shè)計5.1錄入功能 void lurugongneng() 通過調(diào)用Linklist InitLinklist()和int InsertLinklist(Linklist &L)函數(shù)錄入航線信息,通過1或者2來控制是否繼續(xù)輸入,輸入的航線信息包括航班號,飛機號,終點站,起飛時間,降落時間,倉位,票價,折扣和余票數(shù)。int j=1,m;if(!InsertLinklist(Linklist) L)輸入航線信息繼續(xù)輸入內(nèi)存已滿退出YNYN5 .2查詢功能 void chaxungongnen() 查詢分為按目的地查詢和按航班號查詢,通過void chaxungongnen()函數(shù)調(diào)用voidmddchaxun()/通過目的地查詢函數(shù)和void hbhchaxun()/通過航班號查詢函數(shù)。通過n控制功能選擇,通過輸入的目的地和航班號查詢是否有該航班信息,若找到,則輸出該航班信息,否則提示用戶沒找到,退出。int n;n=1調(diào)用void mddchaxun()調(diào)用void hbhchaxun()輸入目的地輸入航班號找到目的地找到航班號輸出信息不匹配輸出信息不匹配退出YN5.3訂票功能 void dingpiaogongnen() 定義Linklist類型的L來指向鏈表頭Yidingkehu *h=H,*h1定義客戶的結(jié)點,方便插入與刪除,int m=1,piao,n(票數(shù)); int ydpiao=0,yd=0; 訂票時輸入終點站,如果找到,輸入用戶姓名,證件號和票數(shù),如果余票不足,提醒用戶重新訂票,否則訂票成功,否則提示用戶無此航班。int i輸入終點站找到終點站輸出航班信息輸入要的票數(shù)要的票數(shù)小與余票輸入姓名證件號余票數(shù)-1訂票成功余票不足無此航班重新訂票輸入姓名證件號預(yù)訂成功退出YNYNYN預(yù)訂5.4退票功能 void tuipiaogongnen() int m=1,piao定義相應(yīng)變量,通過輸入航班號查找是否有退票的航班,如果有,輸出該航班的信息并輸入用戶的姓名和訂票數(shù),如果符合,使余票數(shù)減一,退票成功,如果沒有,提示用戶輸入有誤,退出。Linklist p=L; Yidingkehu *h=H,*h1,*h2輸入航班號找到該航班輸出該航班信息輸入姓名和訂票數(shù)找到訂票信息余票數(shù)+1退票成功不匹配無此航班退出YNYN5.5修改功能 void xiugaigongnen() 定義Linklist p=L;int m,輸入要修改的飛機號,如果找到,輸出該航班信息并且輸入修改后的航班信息,如果沒找到,提示用戶無此航班,退出。char c15;int m;Linklist p=L;int m;輸入要修改的飛機號找到該飛機號輸出該航班信息輸入修改后的信息修改成功無此航班退出YN。六測試與調(diào)試6.1 程序的模塊錄入功能:原始數(shù)據(jù)的輸入。查詢功能:根據(jù)客戶需要,查詢相關(guān)航線。訂票功能:滿足客戶的訂票任務(wù)。退票功能:根據(jù)客戶的不同情況,支持客戶的退票請求。修改功能:根據(jù)要求修改航班信息。退出功能:退出系統(tǒng)。6.2 程序的調(diào)試 (1)程序在起初設(shè)計的時候,經(jīng)常出現(xiàn)溢出錯誤,而且不只一處。為了修正這些溢出錯誤,耗費了大量的時間,修正解釋之后再看源程序,才發(fā)現(xiàn)原來只是因為開始的函數(shù)定義的數(shù)據(jù)類型出現(xiàn)了問題,對函數(shù)的定義不清楚,字符的不正確定義造成了后期大量的糾錯工作 (2)由于忘記了一些c語言的規(guī)范使得在調(diào)試過程中一些錯誤沒有發(fā)現(xiàn)。例如,調(diào)用函數(shù)時,數(shù)組只需要傳遞數(shù)組名即可;字符0和整型的0是不同的,不可以直接對其畫等號。 (3)測試用例具有一定的廣泛性。運行程序時輸入了多種不同字符信息,經(jīng)過多次修改結(jié)果達到了預(yù)期效果,說明程序具有一定的可靠性和穩(wěn)定性。6.3 測試結(jié)果圖 6-1 錄入功能圖 6-2 通過目的地查詢圖 6-3 通過航班號查詢圖 6-4 訂票功能圖 6-5 退票功能圖 6-6 修改功能七源程序清單#include #include #include #include #define ok 1 typedef struct Yidingkehu /單鏈表char name15;/已訂票的客戶姓名char ID15;/已訂票的客戶證件號int dingpiaoshu;/已訂票數(shù)量struct Yidingkehu *next1; Yidingkehu,*Link; typedef struct Weidingkehu/單鏈隊char name15;/預(yù)訂票的客戶姓名char ID15;/預(yù)訂票的客戶證件號int yudingpiao;/要訂票數(shù)量struct Weidingkehu *next2;/下一個鏈隊結(jié)點指針Weidingkehu,*Qptr; typedef struct Qptr front;/單鏈隊頭結(jié)點Qptr rear;/單鏈隊尾結(jié)點linkQueue; typedef struct Hangxian/創(chuàng)建一個航線的結(jié)構(gòu)體char hangbanhao15;/航班號char feijihao15;/飛機號int qifeishijian;/起飛時間int jiangluoshijian;int level;/倉位int yupiao;/余票int piaojia;/票價int zhekou;/折扣char zhongdianzhan15;/降落城市struct Hangxian *next;/指向下一個鏈結(jié)點的指針struct Yidingkehu *yiding;/定義一個指向已訂票客戶的頭結(jié)點指針struct Weidingkehu *yudingqueue; Hangxian,*Linklist; struct Hangxian *L=NULL;/定義全局量struct Yidingkehu *H;/為已訂票客戶鏈隊來申請空間linkQueue Q; /linkQueue類型的來申請空間Linklist InitLinklist();/聲明int InsertLinklist(Linklist &head1);/聲明void hbhchaxun();/通過航班號查詢void mddchaxun(); /通過目的地查詢void lurugongneng();/初始化錄入功能void chaxungongnen();/查詢功能void dingpiaogongnen();/訂票功能void tuipiaogongnen();/退票功能void xiugaigongnen();/修改功能void main() H=(struct Yidingkehu*)malloc(sizeof(Yidingkehu); Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu); InitLinklist(); int n; do/菜單 printf(t 歡迎使用航空客運訂票系統(tǒng)n); printf(t+n); printf(t= 1. 錄入功能 =n); printf(t= 2. 查詢功能 =n); printf(t= 3. 訂票功能 =n); printf(t= 4. 退票功能 =n); printf(t= 5. 修改功能 =n); printf(t= 6. 退出 =n); printf(t+n); printf(t請選擇:); scanf(%d,&n);printf(n); switch(n) case 1: lurugongneng();break; /錄入功能case 2: chaxungongnen(); break; / 查詢功能case 3: dingpiaogongnen(); break; / 訂票功能 case 4: tuipiaogongnen();break;/退票功能case 5: xiugaigongnen();break; /修改功能default :exit(0); while(n=1|n=2|n=3|n=4|n=5); void lurugongneng() int j=1,m; do if(!InsertLinklist(Linklist) L)/向其中加入航班信息 printf(內(nèi)存已滿n); exit(OVERFLOW); /向鏈表中加一結(jié)點printf(t是否要輸入下一個航線記錄?n); printf(t是 請輸入1n); printf(t否 請輸入2nt); scanf(%d,&m);/在這里依靠人來決定是否輸入下一條航線記while(m=1); Linklist InitLinklist() L=(Linklist)malloc(sizeof(Hangxian); if(!L) exit(OVERFLOW); L-next=NULL;/建立一個帶有頭結(jié)點的單鏈表return (L); int InsertLinklist(Linklist &L)/向航線鏈表添加新的結(jié)點 Linklist p;p=(Linklist)malloc(sizeof(Hangxian);/為一個新的結(jié)點分配空間if(!p) exit(OVERFLOW); printf(t請依次輸入下面幾項內(nèi)容:nn); printf(航班號:); scanf(%s,p-hangbanhao); printf(飛機號:); scanf(%s,p-feijihao); printf(終點站:); scanf(%s,p-zhongdianzhan); printf(起飛時間:); scanf(%d,&p-qifeishijian);printf(降落時間:); scanf(%d,&p-jiangluoshijian); printf(倉位:); scanf(%d,&p-level); printf(票價:); scanf(%d,&p-piaojia); printf(折扣:); scanf(%d,&p-zhekou); printf(余票數(shù):); scanf(%d,&p-yupiao); p-yiding=(Yidingkehu*)malloc(sizeof(Yidingkehu);/為它申請空間p-yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu);/為它申請空間p-next=L-next; L-next=p;/鏈表中的插入一個結(jié)點return (ok); void chaxungongnen() int n; printf(t 查找航班信息 n); printf(t+n); printf(t=1. 通過目的地查詢 =n); printf(t=2. 通過航班號查詢 =n); printf(t+n); printf(t請選擇:); scanf(%d,&n); switch(n) case 1:mddchaxun(); break; case 2:hbhchaxun(); break; default :break; void mddchaxun()/通過目的地查詢 char c15; Linklist p=L; int m; printf(t請輸入要查詢的目的地:); scanf(%s,c); do p=p-next; if(p) if(strcmpi(*p).zhongdianzhan,c)=0) printf(t*航班信息*n); printf(t航班號:%sn,p-hangbanhao); printf(t飛機號:%sn,p-feijihao); printf(t起飛時間:%dn,p-qifeishijian); printf(t降落時間:%dn,p-jiangluoshijian); printf(t余票:%dn,p-yupiao); printf(t票價:%dn,p-piaojia); printf(t折扣:%dn,p-zhekou); break; else /如果不匹配的話 printf(t對不起沒有你要找的目的地:n); m=0; while(m!=0); void hbhchaxun()/通過航班號查詢 char c15; Linklist p=L;int m; printf(t請輸入要查詢的航班號:); scanf(%s,c); do p=p-next; if(p) if(strcmpi(*p).hangbanhao,c)=0) printf(t*航班信息*n); printf(t航班號:%sn,p-hangbanhao); printf(t飛機號:%sn,p-feijihao); printf(t起飛時間:%dn,p-qifeishijian);printf(t降落時間:%dn,p-jiangluoshijian); printf(t余票:%dn,p-yupiao); printf(t票價:%dn,p-piaojia);printf(t折扣:%dn,p-zhekou);break; else /如果不匹配的話 printf(t對不起沒有你要找的航班號:n); m=0; while(m!=0); void dingpiaogongnen() int i; Linklist p=L;/Linklist類型的L來指向鏈表頭Yidingkehu *h=H,*h1;/Yidingkehu 定義客戶的結(jié)點,方便插入與刪除linkQueue q=Q;/linkQueue類型的來,方便插入與刪除struct Weidingkehu *q3; char c15; int m=1,piao,n; int ydpiao=0,yd=0; printf(請輸入終點站名:n); scanf(%s,c); p=L-next; if(p) do/查找一下,是否有這個航班if(!p) printf(對不起沒有你要找的航班:nn); m=strcmpi(p-zhongdianzhan,c);/通過比較來判定if(m=0) printf(t*航班信息*n); printf(t航班號:%sn,p-hangbanhao); printf(t飛機號:%sn,p-feijihao); printf(t起飛時間:%dn,p-qifeishijian); printf(t降落時間:%dn,p-jiangluoshijian); printf(t余票:%dn,p-yupiao); printf(t票價:%dn,p-piaojia); printf(t折扣:%dn,p-zhekou); break; else p=p-next; while(m!=0); if(m=0) /當有該航班時,進行訂票do printf(n請輸入你要定的票數(shù):n); scanf(%d,&piao); if(piaoyupiao) h=p-yiding; if(h) h1=h; h=h-next1; h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu); for(i=0;iname); printf(請輸入你的證件號:n); scanf(%s,h-ID); h-dingpiaoshu=piao; h-next1=h1-next1; h1-next1=h; p-yupiao=p-yupiao-piao; printf(訂票成功n編號為%sn,h-ID); m=2; else /余票量不足時 printf(余票量:%dn,p-yupiao); printf(對不起,余票%d張不足,不能完成訂票n,p-yupiao); printf(是否要重新訂票?n); printf(需要請輸入1 否則請按2 預(yù)定請輸入3 : n); scanf(%d,&m); while(m=3) printf(對不起,該航班的票已售完n); q.front=p-yudingqueue; if(q.front=q.rear) printf(沒有人預(yù)定票,是否要預(yù)定?n); else if(q.front!=q.rear) printf(已有人預(yù)定票,是否要預(yù)定?n); printf(預(yù)定請輸入1 否則請輸入2 : n); scanf(%d,&n); if(n=1) q3=(Qptr)malloc(sizeof(Weidingkehu); printf(請輸入你的姓名n); scanf(%s,q3-name); printf(請輸入你的證件號:n); scanf(%s,h-ID); printf(請輸入訂票數(shù)n); scanf(%d,&q3-yudingpiao); q3-next2=NULL; q.rear-next2=q3; q.rear=q3; printf(你已經(jīng)預(yù)定了!n); break; while(m=1); void tuipiaogongnen() Linklist p=L; Yidingkehu *h=H,*h1,*h2; /linkQueue q=Q; char c15,name115; int m=1,piao;/定義相應(yīng)變量printf(請輸入航班號:n); scanf(%s,c); p=L-next; if(p) do/使用do while來查找是否有此航班 if(!p) / 如果是到了表尾且沒有匹配 printf(n對不起,沒有你要找的航班:n); if(strcmpi(p-hangbanhao,c)=0)/比較航班號輸出信息 printf(t*航班信息!*n); printf(t航班號:%sn,p-hangbanhao); printf(t飛機號:%sn,p-feijihao); printf(t起飛時間:%dn,p-qifeishijian);printf(t降落時間:%dn,p-jiangluoshijian); printf(t余票:%dn,p-yupiao); printf(t票價:%dn,p-piaojia);printf(t折扣:%dn,p-zhekou);m=0; else p=p-next; while(m!=0); if(m=0) /如果找到了,就來給他退票do h=p-yiding; if(h) printf(請輸入你的姓名:n); scanf(%s,name1); printf(請輸入你定的票數(shù):n); scanf(%d,&piao); h1=h; h=h-next1; if(strcmpi(h-name,name1)=0&h-dingpiaoshu=piao)/如果名字和訂的票數(shù)相等,則就給他取消訂票 p-yu

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論