我已经建立了图书馆系统。但是我刚刚检查了一下,但“日期”无法正常工作。
此类的主要任务
(1) Increment date
现在,我在递增日期中遇到问题,当我将其递增到最大25-30时,它可以正常工作。但是当我输入90时,它就混乱了。
void increment_date(int num)
{
int day;
int month_new;
setDay(getDay()+num);
if( getDay()>Days_per_Month[getMonth()] )
{
day=getDay()-Days_per_Month[getMonth()];
setDay(day);
setMonth(getMonth()+1);
if(Days_per_Month[getMonth()]>12)
{
month_new=1;
setMonth(month_new);
setYear(getYear()+1);
}
}
cout<<"Return Date: ";
Print_Date();
}
//the code below is outside the class.
const int Date:: Days_per_Month[13]={0,31,28,31,30,31,30,31, 31, 30, 31, 30, 31};
int Date::checkDay(int testday) //returntype classname :: funcname (parameteres)
{
//static const int Days_per_Month[13]={0,31,28,31,30,31,30,31, 31, 30, 31, 30, 31};
if(testday > 0 && testday <= Days_per_Month[Month])
return testday;
if ( Month==2 && testday==29 && (Year%400==0 || (Year%4==0 && Year%100!=0)) ) //for leap year
return testday;
cout<<"Day "<<testday<<" invalid. Set to day 1."<<endl;
return 1;
}
答案 0 :(得分:0)
setDay(getDay()+num);
if( getDay()>Days_per_Month[getMonth()] )
{
day=getDay()-Days_per_Month[getMonth()];
setDay(day);
setMonth(getMonth()+1);
在上面的代码中,您将num
添加到getDay()
返回的值中,然后检查getDay()
是否大于当前月份的天数,如果是,则尝试通过减去当月的天数,然后增加月数来纠正问题。
到目前为止,还算不错,但是如果getDay()
仍然比完成减法后当月的天数还大,又该怎么办? (例如,如果用户输入300
作为增量计数该怎么办?)在这种情况下,您需要重新进行整个操作,直到getDay()
足够小以至于不能成为有效的一天为止-月内值。因此确实需要一个while
循环,而不仅仅是if
。