C++ 旅馆顾客统计(静态成员)

题目描述
编写程序,统计某旅馆住宿客人的总数和收入总额。要求输入客人的姓名,输出客人编号(2015+顺序号,顺序号4位,如第1位为0001,第2位为0002,依此类推)、姓名、总人数以及收入总额。总人数和收入总额用静态成员,其他属性采用普通的数据成员。旅馆类声明如下:
在这里插入图片描述
输入
第1行:输入旅馆单个顾客房租

第2行开始,依次输入顾客姓名,0表示输入结束。

输出
每行依次输出顾客信息和当前旅馆信息。包括顾客姓名,顾客编号,旅馆当前总人数,旅馆当前总收入。

样例输入
150
张三 李四 王五 0
样例输出
张三 20150001 1 150
李四 20150002 2 300
王五 20150003 3 450

#include<iostream>
#include<string.h>
#include<iomanip>
using namespace std;
class Hotel{
	private:
		static int m_TotalCusNum;		//顾客总人数 
		static	float m_TotalEearning;	//旅店总收入 
		static float m_Rent;			//每一个顾客的房租 
		char* m_CustomerName;			//顾客名字 
		int m_CustomerID;				//顾客编号 
	public:
		Hotel(char *a_Customer){
			m_CustomerName=new char[strlen(a_Customer)+1];
			strcpy(m_CustomerName,a_Customer);
			m_TotalCusNum++;
			m_CustomerID=m_TotalCusNum;
			m_TotalEearning=m_TotalCusNum*m_Rent;
		}
		~Hotel(){
			delete m_CustomerName;
		}
		static void setRent(float r){
			m_Rent=r;
		}
		void Display(){
			cout<<m_CustomerName<<" 2015"<<setfill('0')<<setw(4)<<m_CustomerID;
			cout<<" "<<m_CustomerID<<" "<<m_TotalEearning<<endl;
		} 		
};
float Hotel::m_Rent=0;
int Hotel::m_TotalCusNum=0;
float Hotel::m_TotalEearning=0;
int main(){
	float rent;
	char name[50];
	cin>>rent;
	Hotel::setRent (rent);
	while(1){
		cin>>name;
		if(name[0]=='0')
		break;
		Hotel h1(name);
		h1.Display();
	}
}

静态数据成员与静态成员函数几个注意的点

1.必须初始化静态数据成员
2.静态调用必须是静态成员函数

Hotel::setRent (rent);//静态调用:使用类名进行调用
------------------
h1.Display();//动态调用:使用了对象h1进行调用

3.非静态成员函数可以访问静态和非静态成员
4.静态成员函数只能访问静态成员

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值