?? +
字號:
/*22.自定義一個(gè)簡單的日期類DateType,它具有數(shù)據(jù)成員y、m、d,用來表示當(dāng)前日期的年、月、日。
而后設(shè)計(jì)該類欲實(shí)現(xiàn)(完成)的功能,進(jìn)而設(shè)計(jì)出相應(yīng)的類成員函數(shù)。
例如,下面給出的"雛形"可用來實(shí)現(xiàn)對天的增加,比較兩個(gè)日期是否相等,
以及對日期的輸出等操作。請完成各類成員函數(shù),并編制主函數(shù),說明DateType類對象,
對定義的各成員函數(shù)進(jìn)行調(diào)用,以驗(yàn)證它們的正確性。
class DateType { //自定義的日期類DateType
int y,m,d; //數(shù)據(jù)成員,表示當(dāng)前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//構(gòu)造函數(shù),設(shè)定年、月、日;并設(shè)置參數(shù)默認(rèn)值
void incrementDay(); //增加1天
bool equal(DateType dt2); //判斷二日期是否相等
void printDate(); //屏幕輸出日期對象的有關(guān)數(shù)據(jù)(年、月、日)
};
注意,當(dāng)對日期增加1天后,也會涉及所謂的"進(jìn)位"問題:首先算出本"日"所在的月份具有的天數(shù)N,
若加1之后的"日"數(shù)值超過所在的月份具有的天數(shù)N時(shí),"進(jìn)位"到月,而月份若超過12時(shí)還要"進(jìn)位"到年。
思考:可對該類增加你所考慮到的其他功能,如,對日期進(jìn)行輸入,計(jì)算二日期的間隔天數(shù),
計(jì)算某日期為星期幾,打印對象當(dāng)前數(shù)據(jù)的y年m月的月歷,一次增加若干天,對兩個(gè)日期進(jìn)行其他比較運(yùn)算等。*/
#include<iostream.h>
#include<iomanip.h>
class DateType //自定義的日期類DateType
{ //數(shù)據(jù)成員,表示當(dāng)前日期的年、月、日
public:
DateType(){y=m=d=1;} //構(gòu)造函數(shù),設(shè)定年、月、日;并設(shè)置參數(shù)默認(rèn)值
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;
} //屏幕輸出日期對象的有關(guān)數(shù)據(jù)(年、月、日)
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<<"輸入年、月、日,設(shè)定為當(dāng)前日期:"<<endl;
cin>>a>>b>>c;
DateType date(a,b,c);
cout<<"屏幕輸出當(dāng)前日期:"<<endl;
date.printDate();
cout<<"輸入待比較的日期:"<<endl;
cin>>a>>b>>c;
DateType date2(a,b,c);
cout<<"屏幕輸出待比較的日期:"<<endl;
date2.printDate();
if(date.equal(date2))
cout<<"此日期與當(dāng)前日期相等!"<<endl;
else
cout<<"此日期與當(dāng)前日期不等!"<<endl;
cout<<"輸入在當(dāng)前日期之上要增加的天數(shù):"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
date.incrementDay();
}
cout<<"增加"<<n<<"天后的日期是:"<<endl;
date.printDate();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -