如何使用C++实现酒店管理系统
如何使用C++实现酒店管理系统
这篇文章主要介绍了如何使用C++实现酒店管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
现今大多数宾馆所提供的服务样式都各式各样,规模大小也是各有不同,但是归总下来,不可或缺的两类模块还是顾客和工作人员。由于对宾馆行业内部没有很深刻的理解,此次系统设计包括数据库和功能模块都是根据网上收集到的材料和个人认知上,简单模仿和具体实现的。
为满宾馆管理的实际需求,本系统主要实现以下功能:
1、入住登记:登记所入住房间号码,登记顾客入住时间,退房时间,个人信息(身份证号,手机号,姓名)
2、退房办理:输入已经入住的房间号,确认完毕即可退房。
3、房间查询:管理员输入正确的密码后即可对房间状态查询,和具体入住信息查询。
4、密码修改:管理员对自身密码进行修改,前提是先输入正确密码后才能实现。
5、以txt文档的形式存储信息数据。
6、使用类封装。
注:代码使用前需要先向代码中自定义路径下的Input.txt文档中预存信息
功能截图
代码:
#include<iostream>#include<iomanip>#include<string>#include<fstream>#include<sstream>#include<windows.h>#include<stdexcept>#include<conio.h>usingnamespacestd;classroom{private:introomnumber=0;//房间号intprice=0;//价格intstart_date=0;//开始结束日期intend_date=0;boolorder=0;//房间状态0/1stringname;//个人信息stringID;stringphone;public:voidgetnumber(int_number){roomnumber=_number;}intreturnnumber()const{returnroomnumber;}voidgetprice(int_price){price=_price;}intreturnprice()const{returnprice;}voidgetdate(ints,inte){if(s<1||s>31||e<1||e>31||s>=e)throwruntime_error("错误的日期!");start_date=s;end_date=e;}intreturnstartdate()const{returnstart_date;}intreturnenddate()const{returnend_date;}voidgetorder(bool_order){if(!(_order==0||_order==1))throwout_of_range("房间状态错误!");order=_order;}boolreturnorder()const{returnorder;}voidgetname(string_name){name=_name;}stringreturnname()const{returnname;}voidgetID(stringid){if(id.size()<18||id.size()>19)throwruntime_error("您的身份证号输入有误,请重新输入!(18位)");ID=id;}stringreturnID()const{returnID;}voidgetphone(stringph){if(ph.size()!=11)throwruntime_error("您的手机号输入有误,请重新输入(11位)!");phone=ph;}stringreturnphone()const{returnphone;}intsumprice(){returnprice*(end_date-start_date);}friendostream&operator<<(ostream&os,constroom*u)//输出流重载{os<<u->returnnumber()<<'\n';os<<u->returnprice()<<'\n';os<<u->returnstartdate()<<'\n';os<<u->returnenddate()<<'\n';os<<u->returnorder()<<'\n';os<<u->returnname()<<'\n';os<<u->returnID()<<'\n';os<<u->returnphone()<<'\n';returnos;}};classstandard:publicroom{};classsuite:publicroom{};classkingsize:publicroom{};voidnomorememory(){cerr<<"unabletosatisfyrequestformemory\n";abort();}//new分配异常intcheck(inta[],intsize,intsuspicion){intjudge=0;for(inti=0;i<size;i++){if(suspicion==a[i])judge=1;}if(judge==0)throwsuspicion;return0;}classfile_exception{stringfilename;public:file_exception(conststring&filename):filename(filename){}~file_exception(){}conststring&get_filename()const{returnfilename;}};voidupdate(room*p[],conststring&filename)//覆盖/更新原有文件内容{ofstreamos(filename,ios_base::binary);if(os){for(inti=0;i<6;i++){os<<p[i];}}elsethrowfile_exception(filename);os.close();}voidaddRecord(conststring&filename,room*current)//以追加模式打开文件,用于记录{ofstreamfile(filename,ios_base::app);if(file){file<<current;file.close();}elsethrowfile_exception(filename);file.close();}voidpassword(stringrightpassword){part4:stringpassword;cout<<"请输入密码:"<<endl;inti=0;charch;while((ch=_getch())!=13){password+=ch;//字符串拼接cout<<"*";}if(password!=rightpassword){cout<<"密码错误!请重新输入"<<endl;gotopart4;}cout<<"密码正确!"<<endl;fflush(stdin);}voidcheckin(room*p[],intsize,conststring&filename1,conststring&filename2){HANDLEhout=GetStdHandle(STD_OUTPUT_HANDLE);//句柄cout.width(120);SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"欢迎来到小刘酒店!\n本酒店设有标准房,商务套房和大床房.\n目前可入住房间为:"<<endl;intvacant_room[6];intj=0;inttemp,temp1;stringstr;for(inti=0;i<6;i++){if(p[i]->returnorder()==0){temp1=p[i]->returnnumber();cout<<temp1<<"、";vacant_room[j]=temp1;j++;}}cout<<endl<<"101-102是标准间.价格为100CNY每晚"<<endl;cout<<"103-104是商务套间.价格为200CNY每晚"<<endl;cout<<"105-106是大床房.价格为300CNY每晚"<<endl;part1:try{cout<<'\n'<<setiosflags(ios_base::left)<<"请输入你选择的房间号."<<endl;cout<<"共有"<<j<<"间空房."<<endl;cin>>temp;check(vacant_room,j,temp);}catch(inte){cout<<"房间"<<e<<"不可选择入住,请重新选择."<<endl;gotopart1;}room*current=NULL;for(inti=0;i<6;i++){if(p[i]->returnnumber()==temp){current=p[i];break;}}part2:try{cout<<"请输入入住日期"<<endl;cin>>temp;cout<<"请输入离店日期"<<endl;cin>>temp1;current->getdate(temp,temp1);cout<<"请输入您的姓名"<<endl;cin>>str;current->getname(str);cout<<"请输入您的身份证号"<<endl;cin>>str;current->getID(str);cout<<"请输入您的手机号"<<endl;cin>>str;current->getphone(str);current->getorder(static_cast<bool>(1));cout<<"您的消费金额";temp=current->sumprice();cout<<temp<<endl;}catch(runtime_error&e){cout<<e.what()<<endl;gotopart2;}catch(out_of_range&e){cout<<e.what()<<endl;gotopart2;}cout<<resetiosflags(ios_base::left);try{update(p,filename1);addRecord(filename2,current);}catch(file_exception&e){cout<<"Failtoopen"<<e.get_filename()<<endl;}}voidcheckout(room*p[],intsize,conststring&filename){inttemp;HANDLEhout=GetStdHandle(STD_OUTPUT_HANDLE);//句柄SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);cout<<"感谢您的光临,欢迎您下次入住!"<<endl;cout<<endl;part3:cout<<"请输入你想要退房的房间号."<<endl;cin>>temp;room*current=NULL;cout<<setiosflags(ios_base::left);intorderroom[6];intj=0;try{for(inti=0;i<6;i++){if(p[i]->returnnumber()==temp){current=p[i];}if(p[i]->returnorder()==1){orderroom[j]=p[i]->returnnumber();j++;}}check(orderroom,j,temp);}catch(inte){cout<<"房间"<<e<<"错误,请重新输入!"<<endl;gotopart3;}cout<<resetiosflags(ios_base::left);current->getorder(static_cast<bool>(0));try{update(p,filename);}catch(file_exception&e){cout<<"Failtoopen"<<e.get_filename()<<endl;}}voidsearchfor(room*p[],intsize,string&rightpassword){inttemp1;password(rightpassword);cout<<"如果您想要修改密码请输入1,2键继续"<<endl;cin>>temp1;fflush(stdin);if(temp1==1){password(rightpassword);cout<<"请输入新的密码"<<endl;rightpassword='';cin>>rightpassword;}HANDLEhout=GetStdHandle(STD_OUTPUT_HANDLE);//句柄SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<<"请输入想要查询的房间号."<<endl;cin>>temp1;for(inti=0;i<6;i++){if(p[i]->returnnumber()==temp1){cout<<p[i]<<endl;break;}}}intmain(){room*p[10];set_new_handler(nomorememory);//处理new分配异常for(inti=0;i<2;i++){p[i]=newstandard();}for(inti=2;i<4;i++){p[i]=newsuite();}for(inti=4;i<6;i++){p[i]=newkingsize();}conststringfilename1="此处填写路径\\Input.txt";conststringfilename2="此处填写路径\\Output.txt";try{ifstreamifs;//构建输入流对象,以二进制形式打开,得到文件内容ifs.open(filename1,ios_base::binary);if(ifs){for(inti=0;i<6;i++){introomnumber,price,start_date,end_date;boolorder;stringname;stringID;stringphone;ifs>>roomnumber>>price>>start_date>>end_date>>order>>name>>ID>>phone;p[i]->getnumber(roomnumber);p[i]->getprice(price);p[i]->getdate(start_date,end_date);p[i]->getorder(order);p[i]->getname(name);p[i]->getID(ID);p[i]->getphone(phone);}}elsethrowfile_exception(filename1);ifs.close();}catch(file_exception&e){cout<<"Failtoopen"<<e.get_filename()<<endl;}catch(runtime_error&e){cout<<e.what()<<endl;}catch(out_of_range&e){cout<<e.what()<<endl;}inttemp;HANDLEhout=GetStdHandle(STD_OUTPUT_HANDLE);//句柄SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);printf("▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n\n");cout<<"\t\t\t小刘酒店管理系统\n\n\t\t游客pleaseinput1.管理员pleaseinput2."<<endl;printf("\n▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n\n");cin>>temp;system("cls");if(temp==1){while(1){SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);//设置背景和字体颜色cout<<"欢迎来到小刘酒店!(游客)\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"若你想要安全退出,pleaseinput0.\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_BLUE);cout<<"若你想要入住酒店,pleaseinput1.\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);cout<<"若你想要办理退房,pleaseinput2.\n";inttemp2;stringstr;cin>>temp2;system("cls");if(temp2==0)break;if(temp2==1){checkin(p,6,filename1,filename2);}if(temp2==2){checkout(p,6,filename1);}cout<<"succeed!"<<endl;system("pause");system("cls");}}if(temp==2){while(1){SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);//设置背景和字体颜色cout<<"欢迎来到小刘酒店!(管理员)\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"若你想要安全退出,pleaseinput0.\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_BLUE);cout<<"若你想要入住酒店,pleaseinput1.\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);cout<<"若你想要办退房,pleaseinput2.\n";SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<<"若你想要查询房间信息,pleaseinput3.\n";inttemp2;stringstr;cin>>temp2;system("cls");if(temp2==0)break;if(temp2==1){checkin(p,static_cast<int>(6),filename1,filename2);}if(temp2==2){checkout(p,static_cast<int>(6),filename1);}if(temp2==3){stringrightpassword="123456";//默认初始密码searchfor(p,6,rightpassword);}system("pause");system("cls");}}return0;}
注:代码使用前需要先向代码中自定义路径下的Input.txt文档中预存信息
感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用C++实现酒店管理系统”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!