用c++编写计时器的步骤及其函数代码

来源:互联网 发布:淘宝怎么搜福利 编辑:程序博客网 时间:2024/06/07 23:00
用c++语言编写计时器
编写过程中用到的函数:
一、void gotoxy(int x,int y)和void hoidden()函数:
1:所需的头文件include<windows.h> include<conio.h>
2:功能:<1>将控制台光标定位在(x.y)处。
<2>隐藏控制台光标.
3:具体实现:
<1>void gotoxy(int x, int y)//定位光标,x为行坐标,y为列坐标
{
 COORD pos = {x,y};//(坐标  位置);
 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);  //得到标准处理(标准输出处理);
 SetConsoleCursorPosition(hOut, pos);//设置控制台光标位置;
}(直接用就行!)
<2>Void  hidden()//隐藏光标
{
     HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
     CONSOLE_CURSOR_INFO cci;
 GetConsoleCursorInfo(hOut,&cci);
 cci.bVisible=0;//赋1为显示,赋0为隐藏
 SetConsoleCursorInfo(hOut,&cci);
}(直接用就行)
二、关于kbhit()

kbhit是一个函数,可以用来检查当前是否有键盘输入。
函数名
kbhit()(VC++6.0下为_kbhit())
用????法
int kbhit(void);
包含头文件
include <conio.h>
功????能
检查当前是否有键盘输入
三、kbhit函数简介
函数名:kbhit()
功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
用 法:int kbhit(void);
包含头文件: include <conio.h>
在VC++6.0下为_kbhit()
功能及返回值同上;
四、时间函数的实现
void Time::settime()
{
 second++;
 if(60==second)
  {
   second=0;
   minute+=1;
 }
  else if(60==minute)
  {
   minute=0;
   hour+=1;
  }
   Sleep(1000);


}
五、实现计时暂停,计时开始,计时复位等功能的函数
功能实现:
输入字符并用getch()吸收字符,1:输入a开始计时,在计时过程中输入S置零,输出,返回菜单函数;
具体函数参照下面程序的具体实现过程:
计时器实现的全部函数过程:
#include<iostream>
#include<windows.h>
#include<iomanip>
#include<conio.h>
using namespace std;
#include <time.h>
class Time
{
 public:
  Time(){
   second=0,minute=0,hour=0;
   display();
  }
  void display();
  void settime();
  void retur()
  {
   second=0,minute=0,hour=0;
  }
  void minu();
  private:
    int second;
    int minute;
    int hour;
 } ;
void gotoxy(int x,int y)
{
 COORD pos={x,y};
 HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleCursorPosition(hOut, pos);
}
void  hidden()
{
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
 GetConsoleCursorInfo(hOut,&cci);
 cci.bVisible=0;
 SetConsoleCursorInfo(hOut,&cci);
}
void Time::settime()
{
 second++;
 if(60==second)
  {
   second=0;
   minute+=1;
 }
  else if(60==minute)
  {
   minute=0;
   hour+=1;
  }
   Sleep(1000);


}
void Time::display()
{
  gotoxy(11,11);
   cout<<"\t"<<right<<setfill('0')<<setw(2)<<hour
  <<':'<<right<<setfill('0')<<setw(2)<<minute
   <<':'
   <<right<<setw(2)<<second<<setfill('0')<<"\n";
   cout<<"\n";
  cout<<"\t"<<"按a开始计时,按空格暂停,按回车继续 ,按s复位";
}
void Time::minu()
{
 char ch;
 hidden();
 ch=getch();
 if(ch=='a'||ch=='A')
{
  while(1)
  {
  if(kbhit())
  {
   hidden();
   ch=getch();
   if(ch=='s'||ch=='S')
   {
    retur();
    display();
    minu();
   }
   else if(ch==' ')
  {
   minu();
  }
 }
 settime();
 display();
 }
 }
  if(ch=='s'||ch=='S')
   {
    retur();
    display();
    minu();
   }
   if(ch=='\n')
   {
    settime();
    display();
    minu();
   }
}

int main()
{
 Time a;
 gotoxy(20,15);
 a.minu();
 return 0;
}


0 1
原创粉丝点击