c语言课程设计电子日历.docx
- 文档编号:309294
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:22
- 大小:160.01KB
c语言课程设计电子日历.docx
《c语言课程设计电子日历.docx》由会员分享,可在线阅读,更多相关《c语言课程设计电子日历.docx(22页珍藏版)》请在冰豆网上搜索。
c语言课程设计电子日历
c语言课程设计电子日历
课程设计(论文)任务书
专业班级
一、课程设计(论文)题目电子日历
二、课程设计(论文)工作:
自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函数,输出该日日期。
二、功能实现详细设计:
输入选择---选择+回车键---输入相应信息+回车键---输出结果。
流程图如下:
退出
程序包含多个函数,分别为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**********************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 电子 日历
![提示](https://static.bdocx.com/images/bang_tan.gif)