《C语言程序设计》课程设计--年历显示

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

南京航空航天大学金城学院《C语言程序设计》课程设计实验报告题目:_年历显示班级:学号:姓名:成绩:指导教师:完成日期:年月日目录一、程序的主要功能二、系统总框架图三、各模块的功能四、功能模块图五、程序结构流程图六、试验结果七、编程体会八、参考资料九、附录:程序清单及源程序一、程序的主要功能(1)可根据菜单进行日历显示(2)输入年月日显示当天星期几,是否为公历节日(3)自动获取系统当前日期,与输入日期比较(4)输入年月日,显示距今多少天二、系统总框架图三、各模块的功能inttotal(intyeara)//计算公元一年一月一日到输入年份之前的总天数intwhere(intyearb,intmonb)//判断每月天数voidwhen(intday)//判断输入日期是星期几voidwhy(intmonth,intday)//公历节日判断voidoutput_year()//年份输出voidoutput_month()//年月输出voidoutput_day()//年月日输出intmain()//主函数主函数用户选择操作操作完成退出程序四、功能模块图主函数年年月年月日total();For循环输出total();输出月total();where();when();why();返回菜单退出五、程序结构流程图开始输入年输入年月输入年月日判断是否为闰年total();total();total();where();when();why();输出月份日历判断当天是星期几,是否为公历节日,距今多少天输出年份日历结束六、试验结果七、编程体会刚开始没有想到去怎么做,查找资料知道了公元一年一月一日是星期一的切入点,然后事情就变得简单了。还有就是在主函数中利用dowhile实现功能的循环。最麻烦的是系统当前时间的获取,通过百度的查找,懂得了用tm时间结构。这次课设让我对c语言有了更深的认识八、参考资料(1)chinaunix博客(2)比特网(3)百度文库九、附录:程序清单及源程序#includestdio.h#includetime.hinttotal(intyeara)//计算公元一年一月一日到输入年份之前的总天数{inti,s=0,a;for(i=1;i=yeara-1;i++){if(i%4==0&&i%100!=0||i%400==0)a=366;elsea=365;s=s+a;}returns;}intwhere(intyearb,intmonb)//判断每月天数{inttian;switch(monb){case1:tian=31;break;case2:if(yearb%4==0&&yearb%100!=0||yearb%400==0)tian=29;elsetian=28;break;case3:tian=31;break;case4:tian=30;break;case5:tian=31;break;case6:tian=30;break;case7:tian=31;break;case8:tian=31;break;case9:tian=30;break;case10:tian=31;break;case11:tian=30;break;case12:tian=31;break;}returntian;}voidwhen(intday)//判断输入日期是星期几{switch(day){case1:printf(该日为星期一\n);break;case2:printf(该日为星期二\n);break;case3:printf(该日为星期三\n);break;case4:printf(该日为星期四\n);break;case5:printf(该日为星期五\n);break;case6:printf(该日为星期六\n);break;case7:printf(该日为星期日\n);break;}}voidwhy(intmonth,intday)//公历节日判断{if(month==1)if(day==1)printf(该日是元旦\n);elseprintf(该日不是公历节日!\n);if(month==3){switch(day){case8:printf(该日是国际妇女节\n);break;case12:printf(该日是植树节\n);break;default:printf(该日不是公历节日!\n);break;}}if(month==4)if(day==5)printf(该日是清明节\n);elseprintf(该日不是公历节日!\n);if(month==5){switch(day){case1:printf(该日是劳动节\n);break;case4:printf(该日是五四青年节\n);break;default:printf(该日不是公历节日!\n);break;}}if(month==6)if(day==1)printf(该日是儿童节\n);elseprintf(该日不是公历节日!\n);if(month==7)if(day==1)printf(该日是中国建党节\n);elseprintf(该日不是公历节日!\n);if(month==8)if(day==1)printf(该日是建军节\n);elseprintf(该日不是公历节日!\n);if(month==9){switch(day){case3:printf(该日是抗日战争胜利纪念日\n);break;case10:printf(该日是教师节\n);break;default:printf(该日不是公历节日!\n);break;}}if(month==10)if(day==1)printf(该日是国庆节\n);elseprintf(该日不是公历节日!\n);}voidoutput_year()//年份输出{intyear,d,di,did,z,j;printf(请输入年份(eg:2015):);scanf(%d,&year);z=total(year);for(j=1;j=12;j++){d=z%7;printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);printf(%d月份\n,j);printf(sunmontuewedthufrisat\n);if(d6)for(di=1;di=d+1;di++)printf();for(did=1;did=where(year,j);did++){printf(%d,did);if(did10)printf();elseprintf();if(did==6-d||(did-6+d)%7==0||did==where(year,j))printf(\n);}z=z+where(year,j);}main();}voidoutput_month()//年月输出{intyear,m,n,d,di,did,j,Z,D;printf(请输入所查日历的年月(eg:201501):);scanf(%d%d,&m,&n);Z=total(m);for(j=1;j=n-1;j++){D=where(m,j);Z=Z+D;}d=Z%7;printf(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n);printf(%d月份\n,n);printf(sunmontuewedthufrisat\n);if(d6)for(di=1;di=d+1;di++)printf();for(did=1;did=where(m,n);did++){printf(%d,did);if(did10)printf();elseprintf();if(did==6-d||(did-6+d)%7==0||did==where(m,n))printf(\n);}main();}voidoutput_day()//年月日输出{intd,h,j,k,l,x,y,z,Z,Z1,D,jian,judge;time_ttimep;structtm*p;time(&timep);//系统时间获取p=localtime(&timep);//此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间printf(请输入年月日(eg:20150101):);scanf(%d%d%d,&x,&y,&z);judge=where(x,y);if(judgez||y12)printf(输入日期不存在!);else{Z=total(x);for(j=1;j=y-1;j++){D=where(x,j);Z=Z+D;}Z=Z+z;h=1900+p-tm_year;//时间赋值k=1+p-tm_mon;l=1+p-tm_mday;Z1=total(h);for(j=1;j=k-1;j++){D=where(k,j);Z1=Z1+D;}Z1=Z1+l;jian=Z1-Z;printf(输入日期距今有%d天\n,jian);d=Z%7;when(d);why(y,z);}main();}intmain(){intnumber;printf(\n\n*************查询方式*************\n);printf(*1.查询某年的日历*\n);printf(*2.查询某月的日历*\n);printf(*3.查询特定的日期*\n);printf(*4.查询结束--退出*\n);printf(**********************************\n);do{printf(请输入查询方式:);scanf(%d,&number);switch(number){case1:output_year();break;case2:output_month();break;case3:output_day();break;case4:break;default:printf(输入错误!\n--------------\n);break;}}while(number!=1&&number!=2&&number!=3&&number!=4);}

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功