#include<iostream>
#include<ctime>
#include<iomanip>
using namespace std;
class Time{
private:
int Hour;
int Minute;
int Second;
public:
// 构造函数,初始化为00:00:00
Time(){
Hour = 0;
Minute = 0;
Second = 0;
}
// 根据输入的时间参数初始化
Time(int h, int m, int s){
setHour(h);
setMinute(m);
setSecond(s);
}
// 设置小时数
void setHour(int h){
if(h >= 0 && h < 24)
Hour = h;
else
Hour = 0;
}
// 设置分钟数
void setMinute(int m){
if(m >= 0 && m < 60)
Minute = m;
else
Minute = 0;
}
// 设置秒数
void setSecond(int s){
if(s >= 0 && s < 60)
Second = s;
else
Second = 0;
}
// 获取小时数
int getHour(){
return Hour;
}
// 获取分钟数
int getMinute(){
return Minute;
}
// 获取秒数
int getSecond(){
return Second;
}
// 显示当前时间
void displayTime(){
// 使用\r回车符,让光标返回当前行的开头位置
cout << setfill('0') << setw(2) << getHour() << ":"
<< setfill('0') << setw(2) << getMinute() << ":"
<< setfill('0') << setw(2) << getSecond() << "\r" << flush;
}
// 时间增加一秒
void dida(){
Second++;
if(Second >= 60){
Second = 0;
Minute++;
if(Minute >= 60){
Minute = 0;
Hour = (Hour + 1) % 24;
}
}
}
};
int main(){
// 初始化当前时间
Time nowTime;
cout << "请输入当前时间(24小时制,格式为HH MM SS):" << endl;
int h, m, s;
cin >> h >> m >> s;
nowTime = Time(h, m, s);
// 每秒钟更新时间并显示
bool stop = false;
while(!stop){
nowTime.displayTime();
nowTime.dida();
// 判断是否需要停止计时
string input;
cin >> input;
if(input == "stop")
stop = true;
double t = time(0) + 1; // 下一秒的时间
while(time(0) < t); // 等待1秒
}
// 停止计时,等待用户重新输入时间
cout << "计时已停止,请等待一段时间后再输入新的时间(例如10秒)" << endl;
double t = time(0) + 10; // 等待10秒
while(time(0) < t);
cout << "请输入新的时间(24小时制,格式为HH MM SS):" << endl;
cin >> h >> m >> s;
nowTime = Time(h, m, s);
// 再次开始计时
stop = false;
while(!stop){
nowTime.displayTime();
nowTime.dida();
// 判断是否需要停止计时
string input;
cin >> input;
if(input == "stop")
stop = true;
double t = time(0) + 1;
while(time(0) < t);
}
return 0;
}
欢迎订阅专栏,数据结构实验,期末大作业,前端后端都有哦,想我发哪个方面的资源或文章可以私信我,免费的哦