C++时钟类 模拟电子时钟 设置时间后可自动更新时间

时钟类是C++相关书籍上比较常见的经典例子,本文在时钟类的基础上进一步完善改进,在显示时间是先进行判断,确定设置时间是否合理,如果合理,则调用自定义Run( )函数完成计时功能,否则输出提示。相比于常见C++时钟类,增加了设置时间后进行判断设置时间范围是否正确和自动更新时间功能。

源代码
#include<iostream>
#include<iomanip>
#include<Windows.h>

using namespace std;

class Clock
{
public:
    Clock(){};
    void SetTime(int newH = 0, int newM = 0, int newS = 0);
    void ShowTime();
    void Run();          //Run()控制计时
private:
    int hour, minute, second;
};
void Clock::SetTime(int newH, int newM, int newS) //设置时间
{
    hour = newH;
    minute = newM;
    second = newS;
}

void Clock::ShowTime()        //显示时间,在显示时间前进行判断,如果时间设置不合适,则提示错误
{
    if (hour > 24 || hour<0 || minute>60 || minute<0 || second>60 || second < 0)
    {
        cout << "输入有误!" << endl;
        exit(0);
    }
    else
    {
        cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0')   //<<setw(2)<<setfill('0')设置域宽为2 不够的话用字符‘0’填充  
            << minute << ":" << setw(2) << setfill('0') << second << endl;
    }
}

void Clock::Run()  //实现计时功能
{

    while (1)
    {
        second += 1;
        if (second >= 60)
        {
            second -= 60;
            minute += 1;

        }
        if (minute >= 60)
        {
            minute -= 60;
            hour += 1;
        }
        if (hour >= 24)
        {
            hour -= 24;
        }
        system("cls");
        ShowTime();
        Sleep(1000);
    }
}
int main()
{
    Clock myClock;         //定义时钟类对象
    myClock.SetTime(23,59,55);
    myClock.ShowTime();
    myClock.Run();
    return 0;
}

,

程序清单 按以下步骤向视图(CClockView)添加下列数据成员及成员函数。 (1) 添加表示年、月、日、时、分、秒的变量。 int year; int month; int day; int hour; int minute; int second; (2) 添加秒表的计数变量。 int watch; (3) 添加时钟的画笔及画刷变量。 CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔 CBrush m_MarkBrush; // 表盘标记的画刷 (4) 添加时钟控制变量。 CPoint m_Center; // 表的中心 double m_Radius; // 表的半径 CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置 CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置 CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置 (5) 添加秒表的两个按钮位置变量。 CRect m_WatchStart; CRect m_WatchStop; (6) 添加两个函数,计算时钟各指针位置。 void SetClock (int hour, int minute, int second); CPoint GetPoint (int nLenth, int nValue); (7) 在视图构造函数中增加初始化语句: CClockView::~CClockView() { //设定时间 year=2010; month=11; day=22; hour=0; minute=0; second=0; //设定画笔画刷 m_HouPen.CreatePen(PS_SOLID,5,RGB(255,0,0));//时针画笔 m_MinPen.CreatePen(PS_SOLID,3,RGB(0,0,250));//分针画笔 m_SecPen.CreatePen(PS_SOLID,1,RGB(0,0,0));//秒针画笔 m_MarkBrush.CreateSolidBrush(RGB(250,250,0)); //设定表芯位置 m_Center.x=222; m_Center.y=222; //设定时钟半径 m_Radius=222; //计算指针位置 SetClock(hour,minute,second); //设定秒表计数器及按钮位置 watch=0; m_WatchStart=CRect(480,310,560,340);//启动按钮 m_WatchStop=CRect(590,310,670,340);//停止按钮 } 编写指针位置函数SetClock和GETpOINT。 首先在ClockView.cpp文件头部下添加下面两行代码,以便进行数学计算。 #define PI 3.14159265258 #include"math.h" 然后添加下列代码: //计算个指针位置的函数 void CClockView::SetClock(int hour,int minute,int second) { hour=hour*5; hour=hour+minute/12; //保存时针原位置 m_OldHour[0]=m_Hour[0]; m_OldHour[1]=m_Hour[1];
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值