版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計課程設(shè)計【設(shè)計題目】航空公司訂票系統(tǒng)【問題描述】編寫一個咸陽航空公司訂票大廳的一個訂票系統(tǒng),可以在系統(tǒng)中錄入并 修改各個航班的具體情況,幫助乘客準確的查詢各航班的最新信息包括航班 號、航班的起始時間和地點、票價和各項業(yè)務(wù)的及時辦理包括訂票、退票 等.該系統(tǒng)用可以用C+的類編寫.【軟件功能】1. 輸入航班信息并保存到磁盤2. 瀏覽航班信息3. 修改航班信息并保存到磁盤4. 查找航班5. 刪除航班信息6. 訂票7. 退票【算法思想】1先定義一個乘客根本信息的類包含乘客的姓名、證件號、訂票數(shù) 量及所乘的航班號注:每個航班有固定的人數(shù)限制,假設(shè)滿額那么提示其他可供選 擇的航班.2建立
2、一個功能類,包括對航班信息和乘客訂票信息的錄入及修改的函 數(shù),其中訂票信息采用單鏈表的順序存儲方式存儲.另外還包括對信息的查詢和修改的功能函數(shù),乘客退票的函數(shù).并將最終的改動結(jié)果通過i/O流寫入磁盤文件保存O3編寫主函數(shù),對編寫的航班系統(tǒng)進行全面測試,對用戶界面采用人性化的菜單方式.【類的設(shè)計】定義一個航班的類class planefriend class customer;慶元類public:void input;/插入航班信息void print();/打印航班信息void save();/保存航班信息void read();/讀取航班信息void search();/查找航班信息void
3、 Delete(); /刪除航班信息void book();加票void back(); /退票void xiugai(); /修改航班信息private:int num;/航班號char start_place20;/起點站 char arrive_place20;虐$ 點站 char time10;/ 起降時間int count;/M 票數(shù)量;定義一個顧客信息的類class customerfriend class plane;/fe 元類protected:Int id;/身份證號char name10;/孜生名int customer_num;如票數(shù)量public:void read1
4、();/讀取數(shù)據(jù)void save1();/保存數(shù)據(jù);【存儲結(jié)構(gòu)設(shè)計】采用順序存儲結(jié)構(gòu),利用動態(tài)申請空間實現(xiàn)信息的存儲【模塊劃分及調(diào)用關(guān)系】定義了兩個類 class plane和class customer,分別實現(xiàn)顧客及航班的信 息操作.在兩個類的后面分別定義了類中的各個函數(shù).另外在主函數(shù)中分別 調(diào)用函數(shù),實現(xiàn)各個功能.【模塊流程圖】1.主函數(shù)main()3. void book()/ff票函數(shù)cout«"進入航班治理系統(tǒng)菜單,«endl;=|,«endl;|,«endl;|,«endl;|,«endl;|,«e
5、ndl;|,«endl;|,«endl;|,«endl;|,«endl;=|,«endl;【界面設(shè)計】cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"| =cout«-請選擇(07):";采用人性化的菜單提示語,讓用戶很容易的操作;【用戶手
6、冊】用戶只需要在VC環(huán)境下就可以操作,具體步驟可見菜單提示就可以 順利操作.另外,再參加、刪除、修改航班信息時必須以治理員的身份進去, 所以必須要有密碼,在這里初始密碼事:xinxi0701.謝謝您的使用! !1、程序上機調(diào)試報告【語法錯誤及其排除】兩個類的公有函數(shù)中,在循環(huán)嵌套調(diào)用時總是受阻,不能執(zhí)行.所以我 把兩個類都定義為相互的有元類.這樣問題就解決了.【算法錯誤及其排除】在訂票與退票函數(shù)中,要核對用戶信息如姓名、ID等,開始是自己定義 一個函數(shù)進行字符問的比較,在調(diào)用時總是出現(xiàn)語法錯誤,最后想到可以用 一個函數(shù)庫中的函數(shù) strcmp(char,char)把問題簡單化,而且語法錯誤也解
7、決2、程序測試結(jié)果【測試數(shù)據(jù)】說明:測試數(shù)據(jù)都是輸入數(shù)據(jù),見輸出結(jié)果【輸出結(jié)果】:xinxi701歡迎進入航空訂票票單-=E_=HI=二 一 一一 .一 一 _ 一_ 一 二 一II一一1UWIJ一 一一 此 n, Hlix z - TJJ TJJ TJJ TJJ-找崔WB3 費修查刪訂退退12345670青選擇勇巧青輸入密:x in x 10701四支 上退8: 0012絞個信息己經(jīng)輸入,是否繼續(xù)00-15帛3個信息己經(jīng)輸入,是否繼續(xù)<y/n>?n盤的信息是:朋 01 M2終點站 時|1北盡 5: 90-88: 00-12香港 9> 00-15盤始站西斐 西安 西安息自心息
8、 二二,- r一 Z- - _ - 一 - - 一 - VJT1J TU V b 丁 , 一-_一哥修查刪訂退退-12345670請選擇0:4歡迎進入查詢菜單1 .按航班號查找2 .按終點站查找3 .按航線查我0.返回請選擇廠3:1 請輸大航班號麗查找旌班信息成功瘋班M 聶站站西安終點站 時間治理員密碼:4一 機票數(shù)北示 5: 30-8: 30xinxi0701120歡迎進入航空訂票菜單找嚓毒雷 威傕詹-«.T7.S.M 12345670請選擇0:5清輸入密碼:x in x i0?01 歡迎進入刪除菜單按航班號刪除 妃按航線刪除*0.返回度碧金多暨號崖罟繼續(xù)刪除Wn:n治理員密碼:x
9、inxi0701歡迎進入航空訂票菜單12345670費修查刪訂退退魏安安1西西Of位班信息 而班信息 冗班信息 例終點站時間:30-8: 00-15;120200請按任意鍵返回主菜單/官理 貝密碼:xinxi0?01白心自心.信信信Lr_ : - _r- Lr 一 rl1一時 、V 一 rMIvrws 尸 o7T">nv nJ , 4 k L y,Tu8i12345670 =.蠟<0戶;!=擇用主選位按航班號查找2嵌終點站查找3-按航線查找隊您回至選 S<B3>=1圭輸義航班號脫2找粼班信息成功,機票數(shù)灑和破智 起始站 終點站 時間L92西安香港 9: 00-
10、15; 00L彌迎進入訂寡系統(tǒng), 專羸入你的1房出3 :圭9海研姓名,國四 ???竺蘭訂的機票數(shù)以 /丁票成珈治理員密碼:xinxi0701歡迎進入航空訂票菜單40白心白心 信信信1. 1. 1.LL一 L 一 一一.r訂退退12345670清選 JJ<0,V7>:2和班每 起始站 終忘站 時間 機票數(shù)L00西安北煎 5; 30-8: 3日119L82西安善港 9: 00-15: 00198【程序性能評價】該程序可以查詢航班的信息、修改信息,查詢顧客的信息,訂票、退票 等,界面采用人性化的提示,可以讓用戶很容易的操作.另外在修改信息、 添加航班信息時必須要以治理員的身份進入即必須要
11、有密碼才能進入.保證 了系統(tǒng)的平安.【性能改進方向】該系統(tǒng)在操作中要是不根據(jù)菜單的有關(guān)提示操作,而進行非法操作,可能會導(dǎo)致系統(tǒng)的死循環(huán).在這點該系統(tǒng)還有待改進.【收獲及體會】事實總比想象的難,岡卅始編寫這個程序的時候思路比較活晰.可是編寫 的時候遇到了很多難題,譬如將顧客的信息及航班的信息保存到文件中, 不知道 用那種方式更簡便,最后仔細思考,閱讀課本資料,選擇了用流的形式輸出到文 件中,感覺用起來特別方便簡潔.完成了程序的編寫后乂對該程序進行了大量的 修改,調(diào)試,使程序更加簡明,并添加了不少提示用戶操作的語句,使用戶使用 該系統(tǒng)時更加方便.對自己的這個程序還是比較滿意的, 可以說已經(jīng)超出了自
12、己 當初的設(shè)想.從編寫這個程序的過程中不但發(fā)現(xiàn)了許多自己沒學明白的地方,而且鍛煉了自己的耐心.岡q調(diào)試時有很多錯誤,我逐個仔細的修改、排除,最終成功的完成了調(diào)試.進過這次實習,我更加深刻的體會到,作任何事情要仔細,要 靜下心來認真思考,只要努力了,必定會有回報.3、源程序代碼#include<iostream.h>#include<string.h>#include<stdio.h>#include<iomanip.h>#include<stdlib.h>#define N 1000/ 宏定義 class customer;/申明顧客
13、信息類/定義航班信息類class planefriend class customer;/有元類 public:void insert();參加航班信息void print();輸出航班信息void save();保存航班信息void read();讀取航班信息void search();查找航班信息void Delete();刪除航班信息void book(); / 訂票void back(); 退票void xiugai();修改航班信息private:int num;/航班號char start10;/ 起點站char arrive10;/ 終點站char time20;/ 起降時間in
14、t plane_num;/ 機票數(shù)量 sN;/-定義顧客信息類class customerfriend class plane;/有元類 protected:int id;/身份證號char name20;/ 姓名int pshu;/用戶訂票數(shù)量public:void read1();/ 讀取數(shù)據(jù)void save 1();/ 保存數(shù)據(jù))yhN;int ij;/全局變量int m=0,y=0;宏定義一個輸出#definePRINTsi.num«setw(13)«si.start«setw(13)«si.arrive«setw(13)«
15、si.time«setw(13)«si.plane_num«endl定義輸出格式/主函數(shù)void main()plane abc;定義一個航班類的對象intj;docout«"治理員密碼:xinxi0701"«endl;cout«""«endl;cout«"歡迎進入航空訂票菜單 "«endl; /主界面cout«"|=|"«endl;cout«"|1.新增航班|"«e
16、ndl;cout«"|2.瀏覽航班信息|"«endl;cout«"|3.修改航班信息|"«endl;cout«"|4.查找航班信息|"«endl;cout«"|5.刪除航班|"«endl;cout«"|6.訂票|"«endl;cout«"|7.退票|"«endl;cout«"|0.退出|"«endl;cout«
17、;" |=|"«endl;cout«"請選擇(07):;cin»j;switch(j)case 1:abc. insert();/調(diào)用插入函數(shù)break;case 2:abc.print();/ 調(diào)用打印函數(shù) break;case 3:abc.xiugai();/ 調(diào)用修改函數(shù) break;case 4:abc.search();調(diào)用查找函數(shù) break;case 5:abc.Delete(); 調(diào)用刪除函數(shù) break;case 6:abc.book();/調(diào)用訂票函數(shù)break;case 7:abc.back();/ 調(diào)用退票函數(shù)
18、 break;case 0:;break;while(j!=0);判斷結(jié)束cout<<"謝謝使用,再見!n;/主函數(shù)結(jié)束/定義類中各個函數(shù)void plane:insert() 打印函數(shù)char f="xinxi701; 設(shè)置密碼char y;cout<<"請輸入密碼:"cin>>f;/讀取密碼if(strcmp(f,"xinxi0701")=0)cout<<"n"for(i=0;i<N;i+)cout<<"航班號 出發(fā)地點到達地點起降時間
19、滿載人數(shù)"<<endl;cout<<"|"<<endl;cin>>si.num>>si.start>>si.arrive>>si.time>>si.plane_num;cout<<"|"<<endl;m+;cout<<"第"<<m<<"個信息已經(jīng)輸入,是否繼續(xù) (y/n)?;cin>>y;cout<<endl;if(y='y
20、9;)continue;elsesave();/將結(jié)構(gòu)體信息存盤cout<<"剛剛存盤的信息是:"<<endl;print();/輸出輸入的航班信息break;elsecout<<"密碼錯誤,您不能使用此項功能,強制推出!"<<endl; void plane:save() 保存函數(shù)(FILE *fp,*fp1;/定義文件指針if(fp=fopen("chen.txt","wb")=NULL)/ 翻開文件并判斷是否出錯 (cout<<創(chuàng)立文件失?。?quo
21、t;<<endl;/出錯提示getchar();return;if(fp1=fopen("hao.txt,"wb")=NULL)/ 翻開文件并判斷是否出錯(cout<<"創(chuàng)立文件失??!"<<endl;/出錯提示 getchar();return;for(i=0;i<m;i+)if(fwrite(&si,sizeof(class plane),1,fp)=0)/向文件寫入數(shù)據(jù),并判斷是否出錯cout<<"向文件輸入數(shù)據(jù)失??!"<<endl;fprintf
22、(fp1,"%d,m);fclose(fp);/ 關(guān)閉文件 fclose(fp1);/ 關(guān)閉文件 /void plane:read()/從文件讀取信息(FILE *fp,*fp1;/定義文件指針if(fp=fopen("chen.txt","rb")=NULL)/翻開文件,并判斷是否出錯(cout<<"出現(xiàn)錯誤,請檢查文件是否存在!"/出錯提示getchar();if(fp1=fopen("hao.txt","rb")=NULL)/ 翻開文件并判斷是否出錯(cout<
23、<"創(chuàng)立文件失敗!nn;/出錯提示getchar();return;fscanf(fp1,"%d",&m);fclose(fp1);/ 關(guān)閉文件 for(i=0;i<m;i+) (fread(&si,sizeof(plane),1,fp);/ 從文件中讀取信息fclose(fp);/ 關(guān)閉文件/void plane:print()/ 輸出函數(shù)(char w10;機票數(shù)n;read();/調(diào)用讀取文件函數(shù)cout<<航班號 起始站 終點站 時間for(i=0;i<m;i+)(cout<<PRINT;/ 打印信
24、息cout<<"*"<<endl;cout<<"/請按任意鍵返回主菜單/"<<endl;cin>>w;/限制返回主菜單/void plane:search()/查詢函數(shù)(char name110;char name212;char ii10;int n,no;do(cout<<"歡迎進入查詢菜單"<<endl;/查詢方式菜單cout<<""<<endl;cout<<" 1.按航班號查找n
25、n"2.按終點站查找nn"3.按航線查找nn""0.返回"<<endl;cout<<"請選擇(03):"cin>>n;if(n=0)break;switch(n)(case 1:cout<<"請輸入航班號:"cin>>no;/ 航班號break;case 2:cout<<"請輸入終點站名稱cin>>name2;/讀取終點站 break;case 3:cout<<"請輸入起始站名稱:n;cin
26、>>name1;/讀取起始站cout<<"請輸入終點站名稱:n;cin>>name2;/ 終點站 break;read();/調(diào)用讀取函數(shù)for(i=0;i<m;i+)if(strcmp(si.arrive,name1)=0|strcmp(si.arrive,name2)=0)/按終點站起始站判斷輸出條件cout<<"n查找航班信息成功!"<<endl;cout<<"航班號 起始站 終點站 時間 機票數(shù)"<<endl;cout<<PRINT;/
27、 打印信息break;if(si.num=no)/按航班號判斷輸出條件cout<<"n查找航班信息成功!n;cout<<"航班號 起始站 終點站 時間 機票數(shù)"<<endl;cout<<PRINT;/ 打印信息break;no=0;/將航班號賦值為0if(i>m)cout<<"該航班不存在,是否繼續(xù)查找(y/n)?;cin>>ii;while(strcmp(ii,"y")=0);/ 判斷結(jié)束/void plane:Delete()/ 刪除函數(shù)char nam
28、e110;char name212;char ii12;char f="xinxi701"/ 設(shè)置密碼int no,n;cout<<"請輸入密碼:"cin>>f;/讀取密碼if(strcmp(f,xinxi0701)=0)判斷密碼是否正確do(cout<<"歡迎進入刪除菜單"<<endl;/刪除方式菜單cout<<""<<endl;cout<<"*1.按航班號刪除nn""*2.按航線刪除nn"
29、"*0.返回"<<endl;cout<<"請選擇(02);cin>>n;/讀取刪除方式if(n=0)break; 跳出循環(huán)switch(n)(case 1:cout<<"請輸入航班號:"cin>>no;/讀取航班號read();/調(diào)用讀取函數(shù)break;/跳出循環(huán)case 2:cout<<"請輸入起始站名稱:";cin>>name1;/讀取起始站cout<<"請輸入終點站名稱:"cin>>name2
30、;/讀取終點站read();/調(diào)用讀取函數(shù)break;/跳出循環(huán)for(i=0;i<m;i+)(if(si.num=no|strcmp(si.start,name1)=0&&strcmp(si.arrive,name2)=0)/ 判斷輸 入信息是否存在(si=sm-1;m-;cout<<"沒有該信息,是否繼續(xù)刪除(y/n):"cin>>ii;/讀取是否繼續(xù)信息save(); 調(diào)用讀取函數(shù)if(!strcmp(ii,"y") /判斷是否繼續(xù)刪除cout<<"請按任意鍵返回刪除菜單??;bre
31、ak;while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); 判斷結(jié)束elsecout<<"密碼錯誤,不能使用此項功能,強行退出!nn"/void plane:book()/ 訂票函數(shù)(customer abc;int n;char a12;do(cout<<"各位用戶你好!請你先選擇您要乘的航班"<<endl;search();abc.save1();abc.read1();y=y+i;cout<<"歡迎進入訂票系
32、統(tǒng)!"<<endl;cout<<"請輸入你的ID號:"cin>>yhy.id;cout<<"請輸入你的姓名:;cin>> ;cout<<"請輸入您要訂的機票數(shù):;fai: cin>>n;/讀取所訂機票數(shù)if(n<=0)goto fai;yhy.pshu=n;si.plane_num=si.plane_num-n;abc.save1();save();/調(diào)用保存函數(shù)cout<<"訂票成功!nn"break;co
33、ut<<"是否繼續(xù)(y/n)?;/判斷是否繼續(xù)訂票cin>>a;while(!strcmp(a,y);/ 判斷結(jié)束/void plane:back()/ 退票函數(shù)(customer abc;int n;char a12;do(cout<<"各位用戶你好!請你先選擇您要退的航班"<<endl;search();cout<<"請輸入你的ID號:"<<endl;cin>>abc.id; cout<<"請輸入你的姓名:"<<e
34、ndl; cin>> ; cout<<"請輸入您要退的機票數(shù)目:"<<endl;cin>>n;/輸入所退票數(shù) if(n<0) /判斷票數(shù)是否有效 ( cout<<"請輸入有效的機票數(shù)!"<<endl;cin>>n; abc.read1(); for(i=0;i<y;i+) ( if(yhi.id=abc.id)=0&&strcmp(,)=0)/ 按終點站起 始站判斷輸出條件 ( cout<&
35、lt;"該顧客存在!"<<endl; cout<<"身份證號姓名訂票數(shù)"<<endl;cout<<yhi.id<<setw(8)<<<<setw(8)<<yhi.pshu<<endl;/打印信息break; for(;i<y;i+) ( yhi.id=yhi+1.id; strcpy(,yhi+1.name); yhi.pshu=yhi+1.pshu; abc.save1(); si.plane_num=si.
36、plane_num+n; save(); 調(diào)用保存 cout<<"退票成功!nn; cout<<"是否繼續(xù)(y/n)?"/判斷是否繼續(xù)退票 cin>>a; while(!strcmp(a,"y");/ 判斷并跳出循環(huán) getchar(); /void plane:xiugai()修改信息函數(shù)( class xiu/定義一個類( public:int no;char name112;char name212;char time12;int plane_num;x1;char j10;char f="x
37、inxi701"/ 設(shè)置密碼int n;cout<<"請輸入密碼:;cin>>f;/讀取密碼if(strcmp(f,"xinxi0701")=0)/判斷是否出錯read();/調(diào)用讀取docout<< "歡迎進入修改系統(tǒng)"<<endl;cout<< "*1,按航班號修改"<<endl;cout<< "*2,按航線修改"<<endl;cout<<"請選擇(12);cin>&g
38、t;n;/讀取修改方式switch(n)case 1:cout<<"請輸入航班號:"cin>>x0.no;/讀取航班號break;case 2:cout<<"請輸入起始站:"cin>>1;/ 讀取起始站cout<<"請輸入終點站:"cin>>2;/ 讀取終點站break;for(i=0;i<m;i+)if(strcmp(si.arrive,1)=0&&strcmp(si.arrive,2)=0)/判斷輸出條件cout<<"航班號 起始站 終點站 時間 機票數(shù)n;cout<<PRINT;break;if(si.num=x0.no)/ 判斷輸出條件cout<<"航班號起始站終點站 時間機票數(shù)n"cout<<PRINT;break;x0.no=0;將結(jié)構(gòu)體中的號為零cout<<"請輸入新航班號起始站 終點站 時間 機票數(shù)<<endl;cin>>x0.no>>1>>x0.n
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版居間服務(wù)合同正本覆蓋金融產(chǎn)品推廣3篇
- 2025版企業(yè)短租汽車租賃合同標準文本3篇
- 2024房屋租賃合同翻譯
- 2025版綠色建材rohs環(huán)保協(xié)議范本3篇
- 2024年生態(tài)居住區(qū)房產(chǎn)買賣與產(chǎn)權(quán)證轉(zhuǎn)移合同2篇
- 2024年食堂衛(wèi)生管理合同3篇
- 2025年度BIM施工信息化管理合同范本3篇
- 2024年金融借款合同標準格式3篇
- 課題申報書:大國博弈下中國海外務(wù)工人員安全風險防控機制研究
- 課題申報書:城市代謝中人類福祉的實現(xiàn)機理、效率評估與路徑優(yōu)化
- 國內(nèi)外航空安全形勢
- 《雷達原理》課件-1.1.6教學課件:雷達對抗與反對抗
- 2024年版汽車4S店商用物業(yè)租賃協(xié)議版B版
- 微信小程序云開發(fā)(赤峰應(yīng)用技術(shù)職業(yè)學院)知到智慧樹答案
- 遼寧省撫順市清原縣2024屆九年級上學期期末質(zhì)量檢測數(shù)學試卷(含解析)
- 2024-2025學年上學期福建高二物理期末卷2
- 2024四川阿壩州事業(yè)單位和州直機關(guān)招聘691人歷年管理單位遴選500模擬題附帶答案詳解
- 麻醉科工作計劃
- 2024年新進員工試用期考核標準3篇
- 《英美文化概況》課件
- 四川省2023年普通高中學業(yè)水平考試物理試卷 含解析
評論
0/150
提交評論