第12周项目2-时间类

原创 2016年05月30日 21:53:21
/*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;

}

第12周项目3-日期时间类

/* *copyright (c)2015,烟台大学计算机学院 *All rights reserved *文件名称:project.cpp *作者:孙春红 *完成日期:2015年5月27日...

第12周项目3-日期时间类

#include using namespace std; class Date { protected: int year; int month; int day; public: Dat...

第12周项目3-日期时间类

 【项目3】日期时间类 定义一个日期类Date,数据成员包括年、月、日,SetDate(int y,int m,int d)和PrintDate()函数分别用于设置日期和显示日期;再定义一...

第二学期第12周项目4--日期时间类

/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 沈远宏 * 完成日期:2014 年 05月13日 *...

第12周-多继承、虚基类,继承和组合-项目3-日期时间类

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘畅 * 完成日期:20...

第12周-项目4-时间日期类

/* * 程序的版权和版本声明部分: * Copyright (c) 2013.烟台大学计算机学院。 * All rights reserved. * 文件名称: * 作 者:冯冬影 ...

第12周项目3-日期时间类

/* *All rights reserved. *文件名称:main.cpp *作 者:姜 甜 甜 *完成日期:2015年5月26日 *版 本 号:v1.0 *问题描述...
  • tingary
  • tingary
  • 2015年05月26日 20:06
  • 205

第12周 项目三-日期时间类

定义一个日期类Date,数据成员包括年、月、日,SetDate(int y,int m,int d)和PrintDate()函数分别用于设置日期和显示日期;再定义一个时间类Time,数据成员包括时、分...

第12周 【项目3】日期时间类

问题描述: 定义一个日期类Date,数据成员包括年、月、日,SetDate(int y,int m,int d)和PrintDate()函数分别用于设置日期和显示日期;再定义一个时间类Time,数据...

第12周项目3-日期时间类

问题及代码: /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cop *作者: *完成日期:2015年...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第12周项目2-时间类
举报原因:
原因补充:

(最多只允许输入30个字)