编程要求:
(1)具有订房功能:增添客户的信息到相应的房号。包括姓名、身份证号码、开房时间,预计订房的时间;(2)具有退房功能:计算客户的消费时间以及其他的消费项目(如订餐服务),结算客户的消费金额;刷除相应房号内的客户信息。
(3)输入有效性验证,假设酒店客房有一百间。
2022.3.5
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
class Person
{
private:
int room_number;
string name;
string certification;
int staytime;
string checkintime;
public:
Person()
{
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入身份证号:"<<endl;
cin>>certification;
cout<<"请输入开房时间"<<endl;
cin>>checkintime;
cout<<"请输入订房时间:"<<endl;
cin>>staytime;
}
~Person()
{
cout<<"您已成功退房!欢迎下次入住!"<<endl;
}
void setname(string a)
{
name=a;
}
string getname()
{
return name;
}
void setcertification(string b)
{
certification=b;
}
string getcertification()
{
return certification;
}
void setcheckintime(int d)
{
checkintime=d;
}
string getcheckintime()
{
return checkintime;
}
void setroom_number(int c)
{
room_number=c;
}
int getroom_number()
{
return room_number;
}
int getstaytime()
{
return staytime;
}
}*person[100]; //类指针数组表示上限一百个房间中的顾客
class Cilent
{
private:
int numberroom;
int havepeople;
public:
void setnumberroom(int a)
{
numberroom=a;
}
int getnumberroom()
{
return numberroom;
}
void setpeople(int b)
{
havepeople=b;
}
bool getpeople() // 判断是否有人
{
return havepeople;
}
}cilent[100];
void initial_roomnumber() //最开始的房间数,每入住一个人填充一次房间号
{
int i;
for(i=0;i<100;i++)
{
cilent[i].setnumberroom(i+1);
cilent[i].setpeople(0);
}
}
int val=0;
void checkin() //订房函数
{
int n;
string name,sertification;
person[val]=new Person;
cout<<"可以选择的房间号:";
for(int j=0;j<100;j++) //列举出所有空房
{
if(!cilent[j+1].getpeople())
cout<<j+1<<" ";
}
cout<<endl;
cout<<"请选择房间号:";
cin>>n;
if(n>100) //检验100个房间的合理性
{
cout<<"没有该房间"<<endl;
delete person[val];
return;
}
if(!cilent[n-1].getpeople()) //结果为0则房间原本没有人,可以入住
{
cout<<"可以入住!"<<endl;
person[val]->setroom_number(cilent[n-1].getnumberroom());
cilent[n-1].setpeople(1);
}
else
{
cout<<"该房间已经有人入住!"<<endl;
}
val++;
}
void checkout() //退房函数
{
string name,sertification;
int roomnumber;
int j;
cout<<"请输入您的姓名和身份证号:";
cin>>name>>sertification;
for(j=0;j<val;j++) //检验和所输入匹配的姓名和身份证号
{
if(name==person[j]->getname()&&sertification==person[j]->getcertification())
{
roomnumber=person[j]->getroom_number();
}
int i;
for(i=0;i<100;i++)//得到该客户的数组位数
{
if(person[j]->getroom_number()==cilent[i].getnumberroom())
break;
}
int t;
cout<<"您的其他消费金额为:";
cin>>t;
cout<<"您总共消费:"<<person[j]->getstaytime()*200+t<<"元"<<endl;
cilent[i].setpeople(0);//将判断房间是否有人的函数赋值0
delete person[j];
}
}
void menu() //菜单函数
{
int choice;
while(1)
{
cout<<"请选择您所要办理的业务: "<<endl;
cout<<" 1:订房"<<endl;
cout<<" 2:退房"<<endl;
cout<<" 3:退出系统"<<endl;
cin>>choice;
if((choice<=3) && (choice>=1))
{
switch(choice)
{
case 1: checkin();break;
case 2: checkout();break;
case 3: exit(0);break;
}
}
else
{
cout<<"您的输入有误"<<endl;
}
}
}
int main()
{
initial_roomnumber();
while(1)
{
menu();
}
return 0;
}