小目标---时钟的实现
来源:互联网 发布:audition mac无法验证 编辑:程序博客网 时间:2024/06/06 03:26
利用一个类,将时钟封装起来,只将运行接口暴露在外,从而达到数据的封装。
思路:
(1)在类中的构造函数中,利用时间函数获取目前的时间
(2)在运行函数中,需要一个显示函数与一个更新数据的时间的函数
(3)在更新数据的函数中,需要一个清屏函数,从而使得显示不会占满屏幕。
(4)在数据更新函数中,每一次判断是否到达临界状态。
具体实现如下所示:
#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;#include<time.h>#include<iomanip>#include<windows.h>//#include<unistd.h>class Clock{public: //构造函数 Clock() { time_t t = time(NULL); struct tm ti1 = *localtime(&t); //struct tm * gmtime(const time_t *timer); struct tm ti2 = *localtime(&t); year = ti2.tm_year+1900; month = ti1.tm_mon + 1; day2 = ti1.tm_mday; day1 = ti1.tm_wday; hor = ti1.tm_hour; min = ti1.tm_min; sec = ti1.tm_sec; } void run() { while (1) { //显示函数 show(); //数据更新函数 review(); } }private: void show() { system("cls");//清屏函数 cout << "星期" << setw(1) << day1 << " "; cout << setw(4) << year << "-"; cout << setw(2) << month << "-"; cout << setw(2) << day2 << " "; cout << setw(2) << hor << ":"; cout << setw(2) << min << ":"; cout << setw(2) << sec << " "; /*time_t lt; lt = time(NULL); printf(ctime(<));*/ } void review() { Sleep(1000); if (++sec == 60) { sec = 0; min += 1; if (min == 60) { min = 0; hor += 1; if (hor == 24) { hor = 0; day1 += 1; day2 += 1; if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { if (day2 == 31||day1 == 7) { day1 = 1; day2 = 1; month += 1; if (month == 12) { month = 1; year += 1; } } } else if (month == 2) { if (day2 == 29 || day1 == 7) { day1 = 1; day2 = 1; month += 1; if (month == 12) { month = 1; year += 1; } } } else//不是上面两种情况 { if (day2 == 30 || day1 == 7) { day1 = 1; day2 = 1; month += 1; if (month == 12) { month = 1; year += 1; } } } } else//不是闰年 { if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { if (day2 == 31 || day1 == 7) { day1 = 1; day2 = 1; month += 1; if (month == 12) { month = 1; year += 1; } } } else if (month == 2) { if (day2 == 28 || day1 == 7) { day1 = 1; day2 = 1; month += 1; if (month == 12) { month = 1; year += 1; } } } else//不是上面两种情况 { if (day2 == 30 || day1 == 7) { day1 = 1; day2 = 1; month += 1; if (month == 12) { month = 1; year += 1; } } } } } } } }private: int year; int month; int day1;//表示显示星期 int day2;//表示显示月 int hor;//时 int min;//分 int sec;//秒};int main(){ Clock c; c.run(); system("pause"); return 0;}
在这个实现中,如果可以将每一个分支封装在函数中,或许会更加有利于可读性,对于这一点,在以后的优化中,会依次提到。
阅读全文
0 0
- 小目标---时钟的实现
- javascript动画小时钟实现
- HTML5 canvas 实现小时钟
- java实现一个小的时钟(当前时间)
- js实现小时钟,js中Date对象的使用?
- 我的小目标
- 个人的小目标
- 2017的小目标
- 程序员的小目标
- 五月份的小目标
- 新年的小目标
- 我的小目标
- 运动目标检测小实现
- 2017年如何实现1个亿的小目标?
- 桌面时钟的小例子
- range 写的小时钟
- JavaScript的时钟小程序
- 简单的时钟实现
- Fragment切换重新或不重新加载界面
- .NET使用一般处理程序生成验证码!
- 作用域
- 大数减法
- 算法:求一元二次方程的根
- 小目标---时钟的实现
- 大数乘法
- JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用
- SpringCloud学习资料
- 数据结构-插入排序&希尔排序
- 1、求n!;2、求1!+2!+3!+......+n!之和
- 最新NetSuite版本引入质量管理
- C
- 交互