C++课程设计万年历Word下载.docx

上传人:b****5 文档编号:18209180 上传时间:2022-12-14 格式:DOCX 页数:30 大小:520.76KB
下载 相关 举报
C++课程设计万年历Word下载.docx_第1页
第1页 / 共30页
C++课程设计万年历Word下载.docx_第2页
第2页 / 共30页
C++课程设计万年历Word下载.docx_第3页
第3页 / 共30页
C++课程设计万年历Word下载.docx_第4页
第4页 / 共30页
C++课程设计万年历Word下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C++课程设计万年历Word下载.docx

《C++课程设计万年历Word下载.docx》由会员分享,可在线阅读,更多相关《C++课程设计万年历Word下载.docx(30页珍藏版)》请在冰豆网上搜索。

C++课程设计万年历Word下载.docx

//或是经常使用但不常更改的

//特定于项目的包含文件

#pragmaonce

#include<

iostream>

cstring>

ctime>

iomanip>

stdio.h>

fstream>

cmath>

#include<

vcclr.h>

vector>

#using<

mscorlib.dll>

System.dll>

System.Windows.Forms.dll>

System.Drawing.dll>

#defineLeapYear(y)((y%4==0)&

&

(y%100!

=0)||(y%400==0))

usingnamespacestd;

structSolarLunar

{

intSolarYear;

//阳历年

intSolarMonth;

//阳历月

intSolarDay;

//阳历日

intLunarYear;

//阴历年

intLunarMonth;

//阴历月

intLunarDay;

//阴历日

intLunarLeapMonth;

//阴历闰月标志,1表示此月为闰月,0表示非闰月

charholiday[9];

//节日信息

};

intdjs(intcurYear,intcurMonth,intcurDay,intcurHour,intcurMin);

//倒计时统计

intgetdays(intyear,intmonth);

//计算当前月份天数

intgetweek(intyear,intmonth,intday);

//分析当前月份第一天是星期几

intgetsec(System:

:

String^s);

//转换txt字符为日期并让djs()处理返回秒

voidSolarToLunar(SolarLunar*p);

//阳历转换成农历

voidGetHoliday(SolarLunar*p);

//获得节日信息

intGetDayNumber(intyear,intmonth,intday);

//判断阳历某一天是该年的第几天

intGetTotalDayNumber(intyear,intmonth,intday);

//求从阳历1900年1月31日(阴历1900年1月1日)到某年某月某日(阳历)共多少天

intLunarYearDays(inty);

intIsLeapYear(intyear);

intLunarLeapDays(inty);

intLunarMonthDays(inty,intm);

intLunarLeapMonth(inty);

//djs.cpp计算时间差的函数

#include"

stdafx.h"

intdjs(intcurYear,intcurMonth,intcurDay,intcurHour,intcurMin)

{

time_tt;

t=time(NULL);

structtmt1,t2,*ptr;

ptr=localtime(&

t);

memset(&

t1,0x00,sizeof(t1));

t2,0x00,sizeof(t2));

intstrYear=curYear;

intstrMon=curMonth;

intstrDay=curDay;

intstrHour=curHour;

intstrMin=curMin;

intstrSec=0;

t1.tm_year=strYear-1900;

t1.tm_mon=strMon-1;

t1.tm_mday=strDay;

t1.tm_hour=strHour;

t1.tm_min=strMin;

t1.tm_sec=strSec;

t2.tm_year=ptr->

tm_year;

t2.tm_mon=ptr->

tm_mon;

t2.tm_mday=ptr->

tm_mday;

t2.tm_hour=ptr->

tm_hour;

t2.tm_min=ptr->

tm_min;

t2.tm_sec=ptr->

tm_sec;

time_tstart=mktime(&

t1);

time_tend=mktime(&

t2);

time_tretSec=start-end;

time_tretMin=retSec/60;

//time_tretHour=retMin/60;

//time_tretDay=retHour/24;

return(int)retSec;

}

//getweek.cpp

#include"

intgetweek(intyear,intmonth,intday)

if(month==1||month==2){

month+=12;

--year;

}

return(day+1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;

//getday.cpp

intgetdays(intyear,intmonth)

intdays[]={31,28,31,30,31,30,31,31,30,31,30,31};

if(LeapYear(year)&

month==2)

return29;

else

returndays[month-1];

//getsec.cpp计算时间差的函数

//将从txt得到的字符时间转换成整型数时间差得到秒

String^s)

structtmt1;

memset(&

System:

String^strYear,^strMon,^strDay,^strHour,^strMin;

String^str1(s);

//2010-01-0101:

01

strYear=str1->

Substring(0,4);

strMon=str1->

Substring(5,2);

strDay=str1->

Substring(8,2);

strHour=str1->

Substring(11,2);

strMin=str1->

Substring(14,2);

t1.tm_year=(strYear[0]-48)*1000+(strYear[1]-48)*100+(strYear[2]-48)*10+(strYear[3]-48)-1900;

t1.tm_mon=(strMon[0]-48)*10+(strMon[1]-48)-1;

t1.tm_mday=(strDay[0]-48)*10+(strDay[1]-48);

t1.tm_hour=(strHour[0]-48)*10+(strHour[1]-48);

t1.tm_min=(strMin[0]-48)*10+(strMin[1]-48);

t1.tm_sec=0;

structtmt2,*ptr;

}//getsec结束

//SolarToLunar.cpp阳历到农历的转换

//阳历到阴历的转换

voidSolarToLunar(SolarLunar*p)

p->

LunarLeapMonth=0;

//初始设置当前月不是阴历闰月

intnumber=GetTotalDayNumber(p->

SolarYear,p->

SolarMonth,p->

SolarDay);

inti;

for(i=1900;

i<

2050&

number>

0;

i++)

number=number-LunarYearDays(i);

if(number<

=0)

{

number=number+LunarYearDays(i-1);

//number最终保存了当天是该年(阴历年)的第几天

i--;

LunarYear=i;

//获得阴历年

inta=LunarLeapMonth(i);

//获得阴历年的闰月

intflag=0;

//减掉闰月的标志

intj;

for(j=1;

j<

12&

j++)//应考虑阴历闰月的情况

number=number-LunarMonthDays(i,j);

if(j==a&

0)

{

number=number-LunarLeapDays(i);

//减掉闰月天数

flag=1;

}

if(LunarLeapMonth(i)&

j-1==a&

flag)//最后一次减掉的是闰月

number=number+LunarLeapDays(i);

//加上最后减掉的闰月天数

p->

LunarLeapMonth=1;

//设置当前月是阴历闰月的标记

else

number=number+LunarMonthDays(i,j-1);

j--;

LunarMonth=j;

//获得阴历月

LunarDay=number;

//获得阴历日

//holiday.cpp节日判断(由于调试问题本程序最终应用的时候并没有添加此功能)

//获得节日信息

voidGetHoliday(SolarLunar*p)

strcpy(p->

holiday,"

"

);

//初始化

intnumber;

number=p->

LunarMonth*100+p->

LunarDay;

//阴历节日

switch(number)

case115:

strcpy(p->

holiday,"

元宵"

break;

case505:

端午"

case707:

中元"

case815:

中秋"

case1208:

腊八"

intLunarInfo[]={0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,

0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,

0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,

0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,

0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,

0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,

0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,

0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,

0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,

0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,

0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,

0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,

0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,

0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,

0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0};

//判断闰年

intIsLeapYear(intyear)

if((year%4==0&

year%100!

=0)||(year%400==0))

return1;

return0;

//获取农历y年的总天数

intLunarYearDays(inty)

inti,sum=348;

for(i=0x8000;

i>

0x8;

=1)

sum+=(LunarInfo[y-1900]&

i)?

1:

0;

return(sum+LunarLeapDays(y));

//获取农历y年闰月的天数

intLunarLeapDays(inty)

if(LunarLeapMonth(y))

return((LunarInfo[y-1900]&

0x10000)?

30:

29);

else

return(0);

//获取农历y年闰哪个月1-12,没闰传回0

intLunarLeapMonth(inty)

return(LunarInfo[y-1900]&

0xf);

//获取农历y年m月的总天数

intLunarMonthDays(inty,intm)

return((LunarInfo[y-1900]&

(0x10000>

m))?

//GetDayNumber.cpp

intGetDayNumber(intyear,intmonth,intday)

intMonthDays[12]={0,31,28,31,30,31,30,31,31,30,31,30};

intnumber=0;

for(inti=0;

i<

month;

i++)//求1月到month-1月的天数,暂时不考虑闰年

number=number+MonthDays[i];

if(month>

2)//该月不是1,2月份,这时需要考虑闰年

number=number+IsLeapYear(year);

returnnumber+day;

//GetTotalDayNumber.cpp

//求从阳历1900年1月31日(阴历1900年1月1日)到某年某月某日(阳历)共多少天

intGetTotalDayNumber(intyear,intmonth,intday)

for(inti=1900;

year;

i++)//1900年1月1日到year-1年12月31日的天数

if(IsLeapYear(i))

number=number+366;

number=number+365;

number=number+Ge

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1