您的位置:首页 > 编程语言 > C语言/C++

C++:日期类的实现

2016-08-05 12:01 381 查看
所谓的日期类,就是能对日期进行加减天数和减日期求天数之间的运算,运用到了C++中类以及运算符重载的相关知识,下面我们来用C++将日期类实现以下。
Date.h:用来定义日期类的成员变量和成员函数

#ifndef DATE_H__
#define DATE_H__
#include <iostream>
using namespace std;

class Date
{
private:
int m_year;
int m_month;
int m_day;
public:
Date(int _year , int _month , int _day ); //带有缺省参数的构造函数
Date(const Date& _date); //拷贝构造函数
~Date(); //析构函数

int Get_year();
int Get_month();
int Get_day();
//设置
void Set_year(const int year);
void Set_month(const int month);
void Set_day(const int day);

int Day_of_month()const; //返回当月天数
bool Judge_Leap()const; //判断是否为闰年

void Print_Date(); //打印日期

bool operator==(const Date& _date); //判断两个日期是否相等
bool operator>(const Date& _date); //判断两个日期的大小关系
void operator++(int); //自增运算
void operator--(int); //自减运算
Date operator+(const int _day); //实现日期加天数
Date operator-(const int _day); //实现日期减天数
int operator-(Date& _date); //实现日期减日期
};

#endif
Date.cpp:用来实现日期类中定义的成员函数
#include "Date.h"

Date::Date(int _year = 1996, int _month = 03, int _day = 24)      //带有缺省参数的构造函数
:m_year(_year)
, m_month(_month)
, m_day(_day)
{
//
}
Date::Date(const Date& _date)                                     //拷贝构造函数
{
m_year  = _date.m_year;
m_day   = _date.m_day;
m_month = _date.m_month;
}
Date::~Date()                                                     //析构函数
{
//在析构函数中完成打印当前日期的工作?

}
int Date::Day_of_month() const
{
int day = 0;
switch (m_month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if (Judge_Leap())
day = 29;
else
day = 28;
break;
}
return day;
}

int Date::Get_year()
{
return this->m_year;
}
int Date::Get_month()
{
return this->m_month;
}
int Date::Get_day()
{
return this->m_day;
}
//设置
void Date::Set_year(const int year)
{
m_year = year;
}
void Date::Set_month(const int month)
{
m_month = month;
}
void Date::Set_day(const int day)
{
m_day = day;
}

bool Date::Judge_Leap() const
{
if ((m_year % 400) == 0 || ((m_year % 4) == 0 && (m_year % 100) != 0))
return true;
else
return false;
}

void Date::Print_Date()                         //打印日期
{
cout << m_year << "年" << m_month << "月" << m_day << "日" << endl;
}

Date Date::operator+(const int _day)                             //实现日期加天数
{
m_day += _day;
while (m_day > Day_of_month())
{
m_day -= Day_of_month();
m_month++;
if (m_month > 12)
{
m_month-=12;
m_year++;
}
}
return *this;
}
Date Date::operator-(const int _day)                             //实现日期减天数
{
m_day -= _day;
while (m_day <= 0)
{
m_month--;
if (m_month <= 0)
{
m_year--;
m_month += 12;
}
m_day += Day_of_month();
}
return *this;
}
bool Date::operator==(const Date& _date)                         //判断两个日期是否相等
{
if (m_year == _date.m_year
&&m_month == _date.m_month
&&m_day == _date.m_day)
return true;
else
return false;
}
bool Date::operator>(const Date& _date)                          //判断两个日期的大小关系
{
if (m_year > _date.m_year)
return true;
else if (m_year == _date.m_year)
{
if (m_month > _date.m_month)
return true;
else if (m_month == _date.m_month)
{
if (m_day > _date.m_day)
return true;
else
return false;
}
else
return false;
}
else
return false;
}
void Date::operator++(int)                                          //自增运算
{
m_day++;
if (m_day > Day_of_month())
{
m_day -= Day_of_month();
m_month++;
if (m_month > 12)
{
m_month -= 12;
m_year++;
}
}

}
void Date::operator--(int)                                          //自减运算
{
m_day--;
if (m_day <= 0)
{
m_month--;
if (m_month <= 0)
{
m_year--;
m_month += 12;
}
m_day += Day_of_month();
}
}
int Date::operator-(Date& _date)                         //实现日期减日期
{
int days = 0;
while (!(*this == _date))
{
if (*this > _date)
{
_date++;
days++;
}
else
{
_date--;
days--;
}

}
return days;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: