65,189
社区成员




#include <iostream>
#include <iomanip>
using namespace std;
class CDate
{
public:
CDate();
CDate(int day, int month, int year);
CDate(CDate &c);
bool IsLeapYear();
void SetDate();
void monthadd();
void dayadd();
void AddDay();
void Display();
int getNUMBER()
{
return NUMBER;
}
~CDate(){};
private:
int day;
int month;
int year;
int number;
int NUMBER;
};
CDate::CDate():day(1),month(1),year(2013){}
bool CDate::IsLeapYear()
{
if ((year%4==0&&year%100!=0)||(year%400==0))
return true;
else
return false;
}
void CDate::SetDate()
{
cout<<"请按照日 月 年的格式设置当前日期,请输入数据:";
cin>>day>>month>>year;
if (IsLeapYear())
{
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if (1<=day&&day<=31)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else if (month==4||month==6||month==9||month==11)
{
if (1<=day&&day<=30)
cout<<"设置日期成功!!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else
{
if (1<=day&&day<=29)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
}
else
{
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if (1<=day&&day<=31)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else if (month==4||month==6||month==9||month==11)
{
if (1<=day&&day<=30)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else
{
if (1<=day&&day<=28)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
}
}
void CDate::monthadd()
{
if (IsLeapYear()==true)
{
c: switch(month)
{
case 1:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 2:
if (number>29)
{
month++;
number-=29;
}
else
break;
case 3:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 4:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 5:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 6:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 7:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 8:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 9:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 10:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 11:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 12:
if (number>31)
{
month=1;
year++;
number-=31;
if (IsLeapYear()==true)
goto c;
else
goto d;
}
else
break;
default:
break;
}
dayadd();
}
else
{
d: switch(month)
{
case 1:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 2:
if (number>28)
{
month++;
number-=28;
}
else
break;
case 3:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 4:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 5:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 6:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 7:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 8:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 9:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 10:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 11:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 12:
if (number>31)
{
month=1;
year++;
number-=31;
if (IsLeapYear()==true)
goto c;
else
goto d;
}
else
break;
default:
break;
}
dayadd();
}
}
void CDate::dayadd()
{
switch(month)
{
case 1:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 2:
day+=number;
if (IsLeapYear()==true)
{
if (day>29)
{
month++;
day-=29;
}
break;
}
else
{
if (day>28)
{
month++;
day-=28;
}
break;
}
break;
case 3:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 4:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 5:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 6:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 7:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 8:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 9:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 10:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 11:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 12:
day+=number;
if (day>31)
{
month=1;
year++;
day-=31;
}
break;
default:
break;
}
}
void CDate::AddDay()
{
cout<<"请输入要加的天数:";
cin>>number;
NUMBER=number;
if (IsLeapYear()==true)
{
a: if (number>=366)
{
for(;number/366!=0;)
{
year++;
number-=366;
if (IsLeapYear()==false)
goto b;
}
monthadd();
}
else
monthadd();
}
else
{
b: if (number>=365)
{
for(;number/365!=0;)
{
year++;
number-=365;
if (IsLeapYear()==true)
goto a;
}
monthadd();
}
else
monthadd();
}
}
void CDate::Display()
{
cout<<year<<"."<<setw(2)<<setfill('0')<<month<<"."<<setw(2)<<setfill('0')<<day<<endl;
}
void main()
{
CDate a;
a.SetDate();
cout<<"您设置的日期为:";
a.Display();
a.AddDay();
cout<<a.getNUMBER()<<"天后的日期为:";
a.Display();
}
[/quote]
说错了,是是定义addday函数时没声明类#include <iostream>
#include <iomanip>
using namespace std;
class CDate
{
public:
CDate();
CDate(int day, int month, int year);
CDate(CDate &c);
bool IsLeapYear();
void SetDate();
void monthadd();
void dayadd();
void AddDay();
void Display();
int getNUMBER()
{
return NUMBER;
}
~CDate(){};
private:
int day;
int month;
int year;
int number;
int NUMBER;
};
CDate::CDate():day(1),month(1),year(2013){}
bool CDate::IsLeapYear()
{
if ((year%4==0&&year%100!=0)||(year%400==0))
return true;
else
return false;
}
void CDate::SetDate()
{
cout<<"请按照日 月 年的格式设置当前日期,请输入数据:";
cin>>day>>month>>year;
if (IsLeapYear())
{
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if (1<=day&&day<=31)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else if (month==4||month==6||month==9||month==11)
{
if (1<=day&&day<=30)
cout<<"设置日期成功!!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else
{
if (1<=day&&day<=29)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
}
else
{
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if (1<=day&&day<=31)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else if (month==4||month==6||month==9||month==11)
{
if (1<=day&&day<=30)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
else
{
if (1<=day&&day<=28)
cout<<"设置日期成功!"<<endl;
else
cout<<"日期输入错误!"<<endl;
}
}
}
void CDate::monthadd()
{
if (IsLeapYear()==true)
{
c: switch(month)
{
case 1:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 2:
if (number>29)
{
month++;
number-=29;
}
else
break;
case 3:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 4:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 5:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 6:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 7:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 8:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 9:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 10:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 11:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 12:
if (number>31)
{
month=1;
year++;
number-=31;
if (IsLeapYear()==true)
goto c;
else
goto d;
}
else
break;
default:
break;
}
dayadd();
}
else
{
d: switch(month)
{
case 1:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 2:
if (number>28)
{
month++;
number-=28;
}
else
break;
case 3:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 4:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 5:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 6:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 7:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 8:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 9:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 10:
if (number>31)
{
month++;
number-=31;
}
else
break;
case 11:
if (number>30)
{
month++;
number-=30;
}
else
break;
case 12:
if (number>31)
{
month=1;
year++;
number-=31;
if (IsLeapYear()==true)
goto c;
else
goto d;
}
else
break;
default:
break;
}
dayadd();
}
}
void CDate::dayadd()
{
switch(month)
{
case 1:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 2:
day+=number;
if (IsLeapYear()==true)
{
if (day>29)
{
month++;
day-=29;
}
break;
}
else
{
if (day>28)
{
month++;
day-=28;
}
break;
}
break;
case 3:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 4:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 5:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 6:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 7:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 8:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 9:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 10:
day+=number;
if (day>31)
{
month++;
day-=31;
}
break;
case 11:
day+=number;
if (day>30)
{
month++;
day-=30;
}
break;
case 12:
day+=number;
if (day>31)
{
month=1;
year++;
day-=31;
}
break;
default:
break;
}
}
void CDate::AddDay()
{
cout<<"请输入要加的天数:";
cin>>number;
NUMBER=number;
if (IsLeapYear()==true)
{
a: if (number>=366)
{
for(;number/366!=0;)
{
year++;
number-=366;
if (IsLeapYear()==false)
goto b;
}
monthadd();
}
else
monthadd();
}
else
{
b: if (number>=365)
{
for(;number/365!=0;)
{
year++;
number-=365;
if (IsLeapYear()==true)
goto a;
}
monthadd();
}
else
monthadd();
}
}
void CDate::Display()
{
cout<<year<<"."<<setw(2)<<setfill('0')<<month<<"."<<setw(2)<<setfill('0')<<day<<endl;
}
void main()
{
CDate a;
a.SetDate();
cout<<"您设置的日期为:";
a.Display();
a.AddDay();
cout<<a.getNUMBER()<<"天后的日期为:";
a.Display();
}