c++实验3—项目1.静态成员应用

一,问题及代码

/*  
文件名称:静态成员应用.cpp  
作者    :汤俊鹏  
日期    :2016.4.8  
平台    :visual c++ 6.0      
项目名称:静态成员的应用  
问题详情: 设计含有静态数据成员和成员函数的Time类。静态数据成员是类中所有的对象共有的数据, 
           在下面的设计中,时钟要采用12小时制,还是要使用24小时制,显示时,不足两位的数字前 
           是否前导0,都是“影响全局”的设置,适合作为类中的静态数据成员。 
代码如下:  
*/   
#include<iostream>  
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;//默认初始为24小时制
bool Time::from0=false;  //默认初始不前导0 
      
        
Time::Time(int h,int m,int s)  
{  
    hour=h;  
    minute=m;  
    sec=s;  
}  
  
void Time::show_time()  //输出四种情况下的时间
{  
	if(is_24==true&&from0==true)
	{
		if(hour<10) cout<<"0"<<hour<<":";
		else        cout<<hour<<":";
		if(minute<10)  cout<<"0"<<minute<<":";
		else           cout<<minute<<":";
		if(sec<10)   cout<<"0"<<sec<<endl;
		else         cout<<sec<<endl;
	}
	if(is_24==false&&from0==true)
	{   if(hour>12)  hour-=12;
		if(hour<10) cout<<"0"<<hour<<":";
		else        cout<<hour<<":";
		if(minute<10)  cout<<"0"<<minute<<":";
		else           cout<<minute<<":";
		if(sec<10)   cout<<"0"<<sec;
		else         cout<<sec;
		if(hour<=13) cout<<" am"<<endl;
		else         cout<<" pm"<<endl;
	}
	if(is_24==true&&from0==false)
		cout<<hour<<":"<<minute<<":"<<sec<<endl;
	if(is_24==false&&from0==false)
	{
		if(hour>12)  hour-=12;
		cout<<hour<<":"<<minute<<":"<<sec;	
		if(hour<=13) cout<<" am"<<endl;
		else         cout<<" pm"<<endl;
	}
}  
  
void Time::add_seconds(int n)  
{  
    sec+=n;  
    if(sec>59)  
    {  sec%=60; minute+=sec/60; }  
}  
void Time::add_minutes(int n)  
{  
    minute+=n;  
    if(minute>59)  
    {  minute%=60; hour+=minute/60; }  
}  
void Time::add_hours(int n)  
{  
    hour+=n;  
    if(n>23)  
        hour%=24;  
}  
 void Time::change24()  
{  
    is_24=!is_24;  
}  
 void Time::changefrom0()  
{  
    from0=!from0;  
}  
  
int main()  
{   
    Time t1(20,23,5);  
	cout<<"24小时,不前导:"<<endl;
    t1.show_time();      //输出时间,默认为24小时制,不前导  
    t1.change24(); 
	cout<<"12小时,不前导:"<<endl;
    t1.show_time();//改变is_24,输出12小时制,不前导  
    t1.changefrom0(); 
	cout<<"12小时,前导:"<<endl;
    t1.show_time(); //输出12小时制,前导
	t1.change24();
	cout<<"24小时,前导:"<<endl;
	t1.show_time();
    t1.add_seconds(10); //增加10秒  
    t1.add_minutes(10); //增加10分  
    t1.add_hours(10);   //增加10小时 
	t1.changefrom0();
	cout<<"增加后的时间:"<<endl;
    t1.show_time();     //再次输出时间  
    return 0;  
}

二,运行结果

c++实验3—项目1.静态成员应用_第1张图片

三,心得体会

      学会应用静态成员,这很重要,在以后的变成编程中还要学到静态成员函数,知道C语言中的静态变量,c++的也 比较好理解和掌握

四,知识点总结

      静态成员不能被普通成员函数调用,只能被静态成员函数调用。

你可能感兴趣的:(C++)