第八周实验报告(二)

来源:互联网 发布:蚁族的奋斗 知乎 编辑:程序博客网 时间:2024/06/05 05:43
01.#include <iostream>  02.  03.using namespace std;  04.  05.class CTime  06.{  07.private:  08.  09.    unsigned short int hour;    // 时  10.  11.    unsigned short int minute;  // 分  12.  13.    unsigned short int second;  // 秒  14.  15.public:  16.  17.    CTime ( int h = 0 , int m = 0 , int s = 0 ) ;  18.  19.    void setTime ( int h ,int m ,int s ) ;  20.  21.    void display ( ) ;  22.  23.    //比较运算符(二目)的重载  24.  25.    bool operator > ( CTime &t );  26.  27.    bool operator < ( CTime &t );  28.  29.    bool operator >= ( CTime &t );  30.  31.    bool operator <= ( CTime &t );  32.  33.    bool operator == ( CTime &t );  34.  35.    bool operator != ( CTime &t );  36.  37.    //二目运算符的重载  38.  39.    CTime operator + ( CTime &c );              //返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  40.  41.    CTime operator - ( CTime &c );              //对照+理解  42.  43.    CTime operator + ( int s );                 //返回s秒后的时间  44.  45.    CTime operator - ( int s);                  //返回s秒前的时间  46.  47.    //一目运算符的重载  48.  49.    CTime operator ++ ( int );                  //后置++,下一秒  50.  51.    CTime operator ++();                        //前置++,下一秒  52.  53.    CTime operator -- ( int );                  //后置--,前一秒  54.  55.    CTime operator --( );                       //前置--,前一秒  56.  57.    //赋值运算符的重载   58.  59.    CTime operator += ( CTime &c );  60.  61.    CTime operator -= ( CTime &c );  62.  63.    CTime operator += ( int s );                //返回s秒后的时间  64.  65.    CTime operator -= ( int s );                //返回s秒前的时间  66.  67.};  68.//下面实现所有的运算符重载代码。  69.  70.CTime::CTime ( int h, int m, int s )  71.  72.{  73.  74.    hour = h;  75.  76.    minute = m;  77.  78.    second = s;  79.  80.}    81.  82.void CTime::display()  83.  84.{  85.  86.    cout << hour << ':' << minute << ':' << second << endl;  87.  88.}    89.  90.    //比较运算符(二目)的重载  91.  92.bool CTime::operator > ( CTime &t )  93.  94.{  95.  96.    if ( hour > t.hour )  97.  98.    {  99.  100.        return true;  101.  102.    }  103.    if ( minute > t.minute )  104.  105.    {  106.  107.        return true;  108.  109.    }  110.    if ( second > t.second )  111.  112.    {  113.  114.        return true;  115.  116.    }  117.    else  118.  119.    {  120.  121.        return false;  122.  123.    }  124.  125.}  126.  127.  128.bool CTime::operator < ( CTime &t )  129.  130.{  131.  132.    if ( hour < t.hour )  133.  134.        return true;  135.  136.    if ( minute < t.minute )  137.  138.        return true;  139.  140.    if ( second < t.second )  141.  142.        return true;  143.  144.    else  145.  146.        return false;  147.  148.}  149.bool CTime::operator >= ( CTime &t )  150.  151.{  152.  153.    if ( operator < ( t ) == 0 )  154.  155.        return true;  156.  157.    else  158.  159.        return false;  160.  161.}  162.bool CTime::operator <= ( CTime &t )  163.  164.{  165.  166.    if ( operator > ( t ) == 0 )  167.  168.        return true;  169.  170.    else  171.  172.        return false;  173.  174.}  175.bool CTime::operator == ( CTime &t )  176.  177.{  178.  179.    if( operator > ( t ) == 0 && operator < ( t ) == 0 )  180.  181.        return true;  182.  183.    else  184.  185.        return false;  186.  187.}  188.bool CTime::operator != ( CTime &t )  189.  190.{   191.    if ( operator == ( t ) == 0 )  192.  193.        return true;  194.  195.    else  196.  197.        return false;  198.  199.}  200.  201.    //二目运算符的重载  202.  203.//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  204.  205.CTime CTime::operator + ( CTime &c )  206.  207.{  208.  209.    CTime t;  210.  211.    t.hour = hour + c.hour;  212.  213.    t.minute = minute + c.minute;  214.  215.    t.second = second + c.second;  216.  217.    if ( t.second >= 60 )  218.  219.    {  220.  221.        t.second -= 60;  222.  223.        ++ t.minute;  224.  225.    }  226.    else if ( t.minute >= 60 )  227.  228.    {  229.  230.        t.minute -= 60;  231.  232.        ++ t.hour;  233.  234.    }  235.  236.    else if ( t.hour >= 24 )  237.  238.    {  239.  240.        t.hour -= 24;  241.  242.    }  243.  244.    return t;  245.  246.}  247.  248.//对照+理解  249.  250.CTime CTime::operator - ( CTime &c )  251.  252.{  253.  254.    CTime t;  255.  256.    t.hour = hour - c.hour;  257.  258.    t.minute = minute - c.minute;  259.  260.    t.second = second - c.second;  261.  262.    if ( t.second >= 60 )  263.  264.    {  265.  266.        t.second -= 60;  267.  268.        ++ t.minute;  269.  270.    }  271.  272.    else if ( t.minute >= 60 )  273.  274.    {  275.  276.        t.minute -= 60;  277.  278.        ++ t.hour;  279.  280.    }  281.  282.    else if ( t.hour >= 24 )  283.  284.    {  285.  286.        t.hour -= 24;  287.  288.    }  289.  290.    return t;  291.  292.}  293.  294.//返回s秒后的时间  295.  296.CTime CTime::operator + ( int s )  297.  298.{  299.  300.    *this = *this + s;  301.  302.    return *this;  303.  304.}   305.  306.//返回s秒前的时间  307.  308.CTime CTime::operator - ( int s )  309.  310.{  311.  312.    CTime t;  313.  314.    t.second = second - s;  315.  316.    if ( t.second >= 60 )  317.  318.    {  319.  320.        t.second -= 60;  321.  322.        -- t.minute;  323.  324.    }  325.  326.    else if ( t.minute >= 60 )  327.  328.    {  329.  330.        t.minute -= 60;  331.  332.        -- t.hour;  333.  334.    }  335.  336.    else if ( t.hour >= 24 )  337.  338.    {  339.  340.        t.hour -= 24;  341.  342.    }  343.  344.    return t;  345.  346.}  347.  348.    //一目运算符的重载  349.  350.//后置++,下一秒  351.  352.CTime CTime :: operator ++ ( int )  353.  354.{  355.  356.    CTime temp ( *this );  357.  358.    second ++;  359.  360.    if ( second >= 60 )  361.  362.    {  363.  364.        second -= 60;  365.  366.        ++ minute;  367.  368.    }  369.  370.    else if ( minute >= 60 )  371.  372.    {  373.  374.        minute -= 60;  375.  376.        ++ hour;  377.  378.    }  379.  380.    else if ( hour >= 24 )  381.  382.    {  383.  384.        hour -= 24;  385.  386.    }  387.  388.    return temp;  389.  390.}  391.  392.//前置++,下一秒  393.  394.CTime CTime::operator ++ ( )  395.  396.{  397.  398.    CTime temp ( *this );  399.      400.    if ( ++ second >= 60 )  401.  402.    {  403.  404.        second -= 60;  405.  406.        ++ minute;  407.  408.    }  409.  410.    else if ( minute >= 60 )  411.  412.    {  413.  414.        minute -= 60;  415.  416.        ++ hour;  417.  418.    }  419.  420.    else if ( hour >= 24 )  421.  422.    {  423.  424.        hour -= 24;  425.  426.    }  427.  428.    return temp;  429.  430.}  431.  432.//后置--,前一秒  433.  434.CTime CTime::operator -- ( int )  435.  436.{  437.  438.    CTime temp ( *this );  439.  440.    second --;  441.  442.    if ( second >= 60 )  443.  444.    {  445.  446.        second -= 60;  447.  448.        -- minute;  449.  450.    }  451.  452.    else if ( minute >= 60 )  453.  454.    {  455.  456.        minute -= 60;  457.  458.        -- hour;  459.  460.    }  461.  462.    else if ( hour >= 24 )  463.  464.    {  465.  466.        hour -= 24;  467.  468.    }  469.  470.    return temp;  471.  472.}  473.  474.//前置--,前一秒  475.  476.CTime CTime::operator --( )  477.  478.{  479.  480.    CTime temp ( *this );  481.      482.    if ( --second >= 60 )  483.  484.    {  485.  486.        second -= 60;  487.  488.        -- minute;  489.  490.    }  491.  492.    else if ( minute >= 60 )  493.  494.    {  495.  496.        minute -= 60;  497.  498.        -- hour;  499.  500.    }  501.  502.    else if ( hour >= 24 )  503.  504.    {  505.  506.        hour -= 24;  507.  508.    }  509.  510.    return temp;  511.  512.}  513.  514.  515.    //赋值运算符的重载    516.  517.CTime CTime::operator += ( CTime &c )  518.  519.{  520.  521.    CTime t;  522.  523.    t.hour = hour + c.hour;  524.  525.    t.minute = minute + c.minute;  526.  527.    t.second = second + c.second;  528.  529.    if ( t.second >= 60 )  530.  531.    {  532.  533.        t.second -= 60;  534.  535.        ++ t.minute;  536.  537.    }  538.  539.    else if ( t.minute >= 60 )  540.  541.    {  542.  543.        t.minute -= 60;  544.  545.        ++ t.hour;  546.  547.    }  548.  549.    else if ( t.hour >= 24 )  550.  551.    {  552.  553.        t.hour -= 24;  554.  555.    }  556.  557.    return t;  558.  559.}  560.  561.CTime CTime::operator -= ( CTime &c )  562.  563.{  564.  565.    CTime t;  566.  567.    t.hour = hour - c.hour;  568.  569.    t.minute = minute - c.minute;  570.  571.    t.second = second - c.second;  572.  573.    if ( t.second >= 60 )  574.  575.    {  576.  577.        t.second -= 60;  578.  579.        -- t.minute;  580.  581.    }  582.  583.    else if (t.minute >= 60 )  584.  585.    {  586.  587.        t.minute -= 60;  588.  589.        -- t.hour;  590.  591.    }  592.  593.    else if ( t.hour >= 24 )  594.  595.    {  596.  597.        t.hour -= 24;  598.  599.    }  600.  601.    return t;  602.  603.}  604.  605.//返回s秒后的时间  606.  607.CTime CTime::operator += ( int s )  608.  609.{  610.  611.    CTime t ( *this );  612.  613.    t.second = second + s;  614.  615.    if ( t.second >= 60 )  616.  617.    {  618.        t.second -= 60;  619.  620.        ++ t.minute;  621.  622.    }  623.  624.    else if ( t.minute >= 60 )  625.  626.    {  627.  628.        t.minute -= 60;  629.  630.        ++ t.hour;  631.  632.    }  633.  634.    else if ( t.hour >= 24 )  635.  636.    {  637.  638.        t.hour -= 24;  639.  640.    }  641.  642.    return t;  643.  644.}  645.  646.//返回s秒前的时间  647.  648.CTime CTime::operator -= ( int s )  649.  650.{  651.  652.    CTime t ( *this );  653.  654.    t.second = second - s;  655.  656.    if ( t.second >= 60 )  657.  658.    {  659.  660.        t.second -= 60;  661.  662.        -- t.minute;  663.  664.    }  665.  666.    else if ( t.minute >= 60 )  667.  668.    {  669.  670.        t.minute -= 60;  671.  672.        -- t.hour;  673.  674.    }  675.  676.    else if ( t.hour >= 24 )  677.  678.    {  679.  680.        t.hour -= 24;  681.  682.    }  683.  684.    return t;  685.  686.}  687.  688.//为简化编程,请注意通过调用已有函数,利用好各函数之间的关系  689.  690.void main ( )  691.  692.{  693.  694.    CTime t1( 8, 20, 25 ),t2 ( 11, 20, 50 ), t;  695.  696.    cout << "t1为:";  697.  698.    t1.display ( );  699.  700.    cout << "t2为:";  701.  702.    t2.display ( );  703.  704.    cout << "下面比较两个时间大小:\n";  705.  706.    if ( t1 > t2 ) cout << "t1>t2" << endl;  707.  708.    if ( t1 < t2 ) cout << "t1<t2" << endl;  709.  710.    if ( t1 == t2 ) cout << "t1=t2" << endl;  711.  712.    if ( t1 != t2 ) cout << "t1≠t2" << endl;  713.  714.    if ( t1 >= t2 ) cout << "t1≥t2" << endl;  715.  716.    if ( t1 <= t2 ) cout << "t1≤t2" << endl;  717.  718.    cout << endl;  719.  720.    system ( "pause" );  721.  722.}