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.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; }
相关文章推荐
- C++日期实现类
- 用C++实现,输入一个日期,输出它是一年中的第几天。
- c++实现日期类,日历计算器
- C++实现日期转换类DateTime
- 【c++巩固练习】c++实现日期计算器、日期万年历(日期类)
- C++继承性应用实例日期和时间(VC 6.0实现)
- C++日期类Date的实现
- 日期类(C++实现)
- 用c++实现的简单的日期类
- C++实现通过年份与天数判断月份日期
- 用C++实现,输入一个日期,输出它是一年中的第几天。
- 实现 日期 的运算---C++
- C++实现的简单日期类
- 用c++实现输入任意两个日期 计算相隔天数
- C++ 实现一个日期类
- C++Switch语句实现输入日期计算为改年的第几天
- C++ 声明并实现一个日期类(运算符重载)
- C++ 自定义日期类实现日期的加减算法
- c++日期类的实现级运算符的重载
- C++日期类的实现