万年历c++.docx
- 文档编号:28790056
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:16.86KB
万年历c++.docx
《万年历c++.docx》由会员分享,可在线阅读,更多相关《万年历c++.docx(18页珍藏版)》请在冰豆网上搜索。
万年历c++
Mian函数
#include
#include"date.h"
usingnamespacestd;
intmain()
{
chari='9';
intyy,mm,dd;//用来接收日期
Queryq;
q.showMenu();
calenderc;//用来接收日期
cout<<"请输入要查询的日期:
";
cin>>yy>>mm>>dd;
c.readcalender(yy,mm,dd);
cout<<"选择对应数字进行操作:
";
while
(1)
{
cin>>i;
system("cls");//清除屏幕
q.showMenu();
q.doMenu(i);
q.showTip();
}
return0;
}
Date.h
#ifndefDATE_H_INCLUDED
#defineDATE_H_INCLUDED
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classcalender
{
private:
intday;
intmonth;
intyear;
public:
calender();
calender(intd,intm,inty):
day(d),month(m),year(y){}
intdayInMnoth();//返回该月的天数,如闰年二月的天数,29
intgetMonth();//返回当前日期的月份
intgetYear();
intgetDay();
boolisLeapYear();//判断闰年
intnumeberOfdays();//返回一月份以来的天数
voidsetMonth(intmm);//更新当前日期的月份
voidsetYear(intyy);
voidsetDay(intdd);
intdifferDays();//距离1990.1.1相差多少天
intdifferDays(calender&d1);//相差多少天
intfirstDay();//当月的第一天是星期几
voiddisplayTitle();//输出月份和年份以及后面的星期几的名称
voiddisplayDates();//输出星期几下面的日期
voidreadcalender(intyy,intmm,intdd);//读入日期
voidweekDay();
};
classQuery
{
public:
calenderc;
Query();
voidQueryYear();//查询一年的日历
voidQueryMonth();//查询某年某月的日历表
voidQueryDay();//查询某年某月的某天
voidQuerydifferDays();//计时倒数天数
voidshowMenu();//显示菜单
voidshowTip();//显示操作提示
voiddoMenu(charn);
};
#endif//DATE_H_INCLUDED
实现文件
Date.cpp
#include"date.h"
calender:
:
calender()
{
year=0;
month=0;
day=0;
}
intcalender:
:
getMonth()//返回当前日期的月份
{
returnmonth;
}
intcalender:
:
getYear()
{
returnyear;
}
intcalender:
:
getDay()
{
returnday;
}
intcalender:
:
dayInMnoth()//返回当月的天数
{
switch(getMonth())
{
case1:
return31;
break;
case2:
return28+isLeapYear();
break;
case3:
return31;
break;
case4:
return30;
break;
case5:
return31;
break;
case6:
return30;
break;
case7:
return31;
break;
case8:
return31;
break;
case9:
return30;
break;
case10:
return31;
break;
case11:
return30;
break;
case12:
return31;
break;
}
return0;
}
boolcalender:
:
isLeapYear()//闰年的判断,返回true为闰年
{
intn=getYear();
if(n%4)
{
if(n%100==0)
{
if(n%400==0)
returntrue;
else
returnfalse;
}
else
returntrue;
}
else
returnfalse;
}
intcalender:
:
numeberOfdays()//返回一月份以来的天数
{
intn=getDay();
switch(getMonth()-1)
{
case0:
returnn;
break;
case1:
returnn+31;
break;
case2:
returnn+31+28+isLeapYear();
break;
case3:
returnn+31+28+isLeapYear()+31;
break;
case4:
returnn+31+28+isLeapYear()+31+30;
break;
case5:
returnn+31+28+isLeapYear()+31+30+31;
break;
case6:
returnn+31+28+isLeapYear()+31+30+31+30;
break;
case7:
returnn+31+28+isLeapYear()+31+30+31+30+31;
break;
case8:
returnn+31+28+isLeapYear()+31+30+31+30+31+31;
break;
case9:
returnn+31+28+isLeapYear()+31+30+31+30+31+31+30;
break;
case10:
returnn+31+28+isLeapYear()+31+30+31+30+31+31+30+31;
break;
case11:
returnn+31+28+isLeapYear()+31+30+31+30+31+31+30+31+30;
break;
}
return0;
}
intcalender:
:
differDays()//距离1900.1.1相差多少天
{
intn;
calenderd0(1,1,1900);//以1900年一月一日为起点,当天为星期一
if((getYear()-d0.getYear())%400!
=100)
n=(getYear()-d0.getYear())/4*1461+((getYear()-d0.getYear())%4)*365+numeberOfdays();
else
n=(getYear()-d0.getYear())/4*1461+((getYear()-d0.getYear())%4)*365+1+numeberOfdays();
returnn;
}
intcalender:
:
differDays(calender&d1)//与某个日期(d1)相差多少天
{
intn;
if(abs((getYear()-d1.getYear()))%400!
=100)
n=abs((getYear()-d1.getYear()))/4*1461+(((getYear()-d1.getYear()))%4)*365+numeberOfdays();
else
n=abs((getYear()-d1.getYear()))/4*1461+abs(((getYear()-d1.getYear()))%4)*365+1+numeberOfdays();
returnn;
}
intcalender:
:
firstDay()//当月第一天是星期几
{
intl=differDays()-getDay()+1;//当月第一天与1900年一月一日相差多少天
switch(l%7)
{
case0:
return0;
break;
case1:
return1;
break;
case2:
return2;
break;
case3:
return3;
break;
case4:
return4;
break;
case5:
return5;
break;
case6:
return6;
break;
}
return0;
}
voidcalender:
:
setYear(intyy)//更新年份
{
if(yy<1990)
cout<<"无法更新月份"< year=yy; } voidcalender: : setMonth(intmm)//更新月份 { if(mm>12||mm<1) cout<<"无法更新月份"< month=mm; } voidcalender: : setDay(intdd)//更新天数 { if(dd>31||dd<1) cout<<"无法更新天数"< day=dd; } voidcalender: : displayDates()//打印日期 { intmonthLength=dayInMnoth(); intdayValue=1; intday=0,first=firstDay(); while(day { cout< day++; } while(dayValue<=monthLength) { cout< dayValue++; if(day==6) cout< day=(day+1)%7; } if(day! =0) cout< } voidcalender: : displayTitle()//打印月份与年份 { switch(getMonth()) { case1: cout<<"一月"< break; case2: cout<<"二月"< break; case3: cout<<"三月"< break; case4: cout<<"四月"< break; case5: cout<<"五月"< break; case6: cout<<"六月"< break; case7: cout<<"七月"< break; case8: cout<<"八月"< break; case9: cout<<"九月"< break; case10: cout<<"十月"< break; case11: cout<<"十一月"< break; case12: cout<<"十二月"< break; default: cout<<"错误! "< break; } cout<<"星期一"<<""<<"星期二"<<""<<"星期三"<<""<<"星期四"<<"" <<"星期五"<<""<<"星期六"<<""<<"星期日"<<""< } voidcalender: : readcalender(intyy,intmm,intdd)//读取年月日 { if(dd>0) setDay(dd); else setDay(0); if(mm>0) setMonth(mm); else setMonth(0); setYear(yy); } voidcalender: : weekDay()//确认某天是星期几 { switch(differDays()%7) { case0: cout<<"星期日"<<""; break; case1: cout<<"星期一"<<""; break; case2: cout<<"星期二"<<""; break; case3: cout<<"星期三"<<""; break; case4: cout<<"星期四"<<""; break; case5: cout<<"星期五"<<""; break; case6: cout<<"星期六"<<""; break; } } Query: : Query() { c.setDay(0); c.setMonth(0); c.setYear(0); } voidQuery: : QueryYear()//查询一年的日历 { intmm; for(c.setMonth(mm=0);mm<12;++mm) { c.displayTitle(); c.displayDates(); } } voidQuery: : QueryMonth()//查询某年某月的日历表 { c.displayTitle(); c.displayDates(); } voidQuery: : QueryDay()//查询某年某月的某天是星期几 { c.weekDay(); } voidQuery: : QuerydifferDays()//计时倒数天数 { c.differDays(); calenderd; intyy,mm,dd; cout<<"请输入要倒计时的日期: "; cin>>yy>>mm>>dd; d.readcalender(yy,mm,dd); cout<<"距离"< } voidQuery: : showMenu()//显示菜单 { cout<<"|------------------------------------------|"< cout<<"|万年历|"< cout<<"|------------------------------------------|"< cout<<"|1.查询某月的月历|"< cout<<"|2.打印某年的日历|"< cout<<"|3.距离某日倒计时|"< cout<<"|4.某日具体星期几|"< cout<<"|0.安全退出本系统|"< cout<<"|------------------------------------------|"< } voidQuery: : showTip()//显示操作提示 { cout< cout<<"-------------------操作完成-----------------"< cout<<"-----------------选择0-4继续---------------"< cout<<"请选择: "; } voidQuery: : doMenu(charn)//执行菜单 { switch(n) { case'1': QueryMonth(); break; case'2': QueryYear(); break; case'3': QuerydifferDays(); break; case'4': QueryDay(); break; case'0': exit (1); break; default: cout<<"输入错误! "; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 c+
![提示](https://static.bdocx.com/images/bang_tan.gif)