上班工作忙,小白有时候会忘记时间。

自制了个蜂鸣器类,实现定时报时。从此,再也不必担心会忘记吃饭时间了。哈哈。

大家可根据自己的需要进行修改,小伙伴们,尽情发挥你们的创意吧~

--------------------------Beeper.h---------------------------------------------

#pragma once
#include <Windows.h>
#pragma region 时间类
class Time
{
public:
int hour;
int minute;
int second;
};
#pragma endregion

#pragma region 蜂鸣器类
class Beeper
{
public:
void clearScreen(void);
void showAuthorMsg(void);
void showTime(void);
void showTips(void);
void sleep(int ms = 1000); // default 1000 ms
void beep(void);
Beeper(void);
~Beeper(void);
private:
void toBeep(bool isLBeep,int bCount = 0);
void showCurrentTime(void);
void showStartedTime(void);
private:
int beepCount;
bool isLongBeep;
Time t;
SYSTEMTIME curTime;
};
#pragma endregion

--------------------------Beeper.cpp---------------------------------------------

#include "Beeper.h"
#include "windows.h"
#include <iostream>
#include <iomanip> // For std::setw(n)

#pragma region 构造与析构
Beeper::Beeper(void)
{
//std::cout << "Beeper(void) called." << std::endl;
beepCount = 0;
isLongBeep = false;
t.second = 0 ;
t.minute = 0 ;
t.hour = 0 ;
}

Beeper::~Beeper(void)
{
//std::cout << "~Beeper(void) called." << std::endl;
}
#pragma endregion

#pragma region 私有函数
void Beeper::toBeep(bool isLBeep,int bCount)
{
isLongBeep = isLBeep;
beepCount = bCount;
if(isLongBeep)
{
if(curTime.wMinute/30 >= 1)
{
for(int i = 0;i < 2;i++)
{
Beep(5000,500);
}
}
else
{
Beep(5000,1000);
}
}
else
{
while ( beepCount-- )
{
std::cout << "Minute Beeping(" << bCount - beepCount << ")..." << std::endl;
Beep(5000,200);
}
std::cout << "The Beeper has beeped " << bCount << " times successfully." << std::endl;
}
}
void Beeper::showCurrentTime(void)
{
GetLocalTime(&curTime);
std::cout << "The Current Time is "
<< std::setw(4) << std::setfill('0') << curTime.wYear << "-"
<< std::setw(2) << std::setfill('0') << curTime.wMonth << "-"
<< std::setw(2) << std::setfill('0') << curTime.wDay << " "
<< std::setw(2) << std::setfill('0') << curTime.wHour << ":"
<< std::setw(2) << std::setfill('0') << curTime.wMinute << ":"
<< std::setw(2) << std::setfill('0') << curTime.wSecond << " "
<< std::endl;
}
void Beeper::showStartedTime(void)
{
int seconds = ::GetTickCount() / 1000;
t.second = seconds % 60;
t.minute = ((seconds - t.second) / 60)%60;
t.hour = (seconds - t.minute * 60 - t.second) / (60 * 60);
std::cout << "The Computer has Started "
<< std::setw(2) << std::setfill('0') << t.hour << ":"
<< std::setw(2) << std::setfill('0') << t.minute << ":"
<< std::setw(2) << std::setfill('0') << t.second << "."
<< std::endl << std::endl;
}
#pragma endregion

#pragma region 公有函数
void Beeper::clearScreen(void)
{
system("cls");
}

void Beeper::showAuthorMsg(void)
{
std::cout << "--------------------------------" << std::endl;
std::cout << " Time Tools " << std::endl;
std::cout << " CopyRight (C) 2013 EndlessRain " << std::endl;
std::cout << " Nov 15,2013 " << std::endl;
std::cout << "--------------------------------" << std::endl << std::endl;
}

void Beeper::showTime(void)
{
this->showCurrentTime();
this->showStartedTime();
}

void Beeper::showTips(void)
{
std::cout << "-------------------Tips----------------------" << std::endl;
if(curTime.wHour == 17)
{
std::cout << " It is Time for Dinner... " << std::endl;
}
if(curTime.wHour == 12)
{
std::cout << " It is Time for Lunch... " << std::endl;
}
std::cout << "---------------------------------------------" << std::endl;
}

void Beeper::sleep(int ms)
{
Sleep(ms); // default sleep 1000 ms
}

void Beeper::beep(void)
{
if( curTime.wSecond == 0 )
{
if(curTime.wMinute%5 == 0)
{
if( curTime.wMinute/30 >= 1)
{
toBeep(true); // isLongBeep. So,one parameter only.
toBeep(false,(curTime.wMinute%30)/5);
}
else
{
if(curTime.wMinute%30 == 0)
{
toBeep(true);
}
else
{
toBeep(false,curTime.wMinute/5);
}
}
}
}
}
#pragma endregion

--------------------------main.cpp---------------------------------------------

#include "Beeper.h"
#include <windows.h>
#include <iostream>

void beeperBeep(void)
{
Beeper* beeper = new Beeper();
while(true)
{
beeper->clearScreen();
beeper->showAuthorMsg();
beeper->showTime(); // current time && PC started time
beeper->showTips();
beeper->beep();
beeper->sleep(); // default sleep 1000 ms
}
delete beeper;
}

int main(int args,char* argv[])
{
beeperBeep();
system("pause"); // pause for debug
return 0;
}

----------------------------- End---------------------------------------------

截图如下:

还等什么?动手吧 ~  ^_^

转载于:https://www.cnblogs.com/cppprogrammer/p/3425823.html

C++实现 小巧蜂鸣报时器Beeper相关推荐

  1. java蜂鸣节拍器_电子课程设计-电子节拍器的设计.doc

    电子课程设计-电子节拍器的设计 通 信 工 程 专业 课程设计题单 班级 学生 孙伟杰 课程名称 电子课程设计 课 题 电子节拍器的设计 设计要求 节拍器具有声光显示功能:设有2/4,3/4,4/4三 ...

  2. 【Java】蜂鸣节拍器的设计与实现

    一共八轮,每轮响八次. 每次从1开始 ,到8截止.每隔400ms发出蜂鸣声. - package week15;import java.awt.Frame; import java.awt.Toolk ...

  3. 电子器件系列27:无源蜂鸣片

    一.简介原理 网上原创的太少,没什么干货,基本上都在用这个链接: 蜂鸣片,蜂鸣器的原理以及驱动电路的个人理解_消雨匆匆-CSDN博客_蜂鸣片工作原理 二.参数说明 谐振频率: 谐振频率指的是在含有电容 ...

  4. oracle数据库buffer,Oracle数据库导入Buffer不足出现主机蜂鸣

    测试新的系统要求把用户的数据库导入在本地测试.由于原数据库比较大有40G.所以计划在本地测试时只要建好数据库,再导出部分数据保证测试能正常就可以了. 第一步:在本地建数据库 1,在cmd窗口中,以管理 ...

  5. 台式计算机打不了蜂鸣,电脑主机启动不了,开机蜂鸣器也不响,主板指示灯

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:电脑主机启动不了,开机蜂鸣器也不响,主板指示灯亮电源回答:清理一下里面各个接口,和内存条就OK了 参考回答:这个不好说那里的问题,有 ...

  6. 基于51单片机的蜂鸣计算器设计

    一.课程设计内容及要求 蜂鸣计算器设计: 利用普中科技HC6800-ES V2.0单片机开发板设计一款带蜂鸣器的电子计算器.主要使用开发板上的数码管.LED点阵.矩阵键盘.蜂鸣器等模块功能.开发板配有 ...

  7. 单片机笔记五:改进无源蜂鸣片驱动电路

    在搭了电路反复验证后进行改进,包括以下几个方面: 1.选定电感的感值 2.增加三极管加强效果 3.三极管选型 4.增加电阻电容进行保护 5.增加续流二级管 1.选用电感的时候发现: 某一确定感值的电感 ...

  8. 利用声音传感器控制led灯功能_树莓派 LED+蜂鸣+声音传感器+红外模块组合打造声控/红外控制LED...

    昨天搞了控制LED,玩了第一个,剩下的就感觉很简单了,这里记录一下 先来几张照片 玩了蜂蜜模块才发现规律,一般这种模块,都会有三个针脚,VCC(3.3V或5V供电输出针脚).GNC(对应GPIO针脚的 ...

  9. 一种4Gwifi远程控制三色灯蜂鸣报警器支持ERP安灯系统MESAPS对接

    通过4G或WiFi方式控制三色灯报警器,远程设置红黄绿颜色和蜂鸣器声音报警,支持通过开放的API接口读取颜色状态或下发设置,也可以通过手机app直接远程控制.方便用于工厂安灯呼叫系统.MES系统.ER ...

最新文章

  1. 逻辑覆盖测试(四)判定/条件覆盖
  2. 电子书下载:Building Websites with DotNetNuke 5
  3. inno打包软件出现 main方法找不到
  4. JavaSE基础笔记八
  5. hibernate Disabling contextual LOB creation as connection was null
  6. 度量.net framework 迁移到.net core的工作量(转)
  7. CUDA学习笔记之程序优化
  8. 微软确定 Win10 付费才能玩 还能不能愉快玩耍?
  9. git提取和拉取区别_每天一Git之起步 - 关于版本控制
  10. Apple 如何知道你使用了私有API
  11. vue全选和取消全选(无bug)
  12. 李洪强-HEAD 和nil和NULL
  13. fatal error: gnu/stubs-n64_hard_2008.h: No such file or directory
  14. 关于ping与tracert网络命令详解
  15. html如何用表格做二级菜单栏,Excel表格制作二级下拉菜单步骤
  16. 汇编1-地址总线、数据总线与控制总线详解
  17. 零基础云开发一个投票小程序
  18. 阿里腾讯裁员30%,互联网大厂此举预示着什么?
  19. 笔记本电脑开机后发现突然扫描不到WiFi网络(WiFi列表消失)
  20. android 壁纸服务,Android-Service实现手机壁纸自动更换

热门文章

  1. 完美解决 开机无法启动 提示0xc000000e
  2. Linux防火墙原理
  3. 如何快速更改笔记本开机界面上的用户名(doge)
  4. mysql创建视图的语法
  5. js 判断mac地址是否为组播地址
  6. Datawhale数据分析第一章第二节:Pandas基础
  7. 大数据Spark系列之Spark基本概念解析
  8. 扫描版PDF转文本的方法
  9. 年会直播怎么做?直播方案助你一臂之力
  10. android 开发板 root后无法打开资源管理器Device File Explorer