ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:211.46KB ,
资源ID:9281605      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9281605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(节日查询和任务提醒系统程序设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

节日查询和任务提醒系统程序设计报告.docx

1、节日查询和任务提醒系统程序设计报告程序设计报告(2011/2012学年 第二学期)题 目:日历查询和任务提醒系统 专 业 自动化 学 生 姓 名 陈康、李鹏飞、苏沛霖 班 级 学 号 B11050218、B11050216、B11050217指 导 教 师 吴敏 指 导 单 位 计算机软件教学中心 日 期 2012-6-5 评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名: 年 月 日评分等级备注评分等级有五种:优秀

2、、良好、中等、及格、不及格节日查询和任务提醒系统一、课题内容和要求设计一个简单的日历、月历系统,支持节日查询,任务提醒功能,用C或C+语言实现。本系统的基本功能必须包括:(1)日历、月历功能:界面能够显示日历和月历,默认为当月的月历能够通过上下翻页查询每月的月历。(2)日历查询:通过日期查询月历。(3)任务提醒:可添加、删除、修改、查询任务功能,并完成任务提醒功能。二、需求分析本系统的基本功能必须包括:(1)日历、月历功能:界面能够显示日历和月历,默认为当月的月历能够通过上下翻页查询每月的月历。(2)日历查询:通过日期查询月历。(3)任务提醒:可添加、删除、修改、查询任务功能,并完成任务提醒功

3、能。功能框架如图(2): 图(2)三、概要设计 主要结构体:void main() char ch; struct tm *t; time_t sec; load();/读取日程 ch=t; while(1) switch(ch) case -32: ch=getch(); switch(ch) case 72: lastyear(t); break;/按上,年份减1 case 80: nextyear(t); break;/按下,年份加1 case 75: lastmon(t); break;/按左,月份减1 case 77: nextmon(t); break;/按右,月份加1 break

4、; case f: search(t); break;/跳转日期 case t: sec=time(NULL);/获取当前系统时间 t=localtime(&sec);/将获取的秒数转换具体为时间 break;/按s,年份加1 case 1: add();/增加提醒 break; case 2: del();/删除提醒 break; case 3: mod();/修改提醒 break; case 4: srh();/查询提醒 break; case 5: srhjr(t);/查询节日 break; case 27: exit(0);/按ESC退出 check(t);/检查是否有提醒 mon_c

5、alendar(*t);/显示日历 ch=getch();/获取用户选择输入 主要函数流程图: (1)主体函数结构图(见图3-1): 图3-1 (2)闰年判断:用“400的整数倍”和“4的整数倍 且 不为百年”为闰年来判断闰年,不满足条件的则不为闰年。(见图3-2)图3-2(3)计算当日星期数:利用day_count函数,并通过计算得出当日的星期数(见图3-3)图3-3 图3-4(4)节日提醒系统:检测当日是否与节日文件中的节日日期相符合,若符合,则显示节日提醒。(见图3-4)(5)节日查询系统:输入节日名,与节日文件中的节日对照,若名称相符则显示节日时间(见图3-5) 图3-5(6)任务提醒

6、系统:创建任务提醒文件夹,保存任务提醒,并且通过函数调用实现任务提醒系统的增加、删除、修改、查询等功能。(见图3-6) 图3-6四、源程序代码 #include #include #include #include #define N 100struct remind struct tm t;/时间 char things100;/内容 jrN,rwN;/节日提醒 任务提醒int lenj;/节日提醒的个数int lenr;/任务提醒的个数void save()/保存信息 FILE *fp; if(fp=fopen(renwu.dat,wb)=NULL)/打开任务文件 printf(文件打开失

7、败!); exit(0); fwrite(&rw,sizeof(struct remind),N,fp);/写入文件 fclose(fp);/关闭文件 void load()/读取信息 FILE *fp; int i; jr0.t.tm_mon=0; jr0.t.tm_mday=1; strcpy(jr0.things,今天是元旦节); jr1.t.tm_mon=2; jr1.t.tm_mday=8; strcpy(jr1.things,今天是国际妇女节); jr2.t.tm_mon=2; jr2.t.tm_mday=12; strcpy(jr2.things,今天是植树节); jr3.t.t

8、m_mon=3; jr3.t.tm_mday=22; strcpy(jr3.things,今天是世界地球日); jr4.t.tm_mon=4; jr4.t.tm_mday=1; strcpy(jr4.things,今天是国际劳动节); jr5.t.tm_mon=5; jr5.t.tm_mday=1; strcpy(jr5.things,今天是儿童节); jr6.t.tm_mon=6; jr6.t.tm_mday=1; strcpy(jr6.things,今天是建党节); jr7.t.tm_mon=7; jr7.t.tm_mday=1; strcpy(jr7.things,今天是建军节); jr

9、8.t.tm_mon=9; jr8.t.tm_mday=1; strcpy(jr8.things,今天是国庆节); jr9.t.tm_mon=7; jr9.t.tm_mday=1; strcpy(jr9.things,今天是建军节); jr10.t.tm_mon=1; jr10.t.tm_mday=14; strcpy(jr10.things,今天是情人节); jr11.t.tm_mon=3; jr11.t.tm_mday=1; strcpy(jr11.things,今天是愚人节); jr12.t.tm_mon=3; jr12.t.tm_mday=5; strcpy(jr12.things,今

10、天是清明节); jr13.t.tm_mon=4; jr13.t.tm_mday=4; strcpy(jr13.things,今天是中国青年节); jr14.t.tm_mon=8; jr14.t.tm_mday=10; strcpy(jr14.things,今天是中国教师节); jr15.t.tm_mon=9; jr15.t.tm_mday=31; strcpy(jr15.things,今天是万圣节); jr16.t.tm_mon=10; jr16.t.tm_mday=25; strcpy(jr16.things,今天是感恩节); jr17.t.tm_mon=11; jr17.t.tm_mday

11、=1; strcpy(jr17.things,今天是世界艾滋病日); jr18.t.tm_mon=11; jr18.t.tm_mday=25; strcpy(jr18.things,今天是圣诞节); /初始化各种节日 lenj=19;/节日个数 if(fp=fopen(renwu.dat,rb)=NULL)/打开任务文件 fopen(renwu.dat,wb);/创建文件 else fread(&rw,sizeof(struct remind),N,fp);/读取文件 for(i=0,lenr=0;iN;i+) if(strlen(rwi.things)!=0) lenr+;/计算日程条数 f

12、close(fp);/关闭文件 int run_or_not(int year)/判断是否是是闰年 if(year%400=0)/400的整数倍为闰年,返回1 return 1; else if(year % 4 = 0 & year % 100 != 0)/4的整数倍 且 不为百年为闰年,返回1 return 1; else return 0;/不是闰年int day_count(int year,int month)/每个月的天数,此函数调用run_or_not switch(month) case 1: return 31; case 2: if(run_or_not(year)=0)

13、return 28; else return 29; case 3: return 31; case 4: return 30; case 5: return 31; case 6: return 30; case 7: return 31; case 8: return 31; case 9: return 30; case 10: return 31; case 11: return 30; case 12: return 31; default: return 0; void mon_calendar(struct tm t)/显示月历 int wd,max_day; int i; sy

14、stem(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(wd0)/如果星期是负数就加上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(日 一 二 三 四 五 六

15、n); for( i=0;iwd;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_RE

16、D | 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);int week(int year,int month,int day)/计算星期,此函数调用day_count int i; int week_year_1_1;/当年1月1日的星期数 int count_d

17、ay;/距当年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;itm_year,&t-tm_mon,&t-tm_mday); getchar();/消除上一步的回车符 if(t-tm_year9999 | t-tm_yeartm_mon12 | t-tm_montm_mdayday_count(t-tm_year,t-tm_mon) | t-tm_mdaytm_wday=week(t-tm_year,

18、t-tm_mon,t-tm_mday);/计算星期 t-tm_year-=1900; t-tm_mon-=1; void lastmon(struct tm *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);/计算上月的今天是星期几 void nextmon(struct tm *t)/下个月的月历 t-tm_mon+;/月份加一 if(t-tm_mon=12)/如果加到12月了,就变成1月 t-tm

19、_mon=0; t-tm_wday=week(t-tm_year+1900,t-tm_mon+1,t-tm_mday);/计算下月月的今天是星期几 void lastyear(struct tm *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);/计算上月的今天是星期几 void nextyear(struct tm *t)/下一年的本月月历 t-tm_year+

20、;/年份加一 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);/计算上月的今天是星期几 int checkjr(struct tm t,int f)/检查今天是否是节日 int i,flag; for(i=0,flag=0;ilenj;i+) if(jri.t.tm_mon=t.tm_mon & jri.t.tm_mday=t.tm_mday ) if(f=0)/没有任务提醒 需要清屏 system(cls); fl

21、ag=1;/标记已经清屏 printf(节日提醒:); puts(jri.things);/显示提醒 return flag; int checkrw(struct tm t)/检查是否有任务提醒 int i,flag; for(i=0,flag=0;ilenj;i+) if(rwi.t.tm_mon=t.tm_mon & rwi.t.tm_mday=t.tm_mday ) if(flag=0) system(cls);/清屏 flag=1;/标记已经清屏 printf(任务提醒:); puts(rwi.things);/显示提醒 if(flag=1) printf(nnn); return

22、flag; void check(struct tm *t)/检查是否有提醒 int flag1,flag2; flag1=checkrw(*t); flag2=checkjr(*t,flag1);/检查是否有提醒 if(flag1=1 | flag2=1) printf(nnnnn提醒完毕,回车返回。); getchar(); void add()/增加任务提醒 int i; system(cls);/清屏 i=lenr; printf(请输入提醒年月日(格式:2011,9,11):); scanf(%d,%d,%d,&rwi.t.tm_year,&rwi.t.tm_mon,&rwi.t.t

23、m_mday); getchar();/消除回车符 rwi.t.tm_year-=1900; rwi.t.tm_mon-; printf(请输入提醒内容:); gets(rwi.things); lenr+;/提醒数加1 save();/保存 printf(添加成功!回车返回。); getchar(); void del() /删除提醒 struct remind tp; int i; system(cls);/清屏 printf(_n); printf(编号 提醒日期 提醒内容n); for(i=0;ilenr;i+) printf(%-6d%-4d-%-2.2d-%-2.2d %sn,i,

24、rwi.t.tm_year+1900,rwi.t.tm_mon+1,rwi.t.tm_mday,rwi.things ); printf(_n); printf(请输入要删除的编号:); scanf(%d,&i); getchar(); while(i=lenr) printf(输入错误请重新输入:); scanf(%d,&i); rwi.things0=0;/删除 tp=rwi; rwi=rwlenr-1; rwlenr-1=tp;/和最后一个记录交换位置 lenr-;/任务个数减一 save();/保存 printf(_n); printf(编号 提醒日期 提醒内容n); for(i=0;ilenr;i+) printf(%-6d%-4d-%-2.2d-%-2.2d %sn,i,rwi.t.tm_year+1900,rwi.t.tm_mon+1,rwi.t.tm_mday,rwi.things ); printf(_

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

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