第12周项目2-时间类

/*Copyright (c)2016,烟台大学计算机与控制工程学院 
 *All rights reserved. 
 *文件名称:my.cpp 
 *作    者:张瀚文 
 *完成日期:2016年5月28日 
 * 
 * 问题描述: 实现Time类中的运算符重载。
    
 */
#include <iostream>

using namespace std;
class CTime
{
private:
    unsigned short int hour;
    unsigned short int sec;
    unsigned short int minu;
public:
    CTime(int h=0,int m=0,int s=0);
    void setTime(int h,int m,int s)
    {



        hour=h;
        minu=s;
        sec=s;


    }
  friend ostream &operator<<(ostream &out,CTime &c);
    void display();
    //二目运算符的比较
    bool operator>(CTime &c);
    bool operator<(CTime &c);

    bool operator>=(CTime &c);
    bool operator<=(CTime &c);
    bool operator==(CTime &c);
    bool operator!=(CTime &c);
    //二目的加减运算符的重载
    //返回t规定的时分秒后的时间
    //例 t1(8,20,25),t2(11,20,50),t1+t2为19:41:15
    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--();//前置--,前一秒

};
ostream &operator<<(ostream &out,CTime &c)
{
    out<<c.hour<<':'<<c.minu<<':'<<c.sec;
    return out;
}
CTime::CTime(int h,int m,int s)
{
    if(h>=0&&h<=24&&m>=0&&m<=60&&s>=0)
   {

    hour=h;
    minu=m;
    sec=s;
   }
    else
    cout<<"error"<<endl;
}

CTime CTime:: operator++(int )
{
    CTime c=*this;
    *this=*this+1;
    return c;
}
CTime &CTime ::operator++()
{
  *this=*this+1;

   return *this;
}
CTime &CTime ::operator--()
{

    *this=*this-1;
   return *this;
}
CTime CTime::operator--(int)
{
    CTime c=*this;
    *this=*this-1;
    return c;
}
bool CTime::operator<=(CTime &c)
{
    if(hour<=c.hour)return true;
    if(hour>c.hour)return false;
    if(minu<=c.minu)return true;
    if(minu>c.minu)return false;
    if(sec<=c.sec)return true;
    return false;
}
bool CTime::operator>=(CTime &c)
{
   if(hour>=c.hour)return true;
    if(hour<c.hour)return false;
    if(minu>=c.minu)return true;
    if(minu<c.minu)return false;
    if(sec>=c.sec)return true;
    return false;
}
bool CTime::operator<(CTime &c)
{
    if (hour<c.hour) return true;
    if (hour>c.hour) return false;
    if (minu<c.minu) return true;
    if (minu>c.minu) return false;
    if (sec<c.sec) return true;
    return false;
}
bool CTime::operator>(CTime &c)
{
     if (hour>c.hour) return true;
    if (hour<c.hour) return false;
    if (minu>c.minu) return true;
    if (minu<c.minu) return false;
    if (sec>c.sec) return true;
    return false;
}
bool CTime::operator==(CTime &t)
{
    if(*this>t||*this<t)return false;
    return true;
}
bool CTime::operator!=(CTime &t)
{
    if(*this==t)return false;
    return true;
}
CTime &CTime::operator+=(CTime &t)
{
    *this=*this+t;

    return *this;
}
CTime &CTime::operator-=(CTime &t)
{

    *this=*this-t;
    return *this;
}
CTime CTime::operator+(CTime &t)
{
    int h,s,m;
   s=sec+t.sec;
    m=minu+t.minu;
    h=hour+t.hour;
    if (s>59)
    {
        s-=60;
        m++;
    }
    if (m>59)
    {
        m-=60;
        h++;

    }
    while (h>23) h-=24;
    CTime t0(h,m,s);
    return t0;
}

CTime CTime::operator-(CTime &t)
{
 int h,s,m;
   s=sec-t.sec;
    m=minu-t.minu;
    h=hour-t.hour;
    if (s<0)
    {
        s+=60;
        m--;
    }
    if (m<0)
    {
        m+=60;
        h--;
    }
    while (h<0) h+=24;
    CTime t0(h,m,s);
    return t0;}
CTime CTime::operator+(int s)
{
    int ss=s%60;
    int m=(s/60)%60;
    int h=s/3600;
        CTime c(h,m,ss);
    return *this+c;
}
CTime CTime::operator-(int s)
{
    int ss=s%60;
    int m=(s/60)%60;
    int h=s/3600;
        CTime c(h,m,ss);
    return *this-c;
}
CTime &CTime::operator+=(int s)
{

    *this=*this+s;
    return *this;
}
CTime &CTime::operator-=(int s)
{

    *this=*this-s;
    return *this;
}
int main()
{
CTime t1(12,24,20),t2(13,20,30),t;
cout<<"t1= "<<t1<<endl;
cout<<"t2= "<<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;
    if (t1<=t2) cout<<"t1≤t2"<<endl;
    cout<<endl;
    cout<<"t1= "<<t1<<endl;
    cout<<"t2= "<<t2<<endl;

    cout<<"t=t1++"<<endl;
    t=t1++;
    cout<<"t= "<<t<<"    t1= "<<t1<<endl;

    cout<<"t=++t1"<<endl;
    t=++t1;
    cout<<"t= "<<t<<"    t1= "<<t1<<endl;
      t=t1+t2;
    cout<<"t1+t2= "<<t<<endl;
    t=t1-t2;
    cout<<"t1-t2= "<<t<<endl;
    t=t1+2000;
    cout<<"t1+2000= "<<t<<endl;
    t=t1-5000;
    cout<<"t1-5000= "<<t<<endl;
    return 0;

}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值