第九周实验报告1

来源:互联网 发布:新型网络搜索引擎 编辑:程序博客网 时间:2024/04/30 08:21
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称: class time
* 作 者: 于昊
* 完成日期: 2012 年 04月 16 日
* 版 本 号: 1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 问题分析:

* 算法设计:…

#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):hour(h), minute(m), second(s){ }    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秒前的时间//重载流插入运算符“>>”friend istream& operator >> ( istream& , CTime&);//重载流输出运算符"<<"friend ostream& operator << ( ostream& , CTime&);};    //下面实现所有的运算符重载代码。     //为简化编程,请注意通过调用已有函数,利用好各函数之间的关系     istream& operator >> ( istream& input,CTime &c ){input>>c.hour >>c.minute >>c.second ;return input;}ostream& operator << ( ostream& output,CTime &c ){output<<c.hour <<c.minute <<c.second ;return output;}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 * 3600 + minute * 60 + second > t.hour * 3600 + t.minute * 60 + t.second)    {    return true;    }    else    {    return false;    }    }    bool CTime::operator < (CTime &t)    {    if(hour * 3600 + minute * 60 + second < t.hour * 3600 + t.minute * 60 + t.second)    {    return true;    }    else    {    return false;    }    }    bool CTime::operator >= (CTime &t)    {    if(hour * 3600 + minute * 60 + second >= t.hour * 3600 + t.minute * 60 + t.second)    {    return true;    }    else    {    return false;    }    }    bool CTime::operator <= (CTime &t)    {    if(hour * 3600 + minute * 60 + second <= t.hour * 3600 + t.minute * 60 + t.second)    {    return true;    }    else    {    return false;    }    }    bool CTime::operator == (CTime &t)//小时,分钟,秒数都相同     {    if(hour == t.hour && minute == t.minute && second == t.second)    {    return true;    }    else    {    return false;    }    }    bool CTime::operator != (CTime &t)//小时,分钟,秒数有一个不同即可     {    if(hour != t.hour || minute != t.minute || second != t.second)    {    return true;    }    else    {    return false;    }    }    CTime CTime::operator + (CTime &c)    {    CTime c2;    int time;    //现将两个时间转化为秒,再依次求出小时,分,秒即可。     time = (hour * 3600 + minute * 60 + second) + (c.hour * 3600 + c.minute * 60 + c.second);    c2.hour = time / 3600;    time = time % 3600;    c2.minute = time / 60;    time = time % 60;    c2.second = time;    return c2;    }    CTime CTime::operator - (CTime &c)    {    CTime c2;    int time;    //现将两个时间转化为秒,再依次求出小时,分,秒即可。     time = (hour * 3600 + minute * 60 + second) - (c.hour * 3600 + c.minute * 60 + c.second);    c2.hour = time / 3600;    time = time % 3600;    c2.minute = time / 60;    time = time % 60;    c2.second = time;    return c2;    }    CTime CTime::operator + (int s)    {    int time;    time = hour * 3600 + minute * 60 + second + s;    hour = time / 3600;    time = time % 3600;    minute = time / 60;    time = time % 60;    second = time;      return (*this);    }      CTime CTime::operator - (int s)    {    int time;    time = hour * 3600 + minute * 60 + second;    time = time - s;    hour = time / 3600;    time = time % 3600;    minute = time / 60;    time = time % 60;    second = time;    return (*this);    }    CTime CTime::operator ++ (int) //后置     {    CTime temp = (*this);    int time;    time = hour * 3600 + minute * 60 + second + 1;    hour = time / 3600;    time = time % 3600;    minute = time / 60;    time = time % 60;    second = time;    return temp;//返回自加前的对象     }    CTime CTime::operator ++ ()//前置     {    int time;    time = hour * 3600 + minute * 60 + second +1;    hour = time / 3600;    time = time % 3600;    minute = time / 60;    time = time % 60;    second = time;    return (*this);//返回自加后的当前对象     }    CTime CTime::operator -- (int)//后置     {    CTime temp = (*this);    int time;    time = hour * 3600 + minute * 60 + second - 1;    hour = time / 3600;    time = time % 3600;    minute = time / 60;    time = time % 60;    second = time;    return temp;//返回自减前的对象     }    CTime CTime::operator -- ()//前置     {    int time;    time = hour * 3600 + minute * 60 + second - 1;    hour = time / 3600;    time = time % 3600;    minute = time / 60;    time = time % 60;    second = time;    return (*this);//返回自减后的当前对象     }    CTime CTime::operator += (CTime &c)    {    CTime c2;    c2 = (*this) + c;//调用重载运算符,第一个+号     return c2;    }    CTime CTime::operator -= (CTime &c)    {    CTime c2;    c2 = (*this) - c;//调用重载运算符,第一个-号     return c2;    }    CTime CTime::operator += (int s)    {    CTime c2;    c2 = (*this) + s;//调用重载运算符,第2个+号     return c2;    }    CTime CTime::operator -= (int s)    {    CTime c2;    c2 = (*this) - s;//调用重载运算符,第2个-号     return c2;    }    void main()    {    CTime t1(8,20,25), t2(11,20,50), t;    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;    t = t1 + t2;    cout << "t1 + t2 =";    t.display();    t = t2 - t1;    cout << "t2 - t1 =";    t.display();    t = t1;    t = t + 40;    cout << "t1 + 40s =";    t.display();    t = t2;    t = t - 10;    cout << "t2 - 10s =";    t.display();    t = t1++;    cout << "t1++ =";    t.display();    t = --t2;    cout << "--t2 =";    t.display();    t = t1;    t += t2;    cout << "t1 += t2 , t1 = ";    t.display();    t = t2;    t -= 5;    cout << "t2 -= 5, t2 = ";    t.display();    system("pause");    }    


原创粉丝点击