C++实现 小巧蜂鸣报时器Beeper
上班工作忙,小白有时候会忘记时间。
自制了个蜂鸣器类,实现定时报时。从此,再也不必担心会忘记吃饭时间了。哈哈。
大家可根据自己的需要进行修改,小伙伴们,尽情发挥你们的创意吧~
--------------------------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相关推荐
- java蜂鸣节拍器_电子课程设计-电子节拍器的设计.doc
电子课程设计-电子节拍器的设计 通 信 工 程 专业 课程设计题单 班级 学生 孙伟杰 课程名称 电子课程设计 课 题 电子节拍器的设计 设计要求 节拍器具有声光显示功能:设有2/4,3/4,4/4三 ...
- 【Java】蜂鸣节拍器的设计与实现
一共八轮,每轮响八次. 每次从1开始 ,到8截止.每隔400ms发出蜂鸣声. - package week15;import java.awt.Frame; import java.awt.Toolk ...
- 电子器件系列27:无源蜂鸣片
一.简介原理 网上原创的太少,没什么干货,基本上都在用这个链接: 蜂鸣片,蜂鸣器的原理以及驱动电路的个人理解_消雨匆匆-CSDN博客_蜂鸣片工作原理 二.参数说明 谐振频率: 谐振频率指的是在含有电容 ...
- oracle数据库buffer,Oracle数据库导入Buffer不足出现主机蜂鸣
测试新的系统要求把用户的数据库导入在本地测试.由于原数据库比较大有40G.所以计划在本地测试时只要建好数据库,再导出部分数据保证测试能正常就可以了. 第一步:在本地建数据库 1,在cmd窗口中,以管理 ...
- 台式计算机打不了蜂鸣,电脑主机启动不了,开机蜂鸣器也不响,主板指示灯
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:电脑主机启动不了,开机蜂鸣器也不响,主板指示灯亮电源回答:清理一下里面各个接口,和内存条就OK了 参考回答:这个不好说那里的问题,有 ...
- 基于51单片机的蜂鸣计算器设计
一.课程设计内容及要求 蜂鸣计算器设计: 利用普中科技HC6800-ES V2.0单片机开发板设计一款带蜂鸣器的电子计算器.主要使用开发板上的数码管.LED点阵.矩阵键盘.蜂鸣器等模块功能.开发板配有 ...
- 单片机笔记五:改进无源蜂鸣片驱动电路
在搭了电路反复验证后进行改进,包括以下几个方面: 1.选定电感的感值 2.增加三极管加强效果 3.三极管选型 4.增加电阻电容进行保护 5.增加续流二级管 1.选用电感的时候发现: 某一确定感值的电感 ...
- 利用声音传感器控制led灯功能_树莓派 LED+蜂鸣+声音传感器+红外模块组合打造声控/红外控制LED...
昨天搞了控制LED,玩了第一个,剩下的就感觉很简单了,这里记录一下 先来几张照片 玩了蜂蜜模块才发现规律,一般这种模块,都会有三个针脚,VCC(3.3V或5V供电输出针脚).GNC(对应GPIO针脚的 ...
- 一种4Gwifi远程控制三色灯蜂鸣报警器支持ERP安灯系统MESAPS对接
通过4G或WiFi方式控制三色灯报警器,远程设置红黄绿颜色和蜂鸣器声音报警,支持通过开放的API接口读取颜色状态或下发设置,也可以通过手机app直接远程控制.方便用于工厂安灯呼叫系统.MES系统.ER ...
最新文章
- 逻辑覆盖测试(四)判定/条件覆盖
- 电子书下载:Building Websites with DotNetNuke 5
- inno打包软件出现 main方法找不到
- JavaSE基础笔记八
- hibernate Disabling contextual LOB creation as connection was null
- 度量.net framework 迁移到.net core的工作量(转)
- CUDA学习笔记之程序优化
- 微软确定 Win10 付费才能玩 还能不能愉快玩耍?
- git提取和拉取区别_每天一Git之起步 - 关于版本控制
- Apple 如何知道你使用了私有API
- vue全选和取消全选(无bug)
- 李洪强-HEAD 和nil和NULL
- fatal error: gnu/stubs-n64_hard_2008.h: No such file or directory
- 关于ping与tracert网络命令详解
- html如何用表格做二级菜单栏,Excel表格制作二级下拉菜单步骤
- 汇编1-地址总线、数据总线与控制总线详解
- 零基础云开发一个投票小程序
- 阿里腾讯裁员30%,互联网大厂此举预示着什么?
- 笔记本电脑开机后发现突然扫描不到WiFi网络(WiFi列表消失)
- android 壁纸服务,Android-Service实现手机壁纸自动更换