c语言课程设计电子日历.docx

上传人:b****3 文档编号:6123752 上传时间:2023-05-09 格式:DOCX 页数:20 大小:82.53KB
下载 相关 举报
c语言课程设计电子日历.docx_第1页
第1页 / 共20页
c语言课程设计电子日历.docx_第2页
第2页 / 共20页
c语言课程设计电子日历.docx_第3页
第3页 / 共20页
c语言课程设计电子日历.docx_第4页
第4页 / 共20页
c语言课程设计电子日历.docx_第5页
第5页 / 共20页
c语言课程设计电子日历.docx_第6页
第6页 / 共20页
c语言课程设计电子日历.docx_第7页
第7页 / 共20页
c语言课程设计电子日历.docx_第8页
第8页 / 共20页
c语言课程设计电子日历.docx_第9页
第9页 / 共20页
c语言课程设计电子日历.docx_第10页
第10页 / 共20页
c语言课程设计电子日历.docx_第11页
第11页 / 共20页
c语言课程设计电子日历.docx_第12页
第12页 / 共20页
c语言课程设计电子日历.docx_第13页
第13页 / 共20页
c语言课程设计电子日历.docx_第14页
第14页 / 共20页
c语言课程设计电子日历.docx_第15页
第15页 / 共20页
c语言课程设计电子日历.docx_第16页
第16页 / 共20页
c语言课程设计电子日历.docx_第17页
第17页 / 共20页
c语言课程设计电子日历.docx_第18页
第18页 / 共20页
c语言课程设计电子日历.docx_第19页
第19页 / 共20页
c语言课程设计电子日历.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言课程设计电子日历.docx

《c语言课程设计电子日历.docx》由会员分享,可在线阅读,更多相关《c语言课程设计电子日历.docx(20页珍藏版)》请在冰点文库上搜索。

c语言课程设计电子日历.docx

c语言课程设计电子日历

课程设计(论文)任务书

信息学院专业信息工程班级2

一、课程设计(论文)题目电子日历

二、课程设计(论文)工作:

自2011年12月26日起

至2011年12月30日止。

三、课程设计(论文)的容要求:

1、主界面

2、基本要求

a)编写一个实用日历程序,并且可以多次进行。

b)编写一个2012年1月份日历与农历对照程序。

3、补充自己的设计容

(1)、根据日期查星期几!

(2)、某月日历!

(3、)某年日历!

(4、)2012年1月的农历!

学生签名:

 戴斌     

2011年12月30日

课程设计(论文)评阅意见

等   级

项目

课程设计态度评价

出勤情况评价

设计中创新性评价

论文书写规化评价

综合评定等级

优秀

3补充

良好

2补充

中等

1补充

及格

无补充

不及格

不好

不好

无补充

不好

评阅人王更生职称教授

2011年12月30日

目 录

 

一、设计思路

二、功能实现详细设计

三、测试结果分析

四、用户手册

五、设计体会

一、设计思路:

If语句:

判断该年是否为闰年,判断一年是否为闰年需要符合下面二者之一:

1,能被4整除,但不能被100整除。

2,能被400整除。

满足上述条件时,返回值为1,否则返回值为0。

day函数:

判断某年某月最多多少天,定义一个十二个元素的数组a[12],给十二个月的天数分别赋初值31、28、31、30、31、30、31、31、30、31、30、31。

调用runnian函数,当if语句中条件为真实即返回值为1时,将二月份改为29天,即a[1]=29。

week函数:

判断某年某月某日的编号,根据公式(年份-1)+(年分-1)除以4-(年份-1)除以100+(年份-1)除以400+该天是该年的第几天(调用day2函数),把算出的值赋给number,再用number除以7取余数,即得到某年某月某日的编号。

定义一个字符型指针变量,利用switch语句,当number=0时,使指针指向星期日;当number=1时,指针指向星期一;当number=2时,指针指向星期二;当number=3时,指针指向星期三;当number=4时,指针指向星期四;当number=5时,指针指向星期五;当number=6时,指针指向星期六;当number不是上述数值时,指针指向错误。

x函数:

输出该天星期几,调用week1函数,将编号的值赋给number,调用*week2函数,根据number的值,确定指针指向,从而输出星期几,输出年,月,日,星期几。

显示月历,先输出星期日星期一星期二星期三星期四星期五星期六,星期日。

检验有效性,即当输入的年小于零、月小于一或大于十二、天大于该月最大值(调用day1函数)时将0返回给主函数,否则将1返回给主函数

nianli函数:

输出年历,先调用runnian函数,定义变量i,赋初值为1,利用for循环,循环十二次,调用x2函数,输出各个月的月历,从而显现出该年的每一天达到年历的效果。

yueli函数:

输出月历,先调用runnian函数,调用showmonth函数,输出该月月历。

rili函数:

输出日历,先调用函数,调用printmonth函数,输出该日日期。

二、功能实现详细设计:

输入选择---选择+回车键---输入相应信息+回车键---输出结果。

流程图如下:

退出

开始

选择

年历

月历

日历

日期

输入年

输入年月

输入年月日

输出该年的所有日期

输出该月的日期

输出这一天是星期几

输入2012年1月

输出该月农历

程序包含多个函数,分别为main函数、nianli函数、yueli函数、rili函数、nongli函数、printmonth函数、printyear函数、SelectMenu函数、HandleMenu函数、showmonth函数、week1函数、*week2函数、day1函数、day2函数。

通过函数间的调用,实现程序的运行。

详细程序

#include

#include

voidnongli()

{intj;

printf("\n\n\t\t\t\t2012年1月\n");

printf("\n\t星期日星期一星期二星期三星期四星期五星期六\n\n");

for(j=1;j<=31;j++)

{

printf("\t%d",j);

if(j==7||j==14||j==21||j==28)

printf("\n");

if(j==7)

{

printf("\t元旦\t初九\t初十\t十一\t十二\t十三\t十四\t\n");

}

if(j==14)

{

printf("\t十五\t十六\t十七\t十八\t十九\t廿十\t廿一\t\n");

}

if(j==21)

{

printf("\t廿二\t廿三\t廿四\t廿五\t廿六\t大寒\t廿八\t\n");

}

if(j==28)

{

printf("\t廿九\t春节\t初二\t初三\t初四\t初五\t初六\t\n");

}

if(j==31)

{

printf("\n");

printf("\t初七\t初八\t初九\n");

}

}

}

voidprinttab(intn)

{

while(n>0)

{

printf("\t");

n--;

}

}

#include

charMonthDay[]={31,28,31,30,31,30,31,31,30,31,30,31};

charMonthDayLeap[]={31,29,31,30,31,30,31,31,30,31,30,31};

char*WeekDayName[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

chargetkey()

{

charc,s[10];

scanf("%s",s);

c=s[0];

returnc;

}

charisLeapYear(inty)

{

return((y%4==0&&y%100!

=0||y%400==0)?

1:

0);

}

intWeekDay(inty,intm,intd)

{

intweek;

if(m==1)m=13;

if(m==2)m=14;

week=(d+2*m+3*(m+2)/5+y+y/4-y/100+y/400)%7;

returnweek;

}

charqueryweekday()

{

inty,m,d,week,c=0;

do

{

printf("请输入年月日(XXXXXXXX)\n");

scanf("%d%d%d",&y,&m,&d);

week=WeekDay(y,m,d);

printf("%d年%d月%d日是星期%s,是否继续查询(Y/N)?

",y,m,d,WeekDayName[week]);

c=getkey();

}

while(c=='Y'||c=='y');

returnc;

}

voidshowmonth(inty,intm)

{

intd,dt,week;

week=WeekDay(y,m,1);

if(isLeapYear(y))

dt=MonthDayLeap[(m-1)%12];

else

dt=MonthDay[(m-1)%12];

for(d=0;d<7;d++)

{

printf("\t%s",WeekDayName[d]);

}

printf("\n");

printtab(week);

for(d=1;d<=dt;d++)

{

printf("\t%6d",d);

if(WeekDay(y,m,d)==6)

printf("\n");

}

printf("\n");

}

charprintmonth()

{

inty,m,c=0;

do

{

printf("请输入年月(XXXXXX)\n");

scanf("%d%d",&y,&m);

printtab(3);

printf("%d年\t%d月\n",y,m);

showmonth(y,m);

printf("是否继续查询(Y/N)?

");

c=getkey();

}

while(c=='Y'||c=='y');

returnc;

}

charprintyear()

{

inty,m,c=0;

do

{

printf("请输入年份(XXXX)\n");

scanf("%d",&y);

printtab(3);

printf("%d年年历\n",y);

for(m=1;m<=12;m++)

{

printtab(4);

printf("%d月\n",m);

showmonth(y,m);

}

printf("\n是否继续查询(Y/N)?

");

c=getkey();

}

while(c=='Y'||c=='y');

returnc;

}

voidquit()

{

printf("\n\t谢谢使用该程序!

\n");

exit(0);

}

intSelectMenu()

{

intchoice;

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

printf("4:

2012年1月的农历!

\n");

printf("3:

某年日历!

\n");

printf("2:

某月日历!

\n");

printf("1:

根据日期查星期几!

\n");

printf("0:

退出!

\n");

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

printf("\t请选择菜单号(0---4):

");

while((!

(scanf("%d",&choice)))||(choice<0)||(choice>4))

{

printf("\n\t\t\a\a选择错误!

!

!

!

!

!

!

!

!

!

!

请重新选择:

");

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

printf("4:

2012年1月的农历!

\n");

printf("3:

某年日历!

\n");

printf("2:

某月日历\n");

printf("1:

根据日期查星期几!

\n");

printf("0:

退出!

\n");

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

printf("\t请选择菜单号(0---4):

");

}

returnchoice;

}

voidHandleMenu()

{

printf("\t\t*****************欢迎使用该程序***************\n");

while

(1)

{

switch(SelectMenu())

{

case0:

quit();

break;

case1:

queryweekday();

break;

case2:

printmonth();

break;

case3:

printyear();

break;

case4:

nongli();

break;

}

}

}

voidmain()

{

HandleMenu();

}

三、测试结果分析:

程序主界面:

 

 

 

 

 

四、用户手册:

可以根据界面的提示根据您的需要输入0.1.2或3.然后输入您要查的日期即可。

五、设计体会:

忙了好久总算将此程序设计出来。

尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序。

另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。

为了解决此类问题,最好就是多向同学,老师请教,不要怕难为情。

尤其是老师,凭他们多年的编写程序的经验,要解决我们的问题,对他们来说只是小问题。

在设计这个程序时,我刚开始是根据老师给我提供的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了。

计算是个关键和难点,我们也查了相应的资料,最好这个计算问题解决了。

从这一个多星期的设计过程中,遇到了一些细节性的问题,比如在乱输入的情况下,有时会出现程序崩溃,后来通过修改,修正了漏洞。

到写报告为止,漏洞基本被找出,并得到修正。

通过写这个程序,我对程序的健壮性有了更深的认识,也更加注意程序的细节问题。

总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会。

 

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2