您的位置:首页 > 其它

第12周项目2-时间类

2016-05-30 21:53 316 查看
/*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;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: