一. 课程设计内容:
运用所学的c语言知识,编制和调试程序,具有如下功能:
能够显示年历、月历、日历,用户输入任一年份能够显示出当年的年历,能够显示任意年份任意月份的日历,用户输入任意年份的日期能够显示出该天的信息(星期几),距离今天有多少天。
二. 课程设计要求:
(1) 采用模块化程序设计方法;在程序界面,以菜单的形式调用各功能函数;程序可读性强,界面友好;输出形式尽量美观。
(2)课设结束后,上交课程设计说明书,其内容如下:
程序设计题目、需求分析(分析题目的要求)、程序框图(总体框图和各功能模块框图)、核心技术的实现及其程序段、总结
需求分析
通过对题目的分析,以及个人对程序的了解,解读的过程,这个课程设计可分为5个模块。
(1)主菜单模块:进入该程序,用户可以在主菜单界面选择自己想要进行的操作。例如:年历、月历、日历的查询以及退出的操作。
(2)年历查询模块:在这个模块用户输入任意年份程序会进行分析是否是闰年然后输出本年的年历。
(3)月历查询模块:在用户输入年份月份后,程序会进行判断该月的第一天是星期几然后依次输出该月的日期。
(4)日历查询模块:用户输入想要查询的日期后程序会计算出距离今天的天数并算出是星期几。
退出模块:结束查询工作。源程序:
#include<stdio.h>
void main()
{
void year(void);
voidyear_mouth(void);
void cheak();
void menu();
menu();
}
void menu()
{
void year(void);
voidyear_mouth(void);
void cheak();
printf("---------------------------------------------------\n");
printf(" * 1:年历查询\n");
printf(" * 2:月历查询\n");
printf(" * 3:日历查询\n");
printf(" * 0:退出\n");
printf("---------------------------------------------------\n");
int i;
scanf("%d",&i);
switch(i)
{
case 1:year();break;
case2:year_mouth();break;
case3:cheak();break;
case 0:return;
}}
void year(void)
{printf("请输入您要查询的年份(2014--)按回车结束\n");
int y,i,n=0,m=0,s,z,j,q,a,i1;
scanf("%d",&y);
for(i=2014;i<y;i++)
{if(i%4==0&&i%100!=0||i%400==0)
n++;
else m++;
}
s=n*366+m*365; z=(s-4)%7;
printf(" 1月 \n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
i=0;i1=0;
for(j=1;j<7*z;j++) printf(" ");
for(j=1;j<=31;j++)
{printf("%-7d",j);
i1++;
if(i1==7-z) printf("\n");
if(i1>7-z) i++;
if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("**********************************************************************\n");
q=(s-4+31)%7;
printf(" 2月 \n");
printf("Snu Mon Tue Wed Thu Fri Sat\n");
i=0;i1=0; for(j=1;j<7*q;j++)
printf("");
if(y%4==0&&y%100!=0||y%400==0)
{a=0;
for(j=1;j<=29;j++)
{printf("%-7d",j);
i1++; if(i1==7-q)
printf("\n");if(i1>7-q) i++;
if(i==7)
{
printf("\n"); i=0;
}}}
else
{a=1; for(j=1;j<=28;j++)
{printf("%-7d",j); i1++;
if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}}
printf("\n");
printf("*****************************************************************\n");
printf(" 3月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
if(a==0)
{q=(s+56)%7;i=0;i1=0;
for(j=1;j<7*q;j++)printf(" ");
for(j=1;j<=31;j++)
{printf("%-7d",j); i1++;
if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("*****************************************************************\n");
printf(" 4月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+87)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf("");for(j=1;j<=30;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{ printf("\n"); i=0;
}}
printf("\n");
printf("***************************************************************\n");
printf(" 5月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+117)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(“ “); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{ printf("\n"); i=0;
}}
printf("\n");
printf("**************************************************************\n");
printf(" 6月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+148)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=30;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("**********************************************************\n");
printf(" 7月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+178)%7; i=0;i1=0;for(j=1;j<7*q;j++) printf("");
for(j=1;j<=31;j++)
{printf("%-7d",j);i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("**************************************************************\n");
printf(" 8月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+209)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("***************************************************************\n");
printf(" 9月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+240)%7; i=0;i1=0; for(j=1;j<7*q;j++) printf(" ");
for(j=1;j<=30;j++)
{printf("%-7d",j); i1++; if(i1==7-q)
printf("\n"); if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("************************************************************\n");
printf(" 10月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+270)%7; i=0;i1=0; for(j=1;j<7*q;j++) printf(" ");
for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("**************************************************************\n");
printf(" 11月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+301)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
} }
printf("\n");
printf("*****************************************************************\n");
printf(" 12月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+331)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
}
else
{q=(s+55)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("*************************************************************\n");
printf(" 4月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+86)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=30;j++)
{printf("%-7d",j);i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("***********************************************************\n");
printf(" 5月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+116)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("**************************************************************\n");
printf(" 6月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+147)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=30;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("************************************************************\n");
printf(" 7月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+177)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf("");for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("******************************************************************\n");
printf(" 8月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+208)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n");i=0;
}}
printf("\n");
printf("********************************************************************\n");
printf(" 9月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+239)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf("");for(j=1;j<=30;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n");i=0;
}}
printf("\n");
printf("*******************************************************************\n");
printf(" 10月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+269)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("******************************************************************\n");
printf(" 11月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+300)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
printf("******************************************************************\n");
printf(" 12月\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
q=(s+330)%7; i=0;i1=0; for(j=1;j<7*q;j++)
printf(""); for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++;if(i==7)
{printf("\n"); i=0;
}}
printf("\n");
}
menu();
}
voidyear_mouth(void)
{
printf("请输入想要查询的年份以及月份,例如:2014-1按回车键结束。\n");
intc[12]={31,29,31,30,31,30,31,31,30,31,30,31},e[12]={31,28,31,30,31,30,31,31,30,31,30,31};
inta,b,n=0,m=0,i,s,q,j,i1;
scanf("%d-%d",&a,&b);
for(i=2014;i<a;i++)
{if(i%4==0&&i%100!=0||i%400==0)
n++;else m++;
}
s=366*n+365*m;
if(b>2)
{if(a%4==0&&a%100!=0||a%400==0)
s=s+60; else s=s+59;
switch(b)
{
case 3:printf("%d 3月\n",a);s=s;break;
case 4:printf("%d 4月\n",a); s=s+31;break;
case 5:printf("%d 5月\n",a); s=s+31+30;break;
case 6:printf("%d 6月\n",a);s=s+31+30+31;break;
case 7:printf("%d 7月\n",a);s=s+31+30+31+30;break;
case 8:printf("%d 8月\n",a);s=s+31+30+31+30+31;break;
case 9:printf("%d 9月\n",a);s=s+31+30+31+30+31+31;break;
case 10:printf("%d 10月\n",a);s=s+31+30+31+30+31+31+30;break;
case 11:printf("%d 11月\n",a);s=s+31+30+31+30+31+31+30+31;break;
case12:printf("%d 12月\n",a);s=s+31+30+31+30+31+31+30+31+30;break;
}q=(s-4)%7;//计算本月第一天星期几
printf("Sun Mon Tue Wed Thu Fri Sat\n");
i=0;i1=0; for(j=1;j<7*q;j++) printf("");
for(j=1;j<=c[b-1];j++)
{printf("%-7d",j); i1++; if(i1==7-q)
printf("\n"); if(i1>7-q) i++;
if(i==7)
{printf("\n"); i=0;
}}}
else if(b<2)
{q=(s-4)%7; printf("%d 1月\n");
printf("************************************\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
i=0;i1=0; for(j=1;j<7*q;j++) printf(" ");
for(j=1;j<=31;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}}
else
{printf("%d 2月\n");
printf("*********************************\n");
printf("Sun Mon Tue Wed Thu Fri Sat\n");
s=s+31; q=(s-4)%7; i=0;i1=0; for(j=1;j<7*q;j++) printf(" ");
if(a%4==0&&a%100!=0||a%400==0)
for(j=1;j<=29;j++)
{printf("%-7d",j); i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}
else
for(j=1;j<=28;j++)
{printf("%-7d",j);i1++; if(i1==7-q) printf("\n");
if(i1>7-q) i++; if(i==7)
{printf("\n"); i=0;
}}}
menu();
}
void cheak()
{
inta,b,c,d,e,f,s,n=0,m=0,i,S,j,l;
intq[12]={31,29,31,30,31,30,31,31,30,31,30,31},p[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("\n请输入今天的年月日,例如:2014-1-1按回车键结束。\n");
scanf("%d-%d-%d",&a,&b,&c);
printf("请输入想要查询的年月日,例如:2014-1-1按回车键结束。\n");
scanf("%d-%d-%d",&d,&e,&f);
for(i=2014;i<a;i++)
{if(i%4==0&&i%100!=0||i%400==0)
n++; else m++;
}
s=366*n+365*m; if(b<2) s=s+c;
else if(b==2) s=s+31+c; else if(b>2)
if(a%4==0&&a%100!=0||a%400==0)
for(i=1;i<b;i++)
s=s+q[i-1];
else
for(i=1;i<b;i++) s=s+p[i-1]; s=s+c;//计算今天距2014年1月1日多少天
j=(s-5)%7;//计算今天是星期几
if(j==0) printf("今天是星期日\n");
else printf("今天是星期%d\n",j);
n=0;m=0;for(i=2014;i<d;i++)
if(i%4==0&&i%100!=0||i%400==0)
n++; else m++;
S=366*n+365*m;
if(e<2) S=S+f;
else if(e==2) S=S+31+f;
elseif(d%4==0&&d%100!=0||d%400==0)
{for(i=1;i<e;i++)
S=S+q[i-1]; S=S+f;
}
else
{for(i=1;i<e;i++) S=S+p[i-1];
S=S+f;//计算要查询的年月日距离2014年1月1日的天数
}
l=S-s;
printf("%d--%d--%d距离今天有%d天\n",d,e,f,l);
j=(S-5)%7; if(j==0)
printf("%d--%d--%d是星期日\n",d,e,f);
else
printf("%d--%d--%d是星期%d\n",d,e,f,j);
menu();
printf("******************************************************\n");
printf("******************************************************\n");
printf("** 谢 谢 使 用 **\n");
printf("** 祝 : **\n");
printf("** 马 马 马 **\n");
printf("** 上 上 到 **\n");
printf("** 有 幸 成 **\n");
printf("** 钱 福 功 **\n");
printf("** !! !! !! **\n");
printf("******************************************************\n");
printf("******************************************************\n");
}