时钟类是C++相关书籍上比较常见的经典例子,本文在时钟类的基础上进一步完善改进,在显示时间是先进行判断,确定设置时间是否合理,如果合理,则调用自定义Run( )函数完成计时功能,否则输出提示。相比于常见C++时钟类,增加了设置时间后进行判断设置时间范围是否正确和自动更新时间功能。
源代码
#include<iostream>
#include<iomanip>
#include<Windows.h>
using namespace std;
class Clock
{
public:
Clock(){};
void SetTime(int newH = 0, int newM = 0, int newS = 0);
void ShowTime();
void Run(); //Run()控制计时
private:
int hour, minute, second;
};
void Clock::SetTime(int newH, int newM, int newS) //设置时间
{
hour = newH;
minute = newM;
second = newS;
}
void Clock::ShowTime() //显示时间,在显示时间前进行判断,如果时间设置不合适,则提示错误
{
if (hour > 24 || hour<0 || minute>60 || minute<0 || second>60 || second < 0)
{
cout << "输入有误!" << endl;
exit(0);
}
else
{
cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') //<<setw(2)<<setfill('0')设置域宽为2 不够的话用字符‘0’填充
<< minute << ":" << setw(2) << setfill('0') << second << endl;
}
}
void Clock::Run() //实现计时功能
{
while (1)
{
second += 1;
if (second >= 60)
{
second -= 60;
minute += 1;
}
if (minute >= 60)
{
minute -= 60;
hour += 1;
}
if (hour >= 24)
{
hour -= 24;
}
system("cls");
ShowTime();
Sleep(1000);
}
}
int main()
{
Clock myClock; //定义时钟类对象
myClock.SetTime(23,59,55);
myClock.ShowTime();
myClock.Run();
return 0;
}
,