宾馆客房管理系统的设计与实现.docx
《宾馆客房管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《宾馆客房管理系统的设计与实现.docx(12页珍藏版)》请在冰点文库上搜索。
![宾馆客房管理系统的设计与实现.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/4582c87c-b9da-45d5-bd2b-b82a5204d7e4/4582c87c-b9da-45d5-bd2b-b82a5204d7e41.gif)
宾馆客房管理系统的设计与实现
源代码
#include
#include
voidinitial_room();//初始化80个房间信息
voidwelcome();//验证用户登陆,登陆成功显示欢迎信息
voidenter();//系统入口
voidbook_room();//订房
voidcheck_in();//入住
voidcheck_out();//退房
voidinquire();//信息查询
inti=0;
structRoom//Room结构体
{intnumber;
intdank;
intprice;
intstate;
};
classCustomer
{public:
Customer();
voidset_name(char*n){strcpy(name,n);}
voidset_ID(char*p){strcpy(ID,p);}
voidset_room_number(intn){room_number=n;}
voidset_day(intd){day=d;}
voidset_prepaid(intp){prepaid=p;}
char*get_name(){returnname;}
char*get_ID(){returnID;}
intget_room_number(){returnroom_number;}
intget_day(){returnday;}
intget_prepaid(){returnprepaid;}
virtual~Customer();
private:
charname[10],ID[19];
introom_number;
intprepaid;
intchange;
intday;
};
Customer:
:
Customer()
{cout<<"请您输入顾客的姓名\n";cin>>name;
cout<<"请您输入顾客的身份证号码\n";cin>>ID;
prepaid=change=day=0;
}
Customer:
:
~Customer()
{cout<<"该顾客退房成功!
"<Roomroom[80];Customer*customer[80];
voidmain()//程序入口从这里开始运行
{charchoice='1';
initial_room();//初始化80个房间的信息,分四个等级
welcome();//验证用户登陆,登陆成功显示欢迎信息
while(choice=='1')
{enter();//根据用户的选择执行不同的功能cout<cout<<"继续使用本系统请按\"1\",退出请按\"2\"!
";
cin>>choice;cout<//系统登陆界面
voidwelcome()//验证用户登陆,登陆成功显示欢迎信息
{charname[4],code[7];
cout<<"请输入用户名和密码(以空格隔开):
\n";cin>>name>>code;
while((strcmp(name,"0")!
=0)||(strcmp(code,"1")!
=0))
{cout<<"用户名或密码输入有误,请重新输入!
\n";cin>>name>>code;}cout<cout<<"▲----------------------------------------▲\n";
cout<<"△欢迎使用宾馆客房管理系统!
△\n";
cout<<"▲-----------------------------------------▲\n";
cout<}
//系统入口
voidenter()
{intkind_of_service;
cout<<"请选择服务类别:
订房、入住、退房还是查询?
\n";
cout<<"1->定房2->入住3->退房4->查询:
";
cin>>kind_of_service;
if((kind_of_service>4)||(kind_of_service<1))
{cout<<"您的输入有误,请重试!
\n";cin>>kind_of_service;}
else
switch(kind_of_service)
{case1:
book_room();break;
case2:
check_in();break;
case3:
check_out();break;
case4:
inquire();break;}}
//订房实现
voidbook_room()
{customer[i]=newCustomer;
introom_standard,day;
cout<<"请您选择预定房间的标准:
\n";
cout<<"1.单人间/天150元\n2.双人间/天200元\n3.标准间/天300元\n4.总统套房/天600元\n";
cin>>room_standard;
cout<<"请输入预定天数\n";cin>>day;
customer[i]->set_day(day);
switch(room_standard)
{intn;
case1:
cout<<"住房费用总共为:
"<for(n=0;n<20;n++)//从第一个级别的房间中查找一个空闲的房间
{if(room[n].state==0)//state=0表示该住房没有被预定的
{cout<<"预定成功★房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;
case2:
cout<<"住房费用总共为:
"<for(n=20;n<40;n++)
{if(room[n].state==0)
{cout<<"预定成功★房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;
case3:
cout<<"住房费用总共为:
"<for(n=40;n<60;n++)
{if(room[n].state==0)
{cout<<"预定成功★房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;
case4:
cout<<"住房费用总共为:
"<for(n=60;n<80;n++)
{if(room[n].state==0)
{cout<<"预定成功★房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;}
i++;}//住房的顾客数加1
//入住登记
voidcheck_in()
{charname1[10],id1[19];
intding_or_no,prepaid;
cout<<"该顾客订房了吗?
(1->订了2->没订)";
cin>>ding_or_no;
if(ding_or_no==1)
{cout<<"请输入顾客的姓名:
"<cin>>name1;
cout<<"请输入顾客的身份证号码:
"<cin>>id1;
for(intj=0;j<=i;j++)
{if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0))//查找该顾客的定房信息
{intnum=customer[j]->get_room_number();//取得定房的房间号
cout<<"顾客"<房间号码为:
"<switch(num/100)
{case6:
prepaid=customer[j]->get_day()*150;customer[j]->set_prepaid(prepaid);
cout<<"请收房费"<"<room[num%100-1].state=2;//修改房间状态为入住状态break;
case7:
prepaid=customer[j]->get_day()*200;customer[j]->set_prepaid(prepaid);
cout<<"请收房费"<"<case8:
prepaid=customer[j]->get_day()*300;customer[j]->set_prepaid(prepaid);
cout<<"请收房费"<"<case9:
prepaid=customer[j]->get_day()*600;customer[j]->set_prepaid(prepaid);
cout<<"请收房费"<"<else
{customer[i]=newCustomer;
introom_standard,day;
cout<<"请您选择预定房间的标准:
\n";
cout<<"1.单人间/天150元\n2.双人间/天200元\n3.标准间/天300元\n4.总统套房/天600元\n";
cin>>room_standard;
cin>>day;customer[i]->set_day(day);
switch(room_standard)
{intn;
case1:
prepaid=day*150;customer[i]->set_prepaid(prepaid);
cout<<"请收房费"<\n";
for(n=0;n<20;n++)
{if(room[n].state==0)
{cout<<"入住房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;
case2:
prepaid=day*200;customer[i]->set_prepaid(prepaid);
cout<<"请收房费"<\n";
for(n=20;n<40;n++)
{if(room[n].state==0)
{cout<<"入住房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;
case3:
prepaid=day*300;customer[i]->set_prepaid(prepaid);
cout<<"请收房费"<\n";
for(n=40;n<60;n++)
{if(room[n].state==0)
{cout<<"入住房间号码为:
"<customer[i]->set_room_number(room[n].number);break;}}break;
case4:
prepaid=day*600;customer[i]->set_prepaid(prepaid);
cout<<"请收房费"<\n";
for(n=60;n<80;n++)
{if(room[n].state==0)
{cout<<"入住房间号码为:
"<customer[i]->set_room_number(room[n].number);}}
//退房结算
voidcheck_out()
{charname2[10],id2[19];
intstandard,j,room_number,day1,day2,day;
cout<<"请输入要退房的顾客姓名和身份证号码:
\n";cin>>name2>>id2;
cout<<"请输入该顾客实住天数:
\n";cin>>day2;
for(j=0;j
{if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0))
{room_number=customer[j]->get_room_number();standard=room_number/100;
day1=customer[j]->get_day();day=day1-day2;
switch(standard)
{
case6:
cout<<"顾客的房间号是"<为单人间,每天150元\n";
cout<<"该顾客预付了房费"<get_prepaid()<<"元,实际消费"<\n";
if(day>0)cout<<"请退给该顾客"<\n";
if(day)cout<<"请补收该顾客住房费"<<-day*150<<"元整!
\n";break;
case7:
cout<<"顾客的房间号是"<为单人间,每天200元\n";
cout<<"该顾客预付了房费"<get_prepaid()<<"元,实际消费"<\n";cout<if(day>0)cout<<"请退给该顾客"<\n";
if(day<0)cout<<"请补收该顾客住房费"<<-day*200<<"元整!
\n";break;
case8:
cout<<"顾客的房间号是"<为单人间,每天300元\n";
cout<<"该顾客预付了房费"<get_prepaid()<<"元,实际消费"<\n";cout<if(day>0)cout<<"请退给该顾客"<\n";
if(day<0)cout<<"请补收该顾客住房费"<<-day*300<<"元整!
\n";break;
case9:
cout<<"顾客的房间号是"<为单人间,每天600元\n";
cout<<"该顾客预付了房费"<get_prepaid()<<"元,实际消费"<\n";cout<if(day>0)cout<<"请退给该顾客"<\n";
if(day<0)cout<<"请补收该顾客住房费"<<-day*600<<"元整!
\n";break;}
cout<<"退房核算清楚,请按1:
";characcount;cin>>account;
if(account=='1')
{
for(intk=0;k<80;k++)
{if(room[k].number==customer[j]->get_room_number())room[k].state=0;}i--;
for(;j
{customer[j]=customer[j+1];}deletecustomer[i];}}}}
//信息查询
voidinquire()
{charinquire_choice;
cout<<"房间信息查询请按1,顾客信息查询请按2:
"<>inquire_choice;
if(inquire_choice=='1')
{intj,k=0;cout<<"下列房间还没人预订,也没人入住:
"<for(j=0;j<80;j++)
{if(room[j].state==0)
{if(k%10==0)cout<k=0;cout<<"下列房间已预订:
"<for(j=0;j<80;j++)
{if(room[j].state==1)
{if(k%10==0)cout<"<for(j=0;j<80;j++)
{if(room[j].state==2)
{if(k%10==0)cout<elseif(inquire_choice=='2')
{cout<<"按姓名查询请按1,按身份证查询请按2:
"<charinquire_choice;
if(inquire_choice=='1')
{charname3[10];cout<<"请输入顾客的姓名:
"<>name3;
for(intj=0;j<=i;j++)
{if(strcmp(customer[j]->get_name(),name3)==0)
{cout<\n";
cout<<'\t'<<"房间号为:
"<get_room_number()<cout<<"\t"<<"预付房费为:
"<get_prepaid()<if(inquire_choice=='2')
{
charid3[10];cout<<"请输入顾客的身份证:
"<>id3;
for(intj=0;j<=i;j++)
{
if(strcmp(customer[j]->get_ID(),id3)==0)
{cout<get_name()<<"的住房信息如下:
\n";
cout<<'\t'<<"房间号为:
"<get_room_number()<cout<<"\t"<<"预付房费为:
"<get_prepaid()<//房间信息初始化
voidinitial_room()//对80个房间进行初始化,分4个等级
{intj,k=601;
for(j=0;j<20;j++)
{room[j].number=k++;room[j].dank=1;room[j].price=150;room[j].state=0;}
k=701;
for(j=20;j<40;j++)
{room[j].number=k++;room[j].dank=2;room[j].price=200;room[j].state=0;}
k=801;
for(j=40;j<60;j++)
{room[j].number=k++;room[j].dank=3;room[j].price=300;room[j].state=0;}
k=901;
for(j=60;j<80;j++)
{room[j].number=k++;room[j].dank=4;room[j].price=600;room[j].state=0;}}