C++實(shí)現(xiàn)電子時(shí)鐘效果
本文實(shí)例為大家分享了C++實(shí)現(xiàn)電子時(shí)鐘的具體代碼,供大家參考,具體內(nèi)容如下
此精確到秒,因?yàn)橛芯日`差加上從計(jì)算機(jī)獲取初始時(shí)間時(shí)處理比較簡單,因此運(yùn)行一段時(shí)間會出現(xiàn)較大的誤差。
代碼可共享
#include<iostream>
#include<iomanip>
#include<Windows.h>
using namespace std;
class Clock
{
private:
? ? int hour, minute, second;
? ? int year, month, day,week;
public:
? ? Clock() {};
? ? void SetTime1(int _Hour, int _Mins, int _Sec){//初始時(shí)間函數(shù)
? ? ? ? hour = _Hour;
? ? ? ? minute = _Mins;
? ? ? ? second = _Sec;
? ? }
? ? void SetTime2(int _year, int _month, int _day,int _week) {//初始時(shí)間函數(shù)
? ? ? ? year = _year;
? ? ? ? month = _month;
? ? ? ? day = _day;
? ? ? ? week = _week;
? ? }
? ? void ShowTime() {?
? ? ? ? cout << year << "year ?" << month << "month ?" << day << "day ?" << "weekday" << week << endl;
? ? ? ? cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute << ":" << setw(2) << setfill('0') << second << endl;
? ? }//顯示函數(shù)
? ? void Count_time() {//計(jì)時(shí)函數(shù)
? ? ? ? while (1)//24小時(shí)制
? ? ? ? {
? ? ? ? ? ? second += 1;
? ? ? ? ? ? if (hour >= 24) {
? ? ? ? ? ? ? ? hour -= 24;
? ? ? ? ? ? ? ? Correct_time();//年月日糾錯(cuò)
? ? ? ? ? ? ? ? week = week ?% 7 + 1;//星期變化
? ? ? ? ? ? }
? ? ? ? ? ? if (minute >= 60){
? ? ? ? ? ? ? ? minute -= 60;
? ? ? ? ? ? ? ? hour += 1;
? ? ? ? ? ? }
? ? ? ? ? ? if (second >= 60) {
? ? ? ? ? ? ? ? second -= 60;
? ? ? ? ? ? ? ? minute += 1;
? ? ? ? ? ? }
? ? ? ? ? ? system("cls");//清屏,清除所有顯示的信息
? ? ? ? ? ? ShowTime();
? ? ? ? ? ? Sleep(1000);//一秒延遲
? ? ? ? }
? ? }
? ? void Correct_time() {
? ? ? ? int flag = 0;
? ? ? ? if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
? ? ? ? ? ? flag = 1;
? ? ? ? if (month == 2) {
? ? ? ? ? ? if ((flag == 1 && day == 29) || (flag == 0 && day == 28)) {
? ? ? ? ? ? ? ? day = 1;
? ? ? ? ? ? ? ? month += 1;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? day += 1;
? ? ? ? }
? ? ? ? else {
? ? ? ? ? ? switch (month) {
? ? ? ? ? ? case 1:
? ? ? ? ? ? case 3:
? ? ? ? ? ? case 5:
? ? ? ? ? ? case 7:
? ? ? ? ? ? case 8:
? ? ? ? ? ? case 10:
? ? ? ? ? ? case 12:if (day == 31) { month += 1, day = 1; }
? ? ? ? ? ? ? ? ? ?else day += 1; break;
? ? ? ? ? ? case 4:
? ? ? ? ? ? case 6:
? ? ? ? ? ? case 9:
? ? ? ? ? ? case 11:if (day == 30) { month += 1, day = 1; }
? ? ? ? ? ? ? ? ? ?else day += 1; break;
? ? ? ? ? ? default:break;
? ? ? ? ? ? }
? ? ? ? }
? ? }
};
int main()
{
? ? Clock myClock; ? ? ? ? //定義時(shí)鐘類對象
? ? struct tm t; ?//tm結(jié)構(gòu)指針
? ? time_t now; ?//聲明time_t類型變量
? ? time(&now); ?//獲取系統(tǒng)日期和時(shí)間
? ? localtime_s(&t, &now); ?//獲取當(dāng)?shù)厝掌诤蜁r(shí)間
? ? myClock.SetTime2(t.tm_year + 1900, t.tm_mon + 1, t.tm_mday,t.tm_wday);
? ? myClock.SetTime1(t.tm_hour, t.tm_min, t.tm_sec);
? ? myClock.ShowTime();
? ? myClock.Count_time();
? ? return 0;
}執(zhí)行效果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Visual C++中Tab View的多種實(shí)現(xiàn)方法
這篇文章主要介紹了Visual C++中Tab View的多種實(shí)現(xiàn)方法,包括了CTabCtrl控件、CSheetCtrl標(biāo)簽選擇窗口以及靜態(tài)分割窗口等實(shí)現(xiàn)Tab View的方法,需要的朋友可以參考下2014-10-10
C++最短路徑Dijkstra算法的分析與具體實(shí)現(xiàn)詳解
經(jīng)典的求解最短路徑算法有這么幾種:廣度優(yōu)先算法、Dijkstra算法、Floyd算法。本文是對?Dijkstra算法的總結(jié),該算法適用于帶權(quán)有向圖,可求出起始頂點(diǎn)到其他任意頂點(diǎn)的最小代價(jià)以及對應(yīng)路徑,希望對大家有所幫助2023-03-03
C++實(shí)現(xiàn)LeetCode(30.串聯(lián)所有單詞的子串)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(30.串聯(lián)所有單詞的子串),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員
這篇文章主要介紹了詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-01-01
Visual Studio 2019 Professional 激活方法詳解
這篇文章主要介紹了Visual Studio 2019 Professional 激活方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

