定义一个满足如下要求的Date类

要求:数据成员为int变量日,月,年,设置为私有的。

  1. 输入日期,设置日期并判断日期的合法性。
  2. 用下面的格式输出日期: 日/月/年
  3. 可运行在合法日期上加一

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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值