c语言课程设计--万年历 - 副本.doc
上传人:yy****24 上传时间:2024-09-10 格式:DOC 页数:14 大小:1.9MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

c语言课程设计--万年历 - 副本.doc

c语言课程设计--万年历-副本.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

程序设计课程设计第页《程序设计基础(C/C++)》课程设计报告万年历系统学生姓名学号班级指导教师日期XXXX大学XXXX学院评分目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc327981599"一、设计目的PAGEREF_Toc327981599\h2HYPERLINK\l"_Toc327981600"二、设计要求PAGEREF_Toc327981600\h2HYPERLINK\l"_Toc327981601"三、问题分析PAGEREF_Toc327981601\h2HYPERLINK\l"_Toc327981602"四、总体设计PAGEREF_Toc327981602\h3HYPERLINK\l"_Toc327981603"五、详细设计PAGEREF_Toc327981603\h4HYPERLINK\l"_Toc327981604"六、调试与测试PAGEREF_Toc327981604\h4HYPERLINK\l"_Toc327981605"七、程序源代码PAGEREF_Toc327981605\h7HYPERLINK\l"_Toc327981606"八、心得体会PAGEREF_Toc327981606\h13HYPERLINK\l"_Toc327981607"九、参考文献PAGEREF_Toc327981607\h13RDXE一、设计目的1、复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、设计要求编写万年历系统要求模仿现实生活中的挂历。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。三、问题分析难点1:难点在于判断星期,但根据蔡勒公式,可以很容易地有年月日推断出星期:nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;w=nDay%7;其中year:要查询的年份nday:从该年的一月一日起到该天的天数w:得出的星期数,w==0表示星期天。在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过定长度输出日期,在遇到某天时星期六时,就换行输出,因此可以按照月历的格式输出。对于初始输入当前月历,可以通过<time.h>中的time和localtime函数取出系统时间进行初始化。time_ttimer;structtm*gmt;time(&timer);gmt=localtime(&timer);gmt就是一个时间结构体,可以从中取出年月日。难点2:闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。日期的查询,就是直接打印改天所在月份的月历。难点3:判断日期是否合法,可以先判断年月日是否有小于0的值,月和日是否有超出最大值12和31,如果通过此判断合法,再判断是否时闰年,如果时闰年,则判断二月份是否满足要求,闰年二月份不能超过29天,平年二月份不能超过28天。在查询过程中,如果发现输入不合法或者不满足输入要求,则要求重新输入。难点4:通过两个getch();捕获键盘的输入,将后一个getch()的返回值付给整型或字符型k,k为相应键的ascii值,判断ascii值,就可以知道时哪个键的输入。若捕获到某键的输入,则设置相应的年或月或日的值,再进行刷性输出,就可以实现日期的调整。四、总体设计功能模块月历显示日期查询日期判断日期调整闰年判断流程图程序进入显示当前时间1、日期显示2、日期查询3、日期调整4、帮助文件5、退出程序1、日期显示1、日期显示2、日期查询3、日期调整4、帮助文件5、退出程序五、详细设计主要函数:intrunYear(intyear);该函数判断某年是否是闰年,参数year表示要判断的年份,返回值1表示该年为闰年,0表示该年为平年。structtm*getDay();该函数用以取得系统的时间。该函数没有参数,返回值类型为structtm*,是一个包含时间的结构体。intdayExame(intyear,intmonth,intday);