课程设计年历显示1.docx
- 文档编号:6813119
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:10
- 大小:16.18KB
课程设计年历显示1.docx
《课程设计年历显示1.docx》由会员分享,可在线阅读,更多相关《课程设计年历显示1.docx(10页珍藏版)》请在冰豆网上搜索。
课程设计年历显示1
#include"time.h"/*包含的头文件*/
#include"stdio.h"
#include"math.h"
#include"windows.h"
#include"conio.h"
inteachyeartotal(intyear,intmonth,intday);/*函数声明*/
intcounterdays(intyear,intmonth,intday);
intnowtime(intyear,intmonth,intday);
intweek(intyear,intmonth,intday);
intmaxDay(intyear,intmonth);
intisleap(intyear);
voidwhatweek(intyear,intmonth,intday);
voiddisplay(intyear,intmonth);
voiddisplay2(intyear,intmonth);
voiddisplay3(intyear,intmonth,intday);
voidjieri(intmonth,intday);
voiddisplay1(intyear);
voidgetmenu();
intmain()/*主函数*/
{
intyear,month,day,select;
while
(1)
{
getmenu();
printf("请输入相应数字:
");/*菜单选择*/
scanf("%d",&select);
system("cls");
switch(select)
{
case1:
/*当选择为1时显示年历*/
printf("年历显示:
输入年(如2011):
");
scanf("%d",&year);
if(year>0&&year<10000)/*显示年份从0-10000*/
{
display1(year);/*调用函数*/
}
else
system("cls");
printf("输入无效,重新输入!
\n");
break;
case2:
/*当选择为2显示月历*/
printf("月历显示:
输入年月(如2011,6):
");
scanf("%d,%d",&year,&month);
if(year>0&&year<10000&&month>=1&&month<=12)
{
display2(year,month);
}
else
system("cls");
printf("输入无效,重新输入!
\n");
break;
case3:
/*当选择为3时显示日期*/
printf("日期显示:
输入年月日(比如2011,6,23):
");
scanf("%d,%d,%d",&year,&month,&day);
if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<=maxDay(year,month))
{
display3(year,month,day);
}
else
system("cls");
printf("输入无效,重新输入!
\n");
break;
case4:
exit(0);
default:
/*当输入其他数字时,输入无效,重新输入*/
system("cls");
printf("输入无效,重新输入!
\n");
}
}
}
intisleap(intyear)/*判断是否为闰年*/
{
if(year%4==0&&year%100!
=0||year%400==0)
return1;
else
return0;
}
intmaxDay(intyear,intmonth)/*每月的天数*/
{
inta[]={31,28,31,30,31,30,31,31,30,31,30,31};/*每个月中的天数*/
if(isleap(year))
a[1]=29;/*闰年2月份有29天*/
returna[month-1];
}
inteachyeartotal(intyear,intmonth,intday)/*判断某天是一年中的第几天*/
{
inti,sum=0;
for(i=1;i sum+=maxDay(year,i); sum+=day; returnsum; } intweek(intyear,intmonth,intday)/*对天数进行判断确定是星期几*/ { intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400 +eachyeartotal(year,month,day); number=number%7; returnnumber; } voiddisplay(intyear,intmonth)/*输出年月*/ { intmax,number,i,j=1; max=maxDay(year,month); number=week(year,month,1); printf("%4s%4s%4s%4s%4s%4s%4s\n","Sun","Mon","Tue","Wed", "Thu","Fri","sat"); for(i=0;i printf("");/*1号前的星期补空格*/ while(j<=max) { printf("%6d",j); if(i%7==6) printf("\n");/*每7格换一行*/ i++; j++; } printf("\n\n"); } voiddisplay1(intyear)/*输出年历*/ { inti; printf("\n"); for(i=1;i<=12;i++) { printf("%d年%d月\n\n",year,i); display(year,i); } } voiddisplay2(intyear,intmonth)/*输出月历*/ { printf("\n%d年%d月\n",year,month); display(year,month); } voiddisplay3(intyear,intmonth,intday)/*输出日历*/ { whatweek(year,month,day); jieri(month,day); counterdays(year,month,day); } intcounterdays(intyear,intmonth,intday)/*判断今天距特定日期的天数*/ { intyear1,days0,days1,month1,days,day1; time_ttimep; structtm*p; time(&timep); p=gmtime(&timep); year1=(1900+p->tm_year); month1=(1+p->tm_mon); day1=(p->tm_mday);/*获取系统时间year1、month1、day1分别为年、月、日*/ days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1); days=days0-days1;/*计算出两个日期之间的时间差*/ printf("\n今天距%d年%d月%d日还有%d天\n\n",year,month,day,days); returndays; } voidwhatweek(intyear,intmonth,intday)/*判断是星期几*/ { intnumber; number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); number=number%7; switch(number) { case0: printf("\n%d年%d月%d日是星期日",year,month,day);break; case1: printf("\n%d年%d月%d日是星期一",year,month,day);break; case2: printf("\n%d年%d月%d日是星期二",year,month,day);break; case3: printf("\n%d年%d月%d日是星期三",year,month,day);break; case4: printf("\n%d年%d月%d日是星期四",year,month,day);break; case5: printf("\n%d年%d月%d日是星期五",year,month,day);break; case6: printf("\n%d年%d月%d日是星期六",year,month,day);break; default: system("cls"); printf("出现错误! \n"); } } voidjieri(intmonth,intday)/*判断是否公历节日*/ { if(month==1) switch(day) { case1: printf(",这天是元旦"); } if(month==2) switch(day) { case14: printf(",这天是情人节"); } if(month==3) switch(day) { case8: printf(",这天是妇女节"); break; case12: printf(",这天是植树节"); } if(month==4) switch(day) { case1: printf(",这天是愚人节"); } if(month==5) switch(day) { case1: printf(",这天是劳动节"); break; case4: printf(",这天是青年节"); } if(month==6) switch(day) { case1: printf(",这天是儿童节"); } if(month==7) switch(day) { case1: printf(",这天是建党节"); } if(month==8) switch(day) { case1: printf(",这天是建军节"); } if(month==9) switch(day) { case10: printf(",这天是教师节"); } if(month==10) switch(day) { case1: printf(",这天是国庆节"); } } voidgetmenu()/*显示菜单选择*/ { printf("************主菜单************\n\n"); printf("*欢迎进入万年历系统*\n\n"); printf("*1、年历显示*\n\n"); printf("*2、月历查询*\n\n"); printf("*3、日期查询*\n\n"); printf("*4、退出系统*\n\n"); printf("******************************\n\n"); } 田七三七的区别hNZ7OzU22a46
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 年历 显示