C语言课程设计电子日历

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

第3页
详细程序
华东交通大学课程设计报告
#include<stdio.h>
#include<stdlib.h>
void nongli()
{ int j;
printf("\n\n\t\t\t\t 2012 年 1 月\n");
六\n\n");
printf("\n\t 星期日 星期一 星期二 星期三 星期四 星期五 星期
char MonthDay[]={31,28,31,30,31,30,31,31,30,31,30,31}; char MonthDayLeap[]={31,29,31,30,31,30,31,31,30,31,30,31}; char *WeekDayName[]={"星期日","星期一","星期二","星期三","星期四","星期五","星 期六"}; char getkey() { char c,s[10]; scanf("%s",s); c=s[0]; return c;
break; case 1:queryweekday();
break; case 2:printmonth();
课 程 设 计( 论 文 )任 务 书
专业
班级
一、课程设计(论文)题目 电子日历
二、课程设计(论文)工作: 自 2011 年 12 月 26 日起 至 2011 年 12 月 30 日止。
三、课程设计(论文)的内容要求:
1、主界面
2、基本要求 a) 编写一个实用日历程序,并且可以多次进行。 b) 编写一个 2012 年 1 月份日历与农历对照程序。
华东交通大学课程设计报告
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 函数:
printf("
4:2012 年 1 月的农历!\n");
第9页
printf(" printf(" printf(" printf("
华东交通大学课程设计报告
3:某年日历!\n"); 2:某月日历\n"); 1:根据日期查星期几!\n"); 0:退出!\n");
printf("\t************************************************************** ****\n");
第5页
华东交通大学课程设计报告
} char isLeapYear(int y) { return((y%4 == 0 && y%100 != 0 || y%400 == 0)?1:0); } int WeekDay(int y,int m, int d) { int week; 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; return week; } char queryweekday() { int y,m,d,week,c=0; do {
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)
{
第6页
void showmonth(int y,int m)
华东交通大学课程设计报告
{
int d,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++)
c=getkey();
}
while (c=='Y' || c=='y');
return c;
}
char printyear()
{
int y,m,c=0;
do
{
printf("请输入年份(XXXX)\n");
scanf("%d",&y);
printtab(3);
printf("%d 年年历\n",y);
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");
华东交通大学课程设计报告
3、补充自己的设计内容 (1)、 根据日期查星期几 ! (2)、 某月日历! (3、) 某年日历! (4、) 2012 年 1 月的农历!
学生签名:
戴斌
2011 年 12 月 30 日


优秀 良好 中等 及格 不及格
课程设计(论文)评阅意见
项目
课程设计 态度评价

出勤情况 评价
判断某年某月某日的编号,根据公式(年份-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 函数:
printf("\t 请选择菜单号(0---4):");
while( (!(scanf("%d",&choice)))|| (choice<0)||(choice>4))
{
printf("\n\t\t\a\a 选择错误!!!!!!!!!!!请重新选择:");
printf("\n\t************************************************************* *****\n");

设计中创 新性评价
3 补充
论文书写 规范化评
价 好
综合评定 等级


2 补充



1 补充
ቤተ መጻሕፍቲ ባይዱ



无补充

不好
不好
无补充
不好
评阅人 王更生 职称 教 授
2011 年 12 月 30 日
华东交通大学课程设计报告
目录
一、设计思路 二、功能实现详细设计 三、测试结果分析 四、用户手册 五、设计体会
一、设计思路:
第4页
华东交通大学课程设计报告
} if(j==31) {
printf("\n"); printf("\t 初七\t 初八\t 初九\n"); } } } void printtab(int n) { while (n>0) { printf("\t"); n--; } } #include <stdio.h>
printf("请输入年月日(XXXX XX XX)\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'); return c; }
4:2012 年 1 月的农历!\n");
printf("
3:某年日历!\n");
printf("
2:某月日历!\n");
printf("
1:根据日期查星期几!\n");
printf("
0:退出!\n");
printf("\t************************************************************** ****\n");
输出该月的日期
输出这一天是 星期几
输出该 月农历
程序包含多个函数,分别为 main 函数、nianli 函数、yueli 函数、rili 函数、nongli 函数、printmonth 函数、printyear 函数、SelectMenu 函数、HandleMenu 函数、showmonth 函数、week1 函数、*week2 函数、day1 函数、day2 函数。通过函数间的调用,实现 程序的运行。
{
int y,m,c=0;
do
{
printf("请输入年月(XXXX XX)\n");
第7页
scanf("%d %d",&y,&m);
华东交通大学课程设计报告
printtab(3);
printf("%d 年\t%d 月\n",y,m);
showmonth(y,m);
printf("是否继续查询(Y/N)?");
printf("\n\t 谢谢使用该程序!\n"); exit(0); }
int SelectMenu()
{
int choice;
printf("\n\t************************************************************* *****\n");
printf("
输出年历,先调用 runnian 函数,定义变量 i,赋初值为 1,利用 for 循
第1页
华东交通大学课程设计报告
环,循环十二次,调用 x2 函数,输出各个月的月历,从而显现出该年的每 一天达到年历的效果。 yueli 函数:
输出月历,先调用 runnian 函数,调用 showmonth 函数,输出该月月历。 rili 函数:
{
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");
}
char printmonth()
输出该天星期几,调用 week1 函数,将编号的值赋给 number,调用 *week2 函数,根据 number 的值,确定指针指向,从而输出星期几,输出 年,月,日,星期几。 显示月历,先输出星期日 星期一 星期二 星期三 星期四 星期五 星期六, 星期日。
检验有效性,即当输入的年小于零、月小于一或大于十二、天大于该 月最大值(调用 day1 函数)时将 0 返回给主函数,否则将 1 返回给主函数 nianli 函数:
for (m=1;m<=12;m++)
{
printtab(4);
printf("%d 月\n",m);
showmonth(y,m);
}
printf("\n 是否继续查询 (Y/N)?");
c=getkey();
}
第8页
华东交通大学课程设计报告
while (c=='Y' || c=='y'); return c; } void quit() {
printf("\t 请选择菜单号(0---4):"); } return choice; } void HandleMenu() { printf("\t\t*****************欢迎使用该程序***************\n"); while(1) {
switch(SelectMenu()) { case 0:quit();
输出日历,先调用函数,调用 printmonth 函数,输出该日日期。
二、功能实现详细设计:
输入选择---选择+回车键---输入相应信息+回车键---输出结果。 流程图如下:
第2页
华东交通大学课程设计报告
开始 选择
年历
月历
日历
日期
退出
输入年
输入年月
输入年月日
输入 2012 年 1月
输出该年的所有日 期
相关文档
最新文档