要求:数据成员为int变量日,月,年,设置为私有的。
- 输入日期,设置日期并判断日期的合法性。
- 用下面的格式输出日期: 日/月/年
- 可运行在合法日期上加一
1)将类的定义(只放成员函数声明)放在Date.h中
#include<iostream>
using namespace std;
class Date
{
public:
void setdate(int y, int m, int d);//向类内部私密数据赋值
bool leap_year();//判断闰年
int max_day(int month);//判断每月最大天数
bool check_legal();//判断合法性
void add_day();//增加一天
void print_tomorrow();//打印明天日期
protected:
int year, month, day;
};
2)将成员函数的实现放在Date.cpp中
#include"Date.h"
#include<iostream>
using namespace std;
void Date::setdate(int y, int m, int d)//向类内部私密数据赋值
{
year = y;
month = m;
day = d;
}
bool Date::leap_year()//判断闰年
{
bool result;
if ((year % 4 == NULL && year % 100 != NULL) || year % 400 == NULL)
{
result = true;
}
else
{
result = false;
}
return result;
}
int Date::max_day(int month)//判断每月最大天数
{
int max_d;
const int day[13] = { 31,28,31,30,31,30,31,31,30,31,30,31 };//每月最大天数
if (month == 2 && leap_year())//闰年2月天数为29
{
max_d = 29;
}
else
{
max_d = day[month - 1];
}
return max_d;
}
bool Date::check_legal()//判断合法性
{
bool result = false;
if (month >= 1 && month <= 12)//月和天在范围内
{
if (day >= 1 && day <= max_day(month))
{
result = true;
}
}
return result;
}
void Date::add_day()//增加一天
{
if (check_legal())//如果合法
{
cout << "当前日期为:" << day << "/" << month << "/" << year << endl;
if (month == 12 && day == 31)
{
year++;
month = 1;
day = 1;
}
else if (day == max_day(month))
{
month++;
day = 1;
}
else if (day < max_day(month))
{
day++;
}
setdate(year, month, day);//重新赋值给内部数据成员
print_tomorrow();//打印明天日期
}
else//日期不合法
{
cout << "你输入的日期有误!" << endl;
}
}
void Date::print_tomorrow()//打印明天日期
{
cout << "明天日期为:" << day << "/" << month << "/" << year;
}
3)将main函数放在App.cpp中
#include"Date.h"
#include<iostream>
using namespace std;
int main()
{
Date date;
int y, m, d;
cout << "请输入日期(日 月 年)" << endl;
cin >> d >> m >> y;
date.setdate(y, m, d);
date.add_day();
}