C语言万年历课程设计报告书

  • 格式:doc
  • 大小:544.00 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计报告书万年历系统设计

学院:理学院

专业:信息与计算科学

姓名:

指导教师:

序言

经过一个学期对《C程序设计》的学习,同学们都认为真正的学到了有用知识,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。

本程序是一个万年历程序,可以查询1970年1月1日到2100年1月1日中任意一天是星期几,只要在运行程序时按照要求输入年,月,日,程序就会把这一天是星期几显示子啊屏幕上;也可以输入一个年份和一个月份,程序就会把该月份的月历显示在屏幕上,使人一目了然。该程序能与目前天文学研究中所采用的各种日历程序所能计算的结果相一致。还有许多功能等着你去探讨。

这个程序花费了很多时间,用了一天的时间去设计程序和调试程序,而在调试程序的过程中,经常会出现一些不如意的地方,所以程序就要修改。所以这样经过一次又一次的修改之后,程序更显得人性化。

通过这一次程序的设计,让我深深的感受到程序员的辛苦。

2012年6月11日

【课程设计题目:万年历系统】【要求】

1:程序的功能多样;

2:输入日期能够判断该日期是星期几;

3:输入一个年份能够显示出该年的全部月历;

4:输入一个年月能够显示该月的月历;

5:输入一个年份能够判断该年是闰年还是平年;

6:能够退出。

【系统功能模块图】

主要功能模块1:

程序代码:

{printf("please input the day you want(2100,1,1>****,**,**>1970,1,1):");

scanf("%d,%d,%d",&year,&month,&day);

for(b=0,r=0;b

{

r=a[b]+r;

}

year=year-1972;

r=r+(year/4)*1461+(year%4)*365+day;

if(r%7==0)printf (" Today is Saturday.\n");

else if(r%7==1)printf(" Today is Sunday.\n");

else if(r%7==2)printf(" Today is Monday.\n");

else if(r%7==3)printf(" Today is Tuesday.\n");

else if(r%7==4)printf(" Today is Wednesday.\n");

else if(r%7==5)printf(" Today is Thursday.\n");

else printf(" Today is Firday.\n");

choose=getchar();

printf("Continue?(y/n):\n");

scanf("%c",&choose);

if (choose=='y'||choose=='Y') main();

}

主要功能模块2:

程序代码:

{

static int t[12]={31,0,31,30,31,30,31,31,30,31,30,31};

int i,y,weekday=0;

long days=0;

if(leap_year(year)) t[1]=29;

else t[1]=28;

y=t[month-1];

if(year>2006)

{

days=(year-2006)*365+count_leap(year)+monthdays(month,year); weekday=days%7;

}

else if(year<2006)

{days=(2005-year)*365+count_leap(year)+monthdays(month,year); weekday=7-days%7;

}

else

{days=monthdays(month,year);weekday=days%7;}

for (i=1;i

printf ("\t");

for (i=1;i<=y;i++)

{if ((i+weekday-1)%7==0) printf ("\n\t%3d\t",i);

else printf ("%3d\t",i);};

}

主要功能模块3:

程序代码:

{ int i;

if (year%4==0&&year%100!=0||year%400==0) i=1;

else i=0;

return i;

}

【用到的语句】

1., /*头文件*/

2.main() /*主函数*/

3.printf(),

4.scanf()

5.a[] /*数组*/

6.if 语句

7.for 语句

8.void /*要调用到的函数*/

【源程序代码】

#include

#include

int main() //主函数

{ int leap_year(int y);

int count_leap(int year);

int monthdays(int month,int year);

void monthprint(int year,int month);

int year,month,day,b,r,number; //定义变量

char choose;

int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf("*********************************mainMeun***********************************\n");

printf(" 1:ri qi>>>xing qi ji.\n");

printf(" 2:yue li.\n");

printf(" 3:ri li.\n");

printf(" 4:run nian pan duan. \n");

printf(" 5:exit\n");

printf("\n");

printf("*****************************************************************************\n"); printf (" please input the number:");

scanf("%d",&number);

if(number==1)

{printf("please input the day you want(2100,1,1>****,**,**>1970,1,1):");

scanf("%d,%d,%d",&year,&month,&day); //输入要查询的日期

for(b=0,r=0;b

{r=a[b]+r;}

year=year-1972;

r=r+(year/4)*1461+(year%4)*365+day; //计算输入日期与1970,1,1间隔了多少天

if(r%7==0)printf (" Today is Saturday.\n");