實驗報告7---------------------1

7-1 靜態函數的應用(Time類)

52人閱讀 評論(0) 收藏 舉報

/*
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱:                             
* 作    者:張傳新                             
* 完成日期:2012 年04 月 2日
* 版 本 號:1         

* 對任務及求解方法的描述部分
* 輸入描述:
* 問題描述:

* 程序輸出:
* 問題分析:……
* 算法設計:……
*/

  1. #include<iostream>   
  2. using namespace std;  
  3.   
  4. class Time  
  5. {  
  6. public:  
  7.     Time(int=0,int=0,int=0);  
  8.     void show_time( ); //根據is_24和from0,輸出適合形式-20:23:5/8:23:5 pm/08:23:05 pm   
  9.     void add_seconds(int); //增加n秒鐘   
  10.     void add_minutes(int); //增加n分鐘     
  11.     void add_hours(int); //增加n小時     
  12.     static void change24();  //改變靜態成員is_24,在12和24時制之間轉換   
  13.     static void changefrom0();   //改變靜態成員from0,切換是否前導0   
  14. private:  
  15.     static bool is_24; //爲true時,24小時制,如20:23:5;爲flase,12小時制,顯示爲8:23:5 pm    
  16.     static bool from0; //爲true時,前導0,爲flase,8:23:5顯示爲08:23:05   
  17.     int hour;  
  18.     int minute;  
  19.     int sec;  
  20. };  
  21. //下面寫出靜態成員的初始化及各成員函數的定義      
  22. Time::Time(int h,int m,int s):hour(h),minute(m),sec(s){}    
  23.     
  24. bool Time::is_24 = true;   
  25.     
  26. bool Time::from0 = false;    
  27.     
  28. //根據is_24和from0,輸出適合形式-20:23:5/8:23:5 pm/08:23:05 pm      
  29. void Time::show_time( )    
  30. {    
  31.     if(is_24 == true//爲true時,24小時制    
  32.     {    
  33.         if(from0 == false//爲flase ,不前導0   
  34.         {    
  35.             cout << hour << ":" << minute << ":" << sec;    
  36.         }    
  37.         else    
  38.         {    
  39.             if(hour < 10)    
  40.             {    
  41.                 cout << "0" << hour << ":";    
  42.             }    
  43.             else    
  44.             {    
  45.                 cout << hour << ":";    
  46.             }    
  47.             if(minute < 10)    
  48.             {    
  49.                 cout << "0" << minute << ":";    
  50.             }    
  51.             else     
  52.             {    
  53.                 cout << minute << ":";    
  54.             }    
  55.             if(sec < 10)    
  56.             {    
  57.                 cout << "0" << sec;    
  58.             }    
  59.             else     
  60.             {    
  61.                 cout << sec;    
  62.             }    
  63.         }    
  64.     }    
  65.     else//爲flase,12小時制      
  66.     {    
  67.         int h;    
  68.             
  69.         h = hour;    
  70.             
  71.         if(h > 12)    
  72.         {    
  73.             h = (h - 12) % 12;    
  74.                 
  75.             if(from0 == false)    
  76.             {    
  77.                 cout << h << ":" << minute << ":" << sec << '\t' << "pm" << endl;    
  78.             }    
  79.             else    
  80.             {    
  81.                 if(h < 10)    
  82.                 {    
  83.                     cout << "0" << h << ":";    
  84.                 }    
  85.                 else    
  86.                 {    
  87.                     cout << h << ":";    
  88.                 }    
  89.                 if(minute < 10)    
  90.                 {    
  91.                     cout << "0" << minute << ":";    
  92.                 }    
  93.                 else     
  94.                 {    
  95.                     cout << minute << ":";    
  96.                 }    
  97.                 if(sec < 10)    
  98.                 {    
  99.                     cout << "0" << sec << '\t' << "pm";    
  100.                 }    
  101.                 else     
  102.                 {    
  103.                     cout << sec << '\t' << "pm";    
  104.                 }    
  105.             }    
  106.         }    
  107.         else    
  108.         {       
  109.             if(from0 == false)    
  110.             {    
  111.                 cout << h << ":" << minute << ":" << sec << '\t' << "am" << endl;    
  112.             }    
  113.             else    
  114.             {    
  115.                 if(h < 10)    
  116.                 {    
  117.                     cout << "0" << h << ":";    
  118.                 }    
  119.                 else    
  120.                 {    
  121.                     cout << h << ":";    
  122.                 }    
  123.                 if(minute < 10)    
  124.                 {    
  125.                     cout << "0" << minute << ":";    
  126.                 }    
  127.                 else     
  128.                 {    
  129.                     cout << minute << ":";    
  130.                 }    
  131.                 if(sec < 10)    
  132.                 {    
  133.                     cout << "0" << sec << '\t' << "am";    
  134.                 }    
  135.                 else     
  136.                 {    
  137.                     cout << sec << '\t' << "am";    
  138.                 }    
  139.             }    
  140.         }    
  141.             
  142.     }    
  143.     cout << endl;    
  144. }   
  145.    
  146. //改變靜態成員is_24,在12和24時制之間轉換      
  147. void Time::change24()    
  148. {    
  149.     is_24 = false;    
  150. }   
  151.    
  152. //改變靜態成員from0,切換是否前導0      
  153. void Time::changefrom0()     
  154. {    
  155.     from0 = true;    
  156. }    
  157. //增加n秒鐘      
  158. void Time::add_seconds(int s)    
  159. {    
  160.     sec += s;    
  161.         
  162.     if(sec > 60)    
  163.     {    
  164.         minute = (sec - 60) % 60; //注意:不能爲 minute = (sec - 60),有漏洞   
  165.             
  166.         sec = 0;    
  167.     }    
  168. }    
  169. //增加n分鐘      
  170. void Time::add_minutes(int m)      
  171. {    
  172.     minute += m;    
  173.         
  174.     if(minute > 60)    
  175.     {    
  176.         hour = (minute - 60) % 60;//突然發現以前只將 minute = 0考慮進去了,忘了hour加幾    
  177.             
  178.         minute = 0;    
  179.     }    
  180. }    
  181. //增加n小時      
  182. void Time::add_hours(int h)    
  183. {    
  184.     hour += h;    
  185.         
  186.     if(hour > 24)    
  187.     {    
  188.         hour = (hour - 24) % 24;    
  189.     }    
  190. }    
  191.     
  192. int main( )       
  193. {    
  194.     Time t1(23,14,25),t2(8,45,6);     
  195.         
  196.     cout << "24時制, 不前導0:" << endl;    
  197.         
  198.     cout << "t1是:";    
  199.         
  200.     t1.show_time();    
  201.         
  202.     cout << "t2是:";    
  203.         
  204.     t2.show_time();    
  205.         
  206.     t1.add_hours(10);    
  207.         
  208.     t2.add_hours(10);    
  209.         
  210.     Time::changefrom0(); //調用靜態成員      
  211.         
  212.     cout << "10小時後, 切換是否前導0:" << endl;    
  213.         
  214.     cout << "t1是:";    
  215.         
  216.     t1.show_time();    
  217.         
  218.     cout<< "t2是:";    
  219.         
  220.     t2.show_time();    
  221.         
  222.     t1.change24();    
  223.         
  224.     cout << "換一種制式:" << endl;    
  225.         
  226.     cout << "t1是:";    
  227.         
  228.     t1.show_time();    
  229.         
  230.     cout << "t2是:";    
  231.         
  232.     t2.show_time();    
  233.         
  234.     system("pause");    
  235.         
  236.     return 0;    
  237. }    


運行結果:

經驗積累:

獨立完成還是有點困難,自己做不出來,得看別人的才能明白,能看懂但不會編
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章