第九周实验报告二

来源:互联网 发布:软件冲突蓝屏怎么办 编辑:程序博客网 时间:2024/05/21 09:01
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:                              
* 作    者: 鲍增凯                          
* 完成日期:     2012    年    5  月    7   日

* 版 本 号:

01.#include<iostream.h>   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.    friend istream& operator >> (istream&, CTime&);//运算符重载为友元函数   20.      21.    friend ostream& operator << (ostream&, CTime&);//运算符重载为友元函数   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所规定的时·分·秒后的时间   40.      41.    CTime operator-(CTime &c);  42.      43.    CTime operator+(int s);  44.      45.    CTime operator-(int 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);  64.      65.    CTime operator -=(int s);  66.};  67.  68.istream& operator >> (istream& input, CTime& c)  69.{  70.    char f1, f2;  71.      72.    while(1)  73.    {  74.        cout << "请输入需要操作的时间(格式:(小时:分钟:秒钟)):";  75.          76.        input >> c.hour >> f1 >> c.minute >> f2 >> c.second;  77.          78.        if(c.hour > 24 || c.hour < 0 || c.minute > 60 || c.minute < 0 || c.second > 60 || c.second < 0 )  79.        {  80.            cout << "输入时间有误!!!"<< endl;  81.        }  82.          83.        else  84.        {  85.            if(f1 != ':' || f2 != ':')  86.                cout << "输入格式有误!!!" << endl;  87.              88.            else  89.                break;  90.        }  91.    }  92.      93.    return input;  94.}  95.  96.ostream& operator << (ostream& output, CTime& c)  97.{  98.    output << c.hour << ":" << c.minute << ":" << c.second <<endl;  99.      100.    return output;  101.}  102.  103.CTime::CTime(int h , int m, int s)  104.{  105.    hour = h;  106.      107.    minute = m;  108.      109.    second = s;  110.}  111.  112.bool CTime::operator >(CTime &t)  113.{  114.    if(hour > t.hour)  115.    {  116.        return true;  117.    }  118.    else  119.    {  120.        if(minute > t.minute)  121.        {  122.            return true;  123.        }  124.        else  125.        {  126.            if(second > t.second)  127.            {  128.                return true;  129.            }  130.            else  131.            {  132.                return false;  133.            }  134.        }  135.    }  136.}  137.  138.bool CTime::operator <(CTime &t)  139.{  140.    if(hour < t.hour)  141.    {  142.        return true;  143.    }  144.    else  145.    {  146.        if(minute < t.minute)  147.        {  148.            return true;  149.        }  150.        else  151.        {  152.            if(second < t.second)  153.            {  154.                return true;  155.            }  156.            else  157.            {  158.                return false;  159.            }  160.        }  161.    }  162.}  163.  164.bool CTime::operator >=(CTime &t)//{if(*this < t)return false; else return true;}   165.{  166.    if(hour < t.hour)  167.    {  168.        return false;  169.    }  170.    else  171.    {  172.        if(minute < t.minute)  173.        {  174.            return false;  175.        }  176.        else  177.        {  178.            if(second < t.second)  179.            {  180.                return false;  181.            }  182.        }  183.    }  184.}  185.  186.bool CTime::operator <=(CTime &t)//{if(*this > t)return false; else return true;}   187.{  188.    if(hour > t.hour)  189.    {  190.        return false;  191.    }  192.    else  193.    {  194.        if(minute > t.minute)  195.        {  196.            return false;  197.        }  198.        else  199.        {  200.            if(second > t.second)  201.            {  202.                return false;  203.            }  204.        }  205.    }  206.}  207.  208.bool CTime::operator ==(CTime &t)  209.{  210.    if(hour != t.hour)  211.    {  212.        return false;  213.    }  214.    else  215.    {  216.        if(minute != t.minute)  217.        {  218.            return false;  219.        }  220.        else  221.        {  222.            if(second != t.second)  223.            {  224.                return false;  225.            }  226.        }  227.    }  228.}  229.  230.  231.bool CTime::operator !=(CTime &t)  232.{  233.    if(hour != t.hour)  234.    {  235.        return true;  236.    }  237.    else  238.    {  239.        if(minute != t.minute)  240.        {  241.            return true;  242.        }  243.        else  244.        {  245.            if(second != t.second)  246.            {  247.                return true;  248.            }  249.            else  250.            {  251.                return false;  252.            }  253.        }  254.    }  255.}  256.  257.CTime CTime::operator +(CTime &c)  258.{  259.    CTime c1;  260.      261.    c1.hour = hour + c.hour;  262.      263.    c1.minute = minute + c.minute;  264.      265.    c1.second = second + c.second;  266.      267.    if(c1.second >= 60)  268.    {  269.        c1.second = c1.second - 60;  270.          271.        c1.minute = c1.minute + 1;  272.    }  273.      274.    if(c1.minute >= 60)  275.    {  276.        c1.minute = c1.minute - 60;  277.          278.        c1.hour = c1.hour + 1;  279.    }  280.      281.    if(c1.hour >= 24)  282.    {  283.        c1.hour = c1.hour -24;  284.    }  285.      286.    return c1;  287.}  288.  289.CTime CTime::operator -(CTime &c)  290.{  291.    CTime c1;  292.      293.    c1.hour = hour - c.hour;  294.      295.    c1.minute = minute - c.minute;  296.      297.    c1.second = second - c.second;  298.      299.    if(c1.second < 0)  300.    {  301.        c1.second = 60 + c1.second;  302.          303.        c1.minute = c1.minute - 1;  304.    }  305.      306.    if(c1.minute < 0)  307.    {  308.        c1.minute =60 + c1.minute;  309.          310.        c1.hour = c1.hour -1;  311.    }  312.      313.    if(c1.hour < 0)  314.    {  315.        c1.hour = 24 + c1.hour;  316.    }  317.      318.    return c1;  319.}  320.  321.CTime CTime::operator +(int s)  322.{  323.    CTime c1;  324.      325.    c1.hour = hour;  326.      327.    c1.minute = minute;  328.      329.    c1.second = second + s;  330.      331.    if(c1.second >= 60)  332.    {     333.        c1.minute = c1.minute + (c1.second / 60);  334.          335.        c1.second = c1.second % 60;           336.    }  337.      338.    if(c1.minute >= 60)  339.    {  340.        c1.hour = c1.hour + (c1.minute / 60);  341.          342.        c1.minute = c1.minute % 60;  343.    }  344.      345.    if(c1.hour >= 24)  346.    {  347.        c1.hour = c1.hour % 24;  348.    }  349.      350.    return c1;  351.}  352.  353.CTime CTime::operator -(int s)  354.{  355.    CTime c1;  356.      357.    c1.hour = hour;  358.      359.    c1.minute = minute;  360.      361.    c1.second = second - s;  362.      363.    if(c1.second < 0)  364.    {     365.        c1.minute = c1.minute - 1 - (-c1.second / 60);  366.          367.        c1.second = 60 + c1.second % 60;              368.    }  369.      370.    if(c1.minute < 0)  371.    {  372.        c1.hour = c1.hour - 1 - (-c1.minute / 60);  373.          374.        c1.minute = 60 + c1.minute % 60;  375.    }  376.      377.    if(c1.hour < 0)  378.    {  379.        c1.hour = 24 + c1.hour;  380.    }  381.      382.    return c1;  383.}  384.  385.CTime CTime::operator ++(int)//定义后置自增运算符 "++"重载函数   386.{  387.    CTime temp(* this);  388.      389.    second ++;  390.      391.    if(second >= 60)  392.    {  393.        second = second -60;  394.          395.        ++ minute;  396.    }  397.    if(minute >= 60)  398.    {  399.        minute = minute - 60;  400.          401.        ++ hour;  402.    }  403.    if(hour >= 24)  404.    {  405.        hour = hour - 24;  406.    }  407.      408.    return temp;  409.}  410.  411.CTime CTime::operator ++()//定义前置自增运算符"++"重载函数   412.{  413.    if(++ second >= 60)  414.    {  415.        second = second -60;  416.          417.        ++ minute;  418.          419.        if(minute >= 60)  420.        {  421.            minute = minute -60;  422.              423.            ++ hour;  424.              425.            if(hour >= 24)  426.            {  427.                hour = hour - 24;  428.            }  429.        }  430.    }  431.      432.    return * this;  433.}  434.  435.CTime CTime::operator --(int)//定义后置自减运算符 "--"重载函数   436.{  437.    CTime temp(* this);  438.      439.    second --;  440.      441.    if(second < 0)  442.    {  443.        second = 60 + second;  444.          445.        -- minute;  446.    }  447.      448.    if(minute < 0)  449.    {  450.        minute = 60 + minute;  451.          452.        -- hour;  453.    }  454.      455.    if(hour < 0)  456.    {  457.        hour = 24 + hour;  458.    }  459.      460.    return temp;  461.}  462.  463.CTime CTime::operator --()//定义前置自减运算符"--"重载函数{*this = *this -1; return *this;}   464.{  465.    if(-- second <= 0)  466.    {  467.        second = 60 + second;  468.          469.        -- minute;  470.    }  471.      472.    if(minute < 0)  473.    {  474.        minute = 60 + minute;  475.          476.        -- hour;  477.    }  478.      479.    if(hour < 0)  480.    {  481.        hour = 24 + hour;  482.    }  483.      484.    return * this;  485.}  486.  487.CTime CTime::operator +=(CTime &c)//{*this = *this + c;return *this;}   488.{  489.      490.      491.    hour = hour + c.hour;  492.      493.    minute = minute + c.minute;  494.      495.    second = second + c.second;  496.      497.    if(second >= 60)  498.    {  499.        second = second - 60;  500.          501.        minute = minute + 1;  502.    }  503.      504.    if(minute >= 60)  505.    {  506.        minute = minute - 60;  507.          508.        hour = hour + 1;  509.    }  510.      511.    if(hour >= 24)  512.    {  513.        hour = hour -24;  514.    }  515.      516.    return * this;//从定义前置"++" 来的灵感··int   517.}  518.  519.CTime CTime::operator -=(CTime &c)  520.{     521.    hour = hour - c.hour;  522.      523.    minute = minute - c.minute;  524.      525.    second = second - c.second;  526.      527.    if(second < 0)  528.    {  529.        second = 60 + second;  530.          531.        minute = minute - 1;  532.    }  533.      534.    if(minute < 0)  535.    {  536.        minute =60 + minute;  537.          538.        hour = hour -1;  539.    }  540.      541.    if(hour < 0)  542.    {  543.        hour = 24 + hour;  544.    }  545.      546.    return * this;  547.}  548.  549.CTime CTime::operator +=(int s)  550.{  551.    hour = hour;  552.      553.    minute = minute;  554.      555.    second = second + s;  556.      557.    if(second >= 60)  558.    {     559.        minute = minute + (second / 60);  560.          561.        second = second % 60;             562.    }  563.      564.    if(minute >= 60)  565.    {  566.        hour = hour + (minute / 60);  567.          568.        minute = minute % 60;  569.    }  570.      571.    if(hour >= 24)  572.    {  573.        hour = hour % 24;  574.    }  575.      576.    return * this;  577.}  578.  579.CTime CTime::operator -=(int s)  580.{  581.    hour = hour;  582.      583.    minute = minute;  584.      585.    second = second - s;  586.      587.    if(second < 0)  588.    {     589.        minute = minute - 1 - (-second / 60);  590.          591.        second = 60 + second % 60;            592.    }  593.      594.    if(minute < 0)  595.    {  596.        hour = hour - 1 - (-minute / 60);  597.          598.        minute = 60 + minute % 60;  599.    }  600.      601.    if(hour < 0)  602.    {  603.        hour = 24 + hour;  604.    }  605.      606.    return * this;  607.}  608.  609.int main()  610.{  611.    CTime c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c0, c00, c000,c0000;  612.      613.    cout << "1,实现时间与具体秒数的相减" << endl;  614.      615.    cin >> c1;  616.      617.    cout << "c1 = " << c1;  618.      619.    c000 = c1 - 240;  620.      621.    cout << "c1 - 240 = " << c000 ;  622.      623.    cout << "2,实现时间与具体秒数的相加" << endl;  624.      625.    cin >> c2;  626.      627.    cout << "c2 = " << c2;  628.      629.    c0000 = c2 + 234;  630.      631.    cout << "c2 + 234 = " << c0000 ;  632.      633.    cout << "3.实现两时间的各种比较" << endl;  634.      635.    cout << "c1 > c2" << (c1.operator >(c2)?" 成立":" 不成立") << endl;  636.      637.    cout << "c1 >= c2" << (c1.operator >=(c2)?" 成立":" 不成立") << endl;  638.      639.    cout << "c1 == c2" << (c1.operator ==(c2)?" 成立":" 不成立") << endl;  640.      641.    cout << "4.实现两时间的各种比较" << endl;  642.      643.    cin >> c3;  644.      645.    cout << "c3 = " << c3;  646.      647.    cin >> c4;  648.      649.    cout << "c4 = " << c4;  650.      651.    cout << "c3 < c4" << (c3.operator <(c4)?" 成立":" 不成立") << endl;  652.      653.    cout << "c3 <= c4" << (c3.operator <=(c4)?" 成立":" 不成立") << endl;  654.      655.    cout << "c3 != c4" << (c3.operator !=(c4)?" 成立":" 不成立") << endl;  656.      657.    cout << "5.实现两时间的相加减" << endl;  658.      659.    cin >> c5;  660.      661.    cout << "c5 = " << c5;  662.      663.    c0 = c1 + c5;  664.      665.    cout << "c1 + c5 = " << c0 ;  666.      667.    c00 = c1 - c5;  668.      669.    cout << "c1 - c5 = " << c00 ;  670.      671.    cout << "6.实现时间的后置自加运算" << endl;  672.      673.    cin >> c6;  674.      675.    cout << "c6 = " << c6;  676.      677.    c6  ++;  678.      679.    cout << "c6++ = " << c6;  680.      681.    cout << "7.实现时间的前置自加运算" << endl;  682.      683.    cin >> c7;  684.      685.    cout << "c7 = " << c7;  686.      687.    ++ c7;  688.      689.    cout << "++c7 = " << c7;  690.      691.    cout << "8.实现时间的后置自减运算" << endl;  692.      693.    cin >> c8;  694.      695.    cout << "c8 = " << c8;  696.      697.    c8 --;  698.      699.    cout << "c8-- = " << c8;  700.      701.    cout << "9.实现时间的前置自减运算" << endl;  702.      703.    cin >> c9;  704.      705.    cout << "c9 = " << c9;  706.      707.    -- c9;  708.      709.    cout << "--c9 = " << c9;  710.      711.    cout << "10.实现时间与时间的+=运算" << endl;  712.      713.    cin >> c10;  714.      715.    cout << "c10 = " << c10;  716.      717.    cin >> c11;  718.      719.    cout << "c11 = " << c11;  720.      721.    c10 += c11;  722.      723.    cout << "(c10 += c11) = " << c10;  724.      725.    cout << "11.实现时间与时间的-=运算" << endl;  726.      727.    cin >> c12;  728.      729.    cout << "c12 = " << c12;  730.      731.    cin >> c13;  732.      733.    cout << "c13 = " << c13;  734.      735.    c12 -= c13;  736.      737.    cout << "(c12 -= c13) = " << c12;  738.      739.    cout << "12.实现时间与具体秒数的+=运算" << endl;  740.      741.    cin >> c14;  742.      743.    cout << "c14 = " << c14;  744.      745.    c14 += 18;  746.      747.    cout<< "(c14 += 18) = " << c14;  748.      749.    cout << "13.实现时间与具体秒数的-=运算" << endl;  750.      751.    cin >> c15;  752.      753.    cout << "c15 = " << c15;  754.      755.    c15 -= 15;  756.      757.    cout << "(c15 -= 15) = " << c15;  758.      759.    //system("pause");   760.      761.    return 0;  762.}