1C++程序设计说明书题目:万年历班级学号:学生姓名:目录一.应用程序的名称二.应用程序的主题、设计目的2三.应用程序简介1.程序的基本结构及内容2.程序的运行环境四.主要运行界面的介绍五.程序亮点六.课程设计中存在的问题及解决方法一.课程设计名称万年历二.应用程序要求、目的主题:万年历目的:实现对年月的查询三.应用程序简介(1)基本结构:3整个程序有cls_screen(清屏)、judgement(判断是否为闰年)、show_week(记录周几)、print_year(查询某年)、print_year_month(查询某年某月)等自定义函数,程序中涉及到switch语句、for语句、if语句等和多次函数调用语句,开头定义了day_of_month[]数组,主要目的是将12个月每个月有多少天依次排出,在后面又用if语句判断二月的天数是28还是29。在主函数中运用while语言与switch语句的嵌套,是程序拥有了循环的功能。用fflush(stdin);语句清除输入缓存,使程序在使用过程中不会太过眼花缭乱。万年历的编程,需要两个方面的讨论和研究,一是要在用户输入年份的时候,判断该年是否为闰年,而对于闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。所以会改变day_of_month[]数组中的二月份的数值。二是在用户输入年月份的时候,判断该年该月的第一天是周几,从来好排列。而对于判断周几,需要运用公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7并用if语句使用判断。通过这两个方面的讨论和实现,才能合理的编程出万年历的基本程序代码。(2)源程序代码:#include#include#include#include#includeintyear,month,day;intday_of_month[12]={31,28,31,30,31,30,31,31,30,31,30,31};intcurrent_year,current_month,current_day;voidcls_screen(){printf("请按任意键返回!\n");getchar();getchar();system("cls");}intjudgement(inty){if(y%400==0||(y%100!=0&&y%4==0))return1;elsereturn0;4}intshow_week(intyear,intmonth,intday){/*公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7*/intw,k;intyear_last=year%100,c=year/100,m=month;if(month==1){year_last-=1;}elseif(month==2){year_last-=1;}w=(year_last+year_last/4+c/4-2*c+26*(m+1)/10+day-1);if(w<0){k=(w%7+7)%7;}elsek=w%7;returnk;}voidprint_year(intyear){inti,k,x,first_week;printf("请输入想要查询的年份(格式如2012):");scanf("%d",&year);printf("=======================%d年===========================\n",year);printf("\n");if(judgement(year)){day_of_month[1]=29;}elseday_of_month[1]=28;for(i=1;i<13;i++){first_week=show_week(year,i,1);printf("=====================%d月日历如下========================\n",i);printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");for(x=1;x<=first_week;x++){5printf("\t");if(x%7==0)printf("\n");}for(k=1;k<=day_of_month[i-1];k++){printf("%d\t",k);if(x%7==0)printf("\n");x++;}printf("\n");printf("\n");printf("\n");}}voidprint_year_month(){intk,x,first_week;printf("请输入想要查询的年月(格式如201212):");do{scanf("%d%d",&year,&month);if(month<1||month>12){printf("您输入的月份有误哦~请输入正确的月份\n");printf("请输入想要查询的年月(格式如201212):");}}while(1>month||month>12);printf("=====================%d年%d月======================\n",year,month);if(judgement(year)){day_of_month[1]=29;}elseday_of_month[1]=28;first_week=show_week(year,month,1);printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");for(x=1;x<=first_week;x++){printf("\t");if(x%7==0)printf("\n");}for(k=1;k<=day_of_month[month-1];k++){6printf("%d\t",k);if(x%7==0)printf("\n");x++;}printf("\n");}voidmain(){intchoice,year,month,day,flag=1,option;charc,k,ch;while(1){printf("===========================欢迎来到XXX的万年历============================\n");printf("请选择:\n");printf("********1....