第二学期第九周项目2--TIME类

来源:互联网 发布:利润表中的数据 编辑:程序博客网 时间:2024/05/29 14:52
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作    者:  沈远宏 * 完成日期:2013 年 04月15日 * 版 本 号:v1.0 * 问题描述:实现Time类中的运算符重载 (1)定义对时间对象的自增和自减一目运算符 (2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。*/#include <iostream>using namespace std;class CTime{private:    unsigned short int hour;    // 时    unsigned short int minute;  // 分    unsigned short int second;  // 秒    char p,t;public:    CTime(int h=0,int m=0,int s=0):hour(h),minute(m),second(s) {};     //输入输出流的运算符的重载    friend ostream& operator << (ostream&,CTime&);    friend istream& operator >>(istream&,CTime&);    void input();    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);    //二目的加减运算符的重载    //返回t规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15    CTime operator+(CTime &t);    CTime operator-(CTime &t);//对照+理解    CTime operator+(int s);//返回s秒后的时间    CTime operator-(int s);//返回s秒前的时间    //一目运算符的重载    CTime operator++(int);//后置++,下一秒    CTime operator++();//前置++,下一秒,前置与后置返回值不一样    CTime operator--(int);//后置--,前一秒    CTime operator--();//前置--,前一秒    //二目赋值运算符的重载    CTime operator+=(CTime &c);    CTime operator-=(CTime &c);    CTime operator+=(int s);//返回s秒后的时间    CTime operator-=(int s);//返回s秒前的时间};void CTime::input(){    cin>>hour>>p>>minute>>t>>second;}void CTime::display(){    cout<<hour<<p<<minute<<t<<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;    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;    return true;}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;}bool CTime::operator <= (CTime &t){    if(*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){    CTime t3(*this);    int k,j,i;    k=(second+t.second)/60;    t3.second=(second+t.second)%60;    j=(minute+t.minute+k)/60;    t3.minute=(minute+t.minute+k)%60;    i=(hour+t.hour+j)/24;    t3.hour=(hour+t.hour+j)%24;    return t3;}CTime CTime::operator-(CTime &t){    CTime t3(*this);    int k,j,i;    k=hour*3600+minute*60+second;    j=t.hour*3600+t.minute*60+t.second;    i=k-j;    t3.second=(-i)%3600;    t3.minute=(-i)/60%60;    t3.hour=(-i)/3600;    return t3;}CTime CTime::operator+(int s)//返回s秒后的时间{    CTime t3(*this);    t3.second=(s+second)%60;    t3.minute=((s+second)/60+minute)%60;    t3.hour= (((s+second)/60+minute)/60+hour)%24;    return t3;}CTime CTime::operator-(int s)//返回s秒前的时间{    CTime t3(*this);    int s1;    s1=second+minute*60+hour*3600;    s1=s1-s;    if(s1<0)    {        s1=s1%3600;        t3.second=-s1;        if(t3.second<60)        {            t3.minute=0;            t3.hour=0;        }        else        {            t3.second=t3.second%60;            t3.minute=t3.second/60;            t3.hour=t3.minute/60;            if(t3.hour>24)            {                t3.hour=t3.hour/24;            }        }    }    return t3;}CTime CTime::operator+=(CTime &c){    CTime t3(*this);    return(t3+c);}CTime CTime::operator-=(CTime &c){    CTime t3(*this);    return(t3-c);}CTime CTime::operator+=(int s)//返回s秒后的时间{    CTime t3(*this);    return(t3+s);}CTime CTime::operator-=(int s)//返回s秒前的时间{    CTime t3(*this);    return(t3-s);}CTime CTime::operator++(){    CTime t3(*this);    t3.second++;    if(t3.second==60)    {        t3.second-=60;        t3.minute++;        if(t3.minute==60)        {            t3. minute-=60;            t3. hour++;            {                if(t3.hour==24)                {                    t3.hour-=24;                }            }        }    }    return t3;}CTime CTime::operator++(int){    CTime t1(*this),t2(t1);    t1.second++;    if( t1.second==60)    {        t1.second-=60;        t1.minute++;        if( t1.minute==60)        {            t1. minute-=60;            t1.hour++;            {                if( t1.hour==24)                {                    t1. hour-=24;                }            }        }    }    return t2;}CTime CTime::operator--(){    CTime t1(*this);    t1.second--;    if( t1.second==0)    {        t1.second+=60;        t1.minute--;        if( t1.minute==0)        {            t1.minute+=60;            t1.hour--;            {                if( t1.hour==0)                {                    t1.hour+=24;                }            }        }    }    return t1;}CTime CTime::operator--(int){    CTime t1(*this),t2(t1);    t1.second--;    if( t1.second==0)    {        t1.second+=60;        t1.minute--;        if( t1.minute==0)        {            t1.minute+=60;            t1.hour--;            {                if( t1.hour==0)                {                    t1.hour+=24;                }            }        }    }    return t2;}ostream& operator<<(ostream& output,CTime& c){    output<<c.hour<<c.t<<c.minute<<c.p<<c.second<<endl;    return output;}istream& operator>>(istream& input,CTime& c){    input>>c.hour>>c.p>>c.minute>>c.t>>c.second;    return input;}int main(){    CTime t1,t3;    cout<<"请输入个时间(时:分:秒):\n";    cin>>t1;    t3=t1++;    cout<<"t1++="<<t3;    t3=++t1;    cout<<"++t1="<<t3;    t3=t1--;    cout<<"t1--="<<t3;    t3=--t1;    cout<<"--t1="<<t3;}//自行编制用于测试的main()函数,有些结果不必依赖display()函数,提倡用单步执行查看结果


运行结果:

心得体会:

之前有一些浮躁,现在请自己静下来,慢慢的追赶自己落下的路

0 0