节日查询和任务提醒系统完整程序.docx

上传人:b****6 文档编号:4022084 上传时间:2022-11-27 格式:DOCX 页数:16 大小:18.87KB
下载 相关 举报
节日查询和任务提醒系统完整程序.docx_第1页
第1页 / 共16页
节日查询和任务提醒系统完整程序.docx_第2页
第2页 / 共16页
节日查询和任务提醒系统完整程序.docx_第3页
第3页 / 共16页
节日查询和任务提醒系统完整程序.docx_第4页
第4页 / 共16页
节日查询和任务提醒系统完整程序.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

节日查询和任务提醒系统完整程序.docx

《节日查询和任务提醒系统完整程序.docx》由会员分享,可在线阅读,更多相关《节日查询和任务提醒系统完整程序.docx(16页珍藏版)》请在冰豆网上搜索。

节日查询和任务提醒系统完整程序.docx

节日查询和任务提醒系统完整程序

#include

#include

#include

#include

#defineN100

structremind

{

structtmt;//时间

charthings[100];//内容

}jr[N],rw[N];//节日提醒任务提醒

intlenj;//节日提醒的个数

intlenr;//任务提醒的个数

voidsave()//保存信息

{

FILE*fp;

if((fp=fopen("renwu.dat","wb"))==NULL)//打开任务文件

{

printf("文件打开失败!

");

exit(0);

}

fwrite(&rw,sizeof(structremind),N,fp);//写入文件

fclose(fp);//关闭文件

}

voidload()//读取信息

{

FILE*fp;

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;//节日个数

if((fp=fopen("renwu.dat","rb"))==NULL)//打开任务文件

{

fopen("renwu.dat","wb");//创建文件

}

else

{

fread(&rw,sizeof(structremind),N,fp);//读取文件

for(i=0,lenr=0;i

if(strlen(rw[i].things)!

=0)

{

lenr++;//计算日程条数

}

fclose(fp);//关闭文件

}

}

intrun_or_not(intyear)//判断是否是是闰年

{

if(year%400==0)//400的整数倍为闰年,返回1

return1;

elseif(year%4==0&&year%100!

=0)//4的整数倍且不为百年为闰年,返回1

return1;

else

return0;//不是闰年

}

intday_count(intyear,intmonth)//每个月的天数,此函数调用run_or_not

{

switch(month)

{

case1:

return31;

case2:

if(run_or_not(year)==0)return28;

elsereturn29;

case3:

return31;

case4:

return30;

case5:

return31;

case6:

return30;

case7:

return31;

case8:

return31;

case9:

return30;

case10:

return31;

case11:

return30;

case12:

return31;

default:

return0;

}

}

voidmon_calendar(structtmt)//显示月历

{

intwd,max_day;

inti;

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)//不是闰年

printf("%d年%d月\n",t.tm_year+1900,t.tm_mon+1);

else

printf("%d年(闰年)%d月\n",t.tm_year+1900,t.tm_mon+1);

printf("___________________________________\n");

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

for(i=0;i

printf("");//输出空格占上个月的位

for(i=1;i<=max_day;i++,wd++)

{

if(i==t.tm_mday)

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);//与当前系统日期相等,改变颜色

printf("%-4d",i);

if(i==t.tm_mday)

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//恢复颜色

if(wd%7==6)

printf("\n");//当前为星期6,换行

}

printf("\n___________________________________\n");

printf("←、减少月份→、增加月份\n↑、减少年份↓、增加年份\n1、增加提醒2、删除提醒\n3、修改提醒4、查询提醒\n5、查询节日t、显示系统日期\nf、跳转日期ESC、退出\n");

printf("___________________________________\n");

}

intweek(intyear,intmonth,intday)//计算星期,此函数调用day_count

{

inti;

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;i

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)//跳转日期

{

printf("请输入要跳转的日期(格式:

年,月,日如:

1949,10,1):

");

while

(1)

{

scanf("%d,%d,%d",&t->tm_year,&t->tm_mon,&t->tm_mday);

getchar();//消除上一步的回车符

if(t->tm_year>9999||t->tm_year<1||t->tm_mon>12||t->tm_mon<1||t->tm_mday>day_count(t->tm_year,t->tm_mon)||t->tm_mday<1)

{

printf("输出错误,请重新输入:

");

continue;//合法性检查出不合法,重新输入

}

else

break;//合法性检查合法,结束输入

}

t->tm_wday=week(t->tm_year,t->tm_mon,t->tm_mday);//计算星期

t->tm_year-=1900;

t->tm_mon-=1;

}

voidlastmon(structtm*t)//上个月的月历

{

t->tm_mon--;//月份减一

if(t->tm_mon==-1)//如果减到1月了,就变成12月

t->tm_mon=11;

t->tm_wday=week(t->tm_year+1900,t->tm_mon+1,t->tm_mday);//计算上月的今天是星期几

}

voidnextmon(structtm*t)//下个月的月历

{

t->tm_mon++;//月份加一

if(t->tm_mon==12)//如果加到12月了,就变成1月

t->tm_mon=0;

t->tm_wday=week(t->tm_year+1900,t->tm_mon+1,t->tm_mday);//计算下月月的今天是星期几

}

voidlastyear(structtm*t)//上一年的本月月历

{

t->tm_year--;//年份减一

if(t->tm_year==1-1901)//如果减到公元0年,就变成9999年

t->tm_year=9999-1900;

t->tm_wday=week(t->tm_year+1900,t->tm_mon+1,t->tm_mday);//计算上月的今天是星期几

}

voidnextyear(structtm*t)//下一年的本月月历

{

t->tm_year++;//年份加一

if(t->tm_year==9999-1900+1)//如果加到公元9999年,就变成1年

t->tm_year=1-1900;

t->tm_wday=week(t->tm_year+1900,t->tm_mon+1,t->tm_mday);//计算上月的今天是星期几

}

intcheckjr(structtmt,intf)//检查今天是否是节日

{

inti,flag;

for(i=0,flag=0;i

{

if(jr[i].t.tm_mon==t.tm_mon&&jr[i].t.tm_mday==t.tm_mday)

{

if(f==0)//没有任务提醒需要清屏

system("cls");

flag=1;//标记已经清屏

printf("节日提醒:

");

puts(jr[i].things);//显示提醒

}

}

returnflag;

}

intcheckrw(structtmt)//检查是否有任务提醒

{

inti,flag;

for(i=0,flag=0;i

{

if(rw[i].t.tm_mon==t.tm_mon&&rw[i].t.tm_mday==t.tm_mday)

{

if(flag==0)

{

system("cls");//清屏

flag=1;//标记已经清屏

}

printf("任务提醒:

");

puts(rw[i].things);//显示提醒

}

}

if(flag==1)

{

printf("\n\n\n");

}

returnflag;

}

voidcheck(structtm*t)//检查是否有提醒

{

intflag1,flag2;

flag1=checkrw(*t);

flag2=checkjr(*t,flag1);//检查是否有提醒

if(flag1==1||flag2==1)

{

printf("\n\n\n\n\n提醒完毕,回车返回。

");

getchar();

}

}

voidadd()//增加任务提醒

{

inti;

system("cls");//清屏

i=lenr;

printf("请输入提醒年月日(格式:

2011,9,11):

");

scanf("%d,%d,%d",&rw[i].t.tm_year,&rw[i].t.tm_mon,&rw[i].t.tm_mday);

getchar();//消除回车符

rw[i].t.tm_year-=1900;

rw[i].t.tm_mon--;

printf("请输入提醒内容:

");

gets(rw[i].things);

lenr++;//提醒数加1

save();//保存

printf("添加成功!

回车返回。

");

getchar();

}

voiddel()//删除提醒

{

structremindtp;

inti;

system("cls");//清屏

printf("_______________________________________________________________________\n");

printf("编号提醒日期提醒内容\n");

for(i=0;i

printf("%-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);

printf("_______________________________________________________________________\n");

printf("请输入要删除的编号:

");

scanf("%d",&i);

getchar();

while(i<0||i>=lenr)

{

printf("输入错误请重新输入:

");

scanf("%d",&i);

}

rw[i].things[0]='\0';//删除

tp=rw[i];

rw[i]=rw[lenr-1];

rw[lenr-1]=tp;//和最后一个记录交换位置

lenr--;//任务个数减一

save();//保存

printf("_______________________________________________________________________\n");

printf("编号提醒日期提醒内容\n");

for(i=0;i

printf("%-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);

printf("_______________________________________________________________________\n");

printf("删除成功!

回车返回。

");

getchar();

}

voidmod()//修改提醒

{

inti;

system("cls");//清屏

printf("_______________________________________________________________________\n");

printf("编号提醒日期提醒内容\n");

for(i=0;i

printf("%-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);

printf("_______________________________________________________________________\n");

printf("请输入提醒要修改的编号:

");

scanf("%d",&i);

getchar();

while(i<0||i>=lenr)

{

printf("输入错误请重新输入:

");

scanf("%d",&i);

}

printf("请输入新的提醒年月日(格式:

2011,9,11):

");

scanf("%d,%d,%d",&rw[i].t.tm_year,&rw[i].t.tm_mon,&rw[i].t.tm_mday);

getchar();//消除回车符

rw[i].t.tm_year-=1900;

rw[i].t.tm_mon--;

printf("请输入新的提醒内容:

");

gets(rw[i].things);

save();//保存

printf("_______________________________________________________________________\n");

printf("编号提醒日期提醒内容\n");

for(i=0;i

printf("%-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);

printf("_______________________________________________________________________\n");

printf("修改成功!

回车返回。

");

getchar();

}

voidsrh()//查询提醒

{

inti,y,m,d,flag;

system("cls");//清屏

i=lenr;

printf("请输入要查询的年月日(格式:

2011,9,11):

");

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

getchar();//消除回车符

y-=1900;

m--;

for(flag=i=0;i

{

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)

printf("\n\n\n暂时没有这一天的任务提醒。

回车返回。

\n");

else

printf("\n\n\n查询完毕。

回车返回。

\n");

getchar();

}

voidsrhjr(structtm*t)//查询节日

{

charname[20];

inti;

system("cls");//清屏

printf("请输入要查询的节日名:

");

gets(name);

for(i=0;i

{

if(strstr(jr[i].things,name)!

=NULL)//模糊查找节日

{

t->tm_mon=jr[i].t.tm_mon;//当前日历改为节日

t->tm_mday=jr[i].t.tm_mday;

printf("%s是%d月%d日,回车继续。

",name,jr[i].t.tm_mon+1,jr[i].t.tm_mday);

getchar();

return;

}

}

if(i==lenj)

{

printf("对不起!

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

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1