第七週實驗報告(任務1)

程序頭部註釋開始
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙臺大學計算機學院學生
* All rights reserved.
* 文件名稱:       Time類            
* 作    者:     郭廣建                       
* 完成日期:  2012年    4  月   03     日
* 版 本 號:  1.0

題目介紹:

【任務1】含有靜態數據成員和成員函數的Time類:類中所有的對象共有的數據
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;
};
//下面寫出靜態成員的初始化及各成員函數的定義
……

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;
}

 

源程序:

#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;
}



運行結果:

 

經驗積累:

1).學會運用靜態數據成員和成員函數

2).可以更簡單的調用類中的數據成員,但是不要一味的因爲簡單而濫用

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