版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、哈爾濱理工大學(xué)軟件學(xué)院課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)C+ 課程設(shè)計(jì)題 目 賓館信息管理系統(tǒng)班級(jí)學(xué)生學(xué)號(hào)指導(dǎo)教師1 管理系統(tǒng)的功能說明a) 密碼登錄驗(yàn)證訪問。b) 瀏覽賓館內(nèi)部各房間信息。c) 添加新房間(支持重復(fù)添加)。d) 修改已存在的房間信息(支持重復(fù)修改)。e) 查詢房間數(shù)據(jù)(按房間號(hào)、容量)(支持重復(fù)查詢)。f) 添加自定義對(duì)結(jié)果排序顯示功能。g) 退出系統(tǒng)及一些基本的用戶友好的程序設(shè)計(jì)功能(各種錯(cuò)誤處理)2 存儲(chǔ)數(shù)據(jù)的描述在類定義中有以下成員:實(shí)現(xiàn)上述功能的成員函數(shù)接口public:Hotel();virtual Hotel();Hotel(int n,int v,int l,int p,in
2、t u):RoomNum(n),Capacity(v),Level(l),Price(p),used(u) void Look_through();void Reset_room(int x);void Show_room();friend void menu();friend void quit();friend void Init_room();friend Hotel Add_room();friend void Query(int n,int total);私有數(shù)據(jù)表示:private:int RoomNum; 房間號(hào)int Capacity;房間容量char Level;房間等級(jí)in
3、t Price;房間價(jià)格int used;是否預(yù)定static int total; 靜態(tài)常量用來跟蹤總房間數(shù)目信息概要設(shè)計(jì)說明書3在該賓館信息管理系統(tǒng)的設(shè)計(jì)中,根據(jù)功能要求抽象出類成員函數(shù),并采用對(duì)象數(shù)組存儲(chǔ)房間,用一個(gè)Hotel 類封裝起來。通過友元函數(shù)訪問私有數(shù)據(jù)從而實(shí)現(xiàn)信息管理系統(tǒng)的功能。在運(yùn)行過程中string password(string co) 實(shí) 現(xiàn) 了 加 密 函 數(shù) 實(shí) 現(xiàn) 密 碼 登 陸 。 void Hotel:Look_through()支持單個(gè)房間瀏覽,Hotel Add_room()實(shí)現(xiàn)了新房間的重 復(fù)添加功能,void Hotel:Reset_room(int
4、 x)實(shí)現(xiàn)了房間信息連續(xù)重置功能,void Query(int n,int total)函數(shù)實(shí)現(xiàn)了支持重復(fù)查詢房間并允許自定義房問號(hào)和價(jià)格 排序顯示的功能,void quit() 退出系統(tǒng)登錄功能。并在每一步都給出了較為有好的用戶提示,運(yùn)行中整體邏輯清晰,并實(shí)現(xiàn)了對(duì)錯(cuò)誤輸入的重新處理。用 戶只需按著運(yùn)行提示即可。4 源程序Main.cpp#include <iostream>#include<algorithm>#include<string>#include<set>#include"Hotel.h"#include<
5、windows.h>using namespace std;static int total=13;int main()cout<<"nWelcome to information management system !n "cout<<"*nn login: bbbb"string str1 ,str2;while(cin>>str1).get()cout<<"Password: "getline(cin,str2);if(str1="cbam"&&a
6、mp;str2=password("c bam")break;elseII.cout<<"Password error! please login againnlogin:cout<<"nLogin success!nn 自動(dòng)轉(zhuǎn)入千頁(yè) "Sleep(3000);system("cls");menu();while(1) int select;cin>>select;if(select=9)menu();cin>>select;switch(select)case 0:quit(
7、);return 0;case 1:cout<<" 房間號(hào)容量等級(jí) 價(jià)格 是否預(yù)定n"for(int i=0; i<total; i+)hoteli.Look_through();cout<<" 返回主菜單請(qǐng)單擊"9"n"break;case 2:hoteltotal+=Add_room();break;case 3:cout<<" 要修改的房間號(hào):_b"int num;cin>>num;hotelnum-1.Reset_room(num);break;case
8、 4:cout<<" 輸入您查詢房間的方式(房間號(hào)"1" or 容量 "2"n"int way;cin>>way;Query(way,total);break;default:cout<<" 請(qǐng)重新在菜單中選擇n"break;return 0;Hotel.h#ifndef HOTEL_H#define HOTEL_H#include<iostream>#include<vector> using namespace std;/ 存儲(chǔ)臨時(shí)對(duì)象以便操作stru
9、ct HOTEL_int num,vo,p;char l;int u;HOTEL_(int n=0,int v=0,int pp=0,char ll='a',int uu=0)/ 構(gòu)造函數(shù) num=n;vo=v;p=pp;l=ll;u=uu; / 重載 <運(yùn)算符bool friend operator <(HOTEL_ a,HOTEL_ b) return a.p<b.p;/ 一個(gè)賓館房間類class Hotelpublic:Hotel();virtual Hotel();Hotel(int n,int v,int l,int p,int u):RoomNum
10、(n),Capacity(v),Level(l),Price(p),used(u) void Look_through();void Reset_room(int x);void Show_room();friend void menu();friend void quit();friend void Init_room();friend Hotel Add_room();friend void Query(int n,int total);private:int RoomNum;int Capacity;char Level;int Price;int used;static int tot
11、al;#endif / HOTEL_HHotel:Hotel()/ctorHotel:Hotel()/dtor主菜單void menu()cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;cout<<"n-歡迎訪問賓館
12、信息內(nèi)部管理系統(tǒng)-n"cout<<"nn1-訪問房間信息-n"cout<<"n-2-增加新房間-n"cout<<"n3-修改房間數(shù)據(jù)-n"cout<<"n4-查詢房間數(shù)據(jù)-n"cout<<"n0-退出此系統(tǒng)n"cout<<"n>>>>>>>>>>>>>>>>>>>>>>>
13、;>>>>>>>>>>>>>>>>>>>n"加密函數(shù),生成密碼string password(string co)for(int i=0; i<co.size(); i+)if(coi!='')coi=25+'a'*2-coi;"<<Level"9""<<endl;reverse(co.begin(),co.end();return co;void Hotel:Look_
14、through()/ 訪問某房間信息cout<<" "<<RoomNum<<""<<Capacity<<"< <""<<Price<<" "<<used<<endl;/ 實(shí)現(xiàn)添加功能Hotel Add_room()cout<<"輸入新房間信息:nn"int n,v,p,u;char l;cout<<"房間號(hào):_bb"cin&
15、gt;>n;cout<<"房間容量:_bb "cin>>v;cout<<”房間等級(jí):_b"cin>>l;cout<<"房間價(jià)格:_bb "cin>>p;cout<<"設(shè)定預(yù)訂情況:_bb "cin>>u;Hotel x;x=Hotel(n,v,l,p,u);cout<<"n 新房間信息已添加完畢!返回菜單請(qǐng)按return x;/ 實(shí)現(xiàn)修改功能void Hotel:Reset_room(int x)cou
16、t<<"請(qǐng)輸入需要修改的房間信息:n"cout<<"1- 房間容量 "<<endl;cout<<"2- 房間價(jià)格n"< <"3-房間等級(jí)n"< <"4- 是否已定n"int a;while(cin>>a)/ 循環(huán)支持重復(fù)修改switch(a)case 1:int cnt;cout<<" 容量修改為:_b"cin>>cnt;Capacity=cnt;break;case
17、2:int price;cout<<" 價(jià)格修改為:_b"cin>>price;Price=price;break;case 3:char level;cout<<" 房間等級(jí)修改為:_b"cin>>level;level=level;break;case 4:int booked;cout<<" 預(yù)定情況修改為:_b"cin>>booked;used=booked;break;cout<<"n 此房間信息修改完畢,繼續(xù)修改請(qǐng)按"1
18、", 返回菜單請(qǐng)按"9""<<endl;cin>>a;if(a=9) / 返回菜單直接return ;menu();return ;cout<<"請(qǐng)輸入需要修改的房間信息:_bb"Hotel hotel53= Hotel(01,2,'a',300,0),Hotel(02,4,'a',400,0),Hotel(03,3,'b',100,0),Hotel(04,5,'b',200,0),Hotel(05,4,'c',200,
19、0),Hotel(06,2,'c',240,0),Hotel(07,3,'d',130,0),Hotel(8,1,'d',110,0),Hotel(9,5,'d',130,0),Hotel(10,4,'d',430,0),Hotel(11,4,'d',230,0),Hotel(12,3,'d',330,0),Hotel(13,4,'d',730,0);/ 實(shí)現(xiàn)查詢功能void Query(int n,int total)/ 按房間號(hào)查找if(n=1)while(1)/
20、 實(shí)現(xiàn)重復(fù)查找int flag=1;/ 標(biāo)記是否查找成功cout<<"n 您要查找的房間號(hào):_b"int roomNumber;cin>>roomNumber;for(int i=0; i<total; i+)if(hoteli.RoomNum=roomNumber)flag=0;cout<<"查找成功! nn以下房間滿足您的查詢要求:n"<<endl;cout<<"房間號(hào) 容量 等級(jí)價(jià)格是否預(yù)定n"hoteli.Show_room();cout<<&quo
21、t;n 是否繼續(xù)查詢房間(Y|N)?_b "char ch;while(cin>>ch) / 錯(cuò)誤處理支持重復(fù)選擇直到選擇合理 while(cin.get()!='n') / 吃掉多余緩沖區(qū)字符continue;if(ch='Y') break;else if(ch='N') menu();return ;elsecout<<"nerror ! Bad input;input process continue.n n 是否繼續(xù)查詢房間(Y|N)?_b "if(flag) /說明查找不存在滿足情
22、況cout<<"n 您所要查找的房間不存在!請(qǐng)重新查找按 1 或返回菜單雙擊"9"n"int choose;cin>>choose;if(choose=9)return ;elsecontinue;else if(n=2)/ 按照房間容量查找loop:int capacity;cout<<"n 請(qǐng)輸入房間容量:_bb"cin>>capacity;int flag=1;/ 標(biāo)記成功與否vector<HOTEL_>dict; / 將臨時(shí)對(duì)象push 容器for(int i=0;
23、i<total; i+)if(hoteli.Capacity=capacity)if(flag)/ 查找成功flag=0;cout<<"n( 默認(rèn)房間號(hào)遞增排序)n 以下房間滿足您的查詢要求:"<<endl; cout<<"房間號(hào)容量 等級(jí)價(jià)格 是否預(yù)定n"/ 構(gòu)造對(duì)象HOTEL_x=HOTEL(hoteli.RoomNum ,hoteli.Capacity,hoteli.Price,hoteli.Level,hoteli.used);dict.push_back(x);hoteli.Show_room();/
24、默認(rèn)房間號(hào)升序if(flag)/ 查找不成功cout<<" 您所要查找的房間不存在!請(qǐng)重新查找按 1 或返回菜單雙擊9"<<endl;int select;cin>>select;/ 重新選擇查詢if(select=1)goto loop;elsereturn ;else /查找成功情況下選擇一系列操作cout<<"nn 按 -"1" 以價(jià)格遞增排序,繼續(xù)查詢房間(Y|N)?_bb, 按 -"9"返回主菜單n"char choose;while(cin>>
25、choose)while(cin.get()!='n')continue;if(choose='9')menu();return ;if(choose='Y')goto loop;else if(choose='N')menu();return ;else if(choose = '1')cout<<"n 以下房間滿足您的查詢要求:n"sort(dict.begin(),dict.end(); / 對(duì)結(jié)果按照價(jià)格升序for(vector<HOTEL_>:iterator
26、it=dict.begin(); it!=dict.end(); it+)cout<<" "<<(*it).num<<""<<(*it).vo<<"<<(*it).l<<""<<(*it).p<<"<<(*it).u<<endl;cout<<"是否繼續(xù)查詢房間(Y|N) ?_b" /此時(shí)同樣支持 繼續(xù)查詢 功能while(cin>>choos
27、e)while(cin.get()!='n')/ 錯(cuò)誤處理continue;if(choose='Y')goto loop;else if(choose ='N') menu();return ;elsecout<<"請(qǐng)重新選擇(Y|N) _b" else/ 對(duì)于以上情況都沒有正確選擇同樣支持重新選擇cout<<"n 錯(cuò)誤!按-"1" 以價(jià)格遞增排序,繼續(xù)查詢房間(Y|N)?_bb, 按 -"9" 返回主菜單n"else /對(duì)于查詢方式選擇有誤
28、亦支持重新查詢cout<<" 查 詢 方 式 有 誤 ! 重 新 輸 入 查 詢 方 式 ! 按 "1" 或 返 回 主 菜 單 雙 擊 "9""<<endl;int select;cin>>select;if(select!=1)return ;cout<”輸入您查詢房間的方式(房間號(hào) "1" or容量"2" ) n"int way;cin>>way;Query(way,total); / 重新調(diào)用函數(shù)cout<<&q
29、uot;n 返回主菜單請(qǐng)單擊"9"n"void Hotel: Show_room()/ 顯示房間信息cout<<" "<<RoomNum<<""<<Capacity<<""<<Level<<""<<Price<<" "<<used<<endl;void quit()/ 退出函數(shù)cout<<"對(duì)此系統(tǒng)信息的更新完畢!
30、歡迎使用n"return ;5測(cè)試分析進(jìn)入賓館管理系統(tǒng)前,首先就要通過密碼登錄驗(yàn)證,支持重新驗(yàn)證。驗(yàn)證成功后進(jìn)入歡迎界面(主菜單)用戶按照需求即可進(jìn)行選擇服務(wù)類別,并在每次使用后詢問是否繼續(xù)并每次給出返回主菜單的提示,在測(cè)試過程中確實(shí)出現(xiàn)了多邏輯 bug , 但由于面向?qū)ο蟮奶匦?,修改起來十分方便高效,已基本可以滿足客戶。用戶完全可以按照傻瓜界面提示進(jìn)行。文本末附截圖。6 總結(jié)報(bào)告C+程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)一門重要的專業(yè)基礎(chǔ)課。此次課程設(shè)計(jì)以C+ 程序設(shè)計(jì)語(yǔ)言為基礎(chǔ),通過完成此次課程設(shè)計(jì)題目的構(gòu)思、編寫、調(diào)試、運(yùn)行工作, 進(jìn)一步掌握面向過程和面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法和編程技巧。鞏固了所學(xué)的理論知識(shí),并進(jìn)一步使理論與實(shí)際相結(jié)合,從而提高了自我分析解決問題的能力。并進(jìn)一步感受到“程序員的天敵是無盡的需求”。設(shè)計(jì)中遇到的錯(cuò)誤:在 main 函數(shù)中定義的對(duì)象數(shù)組,一開始用引用傳遞對(duì)象數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆紅河市重點(diǎn)中學(xué)高三第二次模擬考試英語(yǔ)試卷含解析
- 四川省資陽(yáng)市樂至中學(xué)2025屆高三第二次模擬考試語(yǔ)文試卷含解析
- 《屈原列傳》課件 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修中冊(cè)
- 2025屆云南省江城縣第一中學(xué)高三第三次模擬考試英語(yǔ)試卷含解析
- 2025屆甘肅省慶陽(yáng)六中高考全國(guó)統(tǒng)考預(yù)測(cè)密卷語(yǔ)文試卷含解析
- 四川大學(xué)附屬中學(xué)2025屆高三適應(yīng)性調(diào)研考試英語(yǔ)試題含解析
- 上海市浦東區(qū)2025屆高三下學(xué)期一模考試語(yǔ)文試題含解析
- 韶關(guān)市重點(diǎn)中學(xué)2025屆高三第二次聯(lián)考語(yǔ)文試卷含解析
- 安徽省泗縣樊集中學(xué)2025屆高三下第一次測(cè)試語(yǔ)文試題含解析
- 2025屆成都市樹德中學(xué)高考全國(guó)統(tǒng)考預(yù)測(cè)密卷語(yǔ)文試卷含解析
- 北斗衛(wèi)星導(dǎo)航系統(tǒng)構(gòu)成課件講解
- 2024年八年級(jí)道德與法治上冊(cè) 第四單元 維護(hù)國(guó)家利益 第八課 國(guó)家利益至上教案 新人教版
- YB-T+4190-2018工程用機(jī)編鋼絲網(wǎng)及組合體
- 簡(jiǎn)述光纖溫度傳感器的原理及應(yīng)用
- 義烏市建筑工程質(zhì)量通病防治措施100條(2022版本)
- 突發(fā)公共衛(wèi)生事件應(yīng)急培訓(xùn)課件
- 教科版四年級(jí)上冊(cè)科學(xué)期末測(cè)試卷及參考答案(完整版)
- 執(zhí)行信息屏蔽申請(qǐng)書
- 2024年共青團(tuán)團(tuán)校考試入團(tuán)考試題庫(kù)及答案
- 第四節(jié)任務(wù)4 船舶縱傾講解
- 沙盤模擬運(yùn)營(yíng)(山東聯(lián)盟)智慧樹知到期末考試答案章節(jié)答案2024年煙臺(tái)理工學(xué)院
評(píng)論
0/150
提交評(píng)論