类和对象2

定义一个日期类Date,该类对象存放一个日期,可以提供的操作有:

void GetDate( );//取日期值,格式如"2012年2月5日"

int GetYear( );//取年份

int GetMonth( );//取月份

int GetDay( );//取日期

void SetDate(int y,int m,int d);//设置日期值

void AddOneDay ( );//日期增加一天

还允许对日期对象作以下定义:

Date d1(2001,5,8);//用所给日期定义一个日期变量

Date d2;//定义一个日期对象

Date d3(d1);//用已有的日期构造一个新对象

要求: 1)要求本程序用到所有的上述操作和定义,并且日期的输出格式为:

xxxx年xx月xx日 如:2011年6月15日

2)对于void AddOneDay ( )函数,要考虑每月的天数有28天、30天、31天的,另外还要考虑每年的最后一天加一天后,变为下一年的第1天。

#include<iostream>
using namespace std;
class Date
{
    private:
        int year,month,day;
    public:
        Date() {year=0;month=0;day=0;}
        Date(int y,int m,int d)
        {
            year=y; month=m; day=d;
        }

    void GetDate( )//取日期值,格式如"2012年2月5日"
    {
        cout<<"year: "<<year<<" month: "<<month<<" day: "<<day<<endl;
    }

    int GetYear( )//取年份
    {
        return year;
    }

    int GetMonth( )//取月份
    {
        return month;
    }

    int GetDay( )//取日期
    {
        return day;
    }

    void SetDate()//设置日期值
    {
        cin>>year>>month>>day;
    }

    void AddOneDay();//日期增加一天

    int IsCurrentDate(int year,int month,int day);//是不是正确的日期

};

    void Date::AddOneDay()
    {
    int sign=0;
    if((year%4==0&&year%100!=0)||year%400==0)  {sign =1;}
    switch (month)
       {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
            if(day<31)
            {
                day=day+1;
            }
            else
            {
                day=1;
                month=month+1;
            }break;
        case 4:
        case 6:
        case 9: 
        case 11:
            if(day<30)
            {
                day=day+1;
            }
            else
            {
                day=1;
                month=month+1;
            }break;
            case 2:
            if(sign ==1)
            if(day<29)
            {
                day=day+1;
            }
            else
            {
                day=1;
                month=3;
            }
            else if(day<28)
            {
                day=day+1;
            }
            else
            {
                day=1;
                month=3;
            }break;
        case 12:
            if(day<30)
            {
                day=day+1;
            }
            else
            {
                day=1;
                month=1;
                year=year+1;
            }break;
            default:break;
           }
    }

int Date::IsCurrentDate(int year,int month,int day)
    {
        int sign=0,DAY;
        if((year%4==0&&year%100!=0)||year%400==0)
        {
            sign =1;
        }
        if(month>=1&&month<=12)
        {
            switch(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 (sign ==1)
                        DAY = 29;
                    else
                        DAY = 28;break;
                default:break;
               }
            if(!(day >0&&day <=DAY))
            {
                cout<<"日期格式错误"<<endl;
                return 2;
            }
        }
        else
        {
            cout<<"月份格式错误"<<endl;
            return 1;
        }

        cout<<"日期格式正确"<<endl;
        return 0;
    }

int main()
{
    Date d1(2001,2,5);//用所给日期初始化定义一个日期变量d1
    d1.GetDate();//输出d1对应日期
    int a,b,c;
    a=d1.GetYear();
    b=d1.GetMonth();
    c=d1.GetDay();
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<c<<endl;//分别输出d1对应年、月、日
    Date d2;//定义一个日期对象d2
    d2.SetDate();//输入d2日期值
    d2.GetDate();//输出d2日期值
    Date d3(d2);//用输入的日期d2复制构造一个新对象d3
    d3.AddOneDay();//给d3使用AddOneDay函数
    d3.GetDate();//输出新的d3的值
    return 0;
}



#C/C++#
全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务