_today_初识class(类),写了一个时间的类

来源:互联网 发布:用友网络千股千评 编辑:程序博客网 时间:2024/06/01 14:54

#include <iostream>

using namespace std;

enum Statue{am,pm,_hour_mode,_minute_mode,_second_mode};

class time

{

public:

    /*初始化*/

     void _set_time_value(int _hour,int _minute,int _second);

     /*把秒转化为标准时间格式*/

     void _chang_second_value_to_time_std(int _second_value);

     /*获得时间所对应的秒数*/

     int _get_total_second();

     /*获得时间的小时数*/

     int _get_hour();

     /*获得时间的分钟数*/

     int _get_minute();

     /*获得时间的秒数*/

     int _get_second();

     /*重载+=*/

     void operator+=(time _t);

     /*重载++*/

     void operator++(int _option);

     /*输出*/

     void _output();

private:

    int hour;

    int minute;

    int second;

    int state;

};

/*_hour,_minute,_second均要大于*/

void time::_set_time_value(int _hour,int _minute,int _second)

{

    _chang_second_value_to_time_std(_hour*3600+_minute*60+_second);

}

/*_second_value大于*/

void time::_chang_second_value_to_time_std(int _second_value)

{

    this->hour=_second_value/3600;

    _second_value%=3600;

    this->minute=_second_value/60;

    _second_value%=60;

    this->second=_second_value;

    if(hour>=12) {

       state=pm;

       if(hour>12) hour-=12;

    }

    else state=am;

}

 

int time::_get_total_second()

{

    return hour*3600+minute*60+second;

}

int time::_get_hour()

{

    return hour;

}

int time::_get_minute()

{

    return minute;

}

int time::_get_second()

{

    return second;

}

 

void time::operator+=(time _t)

{

    second+=_t.second;

    if(second>=60)

       second%=60,minute++;

    if(second<0)

       second+=60,minute--;

    minute+=_t.minute;

    if(minute>=60)

       minute%=60,hour++;

    if(minute<0)

       minute+=60,hour--;

    hour+=_t.hour;

    hour+=24;

    hour%=24;

    if(hour>=12)

    {

       if(hour>12) hour-=12;

       state=pm;

    }

    else state=am;

}

void time::operator++(int _option)

{

    if(_option==_hour_mode)

    {

       hour++;

       hour%=24;

       if(hour>=12)

       {

       if(hour>12) hour-=12;

       state=pm;

       }

       else state=am;

       return;

    }

    if(_option==_minute_mode)

    {

       minute++;

       if(minute>=60)

       minute%=60,hour++;

       hour%=24;

       if(hour>=12)

       {

       if(hour>12) hour-=12;

       state=pm;

       }

       else state=am;

       return;

    }

    if(_option==_second_mode)

    {

       second++;

       if(second>=60)

       second%=60,minute++;

       if(minute>=60)

       minute%=60,hour++;

       hour%=24;

       if(hour>=12)

       {

       if(hour>12) hour-=12;

       state=pm;

       }

       else state=am;

       return;

    }

}

void time::_output()

{

    printf("%2.2d:%2.2d:%2.2d ",hour,minute,second);

    if(state==am) cout<<"am"<<endl;

    else cout<<"pm"<<endl;

}

int main()

{ time t;

 int i;

 t._set_time_value(10,62,62);

 for(i=0;i<=3600;i++)

     t._output(),t.operator++(_second_mode);

    return 0;

}

原创粉丝点击