C++ 实验三 NO.1酒店管理系统

//******************************************************************************************** 
//*程序作者:冰糖 
//*完成日期: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;
	}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值