//********************************************************************************************
//*程序作者:冰糖
//*完成日期:2019年3月15日
//*章 节:实验三
//*题 号:习题1
//*题 目:设计两个酒店管理员客房管理的类:
//* 一个是Person类,要求有储存房号,客户姓名和身份证号的信息;
//* 另一个类是Client类,要求新增客户的订房、退房和消费金额等信息。并给出相关测试算法。
//* 程序需要满足:
//* 1)具有订房功能:
//* 增添客户的信息到相应的房号。包括姓名、身份证号码、开房时间,预计订房的时间;
//* 2)具有退房功能
//* 结算客户的消费时间,以及其他的消费项目,如订餐服务,结算客户的消费金额;并删除相应房号内的客户信息。
//* 输入有效性验证,假设酒店客房有一百间。
//*********************************************************************************************
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
void menu();
void initial_room();
void checkin();
void checkout();
int i; //已经住下的人数
class Client
{
private:
int number;
int state; //判断房间是否有人,0为无,1为有
public:
void setnumber(int n){number=n;}
void setstate(int n){state=n;}
int getstate(){return state;}
int getnumber(){return number;}
};
class Person
{
private:
int room_number;
char name[10];
char ID[20];
int staytime;
public:
Person()
{
cout<<"请输入您的姓名:"<<endl;
cin>>name;
cout<<"请输入您的身份证号:"<<endl;
cin>>ID;
cout<<"请输入您的停留天数:"<<endl;
cin>>staytime;
}
void set_name(char *_name){strcpy(name,_name);}
void set_ID(char *_ID){strcpy(ID,_ID);}
void set_room_number(int n){room_number=n;}
char *get_name(){return name;}
char *get_ID(){return ID;}
int get_room_number(){return room_number;}
int getstaytime(){return staytime;}
~Person()
{
cout<<"退房成功!"<<endl;
}
};
Person *person[100];
Client client[100];
int main()
{
initial_room();
while(1)
{
menu();
}
return 0;
}
void checkin()
{
int n;
char name1[10],id1[19];
person[i]=new Person;
cout<<"请您选择要入住房间的房号(1-100):\n";
cin>>n;
if(client[n-1].getstate()==0) //判断房间是否有人
{
cout<<"入住的房间号码为:"<<client[n-1].getnumber()<<endl;
person[i]->set_room_number(client[n-1].getnumber());
client[n-1].setstate(1);
}
else
{
cout<<"该房间已经有人!"<<endl;
}
i++;
}
void checkout()
{
char name2[10],id2[19];
int room_number;
cout<<"请输入要退房的顾客姓名和身份证号码:\n";
cin>>name2>>id2;
int j;
for(j=0;j<i;j++)
{
if((strcmp(person[j]->get_name(),name2)==0)&&(strcmp(person[j]->get_ID(),id2)==0)) //遍历寻找退房人,并记录j
{
room_number=person[j]->get_room_number();
int k;
for(k=0;k<100;k++)
{
if(person[j]->get_room_number()==client[k].getnumber()) break; //遍历寻找退房房间号,并记录k
}
cout<<"您应该支付"<<person[j]->getstaytime()*500<<"元"<<endl;
client[k].setstate(0);
delete person[j];
}
}
if(j==i)
{
cout<<"没有此人信息!"<<endl;
}
i--;
}
void initial_room()
{
int j;
for(j=0;j<100;j++)
{
client[j].setnumber(j+1);
client[j].setstate(0);
}
}
//***************************************提示界面*******************************************//
void menu()
{
int choice;
while(1)
{
cout<<endl;
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<<"您的输入有误(只能输入1~3),请重试!\n";
continue;
}
}
}
C++ 实验三 NO.1酒店管理系统
最新推荐文章于 2023-06-04 09:56:24 发布