(C/C++學習)12.獲取系統時間制作時鍾(system()略解)


說明:通過調用函數來獲取系統當前時間,並制作一個數字式的時鍾,時鍾的顯示包括年、月、日、小時、分以及秒,通過系統屏幕的刷新來對不斷更新的時間進行屏幕的顯示。

 

一.對相關函數的學習

1.time_t time(time_t *second);

a.頭文件:<time.h>

b.該函數返回自紀元1970-01-01 00:00:00 起經過的秒數,這是一個很大的數,若 second 不為NULL,則返回值將自動存儲在該指針中。

注意:此處的 time_t 以及 __time32_t 都是 long 的別名,其實也就是long int 變量類型。

 

2.struct tm * localtime (const time_t * timer);

a.頭文件:<stdio.h>

b. 該函數的參數為從1990.1.1 00:00:00 到現在累積的秒數,即上個函數的返回值取地址,其返回值為一個結構體類型,其中包含了日期、小時等數據成員;具體見下表:

捕獲

 

3.int kbhit(void);

a.頭文件:<conio.h>

b.該函數的功能在於檢測當前是否有鍵盤按鍵按下,如果有則返回一個非 0 值,否則返回0.

 

3.void sleep(unsigned second);

a.頭文件:<unistd.h>

b.該函數能把進程掛起一段時間,單位為秒,無返回值。

 

4.void usleep(int micro_second);

a.頭文件:<unistd.h>

b.把進程掛起一段時間,單位為微秒,無返回值。這個函數實測在 windows Qt編譯器下不准確。(網絡上解釋:該函數不能用在在windows系統下,只能用於 linux 的測試環境下面。)

注意:usleep() 與sleep() 類似,都用於將進程掛起一段時間。當需延遲時間數量級為秒的時候,盡量使用 sleep(),當為幾十毫秒或者更小時,使用 usleep() 更精確。

 

5.int system(char *command);

a.頭文件:<stdlib.h>

b.執行一個 windows 的 DOS 命令。這里主要講一個命令:清屏。用來定時的刷新顯示屏上的系統時間。在windows環境下,該函數為 system(“cls”);而在linux環境下,該函數為system(“clear”);並且,在linux環境下,也可以用如下語句來代替該語句:puts(“\033c”),printf(“\033c”)。兩種方式也存在一定的差別,system()函數在調用命令時會“占用 ”一定的進程時間,如果需要精確的定時會導致定時不准確。而puts(“\033c”)和printf(“\033c”)則相對來說占用系統進程時間較少,用於定時比較精確。

c.system 的一些其他常用命令

(1.)system(“Date /T”) 為獲取當前系統時間並顯示,顯示方式為 2018/10/17 周三,system(“Time /T”) 為獲取當前系統時間並顯示,顯示方式為 09:56;運行程序后時間不會自動刷新。

 

(2.)system(“title XX”) 設置命令台窗口的標題為XX。

 

(3.)system(“mode con cols = n lines = m”) 設置窗口的寬度和高度。

 

(4.)system(“color 0B”) 設置窗口的顏色,其中color后面的0是背景色代號,A是前景色代號。各顏色代碼如下:0=黑色 1=藍色 2=綠色 3=湖藍色 4=紅色 5=紫色 6=黃色 7=白色 8=灰色 9=淡藍色 A=淡綠色 B=淡淺綠色 C=淡紅色 D=淡紫色 E=淡黃色 F=亮白色。

 

(5.)system(“shutdown –p”) 為立即關閉計算機;system(“shutdown –l”) 為注銷計算機(不關閉);system(“shutdown -s“)關閉計算機(默認一分鍾關);system(“shutdown -s –t num“)定時num 秒后關閉計算機,system(“shutdown -r”) 為重啟計算機;system(“shutdown -r –t num“) 定時重啟計算機(默認一分鍾后重啟);system (“shutdown -a”) 取消定時任務。

 

(6.)system("pause") 可以實現凍結屏幕,便於觀察程序的執行結果。

 

(7.)system("del c::xxx.txt") 刪除文件。

 

(8.)system("dir C:\\Users\\YJ\\Desktop\\CPlusExample") 查看文件目錄的詳細信息。

 

(9.)system(“start C:\\xxx\\YYY.exe”);執行 YYY.exe,strat 可以省略。

 

以下程序用到了以上的大部分函數,實現功能:顯示當前程序運行的時間,實現關機管理。可以選擇定時關機、立即關機、注銷(不關機)以及退出此程序等選項,代碼如下:

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 int print()
  5 {
  6     printf(" ======================= \n");
  7     printf(" ===C Turn Off Programa===\n");
  8     printf("1.Turn off after some minute\n");
  9     printf("2.Turn off at once\n");
 10     printf("3.Logout\n");
 11     printf("4.Exit\n");
 12     printf("========================\n");
 13     return 0;
 14 }
 15 int main()
 16 {
 17     system("title C Turn Off Program");
 18     system("mode con cols=48 lines=15");
 19     system("color 0B");
 20     system("DAte /T");
 21     system("TiME /T");
 22     char cmd[20]="shutdown -s -t ";
 23     char t[5]="0";
 24     print();
 25     int c;
 26     scanf("%d",&c);
 27     getchar();
 28     switch(c)
 29     {
 30         case 1:printf("The Waiting Time for Turn Off  (0~600)\n");
 31         scanf("%s",t);
 32         system(strcat(cmd,t));
 33         int d = 0;
 34         printf("\n\nYou can press 1 to end this off system!!\n");
 35         scanf("%d",&d);
 36         getchar();
 37         if(d == 1)
 38             system("shutdown -a");
 39         break;
 40         case 2:system("shutdown -p");break;
 41         case 3:system("shutdown -l");break;
 42         case 4:break;
 43         default:printf("Error!\n");
 44     }
 45     system("pause");
 46     exit(0);
 47 }
 48 
 49 
查看代碼

 

 

二.數字式時鍾的實現

代碼功能:獲取系統實時的時間(包括年、月、日、小時、分鍾以及秒)等,顯示在屏幕上,並刷新屏幕。

  1 #include<time.h>
  2 #include<iostream>
  3 #include<unistd.h>
  4 #include<conio.h>
  5 using namespace std;
  6 int main()
  7 {
  8     while(!kbhit())
  9     {
 10         time_t t = time(NULL);
 11         struct tm *localt = localtime(&t);
 12         system("cls");
 13         cout<<'\n'<<"\t\t";
 14         cout<<localt->tm_year+1900<<'\\';
 15         cout<<localt->tm_mon+1<<'\\';
 16         cout<<localt->tm_mday<<'\t';
 17         cout<<localt->tm_hour<<':',
 18         cout<<localt->tm_min<<':',
 19         cout<<localt->tm_sec;
 20         sleep(1);
 21     }
 22     return 0;
 23 }

程序運行結果:

捕獲


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM