1. 程式人生 > >第七週上機任務(時間類)

第七週上機任務(時間類)

標頭檔案
#pragma once
class Time
{
public:
	Time(int=0,int=0,int=0);  
    void show_time( ); //根據is_24和from0,輸出適合形式的時間: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,在和時制之間轉換  
    static void changefrom0();   //改變靜態成員from0,轉換是否前導  
private:  
    static bool is_24; //為true時,小時制,如:23:5;為flase,小時制,顯示為:23:5 pm  
    static bool from0; //為true時,前導,:23:5顯示為:23:05  
    int hour;  
    int minute;  
    int sec;  
};
原始檔

#include "Time.h"

#include<iostream>
using namespace std;
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( )  
{  
    int t=(is_24)?hour:(hour%12);  
    if(from0&&t<10)  
    cout<<'0';  
    cout<<t<<':';  
    if(from0&&minute<10)  
    cout<<'0';  
    cout<<minute<<':';  
    if(from0&&sec<10)  
    cout<<'0';  
    cout<<sec;  
   if(!is_24)  
   {  
       if(hour>12)  
       cout<<"pm";  
       else  
       cout<<"am";  
   }  
   cout<<endl;  
}  
void Time::add_seconds(int n)  
{  
    sec=sec+n;  
    if(sec>59)  
    {  
        sec=sec%60;  
        add_minutes(sec/60);  
    }  
    if(minute>59)  
    {  
        minute=minute%60;  
        add_hours(minute/60);  
    }  
    if(hour>23)  
    {  
        hour=hour%24;  
    }  
}  
void Time::add_minutes(int n)  
{  
    minute=minute+n;  
    if(minute>59)  
    {  
        minute=minute%60;  
        add_hours(minute/60);  
    }  
    if(hour>23)  
    {  
        hour=hour%24;  
    }  
}  
void Time::add_hours(int n)  
{  
    hour=hour+n;  
    if(hour>23)  
    {  
        hour=hour%24;  
    }  
}  
void Time::change24()  
{  
   is_24=!is_24;  
}  
void Time::changefrom0()  
{  
  from0=!from0;  
}  

資原始檔

#include<iostream>
#include "Time.h"
using namespace std;
int main()
{
	Time t1(23,15,25),t2(8,45,6);
	cout<<"24時制, 不前導:"<<endl;  
    cout<<"    t1是:";  
    t1.show_time();  
    cout<<"    t2是:";  
    t2.show_time();  
    t1.add_hours(10);  
    t2.add_hours(10);  
    Time::changefrom0(); 
    cout<<"10小時後, 切換是否前導:"<<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;  
}

執行結果: