Date类(课后11.3)

【问题描述】
定义一个满足如下要求的Date类
(1)用下面的格式输出日期
日/月/年
(2)可运行在日期上加一天的操作
(3)设置日期

【输入形式】
输入原始日期以及新的日期

【输出形式】
输出原始日期加一天后的日期,以及设置新日期后的日期

【样例输入】
2018 11 30
2020 2 9

【样例输出】
after add: 1/12/2018
new date: 9/2/2020

【提示】
冒号后面有一个空格

#include <iostream>
using namespace std;

class Date
{
private:
    int m_year,m_month,m_day;
public:
    //构造函数
    Date(int year,int month,int day);
    //功能函数
    void AddDay();//原始日期加后一天
    void SetDate(int year,int month,int day);//设置新日期
    void ShowDate();//显示日期
};

Date::Date(int year,int month,int day)//构造函数
{
    m_year = year; m_month = month; m_day = day;
}

void Date::AddDay()//原始日期加后一天
{
    if( (m_month==1 || m_month==3 || m_month==5 || m_month==7 || m_month==8 || m_month==10) && m_day==31 )
    {
        m_day=1;m_month++;
    }
    if( m_month==12 && m_day==31 )
    {
        m_day=1;m_month=1;m_year++;
    }
    if( (m_month==4 || m_month==6 || m_month==9 || m_month==11) && m_day==30 )
    {
        m_day=1;m_month++;
    }
    if( (m_month==2 && ( ( m_year%4==0 && m_year%100!=0 ) || ( m_year%400==0 ) )) && m_day==29 )
    {
        m_day=1;m_month++;
    }
    if( (m_month==2 && ( ( m_year%4!=0 ) || ( m_year%100==0 && m_year%400!=0 ) )) && m_day==28 )
    {
        m_day=1;m_month++;
    }
}

void Date::SetDate(int year,int month,int day)//设置新日期
{
    m_year = year; m_month = month; m_day = day;
}

void Date::ShowDate()//显示日期
{
    cout << m_day << "/" << m_month << "/" << m_year << endl;
}

int main()
{
    int year1,month1,day1,year2,month2,day2;
    cin >> year1 >> month1 >> day1;
    cin >> year2 >> month2 >> day2;
    Date date(year1,month1,day1);
    cout << "after add: ";
    date.AddDay();
    date.ShowDate();
    cout << "new date: ";
    date.SetDate(year2,month2,day2);
    date.ShowDate();
    return 0;
}

原文地址:https://www.cnblogs.com/yuzilan/p/10626156.html