定义包含年月日信息的日期类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");
}
头文件的实现:
#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");
}
相关文章推荐
- 定义一个结构体变量(包含年月日),写一个函数,计算该日期在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
- Date 是内置对象,包含日期和时间信息
- Java常用类:Data()的用法,获得当前日期和时间对象date 定义对象Date date1 = new Date(36000000);获得包含的日期和时间 比较date和date1是否相等
- 定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数.参数是此结构体类型的变量,返回值是整数
- 定义一个日期Date,该类对象存放一个日期,可以提供的操作有:void :printDate(); //显示日期,格式如“日期是:2010年6月8日”void
- 给字符串对象定义一个repeat功能。当传入一个整数n时,它会返回重复n次字符串的结果。
- 定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数
- 使用Date日期对象来完成,在页面上根据不同时间显示不同的问候语,如:早上好,中午好,下午好,晚上好等信息
- 简化版定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数
- 6.5 定义一个日期类 Date,该类对象存放一个日期,可以提供的操作有: void GetDate(); //取日期值,格式如“2001 年 2 月 5 日” void GetYear(); //取
- 66.6 设计一个雇员类 employee,存储雇员的姓名、编号和生日等信息,要求该类使用 上一题设计的日期类作为成员对象。雇员类的使用如下: //定义一个雇员,其雇员号为 10,生日为 1970 年
- 定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
- JSON转换包含Date日期属性的对象的List集合报错问题
- 设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-
- 定义一个日期类Date,该类对象存放一个日期
- 设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-
- js中对象定义状态、js判断为空的方法、js数字相加减以及日期处理
- 一个包含完整的特性(date(日期),body(正文))和方法的Blog对象!!!
- 3、定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。
- //6.5 定义一个日期类 Date,该类对象存放一个日期,可以提供的操作有: //void GetDate(); //取日期值,格式如“2001 年 2 月 5 日” //void GetYear(