日期计算器

一  完成的功能

注意:此日历只能用于计算1982年10月15日以及以后的日期

1.日期+/-天数=返回日期(处理:1.如果+/-一个负的天数的情况 2.如果加之后,或减之后的日期非法)

2.两个日期之间间隔的天数,日期-日期=返回的天数(处理:返回的天数不能为负)

3.打印某年某月本月的日历(处理:1982年十月份)

二 功能分析

三 项目测试点:

功能测试:

(1)对输入日期合法性的测试--------------------边界值等价类

          1.年份是否合法

          2.月份是否合法

          3.天数是否合法

          4.年份月份天数结合是否合法

(2)对日期+天数=返回日期功能的测试

       1.对于普通月份加的测试

       2.测试平年/闰年2月份加减的测试

       3.对于加一个负数,是否可以处理

       4.如果加上一个数,日期小于1582年10月15,是否处理

(3)对日期-天数=返回日期功能的测试

       1.对于普通月份减的测试

       2.测试平年/闰年2月份减的测试

       3.对于减一个负数,是否可以处理

       4.如果减上一个数,日期小于1582年10月15,是否处理

(4)对于日期-日期=日期的功能性测试

         1.测试相减之后的日期是否合法

(5)对于输入日期,打印本月日历的功能性测试-------边界值/等价类

         1.测试输入1582年10月的日历打印

         2.测试大于1582年10月的日历打印

         3.测试小于1582年10月即非法日期日历打印的测试

界面测试:

(1)界面是否美观,清楚

(2)如果输入错误,错误提示字样是否正常输出

(3)如果输入错误,是要重新输入本次,还是要全部重新输入

四  项目源码

class Date
{
	friend ostream& operator<<(ostream& os, const Date& d);
	friend istream& operator>>(istream& is, Date& d);
public:

	Date(int year = 1582, int month = 10, int day = 4)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	void PrintfMonth()//打印该日期所在月份日历
	{
		if (_year == 1582 && _month == 10)
		{
			_PrintfMonthSpecial();
		}
		else
		{
			_PrintfMonth();
		}
	}
	//d+10
	Date operator+(int day)
	{
		Date ret(*this);
		ret += day;
		return ret;
	}
	Date operator-(int day)
	{
		Date ret(*this);
		ret -= day;
		return ret;
	}
	int operator-(const Date& d) //日期-日期=返回天数
	{
		int ret = DayNum( d);
		return ret;
	}
	bool operator==(const Date& d)const //只要实现>   ==其他的都可以全部复用
	{
		return _year == d._year&&_month == d._month&&_day == d._day;
	}


	bool operator >(const Date& d)const
	{
		if (_year > d._year)
		{
	
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值