您的位置:首页 > 其它

第十一周项目——Time类中的运算符重载

2016-05-16 12:34 411 查看
/* 
*Copyright (c) 2015,烟台大学计算机学院 
*All rights reserved. 
*文件名称:text.cpp 
*作者:李德彪
*完成日期:2015年5月16日 
*版本号:v1.0 

*问题描述:  实现time类的运算符重载 
*输入描述: 无 
*程序输出: 求time类运算符重载后的结果 
*/  
#include <iostream>  
using namespace std;  
class CTime  
{  
private :  
    unsigned short int hour;  
    unsigned short int minute;  
    unsigned short int second;  
public :  
    CTime (int h=0,int m=0,int s=0);  
    void setTime(int h,int m,int s);  
    void display();  
    bool operator >(CTime &t);  
    bool operator <(CTime &t);  
    bool operator >=(CTime &t);  
    bool operator <=(CTime &t);  
    bool operator ==(CTime &t);  
    bool operator !=(CTime &t);  
    CTime operator +(CTime &t);  
    CTime operator -(CTime &t);  
    CTime operator +(int s);  
    CTime operator -(int s);  
    CTime &operator +=(CTime &c);  
    CTime &operator -=(CTime &c);  
    CTime &operator +=(int s);  
    CTime &operator -=(int s);  
    CTime operator ++(int );  
    CTime operator ++();  
    CTime operator --(int );  
    CTime operator --();  
  
};  
CTime::CTime (int h,int m,int s):hour(h),minute(m),second(s)  
{  
  
}  
    void CTime::setTime(int h,int m,int s)  
    {  
        minute=m;  
        hour=h;  
        second=s;  
    }  
    void CTime::display()  
    {  
        cout<<hour<<":"<<minute<<":"<<second<<endl;  
    }  
    bool CTime::operator >(CTime &t)  
    {  
        if(hour>t.hour)return true;  
        if(hour<t.hour)return false;  
        if(minute>t.minute)return true;  
        if(minute<t.minute)return false;  
        if(second>t.second)return true;  
        if(second<t.second)return false;  
    }  
    bool CTime::operator <(CTime &t)  
    {  
        if(hour>t.hour)return false;  
        if(hour<t.hour)return true;  
        if(minute>t.minute)return false;  
        if(minute<t.minute)return true;  
        if(second>t.second)return false;  
        if(second<t.second)return true;  
    }  
    bool CTime::operator 
cc93
>=(CTime &t)  
    {  
        if(*this<t)return false;  
        return true;  
    }  
    bool CTime::operator <=(CTime &t)  
    {  
        if(*this>t)return false;  
        return true;  
    }  
    bool CTime::operator ==(CTime &t)  
    {  
        if(*this<t||*this>t)return false;  
        return true;  
    }  
    bool CTime::operator !=(CTime &t)  
    {  
        if(*this>t||*this<t)return true;  
        return false;  
    }  
    //当两个不规范的时间相加时可以用此方法  
    CTime CTime::operator +(CTime &t)  
    {  
        int h,m,s;  
        h=hour+t.hour;  
        m=minute+t.minute;  
        s=second+t.second;  
        if(s>=60){  
            s=s%60;  
            m=m+s/60;  
        }  
        if(m>=60){  
            m=m%60;  
            h=h+m/60;  
            }  
        if(h>=24)  
            h=h%24;  
        CTime tt(h,m,s);  
        return tt;  
    }  
    //当两个规范的时间相减时可以用此方法  
    CTime CTime::operator -(CTime &t)  
    {  
        int h,m,s;  
        s=second-t.second;  
        m=minute-t.minute;  
        h=hour-t.hour;  
        if (s<0)  
        {  
            s+=60;  
            m--;  
        }  
        if (m<0)  
        {  
            m+=60;  
            h--;  
        }  
        if (h<0) h+=24;  
        CTime tt(h,m,s);  
        return tt;  
  
    }  
    CTime CTime::operator +(int s)  
    {  
        int ss=s%60;  
        int mm=(s/60)%60;  
        int hh=s/3600;  
        CTime t0(hh,mm,ss);  
        return *this+t0;  
  
    }  
    CTime CTime::operator -(int s)  
    {  
        int ss=s%60;  
        int mm=(s/60)%60;  
        int hh=s/3600;  
        CTime t0(hh,mm,ss);  
        return *this-t0;  
    }  
    CTime &CTime::operator +=(CTime &c)  
    {  
        *this=*this+c;  
        return *this;  
  
    }  
    CTime &CTime::operator -=(CTime &c)  
    {  
        *this=*this-c;  
        return *this;  
  
    }  
    CTime &CTime::operator +=(int s)  
    {  
        *this=*this+s;  
        return *this;  
    }  
    CTime &CTime::operator -=(int s)  
    {  
        *this=*this-s;  
        return *this;  
    }  
    CTime CTime::operator ++(int )  
    {  
        CTime t=*this;  
        *this=*this+1;  
        return t;  
    }  
    CTime CTime::operator ++()  
    {  
        *this=*this+1;  
        return *this;  
    }  
    CTime CTime::operator --(int )  
    {  
        CTime t=*this;  
        *this=*this-1;  
        return t;  
    }  
    CTime CTime::operator --()  
    {  
        *this=*this-1;  
        return *this;  
    }  
int main()  
{  
CTime t1(12,22,31),t2(19,20,55),t;  
    cout<<"t1为:";  
    t1.display();  
    cout<<"t2为:";  
    t2.display();  
    if (t1>t2) cout<<"t1>t2"<<endl;  
    if (t1<t2) cout<<"t1<t2"<<endl;  
    if (t1==t2) cout<<"t1=t2"<<endl;  
    if (t1!=t2) cout<<"t1≠t2"<<endl;  
    if (t1>=t2) cout<<"t1≥t2"<<endl;  
    if (t1<=t2) cout<<"t1≤t2"<<endl;  
    t=t1+t2;  
    t=t1-t2;  
    t=t1+3000;  
    t=t1-7000;  
    t1+=t2;  
    t1-=t2;  
    t1+=3000;  
    t1-=7000;  
    return 0;  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: