<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C++實現簡單酒店管理系統的具體程式碼,供大家參考,具體內容如下
酒店管理系統設計報告
題目要求如下:
某酒店有客房若干間,其中客房分為不同等級,如豪華、標準、普通等,客房床位數也不同。例如,豪華套房有4個床位,400元/晚;標準客房2個床位,200元/晚;普通客房1個床位,100元/晚。
顧客分金卡會員、銀卡會員、普通會員及非會員,其享受的折扣不同。例如,金卡會員可享受8折優惠,銀卡會員可享受9折優惠,普通會員享受95折優惠,非會員不享受優惠。
當顧客連續入住多天時,也可享受一定的折扣。例如,當顧客連續入住24晚時,可享受9折優惠;連續入住58晚時,可享受85折優惠;連續入住9晚以上時,可享受8折優惠。
採用物件導向的思想,建立系統中清晰的類,分析和定義各個類,每個類中要有各自的屬性和方法,並開發一套客房管理系統,實現如下功能:
(1) 管理員:以管理員身份登入系統,查詢當前客房入住及預訂情況,並設定客房價格、顧客優惠政策等;
(2) 酒店前臺:以前臺身份登入系統,查詢當前客房入住及預訂情況,為顧客辦理入住、退房、換房等服務;顧客退房後為顧客計算消費金額並收費;
(3) 顧客:可以註冊和登入系統,使用者在查詢到心儀的客房後,登入酒店客房管理系統可提交訂單實現客房預訂;未入住酒店前1天,可取消客房預訂;顧客入住退房後可評論。
這裡的customer類名打錯了
1、系統可以三種使用者登入,分別為管理員、前臺工作人員、客戶,管理員需要特殊管理員賬戶才可以登入,客戶需要註冊賬號才可以登入系統,使用者登入成功後轉至前臺工作人員為其服務。
2、 管理人員頁面有查詢房間狀態,設定優惠政策,新建房間等選項。
① 查詢房間狀態:返回所有房間號,房間型別和當前狀態
② 設定優惠政策:對已有的區間設定打折力度
③ 新建房間:通過房間號和房間型別來新建房間
3、 前臺頁面提供客房查詢,辦理入住,提前預約,辦理退房等功能
① 查詢客房資訊:向用戶提供房間資訊來選擇。
② 辦理入住:獲取使用者入住時間和離開時間為客戶辦理入住。
③ 提前預約:獲取使用者入住時間和離開時間為客戶提前預約。
④ 辦理退房:獲取退房房間號,辦理退房並且返回客戶需付費金額。
4、客戶介面,無賬號註冊賬號,通過賬號密碼的形式登入,登入成功後轉至前臺頁面。
1、 首頁
2、 管理員
登入管理員頁面
建立房間
依次建立五個房間(建立數量小於40)
可查詢當前的狀態
設定優惠政策
3、 前臺
查詢當前房間狀態
輸入入住時間和退房時間,會顯示當前房間狀態,可進行選擇,選擇後會更具入住時間長短顯示客戶所享受的優惠政策,8折(此前在管理員狀態設定過)
房間狀態變為有客
若入住有客的房間,會顯示已經有客人了,選擇其他房間
預約房間也是同理
並且房間變成已經被預約
退房,入住7天豪華房間400x7=2800,但是享受8折,因此收費2240,繳費後可以留下評論
並且此時房間狀態也變成了空
4、 客戶
客戶平臺
註冊賬號
登入賬號,登入成功轉到前臺
如果輸入不存在的賬號,會報錯
中途遇見了一個問題想了很久,客戶請求入住後通過reception類入住,reception類中是通過改變room型別實現的,然而每次入住後房間的狀態在reception類中已經改變,卻在查詢時沒有變化,最後將reception類的checkin函數改為返回room型別才成功,當然預約和退房也是同理。原來客戶提交的申請在reception類中建立一個新的room,並不是我們想要操作的room,因此需要返回修改後的房間才可以得到正確的結果。
設計程式碼如下:
#include<iostream> using namespace std; #include<string> enum Type { luxury, standard, ordinary }; enum Status { used, reserved, empty1 }; struct Time { int year; int month; int day; }; class room { public: room(int roomNo, Type roomType) { roomID = roomNo; type = roomType; roomStatus = empty1; if (type == luxury) { price = 400; name = "豪華間"; } else if (type == standard) { price = 200; name = "標準間"; } else if (type == ordinary) { price = 100; name = "普通間"; } }; room() {}; //顯示房間當前資訊 void showInformation() { cout << "房間號:" << roomID << endl; cout << "型別:" << name << endl; if(roomStatus == 0) cout << "當前狀態:有客" <<endl; else if(roomStatus == 1) cout << "當前狀態:已被預約" << endl; else cout << "當前狀態:空房間" << endl; cout << endl; } //辦理入住 void checkIn(Time beginTime, Time endTime) { this->begin = beginTime; this->end = endTime; this->roomStatus = used; } void roomReserved(Time beginTime, Time endTime) { roomStatus = reserved; begin = beginTime; end = endTime; }; //辦理退房 float checkOut() { roomStatus = empty1; int day = (end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day); float polity; if (day > 2 && day <= 4) { polity = polity1; } else if (day >= 5 && day <= 8) { polity = polity2; } else if (day >= 9) { polity = polity3; } else { polity = 1; } float money = ((end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day))*price*polity; return money; } int showstatus() { return roomStatus; } int getRno(){ return roomID; } void setPolity(float a, float b, float c) { polity1 = a; polity2 = b; polity3 = c; } int getRoomnumber() { return roomnumber; } friend class manager; friend class reception; private: int roomID; static float polity1; static float polity2; static float polity3; static int roomnumber; Type type; string name; float price; Status roomStatus; Time begin; Time end; }; class manager { public: manager() {}; room roomcreate(int No, Type roomtype) { room Room(No, roomtype); Room.roomnumber++; return Room; } void checkInformation(room Room) { Room.showInformation(); } void setPolity() { room Room1; float a, b, c; cout << "請分別設定入住2-4天,5-8天或9天以上的優惠政策,用1以內小數表示打折力度" << endl; cin >> a >> b >> c; Room1.setPolity(a, b, c); cout << "設定成功" << endl; }; }; class reception { public: reception(int no) { NO = no; } void checkInformation(room Room) { Room.showInformation(); } room CheckIn(Time begin, Time end, room Room) { if (Room.showstatus() == empty1) { Room.checkIn(begin, end); cout << "預定成功!時間:" << begin.year << "年" << begin.month << "月" << begin.day << "日---" << end.year << "年" << end.month << "月" << end.day << "日" << endl; int day = (end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day); if (day > 2 && day <= 4) { polity = Room.polity1; } else if (day >= 5 && day <= 8) { polity = Room.polity2; } else if (day >= 9) { polity = Room.polity3; } else { polity = 1; } if (polity < 1) cout << "優惠打" << polity * 10 << "折" << endl; } else { cout << "房間已經被預定,請選擇其他房間" << endl; } return Room; } int getID() { return NO; } room CheckOut(room Room) { float money = Room.checkOut(); cout << "退房成功" << endl; cout << "請支付:" << money << "元"<<endl; return Room; } room Reserved(Time begin, Time end, room Room) { if (Room.showstatus() == empty1) { Room.roomReserved(begin, end); cout << "預定成功!時間:" << begin.year << "年" << begin.month << "月" << begin.year << "日---" << end.year << "年" << end.month << "月" << end.day << "日" << endl; int day = (end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day); if (day > 2 && day <= 4) { polity = Room.polity1; } else if (day >= 5 && day <= 8) { polity = Room.polity2; } else if (day >= 9) { polity = Room.polity3; } else { polity = 1; } if (polity < 1) cout << "優惠打" << polity * 10 << "折" << endl; } else { cout << "房間已經被預定,請選擇其他房間" << endl; } return Room; } private: int NO; float polity; }; class customer { public: customer(){} customer(int Count, int Key) { count = Count; key = Key; customernumber++; cout << "註冊成功!" << endl; } void signin() {}; void checkin(reception rec, Time begin, Time end, room Room) { rec.CheckIn(begin, end, Room); } void reserve(reception rec, Time begin, Time end, room Room) { rec.Reserved(begin, end, Room); } void checkout(reception rec, room Room) { rec.CheckOut(Room); } int getnumber() { return customernumber; } int getcount() { return count; } int getkey() { return key; } private: int count; int key; static int customernumber; }; int room::roomnumber = 0; int customer::customernumber = 0; float room::polity1 = 1; float room::polity2 = 1; float room::polity3 = 1; int main() { int user; int rightkey = 123; manager jasur; reception wmn(1); room Baseroom; room Room[40]; customer Customer[40]; customer baseCusomer; string comments[40]; while (true) { cout << "歡迎來到酒店預訂系統,請問你是?" << endl; cout << "1.管理員 2.前臺 3.客戶" << endl; cout << "請輸入:" << endl; cin >> user; if (user == 1) { //管理員選項 cout << "請輸入管理員密碼:" << endl; int key; cin >> key; if (rightkey == key) { cout << "歡迎來到管理員平臺歡迎您!" << endl; while (true) { cout << "1.查詢入住情況 2.設定客房優惠 3.建立房間 0.退出" << endl; int selection; cout << "請輸入:" << endl; cin >> selection; if (selection == 1) { for (int i = 0; i < Baseroom.getRoomnumber(); i++) { jasur.checkInformation(Room[i + 1]); } } else if (selection == 2) { jasur.setPolity(); } else if (selection == 3) { int entry, Rno; cout << "輸入建立房間的房間號和型別(1代表豪華間,2代表標準間,3代表普通間)" << endl; cin >> Rno >> entry; if (entry == 1) Room[Baseroom.getRoomnumber()] = jasur.roomcreate(Rno, luxury); else if (entry == 2) Room[Baseroom.getRoomnumber()] = jasur.roomcreate(Rno, standard); else if (entry == 3) Room[Baseroom.getRoomnumber()] = jasur.roomcreate(Rno, ordinary); cout << "操作成功" << endl << endl; } else if (selection == 0) { break; } } } } else if (user == 2) { cout << "歡迎來到前臺服務平臺" << endl; while (true) { fuwu: cout << wmn.getID() << "號服務員為您服務,本平臺為您提供瞭如下功能:1.查詢客房資訊 2.辦理入住 3.提前預約 4.辦理退房 0.退出" << endl; cout << "請選擇需要的服務" << endl; int selection; cin >> selection; if (selection == 1) { cout << "客房資訊如下:" << endl; for (int i = 0; i < Baseroom.getRoomnumber(); i++) { wmn.checkInformation(Room[i + 1]); } } else if (selection == 2) { Time begin, end; int Rno, index; cout << "輸入客戶入住時間:"; cin >> begin.year >> begin.month >> begin.day; cout << "輸入客戶離開時間:"; cin >> end.year >> end.month >> end.day; cout << "客房資訊如下:" << endl; for (int i = 0; i < Baseroom.getRoomnumber(); i++) { wmn.checkInformation(Room[i + 1]); } cout << "請輸入入住客房號:"; cin >> Rno; for (int i = 0; i < Baseroom.getRoomnumber(); i++) { if (Room[i + 1].getRno() == Rno) { index = i + 1; } } Room[index] = wmn.CheckIn(begin, end, Room[index]); } else if (selection == 3) { Time begin, end; int Rno, index; cout << "輸入客戶入住時間:"; cin >> begin.year >> begin.month >> begin.day; cout << "輸入客戶離開時間:"; cin >> end.year >> end.month >> end.day; cout << "客房資訊如下:" << endl; for (int i = 0; i < Baseroom.getRoomnumber(); i++) { wmn.checkInformation(Room[i + 1]); } cout << "請輸入預約客房號:"; cin >> Rno; for (int i = 0; i < Baseroom.getRoomnumber(); i++) { if (Room[i + 1].getRno() == Rno) { index = i + 1; } } Room[index] = wmn.Reserved(begin, end, Room[index]); } else if (selection == 4) { int Rno,index; cout << "請輸入退房房間號:"; cin >> Rno; for (int i = 0; i < Baseroom.getRoomnumber(); i++) { if (Room[i + 1].getRno() == Rno) { index = i + 1; } } Room[index] = wmn.CheckOut(Room[index]); cout << "歡迎留言評論您的體驗:" << endl; cin >> comments[index]; } else if (selection == 0) { break; } } } else if (user == 3) { cout << "使用者你好,歡迎您來到本酒店" << endl; while (true) { cout << "請問您有本平臺的賬號嗎?沒有可以註冊一個哦!" << endl; cout << "1.我已經有賬號了 2.註冊 0.退出" << endl; int selection; cin >> selection; if (selection == 1) { int count, key, rightcount, index = -1; x: cout << "請輸入賬號:" << endl; cin >> count; for (int i = 0; i < baseCusomer.getnumber(); i++) { if (Customer[i].getcount() == count) { index = i; } } if (index == -1) { cout << "不存在此賬號" << endl; goto x; } y: cout << "請輸入密碼:"; cin >> key; for (int i = 0; i < baseCusomer.getnumber(); i++) { if (Customer[index].getkey() == key) { cout << "登入成功!" << endl; goto fuwu; } else { cout << "密碼錯誤!" << endl; goto y; } } } else if (selection == 2) { int count, key, virity; cout << "請輸入註冊賬號:"; cin >> count; cout << endl; a: cout << "請設定密碼:"; cin >> key; cout << "請確認密碼:"; cin >> virity; if (key == virity) { customer base(count, key); Customer[baseCusomer.getnumber() - 1] = base; } else { cout << "兩次密碼不相等,重新輸入" << endl; goto a; } } else if (selection == 0) { break; } } } else { cout << "無效的選擇,重新選擇!"; } } return 0; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45