C++中Time类的类声明及成员函数的实现。

题目:“试写出Time类的类声明及成员函数的实现。要求:在Time类中包含3个数据分量,即时(hour)、分(minute)和秒(second)。在类的成员函数中应包括存... 题目:“试写出Time类的类声明及成员函数的实现。要求:在Time类中包含3个数据分量,即时(hour)、分(minute)和秒(second)。在类的成员函数中应包括存(用set开头)、取(用get开头)各个数据分量和完整时间的操作;按上下午各12小时或按24小时打印时间的函数;有默认值的构造函数等。默认值以0时0分0秒为准。”本人刚刚接触C++的类,有会的请予以指导,多谢。 展开
 我来答
maogm12
2012-08-19 · TA获得超过130个赞
知道答主
回答量:85
采纳率:0%
帮助的人:57.8万
展开全部
#include <iostream>

#include <iomanip>

using std::cout;
using std::endl;
using std::setfill;
using std::setw;

/**
* @class Time.
* @brief 时间类.
* 时间类,包含简单的设置时间,打印时间的功能.
*/
class Time
{
public:
/**
* @function Time
* @brief Time类的构造函数.
* @param int h - 要设置的小时数,默认为0
* @param int m - 要设置的分钟数,默认为0
* @param int s - 要设置的秒数,默认为0
*/
Time(int h = 0, int m = 0, int s = 0)
{
setTime(h, m, s);
}

/**
* @function getHour
* @brief 获取小时数.
* @return 小时数.
*/
int getHour() const
{
return hour;
}

/**
* @function getMinute
* @brief 获取分钟数.
* @return 分钟数.
*/
int getMinute() const
{
return minute;
}

/**
* @function getSecond
* @brief 获取秒数.
* @return 秒数.
*/
int getSecond() const
{
return second;
}

/**
* @function setTime
* @brief 设置时间.
* @param int h - 要设置的小时数,若小时数不正确则设置为0.
* @param int m - 要设置的分钟数,若分钟数不正确则设置为0.
* @param int s - 要设置的秒数,若秒数不正确则设置为0.
*/
void setTime(int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}

/**
* @function setHour
* @brief 设置小时数.
* @param int h - 要设置的小时数,若小时数不正确则设置为0.
*/
void setHour(int h)
{
if (h < 0 || h > 23) {
cout << "Invalid hour value" << endl;
h = 0;
}
hour = h;
}

/**
* @function setMinute
* @brief 设置分钟.
* @param int m - 要设置的分钟数,若分钟数不正确则设置为0.
*/
void setMinute(int m)
{
if (m < 0 || m > 59) {
cout << "Invalid minute value" << endl;
m = 0;
}
minute = m;
}

/**
* @function setSecond
* @brief 设置秒数.
* @param int s - 要设置的秒数,若秒数不正确则设置为0.
*/
void setSecond(int s)
{
if (s < 0 || s > 59) {
cout << "Invalid second value" << endl;
s = 0;
}
second = s;
}

/**
* @function printTime
* @brief 按24小时的格式打印时间.
* 按照24小时的格式打印时间,格式为HH:MM:SS.
*/
void printTime() const
{
//设置左填充0,在数值是个位数的情况下左边填充0
cout << setfill('0');
cout << setw(2) << getHour() << ":"
<< setw(2) << getMinute() << ":"
<< setw(2) << getSecond() << endl;
}

/**
* @function printTime2
* @brief 按12小时的格式打印时间.
* 按照12小时的格式打印时间,格式为HH:MM:SS AM/PM.
*/
void printTime2() const
{
//设置左填充0,在数值是个位数的情况下左边填充0
cout << setfill('0') << setw(2);
cout << setw(2) << (hour > 12 ? hour - 12 : hour) << ":"
<< setw(2) << getMinute() << ":"
<< setw(2) << getSecond() << " "
<< (hour < 12 ? "AM" : "PM") << endl;
}
private:
int hour;
int minute;
int second;
};

int main()
{
Time t1(24, 222, 23);
t1.printTime();
t1.printTime2();
system("pause");
return 0;
}
感冒九十九
2012-08-19 · TA获得超过113个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:101万
展开全部
自己测试一下,这是我即时写的,仅供参考
class Timer
{
int h,m,s;
public:
Timer()
{
h=0;m=0;s=0;
}
void Set(int i,int j,int k)
{
h=i;m=j;s=k;
}
int GetH() const {return h;}
int GetM const {return m;}
int GetS const {return s;}
};
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨下天子
2012-09-01 · TA获得超过112个赞
知道答主
回答量:101
采纳率:0%
帮助的人:63.7万
展开全部
一楼好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式