c++设计一个计时器(能够暂停,重新开始,继续)的功能。写的不好,仅供参考!

来源:互联网 发布:腾讯抽奖软件 编辑:程序博客网 时间:2024/06/10 08:57

完全模拟计时器实现(时间精确到 秒 即可)


功能要求:
1.计时器的开始功能 例如:键盘按键a 开始计时。
2.计时器的暂停功能 例如:键盘按键空格键 计时暂停
3.计时器的停止功能 例如:键盘按键s   计时停止

4.一次计时结束之后,可以再次计时(也就说,如果当前计时停止,按a键可以重新开始下一轮计时)

实现要求:
1.利用C++中面向对象特性去实现计时类
2.利用C++中抽象、封装等特性实现计时器类的抽象与封装。

可能会用到

void gotoxyint xint y

所需头文件

#include<windows.h>

#include<conio.h>

功能:将控制台光标定位到(xy)处。

void hoidden()

所需头文件

#include<windows.h>

#include<conio.h>

#include<conio.h>

功能:隐藏控制台光标。


在使用之前要先进行声明

此外还可能会用到time函数和

kbhit()函数,

kbhit()可以用来检查当前是否有键盘输入。


下面来看代码

#include<iostream>#include<windows.h>#include<conio.h>#include<time.h>#include<iomanip>using namespace std;void gotoxy(int x, int y)//定位光标,x为行坐标,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;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}class Time{public:Time(){hour=minute=second=0;gotoxy(40,10);display();}  void menu();void xuanze();private:void settime();void display();void chongzhi(){second=0;minute=0;hour=0;} double hour;double minute;double second;};void Time::settime( ){second++;if(second==60){second=0;minute++;}else if(minute==60){minute=0;hour++;}Sleep(1000);}void Time::display(){cout<<setw(2)<<setfill('0')<<hour<<":";cout<<setw(2)<<setfill('0')<<minute<<":";cout<<setw(2)<<setfill('0')<<second<<endl;}void Time::menu(){gotoxy(40,6);cout<<"*&计时器&*"<<endl; gotoxy(26,18);cout<<"按a开始计时     按s重新计时   按空格暂停"<<endl; }void Time::xuanze(){char key;hidden();key=getch();if(key=='a'||key=='A'){while(1){if(kbhit()){hidden();key=getch();if(key=='s'||key=='S'){chongzhi();xuanze();}else if(key==' '){xuanze();}}settime();gotoxy(40,10);display();}}else xuanze();}int main(){Time te;te.menu();te.xuanze();}
首先来声明gotoxy()函数和hidden()函数如下:


然后在while循环中控制输入的字符确定执行那个功能,其中使用key=getch()能够使输入的字符隐藏
其中sleep函数简介
Sleep 
Sleep函数的功能是让程序挂起一段时间,第一个字母大写,只在VC中使用,头文件为#include<windows.h>,单位为毫秒,若想挂起120毫秒,可以写为:
Sleep(120);
在linux gcc中,让程序挂起一段时间的函数为sleep和usleep,sleep的第一个字母小写,sleep的单位是秒,usleep的单位为微妙us,1秒为1000毫秒,1毫秒等于1000微妙,linux中的sleep和usleep在头文件#include<unistd.h>中。
gotoxy(int x, int y)
x,y为界面的横纵坐标,可以改为任意,可自己上机试一试

经过编辑运行后生成界面如下




1 0
原创粉丝点击