求C++程序,设计类结构,模拟电子时钟的行走,在屏幕上显示一个活动时钟 30
设计类结构,模拟电子时钟的行走,在屏幕上显示一个活动时钟,要求:(1)显示日期的格式:XXXX年XX月XX日(2)显示时间的格式:XX:XX:XX。主要技术参数:(1)类...
设计类结构,模拟电子时钟的行走,在屏幕上显示一个活动时钟,要求:
(1)显示日期的格式:XXXX年XX月XX日
(2)显示时间的格式:XX:XX:XX。
主要技术参数:
(1)类的定义和使用。
(2)成员变量和成员函数的定义和使用。
(3)使用语句system("cls");实现屏幕的刷新。
要编译通过的,有结果的 展开
(1)显示日期的格式:XXXX年XX月XX日
(2)显示时间的格式:XX:XX:XX。
主要技术参数:
(1)类的定义和使用。
(2)成员变量和成员函数的定义和使用。
(3)使用语句system("cls");实现屏幕的刷新。
要编译通过的,有结果的 展开
展开全部
// 使用了ctime
// time(NULL)返回值为64位整形,表示当前系统时间,单位:秒
// 为啥要写成类?
#include <iostream>
#include <ctime>
using namespace std;
class CDisplayTime
{
public:
// 默认刷新间隔为1秒
CDisplayTime(time_t _i64Mix = 1)
{
m_i64Mix = _i64Mix; // 初始化间隔时间
}
~CDisplayTime(void){}
// 循环刷新时间,默认持续30秒
void DisplayTime(time_t _i64Max = 30)
{
m_i64Max = _i64Max; // 初始化持续时间
m_i64TimeC = time(NULL); // 使用系统时间初始化现在时刻
m_i64TimeL = m_i64TimeC; // 使用现在时刻初始化上次时刻
m_i64TimeI = 0; // 初始化累计时间为0
// 循环显示时间
while (m_i64Max)
{
m_i64TimeC = time(NULL); // 更新现在时刻
m_i64TimeI += m_i64TimeC - m_i64TimeL; // 更新累计时间
m_i64Max -= m_i64TimeC - m_i64TimeL; // 更新持续时间
m_i64TimeL = m_i64TimeC; // 更新上次时间
// 判断是否满足刷新条件
if (m_i64TimeI >= m_i64Mix)
{
tm tmTime; // 格式化存贮时间的结构体
localtime_s(&tmTime, &m_i64TimeC); // 使用现在时刻初始化时间结构体
system("cls"); // 清屏
cout<<tmTime.tm_year+1900<<"年"<<tmTime.tm_mon+1<<"月"<<tmTime.tm_mday<<"日"<<endl;
cout<<tmTime.tm_hour<<":"<<tmTime.tm_min<<":"<<tmTime.tm_sec<<endl;
m_i64TimeI -= m_i64Mix; // 校正累计时间
}
}
}
private:
// 单位:秒
time_t m_i64TimeC; // 现在时刻,使用系统的几时时间更新
time_t m_i64TimeL; // 上次时刻,存贮上次刷新时的“现在时刻”
time_t m_i64TimeI; // 累计时间,累加“现在时刻”和“上次时刻”的差值
time_t m_i64Mix; // 间隔时间,“累计时间”大于或等于此值时允许刷新,以此限制计算频率及帧率
time_t m_i64Max; // 持续时间,DisplayTime函数的持续运行时间
};
int main()
{
time_t i64Temp; // 临时i64变量
cout<<"请输入刷新间隔(单位:秒):";
cin>>i64Temp;
CDisplayTime CDT(i64Temp);
cout<<"请输入显示持续时间(单位:秒):";
cin>>i64Temp;
CDT.DisplayTime(i64Temp);
system("pause");
return 0;
};
// time(NULL)返回值为64位整形,表示当前系统时间,单位:秒
// 为啥要写成类?
#include <iostream>
#include <ctime>
using namespace std;
class CDisplayTime
{
public:
// 默认刷新间隔为1秒
CDisplayTime(time_t _i64Mix = 1)
{
m_i64Mix = _i64Mix; // 初始化间隔时间
}
~CDisplayTime(void){}
// 循环刷新时间,默认持续30秒
void DisplayTime(time_t _i64Max = 30)
{
m_i64Max = _i64Max; // 初始化持续时间
m_i64TimeC = time(NULL); // 使用系统时间初始化现在时刻
m_i64TimeL = m_i64TimeC; // 使用现在时刻初始化上次时刻
m_i64TimeI = 0; // 初始化累计时间为0
// 循环显示时间
while (m_i64Max)
{
m_i64TimeC = time(NULL); // 更新现在时刻
m_i64TimeI += m_i64TimeC - m_i64TimeL; // 更新累计时间
m_i64Max -= m_i64TimeC - m_i64TimeL; // 更新持续时间
m_i64TimeL = m_i64TimeC; // 更新上次时间
// 判断是否满足刷新条件
if (m_i64TimeI >= m_i64Mix)
{
tm tmTime; // 格式化存贮时间的结构体
localtime_s(&tmTime, &m_i64TimeC); // 使用现在时刻初始化时间结构体
system("cls"); // 清屏
cout<<tmTime.tm_year+1900<<"年"<<tmTime.tm_mon+1<<"月"<<tmTime.tm_mday<<"日"<<endl;
cout<<tmTime.tm_hour<<":"<<tmTime.tm_min<<":"<<tmTime.tm_sec<<endl;
m_i64TimeI -= m_i64Mix; // 校正累计时间
}
}
}
private:
// 单位:秒
time_t m_i64TimeC; // 现在时刻,使用系统的几时时间更新
time_t m_i64TimeL; // 上次时刻,存贮上次刷新时的“现在时刻”
time_t m_i64TimeI; // 累计时间,累加“现在时刻”和“上次时刻”的差值
time_t m_i64Mix; // 间隔时间,“累计时间”大于或等于此值时允许刷新,以此限制计算频率及帧率
time_t m_i64Max; // 持续时间,DisplayTime函数的持续运行时间
};
int main()
{
time_t i64Temp; // 临时i64变量
cout<<"请输入刷新间隔(单位:秒):";
cin>>i64Temp;
CDisplayTime CDT(i64Temp);
cout<<"请输入显示持续时间(单位:秒):";
cin>>i64Temp;
CDT.DisplayTime(i64Temp);
system("pause");
return 0;
};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询