节日查询和任务提醒系统完整程序Word文件下载.docx
- 文档编号:16938142
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:18.87KB
节日查询和任务提醒系统完整程序Word文件下载.docx
《节日查询和任务提醒系统完整程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《节日查询和任务提醒系统完整程序Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
}
voidload()//读取信息
inti;
jr[0].t.tm_mon=0;
jr[0].t.tm_mday=1;
strcpy(jr[0].things,"
今天是元旦节"
jr[1].t.tm_mon=2;
jr[1].t.tm_mday=8;
strcpy(jr[1].things,"
今天是国际妇女节"
jr[2].t.tm_mon=2;
jr[2].t.tm_mday=12;
strcpy(jr[2].things,"
今天是植树节"
jr[3].t.tm_mon=3;
jr[3].t.tm_mday=22;
strcpy(jr[3].things,"
今天是世界地球日"
jr[4].t.tm_mon=4;
jr[4].t.tm_mday=1;
strcpy(jr[4].things,"
今天是国际劳动节"
jr[5].t.tm_mon=5;
jr[5].t.tm_mday=1;
strcpy(jr[5].things,"
今天是儿童节"
jr[6].t.tm_mon=6;
jr[6].t.tm_mday=1;
strcpy(jr[6].things,"
今天是建党节"
jr[7].t.tm_mon=7;
jr[7].t.tm_mday=1;
strcpy(jr[7].things,"
今天是建军节"
jr[8].t.tm_mon=9;
jr[8].t.tm_mday=1;
strcpy(jr[8].things,"
今天是国庆节"
jr[9].t.tm_mon=7;
jr[9].t.tm_mday=1;
strcpy(jr[9].things,"
jr[10].t.tm_mon=1;
jr[10].t.tm_mday=14;
strcpy(jr[10].things,"
今天是情人节"
jr[11].t.tm_mon=3;
jr[11].t.tm_mday=1;
strcpy(jr[11].things,"
今天是愚人节"
jr[12].t.tm_mon=3;
jr[12].t.tm_mday=5;
strcpy(jr[12].things,"
今天是清明节"
jr[13].t.tm_mon=4;
jr[13].t.tm_mday=4;
strcpy(jr[13].things,"
今天是中国青年节"
jr[14].t.tm_mon=8;
jr[14].t.tm_mday=10;
strcpy(jr[14].things,"
今天是中国教师节"
jr[15].t.tm_mon=9;
jr[15].t.tm_mday=31;
strcpy(jr[15].things,"
今天是万圣节"
jr[16].t.tm_mon=10;
jr[16].t.tm_mday=25;
strcpy(jr[16].things,"
今天是感恩节"
jr[17].t.tm_mon=11;
jr[17].t.tm_mday=1;
strcpy(jr[17].things,"
今天是世界艾滋病日"
jr[18].t.tm_mon=11;
jr[18].t.tm_mday=25;
strcpy(jr[18].things,"
今天是圣诞节"
//初始化各种节日
lenj=19;
//节日个数
rb"
fopen("
//创建文件
else
fread(&
//读取文件
for(i=0,lenr=0;
i<
N;
i++)
if(strlen(rw[i].things)!
=0)
lenr++;
//计算日程条数
intrun_or_not(intyear)//判断是否是是闰年
if(year%400==0)//400的整数倍为闰年,返回1
return1;
elseif(year%4==0&
&
year%100!
=0)//4的整数倍且不为百年为闰年,返回1
else
return0;
//不是闰年
intday_count(intyear,intmonth)//每个月的天数,此函数调用run_or_not
switch(month)
{
case1:
return31;
case2:
if(run_or_not(year)==0)return28;
elsereturn29;
case3:
case4:
return30;
case5:
case6:
case7:
case8:
case9:
case10:
case11:
case12:
default:
return0;
}
voidmon_calendar(structtmt)//显示月历
intwd,max_day;
system("
cls"
//清屏
wd=(t.tm_wday-(t.tm_mday%7-1))%7;
//计算当月1日是星期几
max_day=day_count(t.tm_year+1900,t.tm_mon+1);
//计算本月天数
if(wd<
0)//如果星期是负数就加上7
wd+=7;
if(run_or_not(t.tm_year)==0)//不是闰年
%d年%d月\n"
t.tm_year+1900,t.tm_mon+1);
%d年(闰年)%d月\n"
___________________________________\n"
日一二三四五六\n"
for(i=0;
wd;
printf("
"
//输出空格占上个月的位
for(i=1;
=max_day;
i++,wd++)
if(i==t.tm_mday)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
//与当前系统日期相等,改变颜色
%-4d"
i);
if(i==t.tm_mday)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
//恢复颜色
if(wd%7==6)
\n"
//当前为星期6,换行
}
\n___________________________________\n"
←、减少月份→、增加月份\n↑、减少年份↓、增加年份\n1、增加提醒2、删除提醒\n3、修改提醒4、查询提醒\n5、查询节日t、显示系统日期\nf、跳转日期ESC、退出\n"
intweek(intyear,intmonth,intday)//计算星期,此函数调用day_count
intweek_year_1_1;
//当年1月1日的星期数
intcount_day;
//距当年1月1日的天数
week_year_1_1=(year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+1)%7;
//计算当年一月一日星期几,接下来星期的计算依次为基准
for(i=1,count_day=0;
month;
count_day+=day_count(year,i);
//计算当年所经历的整月的天数,比如:
5月20日,就计算1、2、3、4月的天数,5月未完,接下来计算
count_day+=day-1;
//加上当月已经过的天数,减一是因为当天还没过完,不算一天
return(week_year_1_1+count_day%7)%7;
voidsearch(structtm*t)//跳转日期
请输入要跳转的日期(格式:
年,月,日如:
1949,10,1):
while
(1)
scanf("
%d,%d,%d"
&
t->
tm_year,&
tm_mon,&
tm_mday);
getchar();
//消除上一步的回车符
if(t->
tm_year>
9999||t->
tm_year<
1||t->
tm_mon>
12||t->
tm_mon<
tm_mday>
day_count(t->
tm_year,t->
tm_mon)||t->
tm_mday<
1)
输出错误,请重新输入:
continue;
//合法性检查出不合法,重新输入
break;
//合法性检查合法,结束输入
t->
tm_wday=week(t->
tm_mon,t->
//计算星期
tm_year-=1900;
tm_mon-=1;
voidlastmon(structtm*t)//上个月的月历
tm_mon--;
//月份减一
if(t->
tm_mon==-1)//如果减到1月了,就变成12月
t->
tm_mon=11;
t->
tm_year+1900,t->
tm_mon+1,t->
//计算上月的今天是星期几
voidnextmon(structtm*t)//下个月的月历
tm_mon++;
//月份加一
tm_mon==12)//如果加到12月了,就变成1月
tm_mon=0;
//计算下月月的今天是星期几
voidlastyear(structtm*t)//上一年的本月月历
tm_year--;
//年份减一
tm_year==1-1901)//如果减到公元0年,就变成9999年
tm_year=9999-1900;
voidnextyear(structtm*t)//下一年的本月月历
tm_year++;
//年份加一
tm_year==9999-1900+1)//如果加到公元9999年,就变成1年
tm_year=1-1900;
intcheckjr(structtmt,intf)//检查今天是否是节日
inti,flag;
for(i=0,flag=0;
lenj;
if(jr[i].t.tm_mon==t.tm_mon&
jr[i].t.tm_mday==t.tm_mday)
{
if(f==0)//没有任务提醒需要清屏
system("
flag=1;
//标记已经清屏
节日提醒:
puts(jr[i].things);
//显示提醒
returnflag;
intcheckrw(structtmt)//检查是否有任务提醒
if(rw[i].t.tm_mon==t.tm_mon&
rw[i].t.tm_mday==t.tm_mday)
if(flag==0)
system("
//清屏
任务提醒:
puts(rw[i].things);
if(flag==1)
\n\n\n"
voidcheck(structtm*t)//检查是否有提醒
intflag1,flag2;
flag1=checkrw(*t);
flag2=checkjr(*t,flag1);
//检查是否有提醒
if(flag1==1||flag2==1)
\n\n\n\n\n提醒完毕,回车返回。
voidadd()//增加任务提醒
i=lenr;
请输入提醒年月日(格式:
2011,9,11):
rw[i].t.tm_year,&
rw[i].t.tm_mon,&
rw[i].t.tm_mday);
//消除回车符
rw[i].t.tm_year-=1900;
rw[i].t.tm_mon--;
请输入提醒内容:
gets(rw[i].things);
lenr++;
//提醒数加1
save();
//保存
添加成功!
回车返回。
voiddel()//删除提醒
structremindtp;
_______________________________________________________________________\n"
编号提醒日期提醒内容\n"
for(i=0;
lenr;
%-6d%-4d-%-2.2d-%-2.2d%s\n"
i,rw[i].t.tm_year+1900,rw[i].t.tm_mon+1,rw[i].t.tm_mday,rw[i].things);
请输入要删除的编号:
%d"
i);
while(i<
0||i>
=lenr)
输入错误请重新输入:
rw[i].things[0]='
\0'
;
//删除
tp=rw[i];
rw[i]=rw[lenr-1];
rw[lenr-1]=tp;
//和最后一个记录交换位置
lenr--;
//任务个数减一
删除成功!
voidmod()//修改提醒
请输入提醒要修改的编号:
请输入新的提醒年月日(格式:
请输入新的提醒内容:
save();
修改成功!
}
voidsrh()//查询提醒
inti,y,m,d,flag;
请输入要查询的年月日(格式:
y,&
m,&
d);
y-=1900;
m--;
for(flag=i=0;
if(y==rw[i].t.tm_year&
m==rw[i].t.tm_mon&
d==rw[i].t.tm_mday)
flag=1;
//标志有提醒
printf("
\n任务提醒:
%s\n"
rw[i].things);
if(flag==0)
\n\n\n暂时没有这一天的任务提醒。
\n\n\n查询完毕。
voidsrhjr(structtm*t)//查询节日
charname[20];
请输入要查询的节日名:
gets(name);
if(strstr(jr[i].things,name)!
=NULL)//模糊查找节日
tm_mon=jr[i].t.tm_mon;
//当前日历改为节日
t->
tm_mday=jr[i].t.tm_mday;
%s是%d月%d日,回车继续。
name,jr[i].t.tm_mon+1,jr[i].t.tm_mday);
getchar();
return;
if(i==lenj)
对不起!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 节日 查询 任务 提醒 系统 完整 程序