#include<iostream>
#include<conio.h> //包含隐藏坐标的 函数hidden()#include<time.h>
#include<stdlib.h>
#include<windows.h> //包含一些控制窗口的函数
#include<iomanip> //控制输出格式的头文件
using namespace std;
time_t begin,end;
int t;
class Timer
{
public:
Timer() //构造函数,初始化数据成员
{
hour=0;
minute=0;
second=0;
}
void start_time(); //开始计时
void pause_time(char); //暂停计时
void stop_time(char); //停止计时
void show_time(); //显示计时器
private:
int hour;
int minute;
int second;
};
void hidden() //隐藏光标 这个隐藏光标函数可以直接使用
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(hOut,&cci);
cci.bVisible=0; //赋1为显示,赋0为隐藏
SetConsoleCursorInfo(hOut,&cci);
}
void gotoxy(int x,int y) //这个函数也是可以直接使用
{
COORD pos = {x,y}; //(坐标位置);
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //得到标准处理(标准输出处理);
SetConsoleCursorPosition(hOut, pos); //设置控制台光标位置;
}
void Timer::show_time() //显示计时的函数
{
gotoxy(35,10);
cout.fill('0'); //不足两位的用0补充,该函数包含在iomanip函数中
cout << setw(2)<< hour << ":" <<setw(2) <<minute << ":" <<setw(2)<< second << endl ;
Sleep(1000); //意思就是要延迟1秒
}
void Timer::start_time() //开始函数
{
char ch;
hidden(); //隐藏光标
ch=getch();
if(ch=='b') //判断是否开始计时
{
begin=clock(); //获得此时系统时间
}
while(1)
{
while(!kbhit()) //如果没有输入按键
{
end=clock(); //得到此时系统时间
t=(end-begin)/CLOCKS_PER_SEC; //从按下b键到按下下一个键的时间
if(++second>59) //如果小于60,就执行show_time();
{
minute++;
second=0;
}
if(minute>59)
{
hour++;
minute=0;
}
show_time();
}
char ch1;
hidden();
ch1=getch();
pause_time(ch1);
stop_time(ch1);
}
}
void Timer::pause_time(char ch1)
{
//char ch1;
//hidden();
//ch1=getch();
if(ch1==' ') //如何让它时间停止接着原来的时间
{
char ch3;
hidden();
ch3=getch();
if(ch3=='b'||ch3=='B')
{
while(!kbhit())
{
end=clock();
t=(end-begin)/CLOCKS_PER_SEC;
if(++second>59) //如果小于60,就执行show_time();
{
minute++;
second=0;
}
if(minute>59)
{
hour++;
minute=0;
}
show_time();
}
char ch4;
ch4=getch();
pause_time(ch3);
stop_time(ch3);
}
pause_time(ch3);
stop_time(ch3);
}
}
void Timer::stop_time(char ch2)
{
//char ch2;
//hidden();
//ch2=getch();
if(ch2=='s'||ch2=='S') //如果输入暂停键,时间从0开始
{
hour=0;
minute=0;
second=0;
start_time();
}
}
int main()
{
Timer time;
gotoxy(34,0); //将文字放到指定的坐标
cout<<"* 欢 迎 使 用 秒 表 程 序 *"<<endl;
gotoxy(34,9);
cout << "开始计时:";
gotoxy(0,15);
cout << "说明:";
gotoxy(5,16);
cout << "按b开始计时" << " " << "按空格键暂停计时" << " " << "按s停止计时" ;
time.show_time(); //显示时间
time.start_time(); //开始计时开始
return 0;
}
这个写的不是很精练,等有时间再写一个更好的宇大家分享