设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-

原创 2013年12月02日 23:37:26

#include<iostream>

using namespace std;

class Date{

private:

int year,month,day;

public:

Date(int y=1,int m=1 ,int d=1){

year=y;

month=m;

day=d;

}

int GetYear() const {return year;}

int GetMonth() const {return month;}

int GetDay() const {return day;}

Date operator+(int days);

Date operator-(int days);

static bool LeapYear(int y);

static int GetYearDays(int y);

static int GetMonthDays(const Date &d);

static int DateNum(const Date &d);

static Date NumDate(int n);

friend ostream &operator<<(ostream &cout,const Date&d);

friend istream &operator>>(istream &cin,const Date&d);

};

 

Date Date::operator+(int days)

{

int n=DateNum(*this)+days;

return NumDate(n);

}

Date Date::operator-(int days)

{  int n=DateNum(*this)-days;

   return NumDate(n);

}

bool Date::LeapYear(int y)

{

if(y%4==0 && y%100!=0||y%400==0)

return true;

else 

return false;

}

 

int Date::GetYearDays(int y)

{

if(LeapYear(y))

return 366;

else 

return 365;

}

int Date::GetMonthDays(const Date &d)

{

int n;

switch(d.GetMonth())

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

n=31;

break;

case 4:

case 6:

case 9:

case 11:

n=30;

break;

case 2:

if(LeapYear(d.GetYear()))

n=29;

else

n=28;

}

return n;

}

int Date::DateNum(const Date &d)

{

int y,n=0;

for(y=1;y<d.GetYear();y++)

n+=GetYearDays(y);

for(int m=1;m<d.GetMonth();m++)

n+=GetMonthDays(Date(y,m,1));

n+=d.GetDay();

return n;

}

 

Date Date::NumDate(int n)

{

int y,m,d,rest=n;

for(y=1,rest=n;rest>GetYearDays(y);y++)

rest-=GetYearDays(y);

for(m=1;rest>GetMonthDays(Date(y,m,1));m++)

rest-=GetMonthDays(Date(y,m,1));

d=rest;

return Date(y,m,d);

}

 

ostream &operator<<(ostream &out,Date &d)

{

out<<d.GetYear()<<"-"<<d.GetMonth<<"-"<<d.GetDay();

return out;

}

 

istream &operator>>(istream &in,Date &d)

{

int year,month,day;

cin>>year>>month>>day;

d=Date(year,month,day);

return in;

}

 

int main(void)

{

Date d(2013,1,19);

 

cout<<d<<endl;

cout<<"10日后:"<<d+10<<endl;

cout<<"10日前:"<<d-10<<endl;

cin>>d;

cout<<"日期:"<<d<<endl;

return 0;

}

设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-

#includeclass Date{ private: double year,month,day; public: Date(double y=0,double m=0,double d=0)...
  • u012830385
  • u012830385
  • 2013年12月18日 19:41
  • 1457

【7.11】为Date类重载“+”运算符,实现在某一个日期上(月、日、年)加一个天数。

 【7.11】为Date类重载“+”运算符,实现在某一个日期上(月、日、年)加一个天数。 Date类如下: class Date{    public:     Date (in...
  • huanyu_liang
  • huanyu_liang
  • 2015年07月01日 19:07
  • 1122

设计一个日期类date,包括日期的年份,月份和日号,编写一个友元函数求两个日期之间相差的天数。

#include class date{ int year; int month; int day;public: date(int y,int m,int d) {  year=y;month=m;...
  • qq10050
  • qq10050
  • 2006年12月01日 10:59
  • 6528

计算机程序设计(C++)第10周编程作业数据的抽象和封装——类(2)——构造函数、析构函数和指向对象的指针

/* 1定义一个带重载构造函数的日期类 题目内容: 定义一个带重载构造函数的日期类Date,数据成员有年、月、日;成员函数包括:一个带参数的构造函数Date(int,int,int),一个不带参数的构...
  • guaxie9392
  • guaxie9392
  • 2017年05月12日 14:37
  • 655

C++ 声明并实现一个日期类(运算符重载)

/****************************************************************************************** date.hpp...
  • ZhongQi0808
  • ZhongQi0808
  • 2015年05月10日 15:31
  • 1274

定义日期类Date,并重载运算符实现几种操作

题目要求这样:定义一日期Date类,重载++,--,-和^ 运算,分别完成求日期+1,-1, 两个日期相减之间天数,以及取对应日期的星期几的操作,并编写主函数进行测试。 代码: Date类 //...
  • u011383131
  • u011383131
  • 2015年10月14日 13:05
  • 1795

Java 给定一个指定日期 加上天数 输出加上天数的日期

public static void main(String[] args) throws java.text.ParseException { System.out.println(...
  • z1729734271
  • z1729734271
  • 2016年08月16日 14:01
  • 7340

当前日期减去指定天数后 ,日期没有减少反而增加了

当前日期减去指定天数后 ,日期没有减少反而增加了这也许是一个很蠢的事情,之所以写下来是为了 铭记 这次蠢事 , 告诫自己以后细心一些 , 另一反面也抱着侥幸心理 , 觉得自己不是第一个干这种事情人 ,...
  • HLhakey
  • HLhakey
  • 2017年02月15日 19:37
  • 687

java日期时间加上天数

加n 天1.在数据库中:参数d 为 day,还有M、y等select convert(varchar(10),dateadd(d,n,'2008-12-31'),120)2.在java 程序中:pub...
  • smile725775
  • smile725775
  • 2010年11月08日 14:05
  • 7474

运算符重载之自增自减篇

今天写题要求写到重载自增自减运算符,之前看运算符的重载没有仔细思考,对于运算符++和--来说有两种形式,一种是前置的形式,一种是后置的形式。        如果不区分前置或者后置的区别的话,则我们就...
  • fk5431
  • fk5431
  • 2015年05月13日 20:52
  • 1672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计一个日期类Date,,要求: (1)包含年(year)、月(month)和日(day)私有数据成员。 (2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-
举报原因:
原因补充:

(最多只允许输入30个字)