C++日期计算器(日期类)

本文介绍了一个简单的C++日期计算器类的设计,包括构造函数、拷贝构造函数、日期合法性检查、月份天数获取、日期的比较及加减运算。重点讨论了运算符重载的应用,如日期的相等比较、加减操作,并提到了前置和后置++的区别。文章还提及了日期类中可能需要考虑的闰年和月份天数变化的问题。
摘要由CSDN通过智能技术生成
#include<iostream>

using namespace std;

class date

{

    public:

   

    date(int year=1990,int month=1,int day=1)

    :_year(year)

    ,_month(month)

    ,_day(day)

    {

        if(isinvalid(year,month,day))

            cout<<"date right"<<endl;

        else

            cout<<"date error"<<endl;

    }

    date(const date &d)

    {

        _year=d._year;

        _month=d._month;

        _day=d._day;

    }

    void print()

    {

        cout<<_year<<"-";

        cout<<_month<<"-";

        cout<<_day<<endl;

    }

 

 

    bool isLeapyear(int year)

    {

        if((year%4==0)&&(year%100!=0))

        {

            return true;

        }

        else

        {

            if(year%400==0)

                return true;

            else

                return false;

        }

     }

    int Getmonthday(int year,int month)

    {

        int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};

        if(isLeapyear(year)&&month==2)

            return a[month-1]+1;

        else

            return a[month-1];

    }

      bool isinvalid(int year,int month,int day)

      {

          if(year>=1900)

          {

              if(month>0&&month<=12)

              {

                  if(day>0&&(day<=Getmonthday(year,month)))

                      return true;

                  else

                      return false;

              }

              else

             return false;

          }

          else

          return false;

      }

 

    bool operator ==(const date &d)

    {

        if(_year==d._year)

        {

            if(_month==d._month)

            {

                if(_day==d._day)

                    return true;

                else

                    return false;

            }

            return false;

        }

        else

            return false;

    }

    bool operator !=(const date &d)

    {

        return !(*this==d);

    }

    bool operator >(const date &d)

    {

        if(_year>d._year)

        {

            return true;

        }

        else

        {

            if(_month>d._month)

                return true;

            else

            {

                if(_day>d._day)

                    return true;

                else

                    return false;

            }

 

        }

 

    }

    date operator +(int day)

    {

    

        int nowday=_day+day;

        while(nowday>=Getmonthday(_year,_month))

        {

            nowday=nowday-Getmonthday(_year,_month);

            if(_month==12)

            {
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1) 测试日期类成员函数,在主函数中列出菜单选项,可以完成日期的加减比较等测试功能。 (2) 完善程序功能,在日期相加的菜单选项中增加日期加天数,结果为新日期日期份,结果为新日期,要考虑闰情况。 (3) 完善程序功能,在日期相减的菜单选项中增加日期减天数,结果为新日期日期份,结果为新日期,要考虑闰情况。 (4) 显示日期时增加显示星期及英文形式的份的功能。 (5) 增加输入的甄别功能,即输入非法数据(如负数、日期超过31天、时间超过24小时等情况)的识别显示功能。 (1) 仿照日期类编写时间CTime_t,可以完成时间的设置、运算、比较等功能。 (2) 增加时间的输入功能,既可以选择输入格式,可以输入hh:mm:ss格式的信息。 (3) 增加时间的输出格式,可以输出12小时的时间格式。 (4) 编写时间和日期的派生CDati,完成日期与时间的联合设置、运算、比较等功能,要求该派生可以完成:日期时间加天数或时间等于新的日期时间,日期时间减天数或等于新的日期时间,两个日期时间相减等于天数或时间等工作,在程序中考虑闰等具体情况,并重载各种运算符。 (5) 增加输入的甄别功能,即输入非法数据,即输入非法数据(如负数、日期超过31天、时间超过24小时等情况)的识别显示功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值