C程序设计万年历说明书.doc

上传人:b****1 文档编号:230147 上传时间:2022-10-07 格式:DOC 页数:12 大小:80.50KB
下载 相关 举报
C程序设计万年历说明书.doc_第1页
第1页 / 共12页
C程序设计万年历说明书.doc_第2页
第2页 / 共12页
C程序设计万年历说明书.doc_第3页
第3页 / 共12页
C程序设计万年历说明书.doc_第4页
第4页 / 共12页
C程序设计万年历说明书.doc_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C程序设计万年历说明书.doc

《C程序设计万年历说明书.doc》由会员分享,可在线阅读,更多相关《C程序设计万年历说明书.doc(12页珍藏版)》请在冰豆网上搜索。

C程序设计万年历说明书.doc

C++程序设计说明书

题目:

万年历

班级学号:

学生姓名:

目录

一.应用程序的名称

二.应用程序的主题、设计目的

三.应用程序简介

1.程序的基本结构及内容

2.程序的运行环境

四.主要运行界面的介绍

五.程序亮点

六.课程设计中存在的问题及解决方法

一.课程设计名称

万年历

二.应用程序要求、目的

主题:

万年历

目的:

实现对年月的查询

三.应用程序简介

(1)基本结构:

整个程序有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

#include

intyear,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;

}

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++)

{

printf("\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++)

{

printf("%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.查找某一年的年历********\n");

printf("********2.查找某一月的月历********\n");

printf("********0.退出********\n");

printf("==============================================================================\n");

printf("请输入您的选择:

");

scanf("%d",&option);

switch(option)

{

case1:

while

(1)

{

print_year(year);

cls_screen();

printf("doyouwanttocontinue?

(Y/N)");

fflush(stdin);

scanf("%c",&ch);

if(ch=='N'||ch=='n')

break;

}

break;

case2:

while

(1)

{

print_year_month();

cls_screen();

printf("doyouwanttocontinue?

(Y/N)");

fflush(stdin);

scanf("%c",&ch);

if(ch=='N'||ch=='n')

break;

}

break;

case0:

break;

}}}

2:

程序的运行环境

本程序运行环境为VC

四.主要运行界面的介绍

选择“1”并查询2012年的日历。

显示2012年的日历:

可以按任意键返回。

出现“是否继续的提示语”按y可继续查询某年的日历。

按n可返回开始时的画面,再继续选择。

选择“2”,查询2012年9月的月历。

五.程序亮点

此程序开始有提示语问候,使用户使用时亲切便捷,并实现了循环的过程,可以无限循环的查询你想知道年份月份的日历,在循环的过程中加有清屏的效果。

六.课程设计中存在的问题及解决方法

在编译程序时,对蔡勒公式的不熟悉,导致程序在年月之间的错误,但在之后的调试中逐步掌握了这个公式,并解决了这一系列的问题。

12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1