最近的两道类与对象练习题解答

本文档展示了两个C++类的设计:空调类airCondition和银行账户类Account。空调类包含了品牌、颜色、功率、开关状态和设定温度等属性,并实现了开关状态切换、温度调节和信息打印等功能。银行账户类包含账号和余额属性,具备存款、取款和查询余额等操作。在主函数中,创建了多个空调和银行账户对象并进行了相关操作。
摘要由CSDN通过智能技术生成

题目1:

设计一个空调类airCondition,其中包括:

数据成员:品牌(要求char* 类型)、颜色、功率、开关状态、设定温度;

构造函数:对品牌、颜色、功率、设定温度赋初值;

要求1.写出复制构造函数(参数必须被const 修饰),赋值运算符重载函数

2.要求有一定有默认构造函数的生成(=default的使用)

析构函数:用户自定义(注意动态申请的资源的释放);

成员函数:切换开关状态、升温、降温 

主函数中要求至少创建三个对象,其中之一用复制构造函数初始化,另外一个创建后用赋值运算符赋值;

具体信息如:格力、白色、2匹、25度等等。调用其“切换开关状态”函数打开空调,调用其“降温”函数调整温度为20度,并打印空调状态和目前设定的温度到屏幕。

代码:

#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;
static int t;
class airCondition
{
private:
	char *brand;char *power;char *color;
public:
	
	int length;char*button;int temp;
	airCondition(char*br,char*po,char*co,char*bu,int te)
	{
		if(br)
		{
			brand=new char[strlen(br)+1];
			strcpy(brand,br);
		}
		else brand=0;
		if(po)
		{
			power=new char[strlen(po)+1];
			strcpy(power,po);
		}
		else power=0;
		if(co)
		{
			color=new char[strlen(co)+1];
			strcpy(color,co);
		}
		else color=0;
		button=new char[2];
		strcpy(button,bu);
		temp=te;
	}//定义了空调类的构造函数,不变的属性如品牌、颜色等放私有,变的属性如开关、温度放公有。
		~airCondition();
		airCondition(const airCondition &);
//析构函数和复制构造函数声明
	void change1()
	{
		if( strcmp(button,"关")==0)
		{
			
			strcpy(button,"开");}
		else
		{
			strcpy(button,"关");
		}
	}//开空调函数,按回车实现开空调
	void change2()
	{
		cout<<"按回车实现关空调"<<endl;
		int r=_getch();
		if(r==13)
		if( strcmp(button,"关"))
		{
			
			strcpy(button,"关");}
		else
		{
			strcpy(button,"开");
		}
	}//关空调函数,按回车实现关空调

	void tempup()
	{
		cout<<"按空格增加温度,“ESC”退出升温"<<endl;
		int c ;
		while(1)
		{
			c=_getch();
			if(c==32)
			{t+=1;}
			if(c==27)
				break;
		}
		cout<<"当前空调设置温度为"<<t<<"℃"<<endl;
	}//升温函数
	void tempdown()
	{
		cout<<"按空格降低温度,“ESC”退出降温"<<endl;
		int d;
		while(1)
		{
			 
			d=_getch();
			if(d==32)
			{t-=1;}
			if(d==27)
				break;
		}
		cout<<"当前空调设置温度为"<<t<<"℃"<<endl;
	}//降温函数
	void print()
	{
		cout<<"品牌:"<<brand<<'\t'<<"功率:"<<power<<endl<<"颜色:"<<color<<endl<<"状态:"<<button<<endl<<"设定温度:"<<t<<endl;
	}//输出函数
};
airCondition::airCondition(const airCondition &a)
{
	if(a.brand)
		{
			brand=new char[strlen(a.brand)+1];
			strcpy(brand,a.brand);
		}
	else brand=0;
		if(a.power)
		{
			power=new char[strlen(a.power)+1];
			strcpy(power,a.power);
		}
		else power=0;
		if(a.color)
		{
			color=new char[strlen(a.color)+1];
			strcpy(color,a.color);
		}
		else color=0;
}//复制构造函数
airCondition::~airCondition()
{
	if(brand)
		delete []brand;
	if(power)
		delete []power;
	if(color)
		delete []color;
	if(button)
		delete []button;
	
}
//析构函数
void main()
{
    int m;
	airCondition a1("格力","3匹","黄","关",25);
	airCondition a2("美的","2匹","绿","关",25);
	airCondition a3("海尔","4匹","白","关",25);
	airCondition a4(a1);
	cout<<"请输入空调编号来打开相应空调"<<endl;
	cin>>m;
	if(m==1)
	{
		t=a1.temp;
		a1.change1();
		a1.print();
		a1.tempup();
		a1.tempdown();
		a1.change2();
		a1.print();
		
	}
	if(m==2)
	{
		t=a2.temp;
		a2.change1();
		a2.print();
		a2.tempup();
		a2.tempdown();
		a2.change2();
		a2.print();
	}
	if(m==3)
	{
		t=a3.temp;
		a3.change1();
		a3.print();
		a3.tempup();
		a3.tempdown();
		a3.change2();
		a3.print();
	}
	if(m==4)
	{
		t=a4.temp;
		a4.change1();
		a4.print();
		a4.tempup();
		a4.tempdown();
	    a4.change2();
		a4.print();
	}
	getchar();
	getchar();
}



题目2:

声明一个银行账户类Acoount,该类有账号(Account)、余额(Balance)两个数据成员,有获取账号、获取余额、存款(Deposit)、取款(Withdrawl)的函数,以及构造函数。请按上述要求声明该银行账户类并在main函数中定义该类的2个对象,然后对他们实现存取款和查询余额等操作。

#include<iostream>
#include<string.h>
#include<conio.h>
#define N 20
using namespace std;
class  Account
{
private:
	char ID[N];
public:
	float Balance;//构造账号和余额两个数据成员
	Account(char id[N],float Ba)
	{
		if(id)
		{
			strcpy(ID,id);
		}
		Balance=Ba;
	}//构造函数
	int get(char id[N])
		{
			if(id)
			{
		if(strcmp(ID,id)==0)
		{
			cout<<"您的当前余额为:"<<Balance<<endl<<"请按指示进行下一步操作"<<endl;
			return 1;
		}
		else return 0;
			}
	}//获取账号函数
	void Deposit()
	{
		float in;
		cout<<"请输入要存入的金额"<<endl;
		cin>>in;
		if(in>0)
		{
			Balance+=in;
			cout<<"存款成功!当前余额:"<<Balance<<endl;
		}
		else cout<<"请输入正确的存款金额"<<endl;
	}//构造存款函数
	void Withdrawl()
	{
		float out;
		cout<<"请输入要取出的金额"<<endl;
		cin>>out;
		if(out<=Balance)
		{
			Balance-=out;
		cout<<"取款成功!当前余额:"<<Balance<<endl;
		}
		else cout<<"余额不足,无法取出"<<endl;
	}//构造取款函数
	int change()
	{
		int c,d;
		cout<<"请选择您要进行的操作"<<endl<<"存款按1,取款按2"<<endl;
		c=_getch();
		if(c==49)
		{
			cout<<"进入存款过程"<<endl;
			d=1;
		}
		if(c==50)
		{
			cout<<"进入取款过程"<<endl;
			d=0;
		}
		return d;
	}//实现存取款功能选择的函数
};
int main()
{
	char id[N];
	Account a1("100001",5000);
	Account a2("100002",3000);
	Account a3("100003",4000);
	Account a4("100004",10000);
	Account a5("100005",1000000);
	cout<<"请输入账号来进行操作"<<endl;
	cin>>id;
	
if(a1.get(id))
	{
		
		if(a1.change())
		{
			a1.Deposit();
		}
		else a1.Withdrawl();
}
if(a2.get(id))
	{
		
		if(a2.change())
		{
			a2.Deposit();
		}
		else a2.Withdrawl();
}
if(a3.get(id))
	{
		
		if(a3.change())
		{
			a3.Deposit();
		}
		else a3.Withdrawl();
}
if(a4.get(id))
	{
		
		if(a4.change())
		{
			a4.Deposit();
		}
		else a4.Withdrawl();
}
if(a5.get(id))
	{
	
		if(a5.change())
		{
			a5.Deposit();
		}
		else a5.Withdrawl();
}
getchar();
getchar();
}





		




	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值