⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 date.cpp

📁 这个程序是一个日期(包括年月日)类的具体实现有各种功能下载后即可研究,它包括了C++面向对象的几乎所有内容,对初学面向对象的学生十分有帮助.
💻 CPP
字号:
#include<iostream>
using namespace std;
#include"date.h"
Date::Date()
{
	day=23;
	month=3;
	year=2006;
}
Date::Date(int d1)
{
	if((d1<=judge(3,2006))&&d1>0)
	{
		day=d1;
		month=3;
		year=2006;
	}
	else
		cout<<"日期不合法!!!";
	
}
Date::Date(int d1,int m1)
{
	if((d1<=judge(m1,2006))&&d1>0)
	{
		day=d1;
		month=m1;
		year=2006;

	}
	else
		cout<<"日起不合法!!!";
	
}
Date::Date(int d1,int m1,int y1)
{
	if((d1<=judge(m1,y1))&&d1>0)
	{
		day=d1;
		month=m1;
		year=y1;

	}
	else if(d1>judge(m1,y1))
		cout<<"日起不合法!!!";
	
}
int Date::getDay()
{
	return day;
}
int Date::getMonth()
{
	return month;
}
int Date::getYear()
{
	return year;
}
int Date::judge(int m,int y)
{
		if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
			return 31;
		else if(m==4||m==6||m==9||m==11)           //丢掉一个等号导致我改了很久!!!
			return 30;
		else if((y%400==0||(y%4==0&&y%100!=0))&&(m==2))//是闰年的情况下
		{
			return 29;
		}
		else
		{
			return 28;
		}


}

void Date::add_day(int n)
{
	int max=judge(month,year);
	if(n>30)
	{
		cout<<"加的天数过大"<<endl;
		return;
	}
	
	if((n+day)>max)
	{
		day=(n+day)-max;
		if(month==12)
		{
			month=1;
			year++;
			return;
		}
		else
		{
			month++;
			return;
		}

	}//end if
	else
	{
		day=day+n;
		return;
	}

}

void Date::add_month(int n)
{
	if(n>12)
	{
		cout<<"加的月数过大!!!"<<endl;
		return;
	}
	if((month+n)>12)
	{
		year++;
		month=month+n-12;
		if(day>judge(month,year))
		{
			day=day-judge(month,year);
			month++;
			
		}
	}
	else
	{
		month=month+n;
		if(day>judge(month,year))
		{
			day=day-judge(month,year);
			month++;
		}
	}
}

void Date::add_year(int n)
{
	year=year+n;
	if(day>judge(month,year))
		{
		    day=day-judge(month,year);
			month++;
		}
}


bool Date::operator !=(Date& oneDate)
{

	if(oneDate.day!=day||oneDate.month!=month||oneDate.year!=year)
		return true;
	else 
		return false;
}

bool Date::operator ==(Date& oneDate)
{

	if(oneDate.day!=day||oneDate.month!=month||oneDate.year!=year)
		return false;
	else 
		return true;
}

bool Date::operator <(Date& oneDate)
{
	if(year<oneDate.year||(year==oneDate.year&&month<oneDate.month)||
		(year==oneDate.year&&month==oneDate.month&&day<oneDate.day))
		return true;
	else 
		return false;
		
}

bool Date::operator >(Date& oneDate)
{

	if(year<oneDate.year||(year==oneDate.year&&month<oneDate.month)||
		(year==oneDate.year&&month==oneDate.month&&day<oneDate.day))
		return false;
	else 
		return true;
}

bool Date::operator <=(Date& oneDate)
{

	if(year<oneDate.year||(year==oneDate.year&&month<oneDate.month)||
		(year==oneDate.year&&month==oneDate.month&&day<oneDate.day))
		return true;
	else 
		return false;
}

bool Date::operator >=(Date& oneDate)
{

	if(year<oneDate.year||(year==oneDate.year&&month<oneDate.month)||
		(year==oneDate.year&&month==oneDate.month&&day<oneDate.day))
		return false;
	else 
		return true;
}

 Date& operator++(Date& oneDate)
{
	 oneDate.add_day(1);
	 return oneDate;
}

 Date& Date::operator ++(int)
 {
	Date& temp=*this;
	++(*this);
	return temp;

 }

 Date& operator --(Date& oneDate)
 {
	 if(oneDate.day==1)
	 {
		 if(oneDate.month==1)
		 {
			 oneDate.month=12;
			 oneDate.day=31;
			 oneDate.year--;
			 
		 }
		 else
		 {

			 oneDate.month--;
			oneDate.day=oneDate.judge(oneDate.month,oneDate.year);
		 }
		 
	 }
	 else
		 oneDate.day--;
	 return oneDate;

 }

 Date& Date::operator --(int)
 {
	 Date& temp=*this;
	 --(*this);
	 return temp;
 }














⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -