题目:
定义一个满足如下要求的类
1)、用下面格式输出日期 年/月/日
2)、课运行在日期上加一天操作
3)、设置日期
我设计的类如下:
头文件:
#include <iostream>
using namespace std;
class CDate
{
private:
int year;
int month;
int day;
public:
void PrintDate()
{
cout << year << "/" << month << "/" << day << endl;
}
void SetDate(int y,int m,int d)
{
year = y;
month = m;
day = d;
}
bool IsLeapYear()
{
return (year%4==0 && year%100!=0) || (year%400==0);
}
bool CheckDate();
void AddOneDay();
};
源文件:
#include "test001.h"
void CDate::AddOneDay()
{
if (IsLeapYear() && month == 2 && day == 29) //如果是2.29号,则 月份+1,日期为1 特殊处理
{
month = 3;
day = 1;
return;
}
if (day == 31)
{
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
month += 1;
day = 1;
break;
case 12:
year += 1;
month = 1;
day = 1;
break;
}
}
else if (day == 30)
{
switch(month)
{
case 4:
case 6:
case 9:
case 11:
month += 1;
day = 1;
break;
}
}
else
{
day += 1;
}
}
bool CDate::CheckDate()
{
if (month < 1 || month > 12)
{
cout << "月份错误!" << endl;
return false;
}
if (day < 1)
{
cout << "日期错误!" << endl;
return false;
}
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (day > 31)
{
cout << "日期错误!" << endl;
return false;
}
break;
case 4:
case 6:
case 9:
case 11:
if (day > 30)
{
cout << "日期错误!" << endl;
return false;
}
break;
}
if (IsLeapYear() && month == 2 && day > 29)
{
cout << "日期错误!" << endl;
return false;
}
if (!IsLeapYear() && month == 2 && day > 28)
{
cout << "日期错误!" << endl;
return false;
}
return true;
}
int main(void)
{
int y,m,d;
CDate od;
cout<< "输入年月日:" << endl;
cin >> y >> m >> d;
od.SetDate(y,m,d);
od.PrintDate();
if (od.CheckDate())
{
od.AddOneDay();
od.PrintDate();
}
return 0;
}