C++ 设计一个类

设计一个电视机TV类。电视机有几个属性(状态):开/关机状态,当前频道Channel,当前音量Volume;有几个功能:开/关机,频道加,频道减,音量升,音量降。(参考电... 设计一个电视机TV类。

电视机有几个属性(状态):开/关机状态,当前频道Channel,当前音量Volume;

有几个功能:开/关机,频道加,频道减,音量升,音量降。(参考电视机上的面板按钮)

注意要编写构造函数,使得刚出厂的电视机有合适的属性。

在main函数中,

创建一个电视机对象,操纵它(如改频道,改音量);
在线等待~
建议:使用循环结合switch结构,显示选择菜单,由用户选择具体操作,循环多次直至选择结束程序。
展开
 我来答
ken_cqyou
推荐于2016-11-28 · TA获得超过1641个赞
知道小有建树答主
回答量:480
采纳率:0%
帮助的人:337万
展开全部
#include<iostream>
using namespace std;
class TV
{
private:
bool state;//存储电视机状态,true为开,false为关
int channel;//存储电视机频道数(0-499)
int volume;//存储电视机的音量(0-100)
public:
//无参构造函数
TV()
{
state=false;
channel=0;
volume=0;
}

//传入频道和音量的构造函数
TV(int x_channel,int x_volume)
{
state=false;
channel=x_channel;
volume=x_volume;
}

//传入状态、频道和音量的构造函数
TV(bool x_state,int x_channel,int x_volume)
{
state=x_state;
channel=x_channel;
volume=x_volume;
}

~TV();

//获取电视机状态、频道和音量
bool getState(){ return state;}
int getChannel(){ return channel;}
int getVolume(){ return volume;}

//开机
void powerOn()
{
if(state)
{
printf("电视机当前状态为开启,请勿重复!\n")
}
else
{
state=true;
printf("电视机已开启!\n");
}

//关机
void powerOff()
{
if(!state)
{
printf("电视机当前状态为关闭,请勿重复!\n")
}
else state=false;
}

//频道加减
void upChannel()
{
if(!state)
{
printf("当前电视为关闭状态,请开机再操作!\n");
return;
}
if (channel==499) channel=0;
else channel++;
printf("当前频道为:%d\n",channel);
}

void downChannel()
{
if(!state)
{
printf("当前电视为关闭状态,请开机再操作!\n");
return;
}
if(channel==0) channel=499;
else channel--;
printf("当前频道为:%d\n",channel);
}

//音量加减
void upVolume()
{
if(!state)
{
printf("当前电视为关闭状态,请开机再操作!\n");
return;
}
if(volume==100) return;
else volume++;
printf("当前音量为:%d\n",volume);
}

void downVolume()
{
if(!state)
{
printf("当前电视为关闭状态,请开机再操作!\n");
return;
}
if(volume==0) return;
else volume--;
printf("当前音量为:%d\n",volume);
}
}

void main()
{
TV tv=TV();
int a;
while(1)
{
printf("\n*******请按序号选择所要的功能*******\n");
printf("1.开机 2.关机\n");
printf("3.下一频道 4.上一频道\n");
printf("5.音量加 6.音量减\n");
printf("0.退出\n");
printf("请选择:\n");
scanf("%d",&a);
swicth(a)
{
case 0:
exit(0);
case 1:
tv.powerOn();
break;
case 2:
tv.powerOff();
break;
case 3:
tv.upChannel();
break;
case 4:
tv.downChannel();
break;
case 5:
tv.upVolume();
break;
case 6:
tv.downVolume();
break;
default:
printf("选择错误!\n");
break;
}
}
}
seu_flame
2009-11-18 · TA获得超过114个赞
知道答主
回答量:105
采纳率:0%
帮助的人:0
展开全部
/*
*程序中有注释做相应的说明,题目要求的功能简单,程序比较好懂。
*驱动程序并未使用类提供的所有功能如一次加减多台,或 在关机状态下对
*电视操作会有出错提示,可以根据你的需要自己添加。
*此程序用单文件写的,复制到一个空白cpp中即可使用。
*/

#include <iostream>
using namespace std;

class TV
{
private:
bool m_on;//0:关机 1:开机
int m_channel; //频道1-100
int m_vol; //音量0-100
public:
TV();
void turnOnOff();
int channelInc(int change = 1);
int channelDec(int change = -1);
int volInc(int change = 1);
int volDec(int change = -1);
void state();
};

TV::TV()
{ //初始状态为关机,频道为1,音量为10
m_on = 0;
m_channel = 1;
m_vol = 10;
}

void TV::turnOnOff()
{
m_on = !m_on;//改变开关状态
}

int TV::channelInc(int change /* = 1 */)
{
if (!m_on)
{
cout << "请开机后再执行此操作。" << endl;
}
if ((m_channel + change <= 100) && (change > 0))
{
m_channel += change;
}
return m_channel;
}

int TV::channelDec(int change /* = -1 */)
{
if (!m_on)
{
cout << "请开机后再执行此操作。" << endl;
}
if ((m_channel + change > 0) && (change < 0))
{
m_channel += change;
}
return m_channel;
}

int TV::volInc(int change /* = 1 */)
{
if (!m_on)
{
cout << "请开机后再执行此操作。" << endl;
}
if ((m_vol + change <= 100) && (change > 0))
{
m_vol += change;
}
return m_vol;
}

int TV::volDec(int change /* = -1 */)
{
if (!m_on)
{
cout << "请开机后再执行此操作。" << endl;
}
if ((m_vol + change > 0) && (change < 0))
{
m_vol += change;
}
return m_vol;
}
void TV::state()
{
cout << "电视已" << (m_on ? "打开":"关闭") << endl;
if (m_on)
cout << "频道是" << m_channel << endl
<< "音量是" << m_vol << endl;

}
int main() //驱动程序
{
TV tv;
cout << "初始状态:" << endl;
tv.state();

cout << endl << "开机后:" << endl;
tv.turnOnOff();
tv.state();

cout << endl << "频道加一:" << endl;
tv.channelInc();
tv.state();

cout << endl << "频道减一:" << endl;
tv.channelDec();
tv.state();

cout << endl << "音量加一:" << endl;
tv.volInc();
tv.state();

cout << endl << "音量减一:" << endl;
tv.volDec();
tv.state();

cout << endl << "关机:" << endl;
tv.turnOnOff();
tv.state();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘逸大陆
2009-11-18 · TA获得超过255个赞
知道答主
回答量:142
采纳率:100%
帮助的人:59.6万
展开全部
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
class TV{
public:
TV();
TV(vector<string> &channel_);
void power_on();
void power_off();
void volume_on();
void volume_off();
void channel_increse();//加台
void channel_on(); //下一个
void channel_off(); //前一个
void function();
void show();
private:
int volume;//0~100
vector<string> channel;//可暂时用channel1,channel2代表储存channel
int power;//0表示关,非零表示开
vector<string>::iterator point;//表示当前的channel
};
//出场设置
TV::TV():volume(50),power(0){
point=channel.begin();
}
//用已有的channel初始化TV设置
TV::TV(vector<string> &channel_):volume(50),power(0){
vector<string>::iterator p=channel_.begin();
for(;p!=channel_.end();p++)
channel.push_back(*p);
point=channel.begin();
}
//
void TV::power_on(){
power=1;
cout<<"电视开启"<<endl;
}
//
void TV::power_off(){
power=0;
cout<<"电视关闭"<<endl;
}
//
void TV::volume_on(){
int v;
cout<<"输入要调升的音量:";
cin>>v;
volume+=v;
if(volume>100)
volume=100;
}
//
void TV::volume_off(){
int v;
cout<<"输入要调升的音量:";
cin>>v;
volume-=v;
if(volume<0)
volume=0;
}
//
void TV::channel_increse(){//每次增加频道时,当前频道为新加的频道,及最后的频道
string s;
cout<<"输入要加入的channel名";
cin>>s;
channel.push_back(s);
point=find(channel.begin(),channel.end(),s);
}
//
void TV::channel_on(){
vector<string>::iterator temp=point;
point++;
if(point==channel.end())
point=temp;
}//
void TV::channel_off(){
if(point!=channel.begin())
point--;
}
//
void TV::show(){
if(point==channel.end())
cout<<"现在还没有频道!!"<<endl;
else
cout<<"current channel: "<<*point<<endl;
cout<<"current volume: "<<volume<<endl;
}
void TV::function(){
string s;
int sw,aw;
cout<<"是否开机........(y/n)"<<endl;
cin>>s;
if(s=="y"||s=="Y")
power_on();
else{
cout<<"没有开机,现在推出程序!!!"<<endl;
exit(0);
}
for(sw=1;sw!=1||sw!=2||sw!=3;){
cout<<"增加channel请输入1;调节频道请按2;调节音量请按3;关闭电视请按4"<<endl;
cin>>sw;
switch (sw){
case 1:
channel_increse();
break;
case 2:
cout<<"看上一个频道请按1;看下一个频道请按2;"<<endl;
cin>>aw;
switch(aw){
case 1:
channel_off();
break;
case 2:
channel_on();
break;
}
break;
case 3:
cout<<"增大音量请按1;减小音量请按2"<<endl;
cin>>aw;
switch(aw){
case 1:
volume_on();
break;
case 2:
volume_off();
break;
}
break;
case 4:
cout<<"电视现在已关闭,推出程序!!"<<endl;
exit(0);
}
show();
}

}
int main(){
TV tv;//使用出场的构造函数,另一个你可以自己用;
tv.function();
return 0;
}
足以输入数字的时候别输入字符窜。你也可以自己稍改一下,把1,2,3,4变为a,b,c,d。稍改一下即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahaubit
2009-11-18 · TA获得超过1453个赞
知道小有建树答主
回答量:637
采纳率:0%
帮助的人:775万
展开全部
#include <iostream>
using namespace std;

//设计一个电视机TV类。
//
//电视机有几个属性(状态):开/关机状态,当前频道Channel,当前音量Volume;
//
//有几个功能:开/关机,频道加,频道减,音量升,音量降。(参考电视机上的面板按钮)
//
//注意要编写构造函数,使得刚出厂的电视机有合适的属性。
//
//在main函数中,
//
//创建一个电视机对象,操纵它(如改频道,改音量);

class TV
{
public:
TV():state(false),Channel(1),Volume(0){}
void open(){state=true;}
void close(){state=false;}
void upChannel(){Channel++;}
void downChannel(){Channel--;}
void upVolume(){Volume++;}
void downVolume(){Volume--;}
void p(){
cout<<"TV is:";
if(state)
cout<<"open"<<endl;
else
cout<<"closed"<<endl;
cout<<"Channel:" <<Channel<<endl;
cout<<"Volume:" <<Volume<<endl;
}
private:
bool state;
int Channel;
int Volume;
};
void main()
{
TV t;
t.open();
t.upChannel();
t.upChannel();
t.upChannel();
t.upVolume();
t.upVolume();
t.upVolume();

t.p();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gallanthunter
2009-11-18 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:113万
展开全部
#include <iostream>
#ifndef CLASS_H_INCLUDED
#define CLASS_H_INCLUDED

#endif // CLASS_H_INCLUDED

class CTV
{
public:
bool turn_on(bool status);
bool turn_off();
void get_channel(bool status,int channel);
void get_voice(bool status,int voice);
void change_channel(bool status,int channel);
void change_voice(bool status,int voice);
CTV():status(0),channel(0),voice(15) {}
private:
bool status;
//bool voice_key;
//bool channel_key;
int channel;
int voice;
};

bool CTV::turn_on(bool status)
{
cout << "turn on the TV!" << endl;
status = 1;
return status;
}
bool CTV::turn_off(bool status)
{
cout << "turn off the TV!" << endl;
status = 0;
return status;
}
void CTV::get_channel(bool status,int channel)
{
if(status == 0)
{
cout << "the TV is off!" << endl;
}
else
if(status == 1)
{
cout << channel << endl;
}
}
void CTV::get_voice(bool status,int voice)
{
if(status == 0)
{
cout << "the TV is off!" << endl;
}
else
if(status == 1)
{
cout << voice << endl;
}
}
void CTV::change_channel(bool status,int channel)
{
char key;
if(status == 0)
{
cout << "the TV is off!" << endl;
}
else
if(status == 1)
{
cout << "Please use 'u' or 'd' to change the channel!" << endl;
while(cin >> key)
{
if(key == 'U' || key == 'u')
{
++channel;
}
else
if(key == 'D' || key == 'd')
{
--channel;
}
else
break;
}
}
}
void CTV::change_voice(bool status,int voice)
{
char key;
if(status == 0)
{
cout << "the TV is off!" << endl;
}
else
if(status == 1)
{
cout << "Please use '-' or '+' to change the voice!" << endl;
while(cin >> key)
{
if(key == '+')
{
++voice;
}
else
if(key == '-')
{
--voice;
}
else
break;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式