一 完成的功能
注意:此日历只能用于计算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<>(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 //只要实现> ==其他的都可以全部复用
{<