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

📄 +

📁 自定义一个简单的日期类DateType
💻
字号:
/*22.自定义一个简单的日期类DateType,它具有数据成员y、m、d,用来表示当前日期的年、月、日。
而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
	例如,下面给出的"雏形"可用来实现对天的增加,比较两个日期是否相等,
	以及对日期的输出等操作。请完成各类成员函数,并编制主函数,说明DateType类对象,
	对定义的各成员函数进行调用,以验证它们的正确性。
class DateType {					//自定义的日期类DateType
	int y,m,d;  					//数据成员,表示当前日期的年、月、日
public:
	DateType(int y0=1, int m0=1, int d0=1); 
				//构造函数,设定年、月、日;并设置参数默认值
	void incrementDay();  			//增加1天
   	bool equal(DateType dt2);  		//判断二日期是否相等 
	void printDate();  				//屏幕输出日期对象的有关数据(年、月、日)
};
注意,当对日期增加1天后,也会涉及所谓的"进位"问题:首先算出本"日"所在的月份具有的天数N,
若加1之后的"日"数值超过所在的月份具有的天数N时,"进位"到月,而月份若超过12时还要"进位"到年。
思考:可对该类增加你所考虑到的其他功能,如,对日期进行输入,计算二日期的间隔天数,
计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加若干天,对两个日期进行其他比较运算等。*/
#include<iostream.h>
#include<iomanip.h>
class DateType                     	//自定义的日期类DateType
{ 					//数据成员,表示当前日期的年、月、日
public:
	DateType(){y=m=d=1;} //构造函数,设定年、月、日;并设置参数默认值
	DateType(int a,int b,int c)
	{
		y=a;m=b;d=c;
	}
	int IsLeapYear()
	{
		return(y%4==0&&y%100!=0||y%400==0);
	                                //判断是否为闰年
	}
	void incrementDay();  			//增加1天
   	bool equal(DateType dt2)
	{
		if(dt2.d==d&&dt2.m==m&&dt2.y==y)
		return true;
	    else return false;	        //判断二日期是否相等 
	}
	void printDate()
	{
		cout<<setw(4)<<y<<"年"<<setw(2)<<m<<"月"<<setw(2)<<d<<"日"<<endl;
	}                                //屏幕输出日期对象的有关数据(年、月、日)
private: 
	int y,m,d; 
};
void DateType::incrementDay()
{
	int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	if(m==2&&IsLeapYear()==1)
	{	
		if(d==29)
		{d=1;m++;}
		else
			d++;
	}
	else 
	{
		if(d<days[m-1])
			d++;
		else
		{
			if(m==12)
			{d=1;m=1;y++;}
			else
			{d=1;m++;}
		}
    }
}
void main()
{
	int a,b,c,n;
	cout<<"输入年、月、日,设定为当前日期:"<<endl;
	cin>>a>>b>>c;
	DateType date(a,b,c);
	cout<<"屏幕输出当前日期:"<<endl;
	date.printDate();
	cout<<"输入待比较的日期:"<<endl;
	cin>>a>>b>>c;
	DateType date2(a,b,c);
	cout<<"屏幕输出待比较的日期:"<<endl;
	date2.printDate();
	if(date.equal(date2))
		cout<<"此日期与当前日期相等!"<<endl;
	else
		cout<<"此日期与当前日期不等!"<<endl;
	cout<<"输入在当前日期之上要增加的天数:"<<endl;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		date.incrementDay();
	}
	cout<<"增加"<<n<<"天后的日期是:"<<endl;
	date.printDate();
}

⌨️ 快捷键说明

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