7.1 含有靜態數據成員和成員函數的Time類

* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱:     第七週 任務一                        
* 作    者:          楊森                   
* 完成日期:    2012     年    4  月   3     日
* 版 本 號:   V1.0

 

源程序:

#include <iostream>

#include<iomanip>   
  
using namespace std;  
  
class Time  
{  
public:  
    Time(int=0,int=0,int=0);  
  
    void show_time( ); //根據is_24和from0,輸出適合形式-20:23:5/8:23:5 pm/08:23:05 pm   
  
    void add_seconds(int); //增加n秒鐘   
  
    void add_minutes(int); //增加n分鐘     
  
    void add_hours(int); //增加n小時     
  
    static void change24();  //改變靜態成員is_24,在12和24時制之間轉換   
  
    static void changefrom0();   //改變靜態成員from0,切換是否前導0   
  
private:  
    static bool is_24; //爲true時,24小時制,如20:23:5;爲flase,12小時制,顯示爲8:23:5 pm    
  
    static bool from0; //爲true時,前導0,8:23:5顯示爲08:23:05   
  
    int hour;  
  
    int minute;  
  
    int sec;  
};  
    
bool Time::is_24 = true;    
    
bool Time::from0 = false;    
    
Time::Time(int h,int m ,int s)  
{  
    hour = h;  
  
    minute = m;  
  
    sec = s;  
}  
  
void Time::show_time( )  
{  
    if(is_24 == true)  
    {  
        if(from0 == true)    
        {    
            cout << setfill('0') << setw(2) << hour << ":" << setfill('0') << setw(2) << minute << ":" << setfill('0') << setw(2) << sec << endl;    
        }    
            
        else    
        {    
            cout << hour << ":" << minute << ":" << sec << endl;    
        }    
    }  
    else  
    {  
  
        char c = 'a';  
  
        if(hour > 12)  
        {  
            c = 'p';  
  
            hour = hour - 12;  
        }  
        if(from0 == true)    
        {    
            cout << setfill('0') << setw(2) << hour << ":" << setfill('0') << setw(2) << minute << ":" << setfill('0') << setw(2) << sec << "  " << c << "m" << endl;    
        }    
            
        else    
        {    
            cout << hour << ":" << minute << ":" << sec << endl;    
        }   
    }  
  
}  
void Time::add_seconds(int n)  
{  
    minute = minute + ((sec + n) / 60);  
  
    sec = (sec + n) / 60;  
}  
void Time::add_minutes(int n)  
{  
    hour = hour + (( minute + n) / 60);  
  
    minute = (minute + n) / 60;  
}  
void Time::add_hours(int n)  
{  
    if((hour + n) < 24)  
    {  
        hour = hour + n;  
    }  
    else   
    {  
        hour = hour + n - 24;  
    }  
}  
void Time::change24()   
{  
    if(Time::is_24 == true)  
    {  
        Time::is_24 = false;  
    }  
}  
void Time::changefrom0()  
{  
    if(Time::from0 == false)  
    {  
        Time::from0 = true;  
    }  
}  
  
  
  
int main( )     
{  
    Time t1(23,14,25),t2(8,45,6);   
  
    cout << "24時制, 不前導0:" <<endl;  
  
    cout<<"t1是:";  
  
    t1.show_time();  
  
    cout << "t2是:";  
  
    t2.show_time();  
  
    t1.add_hours(10);  
  
    t2.add_hours(10);  
  
    Time::changefrom0(); //注意此處調用靜態成員   
  
    cout << "10小時後, 切換是否前導0:" <<endl;  
  
    cout<< "t1是:";  
  
    t1.show_time();  
  
    cout << "t2是:";  
  
    t2.show_time();  
  
    t1.change24();  
  
    cout << "換一種制式:" <<endl;  
  
    cout << "t1是:";  
  
    t1.show_time();  
  
    cout << "t2是:";  
  
    t2.show_time();  
  
    //system("pause");  
  
    return 0;  
}  


運行結果:

 

小感:就是 show_time() 函數不好搞啊···

發佈了44 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章