万年历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<<"输入错误!
";
}
}