<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C++實現賓館房間管理系統的具體程式碼,供大家參考,具體內容如下
設計一個程式實現對賓館房間的基本管理,可以實現:客房資訊的錄入功能;客人入住登記、客人退房結算;客房資訊瀏覽功能,瀏覽全部客戶的資訊,客房資訊和客戶資訊分別儲存於不同檔案;客房資訊查詢,查詢空房間情況,實現按房間號查詢等。
(1)使用物件導向程式設計思想編寫開發過程中需要用到的類,比如:至少包含四個類:日期類,客房類,主要包含客房資訊(房號型別,是否有客人等)及相關操作;客人類,主要完 成客戶資訊(身份證,入住時間,姓名,性別等)的相關操作;管理類實現對客房的管理。
(2)輸入和輸出可以使用文字檔案重定向輸入(儲存資料為磁碟檔案);也可以使用標準輸入輸出進行(提交時需要提交TXT格式輸入資料)。比如:room.txt 的檔案,檔案中應包含 20 條以上記錄(房間的初始狀態),guest.txt 的文字檔案,包含 10 條以上客人記錄。 在執行程式時自動載入。
(3)基本功能要求具有增、刪、改、查。
基本流程圖
#include<iostream> #include<fstream> #include<string> #include<iomanip> #include<windows.h> #include<conio.h> #define Max 100 using namespace std; class Data//日期類,記錄交易時間 { public: Data(){}//預設建構函式 ~Data(){}//解構函式 void SetDate(int year,int month,int day)//接收輸入的日期 { this->year=year; this->month=month; this->day=day; } int getyear(){ return year; } int getmonth(){ return month; } int getday(){ return day; } private: int year; int month; int day; }; class Room { public: Room *r[Max];//房間物件指標陣列 int Room_count; //記錄房間數量 Room(int Number,string Type,double Price,string Whether)//建構函式 { this->Number=Number; this->Type=Type; this->Whether=Whether; this->Price=Price; } int InputNumber() {return Number;} string InputType(){return Type;} string InputWhether(){return Whether;} double InputPrice(){return Price;} void SetWether(string _state) {Whether=_state;} void show() {cout<<"房號: "<<Number<<"t"<<"房間型別: "<<Type<<"t"<<"房間狀態: "<<Whether<<"t"<<"價格: "<<Price<<endl;} protected: int Number; //房號 string Type;//型別 string Whether;//是否有客人 double Price;//價格 }; class Guest { public: Guest *g[Max]; //客人物件指標陣列 int Guest_count; //記錄客人數量 Guest(int number,string Name,int Id,string sex,string Intime,int days) //建構函式 { this->Name=Name; this->Id=Id; this->sex=sex; this->number=number; this->Intime=Intime; this->days=days; } int InputNumber(){return number;} string InputName(){return Name;} string InputSex(){return sex;} int InputDays(){return days;} string InputIntime(){return Intime;} int InputId(){return Id;} void show() { cout<<"顧客姓名: "<<Name<<"t 身份證號: "<<Id<<"t性別: "<<sex<<"t入住時間: "<<Intime<<"t入住天數: "<<days<<endl; } protected: int number;//房號 string Name;//顧客姓名 int Id;//身份證號 string sex;//性別 string Intime;//入住時間 int days; //入住天數 }; class Manage { public: Guest *g[Max]; //客人物件指標陣列 int Guest_count; //記錄客人數量 Room *r[Max];//房間物件指標陣列 int Room_count; //記錄房間數量 /*操作函數*/ void IncreaseRoom();//新增客房資訊 void Check_In(); //刪除客房資訊,辦理入住 void Check_Out(); //退房 int Payment();//結賬 void Display(int n);//瀏覽所有資訊(1瀏覽房間,2瀏覽顧客) void ReadData(); //從檔案中獲取房間和顧客的資訊 void WriteData(int n);//向檔案中寫入所有的資訊 void WriteRoom(Room *r);//客房資訊寫入 void WriteGuest(Guest *g);//顧客資訊寫入 /*查詢選單 */ void SearchMenu();//查詢主選單 void SearchType();//查詢所有空房間; void SearchNumber();//按房間號查詢 }; static int i=0; void Manage::SearchMenu() { int n; system("cls"); cout<<"===================================="<<endl; cout<<"= 查 詢 菜 單 ="<<endl; cout<<"===================================="<<endl; cout<<"========= 1、查 詢 空 房 ======="<<endl; cout<<"========= 2、按房間號查詢 ======="<<endl; cout<<"===================================="<<endl; cout<<endl<<"請選擇: "; cin>>n; switch(n) { case 1:SearchType(); break; case 2:SearchNumber();break; } } void Manage::IncreaseRoom()//新增房間 { string type,Whether; double price; int number; cout<<"請輸入房號: "; cin>>number; cout<<"請輸入房間型別: "; cin>>type; cout<<"請輸入價格: "; cin>>price; cout<<"請輸入房間狀態: "; cin>>Whether; WriteRoom(new Room(number,type,price,Whether)); } void Manage::Check_In()//刪除房間資訊,即入房登記 { ReadData(); SearchType(); string name,intime,sex,type; int days,number; int id; cout<<"請輸入房號: "; cin>>number; cout<<"請輸入顧客的姓名: "; cin>>name; cout<<"請輸入顧客的身份證號: "; cin>>id; cout<<"請輸入顧客的性別: "; cin>>sex; cout<<"請輸入入住日期: "; cin>>intime; cout<<"請輸入入住天數: "; cin>>days; for(i=0;i<Room_count;i++) { if(number==r[i]->InputNumber()) { WriteGuest(new Guest(number,name,id,sex,intime,days)); r[i]->SetWether("有"); WriteData(1); cout<<"住房登記成功!"<<endl; } } } int Manage::Payment()//退房結賬 { ReadData(); Display(2); int number; cout<<"請輸入房號: "; cin>>number; for(i=0;i<Guest_count;i++) { if(number==g[i]->InputNumber()) { return i; } } } void Manage::Check_Out() { int x=Payment(); ReadData(); for(i=0;i<Room_count;i++) { if(g[x]->InputNumber()==r[i]->InputNumber()) { r[i]->SetWether("無"); cout<<"退房成功,您一共消費了 "<<g[x]->InputDays() *r[i]->InputPrice()<<" 元"<<endl; WriteData(1); } } g[x]=NULL; WriteData(2); } void Manage::Display(int n)//瀏覽所有房間資訊 { ReadData(); switch(n){ case 1: for(i=0; i<Room_count-1; i++) { cout<<"房號:"<<r[i]->InputNumber()<<"t房間型別: "<<r[i]->InputType()<<"t房間價格: "<<r[i]->InputPrice()<<"t房間狀態: "<<r[i]->InputWhether()<<endl<<endl; } break; case 2: for(i=0;i<Guest_count-1;i++) { cout<<"房間號: "<<g[i]->InputNumber()<<"t顧客姓名: "<<g[i]->InputName()<<"t身份證號: "<<g[i]->InputId()<<"t顧客性別:"<<g[i]->InputSex()<<"t入住時間: "<<g[i]->InputIntime()<<"t入住天數: "<<g[i]->InputDays()<<endl<<endl; } break; } } void Manage::ReadData() { fstream Rin,Gin; Rin.open("room.txt",ios::in);//開啟檔案 if(!Rin) { cout<<"未找到room檔案,請先建立檔案!"<<endl; return; } Room_count=0; while(!Rin.eof()){ string type,Whether; double price; int number; Rin>>number>>type>>price>>Whether; r[Room_count++]=new Room(number,type,price,Whether); } Rin.close();//關閉檔案 Gin.open("guest.txt",ios::in); if(!Gin) { cout<<"未找到guest檔案,請先建立檔案!"<<endl; return; } Guest_count=0; while(!Gin.eof()){ string name,intime,sex; int days,number; int id; Gin>>number>>name>>id>>sex>>intime>>days; g[Guest_count++]=new Guest(number,name,id,sex,intime,days); } Gin.close(); } void Manage::WriteData(int n) { switch(n) { case 1: { ofstream Rout("room.txt",ios::trunc); //用二進位制的方法開啟顧客檔案 ,覆蓋掉之前的所有資訊重新寫入 for(i=0; i<Room_count-1; i++) //根據顧客數量判斷輸入幾組資訊 { if(r[i]!=NULL) { WriteRoom(r[i]);//呼叫建構函式來建立顧客資訊 } } Rout.close(); break;} case 2:{ ofstream Gout("guest.txt",ios::trunc); //用二進位制的方法開啟顧客檔案 ,覆蓋掉之前的所有資訊重新寫入 for(i=0; i<Guest_count-1; i++) //根據顧客數量判斷輸入幾組資訊 { if(g[i]!=NULL) { WriteGuest(g[i]);//呼叫建構函式來建立顧客資訊 } } Gout.close();break;} } } void Manage::WriteRoom(Room *r)//儲存單個資訊 { ofstream Rout("room.txt",ios::app);//開啟房間檔案,追加讀寫,不會覆蓋掉之前的所有資訊 Rout<<r->InputNumber()<<"t"<<r->InputType()<<"t"<<r->InputPrice()<<"t"<<r->InputWhether()<<endl; Rout.close(); } void Manage::WriteGuest(Guest *g)//儲存單個資訊 { ofstream Gout("guest.txt",ios::app);//開啟顧客檔案,追加讀寫,不會覆蓋掉之前的所有資訊 Gout<<g->InputNumber()<<"t"<<g->InputName()<<"t"<<g->InputId()<<"t"<<g->InputSex()<<"t"<<g->InputIntime()<<"t"<<g->InputDays()<<endl; Gout.close(); } void Manage::SearchType() { ReadData(); for(i=0;i<Room_count;i++) { if(r[i]->InputWhether()=="無") { r[i]->show();} } } void Manage::SearchNumber() { ReadData(); int number,n; cout<<"請輸出要查詢的房間號: "; cin>>number; for(i=0;i<Room_count-1;i++) { if(number==r[i]->InputNumber()) r[i]->show(); } for(i=0;i<Guest_count-1;i++) { if(g[i]->InputNumber()==number) g[i]->show(); } } int main() { Manage M; int n; while(1) { system("cls"); cout<<endl<<endl<<endl<<"ttt賓 館 房 間 管 理 系 統 "<<endl<<endl; cout<<"ttt1、房 間 信 息 的 錄 入"<<endl<<endl; cout<<"ttt2、顧 客 入 住 房 間 登 記"<<endl<<endl; cout<<"ttt3、顧 客 退 房 結 賬"<<endl<<endl; cout<<"ttt4、所 有 房 間 信 息 顯 示"<<endl<<endl; cout<<"ttt5、所 有 顧 客 的 顯 示"<<endl<<endl; cout<<"ttt6、查 詢 所 有 空 房 間"<<endl<<endl; cout<<"ttt7、查 詢 指 定 的 房 間 號"<<endl<<endl; cout<<"ttt8、退 出 系 統"<<endl<<endl; cout<<endl<<"請選擇: "; cin>>n; cout<<endl<<endl; switch(n) { case 1:M.IncreaseRoom();getch();break; case 2:M.Check_In();getch();break; case 3:M.Check_Out();getch();break; case 4:M.Display(1);getch();break; case 5:M.Display(2);getch();break; case 6: M.SearchType();getch();break; case 7: M.SearchNumber();getch();break; case 8:exit(0); } } 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