第八周实验报告二

来源:互联网 发布:centos7 pdo mysql 编辑:程序博客网 时间:2024/06/05 06:33
#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 &c);  //返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15      CTime operator-(CTime &c);//对照+理解      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秒前的时间  };  CTime::CTime(int h,int m,int s)  {      hour=h;      minute=m;      second=s;  }  void CTime::setTime(int h,int m,int s)  {      hour=h;      minute=m;      second=s;  }    void CTime::display()  {      cout<<hour<<":"<<minute<<":"<<second<<endl;    }  //下面实现所有的运算符重载代码。  //为简化编程,请注意通过调用已有函数,利用好各函数之间的关系  //比较运算符(二目)的重载  bool CTime::operator > (CTime &t)  {      if(hour>t.hour)          return true;      else if(hour<t.hour)         return false;      else if(minute>t.minute )          return true;      else if(minute<t.minute )          return false;      else if(second>t.second )          return true;      else if(second<t.second )          return false;      return false;  }  bool CTime::operator < (CTime &t)  {      if(hour<t.hour)          return true;      else if(hour>t.hour)          return false;      else if(minute<t.minute )          return true;      else if(minute>t.minute )          return false;      else if(second<t.second )          return true;      else if(second>t.second )          return false;      return false;  }  bool CTime::operator >= (CTime &t)  {      CTime t1;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      if (t1<t)          return false;      return true;  }  bool CTime::operator <= (CTime &t)  {      CTime t1;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      if (t1>t)          return false;      return true;  }  bool CTime::operator == (CTime &t)  {      CTime t1;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      if (t1>t)          return false;      if (t1<t)          return false;      return true;  }    bool CTime::operator != (CTime &t)  {     CTime t1;     t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      if(t1==t)          return false;      return true;  }  //二目运算符的重载  CTime CTime::operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  {      CTime t;      t.hour =hour+c.hour ;      t.minute =minute+c.minute ;     t.second =second +c.second ;      if (t.second >59)      //思考:if中的两条语句能否交换顺序?为什么不能?后果将是……?        {           t.minute=(t.minute +t.second/60);    //增加sec/60分钟           if (t.minute>59)                {                t.hour=(t.hour+t.minute/60);                if (t.hour>23)                    t.hour=(t.hour %24);                  t.minute=(t.minute %60);            }          t.second=(t.second %60);                //秒数应该是sec%=60        }        if (t.minute>59)            {            t.hour=(t.hour +t.minute/60);            if (t.hour>23)                t.hour=(t.hour %24);           t.minute=(t.minute %60);        }      if (t.hour>23)            t.hour=(t.hour %24);       //此程序不涉及日期,如果设计类DateTime,修改将继续下去           return t;  }  CTime CTime::operator-(CTime &c)//对照+理解  {      CTime t;          unsigned short int k,h;      t.hour =hour;      t.minute =minute ;      t.second =second ;      if(second<c.second )      {          k=(-(second-c.second) )%60;          h=(-(second-c.second ))/60;          t.second =(60-k);                  t.minute =(minute-h-1);                       if(t.minute<0)          {              t.minute =(-t.minute );              k=t.minute %60;              h=t.minute /60;              t.hour=t.hour-h-1;               t.minute =(60-k);              if(t.hour<0)              {                  t.hour =(-t.hour );                  t.hour =(t.hour %24);              }          }      }      else       {          t.second =second-c.second ;     }      if(t.minute<c.minute )      {          h=(-(t.minute -c.minute ))%60;          k=(-(t.minute -c.minute ))/60;          t.minute =(60-k);          t.hour=(t.hour-1-h);                           if(t.hour<0)         {              t.hour =(-t.hour );              t.hour =(t.hour %24);          }      }     else     {          t.minute =(t.minute-c.minute );      }     if(t.hour<c.hour )      {          t.hour =(-(t.hour -c.hour ))%24;      }      else      {          t.hour=(t.hour -c.hour );      }               return t;  }  CTime CTime::operator+(int s)//返回s秒后的时间  {      CTime t;            t.hour =hour;      t.minute =minute ;      t.second =second ;      t.second =(t.second +s);      if (t.second >59)      //思考:if中的两条语句能否交换顺序?为什么不能?后果将是……?       {            t.minute+=t.second/60;    //增加sec/60分钟           if (t.minute>59)                {                t.hour+=t.minute/60;                if (t.hour>23)                    t.hour%=24;                  t.minute%=60;            }          t.second%=60;                //秒数应该是sec%=60        }       else if (t.minute>59)            {            t.hour+=t.minute/60;            if (t.hour>23)                t.hour%=24;           t.minute%=60;       }      else  if (t.hour>23)            t.hour%=24;       //此程序不涉及日期,如果设计类DateTime,修改将继续下去           return t;  }  CTime CTime::operator-(int s)//返回s秒前的时间  {      CTime t;      unsigned short int k,h;      t.hour =hour;      t.minute =minute ;      t.second =second ;      if(t.second <s)      {          k=(-(second-s) )%60;          h=(-(second-s ))/60;          t.second =(60-k);                  t.minute =(minute-h-1);                       if(t.minute<0)          {              t.minute =(-t.minute );              k=t.minute %60;              h=t.minute /60;              t.hour=t.hour-h-1;               t.minute =(60-k);              if(t.hour<0)              {                  t.hour =(-t.hour );                  t.hour =(t.hour %24);              }          }      }      else       {          t.second =second-s;      }      return t;       }  //一目运算符的重载  CTime CTime::operator++(int)//后置++,下一秒  {      CTime temp(*this);      second++;      if(second>=60)      {           second-=60;          ++minute;      }      return temp;  }  CTime CTime::operator++()//前置++,下一秒  {      if(++second>=60)      {          second-=60;          ++minute;      }            return *this;  }  CTime CTime::operator--(int)//后置--,前一秒  {      CTime temp(*this);      second--;      if(second<0)      {           second=59;          --minute;      }      return temp;  }  CTime CTime::operator--()//前置--,前一秒  {      if(--second<0)      {          second=59;          --minute;      }      return *this;  }  //赋值运算符的重载       CTime CTime::operator+=(CTime &c)  {      CTime t1,t;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      t=t1+c;      hour=t.hour ;      minute=t.minute ;      second=t.second ;      return t;  }  CTime CTime::operator-=(CTime &c)  {     CTime t1,t;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      t=t1-c;      hour=t.hour ;      minute=t.minute ;      second=t.second ;      return t;        }  CTime CTime::operator+=(int s)//返回s秒后的时间  {      CTime t1,t;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      t=t1+s;      hour=t.hour ;      minute=t.minute ;     second=t.second ;     return t;  }  CTime CTime::operator-=(int s)//返回s秒前的时间  {      CTime t1,t;      t1.hour =hour;      t1.minute =minute ;      t1.second =second ;      t=t1-s;      hour=t.hour ;      minute=t.minute ;      second=t.second ;      return t;  }  void main()  {      CTime t1(8,20,25),t2(11,20,50),t;      int n;      cout<<"t1为:";     t1.display();      cout<<"t2为:";      t2.display();      cout<<"下面比较两个时间大小:\n";      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+t2的时间为:";      t=t1+t2;      t.display();      cout<<"t1+t2的时间为:";      t=t1-t2;      t.display();      cout<<endl;      cout<<"请输入您想增加的秒数:";      cin>>n;     t=t1+n;      cout<<"增加"<<n<<"秒后的时间为:";      t.display ();      t=t1-n;      cout<<"增加"<<n<<"秒前的时间为:";      t.display ();      cout<<endl;      cout<<"对t1后置++,结果为:";      t=t1++;      t.display ();      cout<<"运算结束后,t1的值为:";      t1.display ();      cout<<endl;      cout<<"对t1前置++,结果为:";      t=++t1;      t.display ();      cout<<"运算结束后,t1的值为:";      t1.display ();      cout<<endl;      cout<<"对t1后置--,结果为:";      t=t1--;      t.display ();      cout<<"运算结束后,t1的值为:";      t1.display ();      cout<<endl;      cout<<"对t1前置--,结果为:";      t=--t1;      t.display ();      cout<<"运算结束后,t1的值为:";      t1.display ();      cout<<endl;      cout<<"运算t1+=t2的结果为:";      t1+=t2;      t1.display ();      cout<<endl;      cout<<"此时t1的值为:";      t1.display ();      cout<<"此时t2的值为:";      t2.display ();      cout<<endl;      cout<<"运算t1-=t2的结果为:";     t1-=t2;      t1.display ();      cout<<"此时t1的值为:";      t1.display ();      cout<<"此时t2的值为:";      t2.display ();      cout<<endl;      cout<<"请输入您想增加的秒数:";      cin>>n;      t1+=n;      cout<<"t1增加"<<n<<"秒后的时间为:";      t1.display ();      cout<<"t2增加"<<n<<"秒前的时间为:";      t2-=n;      t2.display ();      cout<<endl;      system("PAUSE");  }    


 

原创粉丝点击