节日查询和任务提醒系统完整程序.docx
- 文档编号:4022084
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:18.87KB
节日查询和任务提醒系统完整程序.docx
《节日查询和任务提醒系统完整程序.docx》由会员分享,可在线阅读,更多相关《节日查询和任务提醒系统完整程序.docx(16页珍藏版)》请在冰豆网上搜索。
节日查询和任务提醒系统完整程序
#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("对不起!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 节日 查询 任务 提醒 系统 完整 程序