《C++计时器》

来源:互联网 发布:java循环读取txt文件 编辑:程序博客网 时间:2024/06/07 15:05




#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 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 四年级的孩子不会写作文怎么办 四年级的孩子写不出作文怎么办? 欠了三万网贷怎么办 打完篮球浑身疼怎么办 在部队当兵意外死亡了怎么办 派派没有体力瓶怎么办 e记账登录不上怎么办 洁净净化区湿度高怎么办 政府测量土地少算了面积怎么办 北京武警欠我钱怎么办 被小混混打了怎么办 农保地建房子怎么办 WOW7.3到8.0橙装怎么办 90后离婚有孩子怎么办 90后的我们该怎么办 越南和中国结婚怎么办结婚证 改革怎么看走留怎么办事业怎么干 改革怎么看走留怎么办工作怎么干 军改怎么看我该怎么办 改革怎么办我该怎么干 改革怎么看 走留怎么办 腿又粗又弯怎么办 假发发量太多了怎么办 剃了发际线后悔怎么办 在外面遇到坏人抢劫怎么办 请事假单位不批怎么办 捷普请假不批怎么办 钉钉请假不审批怎么办 钉钉请假未审批怎么办 员工事假+工作履责怎么办 员工请事假不批怎么办 哺乳起员工一直请事假怎么办 请公休公司不批怎么办 辞职信交了不批怎么办 辞职年假没有休完怎么办 病假算旷工我该怎么办 辞职信领导不批怎么办 软顶帽子踏顶了怎么办 戴草帽总往下掉怎么办 白鞋子低帮发黄怎么办 跳伞的时候降落伞打不开怎么办