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++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A