//********************************
//*******Class:Date***************
//*******2011.10.17***************
//*******By Tea_Duan**************
//********************************
#include <iostream.h>
#include <stdlib.h>
//Global variable
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//days of month
char *Week[7]={"Sunday","Monday","Tuesday","Wednesday","Thurday","Friday","Saturday"}; //Week
class Date{//class defination
public:
void SetDate(int,int,int);// initialization
int IsLeapyear(int ); //Leap year or not
int Week_day(int); //Week_day
void Show(); //days number
private:
int year,month,day;
};
void Date::SetDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
if(year<=0||month<=0||day<=0||month>12||day>days[month]) //Date validity check
{
cout<<"The Date is invalid!"<<endl;
exit(0);
}
}
int Date::IsLeapyear(int y)
{
return y%4==0&&y%100!=0||y%400==0;
}
int Date::Week_day(int flag)
//flag 0:week 1:day_num;
{
long sum=0;
int i;
if(flag==0)
i=1;
else
i=year;
for(;i<year;i++)
{
if(IsLeapyear(i))
sum+=366;
else
sum+=365;
}
for(int j=1;j<month;j++)
sum+=days[j];
if(month>2 && IsLeapyear(year))
sum++;
sum+=day;
if(flag==0)
return sum%7;
return sum;
};
void Date::Show()
{
cout<<"The Date is:"<<year<<"-"<<month<<"-"<<day<<endl;
cout<<"It's "<<*(Week+Week_day(0))<<endl;
cout<<"It's "<<Week_day(1)<<" days of this year!"<<endl;
}
void main()
{
Date D;
int y,m,d;
cout<<"Please input the Date:"<<endl;
cin>>y>>m>>d;
D.SetDate(y,m,d);
D.Show();
}