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

本文主要是介绍c++设计一个计时器(能够暂停,重新开始,继续)的功能。写的不好,仅供参考!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


功能要求:
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为界面的横纵坐标,可以改为任意,可自己上机试一试

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




这篇关于c++设计一个计时器(能够暂停,重新开始,继续)的功能。写的不好,仅供参考!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882598

相关文章

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方