C++实现万年历功能
本文实例为大家分享了C++实现万年历的具体代码,供大家参考,具体内容如下
1.此万年历功能
1>日期加减天数
2>日期与日期之间的差值
3>输入年月显示当月日历
2.代码实现
#include#include usingnamespacestd; classDate { public: Date(intyear=1990,intmonth=1,intday=1)//构造函数 :_year(year),_month(month),_day(day) { if(JudgeRightDate())//判断传入的值是否是合法的,不合法则置成1990年1月1日 { _year=1990; _month=1; _day=1; } } boolJudgeRightDate()//判断值是否合法函数 { if(_year<1||((_month<1)||_month>12)|| (_day<1)||_day>GetMonthDay(_year,_month)) { returntrue; } else { returnfalse; } } intJudgeYear(intyear)//判断是否是闰年的函数 { if(((year%4==0)&&(year%100!=0))||(year%400==0)) { return1; } else return0; } intGetMonthDay(intyear,intmonth)//通过年和月得到对应的天数 { intarr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; intdays=arr[month]; if(month==2) { days+=JudgeYear(year);//如果是闰年的二月则天数加1 } returndays; } Dateoperator+(intdays)//日期加天数函数,重载“+”实现 { _day+=days;//先将天数全部加到所给日期的“天”上 GetRightDate(_year,_month,_day);//再通过计算得到正确的日期。 return*this; } voidGetRightDate(int&year,int&month,int&day)//计算出正确的日期 { if(day<=0) { while(day<=0) { month--; day+=GetMonthDay(year,month); if(month<1) { year--; month=13; } } } else { while(day>GetMonthDay(year,month)) { day-=GetMonthDay(year,month); month++; if(month>12) { year++; month=1; } } } } Dateoperator-(intdays)//重载“-”实现日期减天数 { _day-=days; GetRightDate(_year,_month,_day); return*this; } booloperator>(constDate&d)//判断两个日期的大小 { if(_year>d._year) { returntrue; } elseif(_year==d._year) { if(_month>d._month) { returntrue; } elseif(_month==d._month) { if(_day>d._day) { returntrue; } } } returnfalse; } booloperator==(constDate&d)//判断两个日期是否相等 { if(_year==d._year&&_month==d._month&&_day==d._day) { returntrue; } else returnfalse; } intoperator-(Date&d)//计算日期差函数,重载“-”实现 { intcount=0; Datetmp(*this); if(*this>d) { tmp=d; d=*this; *this=tmp; } while(!(*this==d)) { count++; *this=*this+1; } returncount; } voidprint()//打印函数 { cout<<_year<<"-"<<_month<<"-"<<_day; } intweek()//求出日期对应的星期函数 { intw=0; inty=_year; intm=_month; if(m==1||m==2) { m=_month+12; y=_year-1; } w=_day+2*m+3*(m+1)/5+y+y/4-y/100+y/400; w=w%7+1; returnw; } voidprint_week() { cout<<"星期日星期一星期二星期三星期四星期五星期六"< >num; if(num==1) { cout<<"请输入日期:"< >year>>month>>day; cout<<"请输入天数:"< >days; cout<<"请输入'+'或者'-':"< >ch; Dated1(year,month,day); Dated2; if(ch=='+') { d2=d1+days; } elseif(ch=='-') { d2=d1-days; } else { cout<<"无效的输入!"< >year>>month>>day; Dated3(year,month,day); cout<<"请输入日期:"< >year>>month>>day; Dated4(year,month,day); intret=d3-d4; cout<<"期间相差:"< >year>>month; Dated5(year,month); d5.print_week(); d5.print_day(); } } intmain() { menu(); choice(); system("pause"); return0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。