65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
class CDate
{
//construction
public:
CDate(int nYear = 2008,int nMonth = 10,int nDay = 8 );
bool setDate(int nYear = 2008,int nMonth = 10,int nDay = 8);
friend void showDate(CDate date);
//attributes:
private:
int m_year;
int m_month;
int m_day;
};
CDate::CDate(int nYear,int nMonth,int nDay)
{
setDate(nYear,nMonth,nDay);
}
bool CDate::setDate(int nYear,int nMonth ,int nDay)
{
//判断年份
if( nYear <0 || nYear >3000)
{
cout<<"年份值错误"<<endl;
return false;
}
//判断月份
if( nMonth <1 || nMonth >12)
{
cout<<"月份值错误"<<endl;
return false;
}
//判断天
if((nMonth % 2 == 0 || nMonth == 7) && nMonth != 2)
{
if(nDay < 0 || nDay >31)
{
cout<<"天数值错误"<<endl;
return false;
}
}
else if(nMonth % 2 != 0)
{
if(nDay < 0 || nDay >30)
{
cout<<"天数值错误"<<endl;
return false;
}
}
else
{
if(nYear % 4 == 0 && nYear % 100 != 0 || nYear % 400 ==0)
{
if(nDay <0 || nDay >29)
{
cout<<"天数值错误"<<endl;
return false;
}
}
else
{
if(nDay <0 || nDay >28)
{
cout<<"天数值错误"<<endl;
return false;
}
}
}
m_year = nYear;
m_month = nMonth;
m_day = nDay;
return true;
}
void showDate(CDate date)
{
char szDate[100];
sprintf(szDate,"日期为:%d年%d月%d日",date.m_year,date.m_month,date.m_day);
cout<<szDate<<endl;
}
void main()
{
CDate date(2008,10,9);
int nYear = 0;
int nMonth = 0;
int nDay = 0;
cout<<"请输入要设置的日期"<<endl;
cin>>nYear>>nMonth>>nDay;
if(date.setDate(nYear,nMonth,nDay))
showDate(date);
cin.get();
}