类和对象2
定义一个日期类Date,该类对象存放一个日期,可以提供的操作有:
void GetDate( );//取日期值,格式如"2012年2月5日"
int GetYear( );//取年份
int GetMonth( );//取月份
int GetDay( );//取日期
void SetDate(int y,int m,int d);//设置日期值
void AddOneDay ( );//日期增加一天
还允许对日期对象作以下定义:
Date d1(2001,5,8);//用所给日期定义一个日期变量
Date d2;//定义一个日期对象
Date d3(d1);//用已有的日期构造一个新对象
要求: 1)要求本程序用到所有的上述操作和定义,并且日期的输出格式为:
xxxx年xx月xx日 如:2011年6月15日
2)对于void AddOneDay ( )函数,要考虑每月的天数有28天、30天、31天的,另外还要考虑每年的最后一天加一天后,变为下一年的第1天。
#include<iostream> using namespace std; class Date { private: int year,month,day; public: Date() {year=0;month=0;day=0;} Date(int y,int m,int d) { year=y; month=m; day=d; } void GetDate( )//取日期值,格式如"2012年2月5日" { cout<<"year: "<<year<<" month: "<<month<<" day: "<<day<<endl; } int GetYear( )//取年份 { return year; } int GetMonth( )//取月份 { return month; } int GetDay( )//取日期 { return day; } void SetDate()//设置日期值 { cin>>year>>month>>day; } void AddOneDay();//日期增加一天 int IsCurrentDate(int year,int month,int day);//是不是正确的日期 }; void Date::AddOneDay() { int sign=0; if((year%4==0&&year%100!=0)||year%400==0) {sign =1;} switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: if(day<31) { day=day+1; } else { day=1; month=month+1; }break; case 4: case 6: case 9: case 11: if(day<30) { day=day+1; } else { day=1; month=month+1; }break; case 2: if(sign ==1) if(day<29) { day=day+1; } else { day=1; month=3; } else if(day<28) { day=day+1; } else { day=1; month=3; }break; case 12: if(day<30) { day=day+1; } else { day=1; month=1; year=year+1; }break; default:break; } } int Date::IsCurrentDate(int year,int month,int day) { int sign=0,DAY; if((year%4==0&&year%100!=0)||year%400==0) { sign =1; } if(month>=1&&month<=12) { switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:DAY = 31;break; case 4: case 6: case 9: case 11:DAY = 30;break; case 2: if (sign ==1) DAY = 29; else DAY = 28;break; default:break; } if(!(day >0&&day <=DAY)) { cout<<"日期格式错误"<<endl; return 2; } } else { cout<<"月份格式错误"<<endl; return 1; } cout<<"日期格式正确"<<endl; return 0; } int main() { Date d1(2001,2,5);//用所给日期初始化定义一个日期变量d1 d1.GetDate();//输出d1对应日期 int a,b,c; a=d1.GetYear(); b=d1.GetMonth(); c=d1.GetDay(); cout<<a<<endl; cout<<b<<endl; cout<<c<<endl;//分别输出d1对应年、月、日 Date d2;//定义一个日期对象d2 d2.SetDate();//输入d2日期值 d2.GetDate();//输出d2日期值 Date d3(d2);//用输入的日期d2复制构造一个新对象d3 d3.AddOneDay();//给d3使用AddOneDay函数 d3.GetDate();//输出新的d3的值 return 0; }
#C/C++#