设计一个满足如下要求的CDate类:
1,用下面的格式输入日期:日/月/年:
2,输出在当前日期加一天后的日期:
3,设置日期:
本人想法:
是否润年,
月份中有30天和31天的怎么加判断,
还有2月有分28天和29天。
希望能够通过用户输入日期,然后在屏幕显示日期和加一天后的日期。
对不起,我昨晚有些事没有来,现在我把代码给你,
在vc6编译通过,并且对设置日期的成员函数加入了错误校验,你看一下,是否会对你有帮助:
代码如下:
//主函数: 日期类main.cpp
#include<iostream.h>
#include"日期类.h"
void main()
{
Data a;
a.display();
a.setdata(1,1,2003);
for(int i=1;i<=365;i++)
a.dataadd();
cout<<"Next year today is:";
a.display();
a.setdata(1,1,2004);
a.display();
cout<<"tomorrow is:";
a.dataadd();
a.display();
a.setdata(1,1,2001);
cout<<"Now is:";
a.display();
}
//日期类头文件: 日期类.h
#include<iostream.h>
class Data
{
public:
Data(){year=2000;month=1;day=1;};
void setdata(int d,int m,int y);
void dataadd();
void display();
private:
int year;
int month;
int day;
};
void Data::setdata(int d,int m,int y)
{
if(y<0)
{
cout<<"Its error data!"<<endl;
return;
}
if((m<1)||(m>12))
{
cout<<"Its error data!"<<endl;
return;
}
if((y%400==0)||(y%4==0&&y%100!=0))
{
if(m==2)
{
if((1>d)||(d>29))
{
cout<<"Its error data!"<<endl;
return;
}
}
else
if((m==4)||(m==6)||(m==9)||(m==11))
{
if((1>d)||(d>30))
{
cout<<"Its error data!"<<endl;
return;
}
}
else
if((d<1)||(d>31))
{
cout<<"Its error data!"<<endl;
return;
}
}
else
if(m==2)
if((d<1)||(d>28))
{
cout<<"Its error data!"<<endl;
return;
}
if((m==4)||(m==6)||(m==9)||(m==11))
{
if((1>d)||(d>30))
{
cout<<"Its error data!"<<endl;
return;
}
}
else
if((d<1)||(d>31))
{
cout<<"Its error data!"<<endl;
return;
}
day=d;
month=m;
year=y;
}
void Data::display()
{
cout<<"The data is :"<<day<<"/"<<month<<"/"<<year<<endl;
}
void Data::dataadd()
{
day=day+1;
if(((month==4)||(month==6)||(month==9)||(month==11))&&(day==31))
{
month=month+1;
day=1;
return;
}
if(((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10))&&(day==32))
{
month=month+1;
day=1;
return;
}
if((month==12)&&(day==32))
{
year=year+1;
month=1;
day=1;
}
if(((year%400==0)||((year%4==0)&&(year%100!=0)))&&(month==2)&&(day==30))
{
month=month+1;
day=1;
return;
}
if(!((year%400==0)||(year%4==0&&year%100!=0))&&(month==2)&&(day==29))
{
month=month+1;
day=1;
return;
}
}