《C++计时器》




#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;   

}


这个写的不是很精练,等有时间再写一个更好的宇大家分享



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值