没有合适的资源?快使用搜索试试~ 我知道了~
C语言程序设计万年历.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 111 浏览量
2022-06-13
21:16:46
上传
评论
收藏 2.83MB DOC 举报
温馨提示
试读
32页
C语言程序设计万年历
资源推荐
资源详情
资源评论
综合性程序设计报告
设计题目: 万年历
指导教师:
班 级:
学 号: _
设 计 者:
成 绩:
设计时间: 2012 年 6 月 8 日
[题目描述]
用于利用计算机实现万年历功能,包括日期对星期的转换,根据指定日期对 N 天后是
什么日期的计算。和显示当前日期,纪念日提醒等功能。
主要功能:
1.日期推算
2.日期显示
3.纪念日提醒
[功能模块分解及说明]
根据题目要求,可以用结构体实现,这个系统可以分为:年历显示、月历查询、日期查询
和日期推算四个部分。其中在日期查询中包括纪念日提醒。
(1) 主函数
main()主函数利用 while(1)循环使得执行完每个部分之后还能回到主菜单,
并利用 switch 函数当输入不同的值时调用不同的模块。主函数如下:
void main() /*主函数*/
{
int year,month,day,select;
while(1)
{
dushijian();
printf("\n");
getmenu();
printf(" 请输入相应数字:"); /*菜单选择 */
scanf("%d",&select);
system("cls");
switch(select)
{
case 1: /*当选择为 1 时显示年历*/
printf(" 年历显示:输入年(如 2011):");
scanf("%d",&year);
if(year>0&&year<10000) /*显示年份从 0-10000 */
{
display1(year); /*调用函数*/
printf(" 提示 按↑:上一年 按↓:下一年 按其他键:返回菜单\n\n");
setDay1( year,month, day);
}
else
system("cls"); /*清屏*/
printf(" 输入无效,重新输入!\n");
break;
case 2: /*当选择为 2 显示月历*/
printf(" 月历显示:输入年月(如 2011,6):");
scanf("%d,%d",&year,&month);
if(year>0&&year<10000&&month>=1&&month<=12)
{
display2(year,month);
printf(" 提示 按←:上个月 按→:下个月 按其他键:返回菜单\n\n");
setDay2( year,month, day);
}
else
system("cls");
printf(" 输入无效,重新输入!\n");
break;
case 3: /*当选择为 3 时显示日期*/
printf(" 日期显示:输入年月日(比如 2011,6,23):");
scanf("%d,%d,%d",&year,&month,&day);
if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<
=maxDay(year,month))
{
display3(year,month,day);
printf(" 提示 按 PageUp:前一天 按 PageDown:后一天 按其他键:返回菜
单\n\n");
setDay3( year,month, day);
}
else
system("cls");
printf(" 输入无效,重新输入!\n");
break;
case 4: /*当选择 4 时为日期推算*/
riqituisuan();
break;
case 5:
exit(0);
default: /*当输入其他数字时,输入无效,重新输入*/
system("cls");
printf(" 输入无效,重新输入!\n");
}
}
}
(2) 年历显示
用来显示某一年的日历。
void display1(int year) /*输出年历*/
{
int i;
printf("\n");
for(i=1;i<=12;i++)
{
printf("%d 年 %d 月\n\n ",year,i);
display(year,i);
}
}
void display(int year ,int month) /*输出年月*/
{
int max,number,i,j=1;
max=maxDay(year,month);
number=week(year,month,1);
printf(" %4s %4s %4s %4s %4s %4s %4s\n","Sun","Mon","Tue","Wed",
"Thu","Fri","sat");
for(i=0;i<number;i++)
printf(" "); /*1 号前的星期补空格*/
while(j<=max)
{
printf("%6d",j);
if (i%7==6)
printf("\n"); /* 每 7 格换一行*/
i++;
j++;
}
printf("\n\n");
}
(3) 输出月历
void display2(int year,int month) /*输出月历*/
{
printf("\n%d 年 %d 月\n ",year,month);
display(year,month);
}
void display(int year ,int month) /*输出年月*/
{
int max,number,i,j=1;
max=maxDay(year,month);
number=week(year,month,1);
printf(" %4s %4s %4s %4s %4s %4s %4s\n","Sun","Mon","Tue","Wed",
"Thu","Fri","sat");
for(i=0;i<number;i++)
printf(" "); /*1 号前的星期补空格*/
while(j<=max)
{
printf("%6d",j);
if (i%7==6)
printf("\n"); /* 每 7 格换一行*/
i++;
j++;
}
printf("\n\n");
}
(4) 日期查询
void display3(int year,int month,int day) /*输出日历*/
{
whatweek( year,month,day);
jieri(month,day);
counterdays(year,month, day);
}
int counterdays(int year,int month,int day)
/*判断今天距特定日期的天数*/
{
int year1, days0,days1,month1,days, day1;
time_t timep;
struct tm *p;
time(&timep);
p=gmtime(&timep);
year1=(1900+p->tm_year) ;
month1=(1+p->tm_mon) ;
day1=(p->tm_mday); /* 获取系统时间 year1、month1、day1 分别为
年、月、日*/
days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartot
al(year,month,day);
days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachy
eartotal(year1,month1,day1);
days=days0-days1; /*计算出两个日期之间的时间差*/
printf("\n 今天距%d 年%d 月%d 日还有%d 天\n\n",year,month,day,days);
剩余31页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 82
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功