您的位置:首页 > 其它

定义包含年月日信息的日期类Date并重载+使之具有日期对象和整数(天)相加的功能

2018-03-13 21:15 232 查看
直接贴代码

头文件的实现:
#include<time.h>
#include<iostream>
using namespace std;class Date
{
public:
 Date::Date();/*初始化获取系统当前时间*/
  Date &Date:: operator + (int d);/*
         重载“+”号---核心函数*/
 int& setyear();
 int& setmonth();
 int& setday();/*设定年月日*/
 
 bool isleap(int x);
 bool isbmon(int x);
 bool isxmon(int x);
 /*判断闰年、大小月份*/ int Date::monday(int y, int m);/*获取某年某个月份的天数*/ void print(Date x)
 {
  cout << x.year<< "年" << x.month << "月" << x.day<<"日";
 }private:
 time_t now;
 tm detail; int year;
 int month;
 int day;};
/*-------函数实现(1)--------------------*/Date::Date()
{
 now = time(0);
 memcpy(&detail, localtime(&now), sizeof(tm));
}int&Date::setyear()
{
 year=detail.tm_year+1900;
 return year;
}
int&Date::setmonth()
{
 month=detail.tm_mon+1;
 return month;
}
int&Date::setday()
{
 day=detail.tm_mday;
 return day;
}
/*-----------核心函数---------------------*/
Date &Date:: operator+(int d)
{
 
 this->year = setyear();
 this->month = setmonth();
 this->day = setday();
 
 d = d + day; while (d > monday(year,month))
 {
  d = d - monday(year,month);
  month++;
  if (month == 13)
  {
   month = 1; year++;
  } }
 day = d;
 return *this;
}/*---------------------核心函数------------------------*/
/*-----------辅助函数------------------------------*/
    bool  Date::isleap(int y)
 {
  if ((y % 4 == 0 && y / 100 != 0)|| y % 400 == 0)
       return true;
  else
   return false;
 }
 bool Date::isbmon(int m)
 {
  if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
   return true;
  return false;
 } bool Date::isxmon(int m)
 {
  if (m == 4 || m == 6 || m == 9 || m == 11)
   return true;
  return false;
 } 
 
 int Date::monday(int y,int m)
 {
  if (isbmon(m))
   return 31;
  else
   if (isxmon(m))
    return 30;  if (isleap(y) && m == 2)
   return 29;
  else
   return 28;
 }

main函数:#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include"date.h"
int main()
{
 int d;
 cout << "请输入需要加的天数N:";
 cin >> d;
 Date D,copy;
 copy = D + d; cout << endl<<"N天后的日期为:";
 copy.print(copy);
 cout << endl;cout<<"BCZY";
 system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c 运算符重
相关文章推荐