万年历的课程设计报告及程序.pdf
《万年历的课程设计报告及程序.pdf》由会员分享,可在线阅读,更多相关《万年历的课程设计报告及程序.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1 第一部分:正文 一,课程设计名称:1.万年历 2.(a)(b)*二,使用工具软件:Microsoft Visual Basic 6.0 中文版。三,课程设计内容简介:(1)万年历的课程设计的基本结构流程:Main 函数 Yearshow 函数 Monthshow 函数 Getmonthweekday 函数 Getmonthday 函数 Isleap 函数 Getyeaweekday 函数 Getyearday 函数 2 从 main函数开始,比如输入 2001年,调用函数 yearshow,它是控制总循环次数 12 个月的,在 yearshow里有调用了以个函数是monthshow,是控
2、制每个月如何输出显示的,在这个函数里有调用了getmonthweekday函数,它是获得每个月一号是星期几的函数,此函数分为两部分,以 2000年 1 月 1 号是星期六为准;做十一次运算便可得知 2 月到 12 月各个月的 1 号为星期几。而在这个函数又调用了getyearday这个函数,是返回天数的函数,它有调用了 isleap函数,计算时平年还是闰年是,时闰年返回 366,平年返回 355。到这步开始就返回值了,首先 isleap告诉 getyeardays2000是闰年和平年,于是 getyeardays得到 366getyearweekday,getyearweekday就计算 su
3、m=366且返回(366+6)%7=2给 getmonthweekday,w=2,getmonthweekday中若计算 1月 1号则为星期二,2月-12月中如 3月则要加上以月和二月的天数载加上 2对 7取余数,这个数返回给monthshow,若这个数是 w=0;不输出空格,不等于 0就输出 w-1个空格,以便日期和星期对应,如此循环十二个月就计算完了,一边计算一遍显示。3(2)(a)图形的课程设计的基本结构流程 (3)(b)图形的课程设计的基本结构流程 Y N 键 盘 输 入int p 值 p0|p%2=0 main 二重 for 循环控制输出图形 结束 4 y N (4)运行环境:Win
4、32 Console Application 四,得意之处.1把程序分解成多个小函数,那么问题就分解成几个小问题。(1)int getYearWeekDay(int y)是给定年的一月一号是星期几。(2)getYearDays(int y)是从 2000 年到给定年每年各有多少天。(3)isLeap(int y)计算从 2000 年到给定年分别是平年还是闰年有 并把值反给函数 getyearday 和 getmonthday。键 盘 输 入m 值 m0|m%2=0 int y 二重 for 循环控制输出图形 结束 main 5(4)getMonthWeekDay(int y,int m)计算给
5、定年 2 月到 12 月每月一号是星期几(5)getMonthDays(int y,int m)控制给定年的各个月有多少天(6)yearShow(int y)用 for 控制十二个月的输出(7)monthShow(int y,int m)控制每个月的输出,并且有两个函数调用了它,分别是 getyearday 和 getmonthday 2 计算星期数的时候,2000 年的 1 月 1 号是星期六。若要查询的年大于 2000 年就用 for(i=2000;i y;i+)sum+=getYearDays(i);return(sum+6)%7;若要查询的年小于 2000 年就用 for(i=y;i
6、2000;i+)sum+=getYearDays(i);return(-sum%7+6)%7;五创意的技术实现(1)int isLeap(int y)return y%4=0&y%100!=0|y%400=0;/return y=366;/else return y=365;该小程序实现平年和闰年,有两个函数要调用它。(2)主要程序段是 monthshow 函数 int monthShow(int y,int m)6 int i=0,w;cout endl*m 月*endl;cout Sun Mon Tue Wed Thu Fri Satendl;w=getMonthWeekDay(y,m);
7、for(i=1;i=getMonthDays(y,m);i+)coutsetw(4)setfill()i;w+;w%=7;if(w=0&i getMonthDays(y,m)cout t endl;return 0;六课程设计中目前存在的问题 在编写程序的过程中遇到很多的问题,尤其是万年历,可以说我一点头绪都没有,如何显示平年或闰年,如何输出月,日,星期,最后查看了资料和上网查询才有了思路,到最后输出结果还是从在很多的问题,请求李龙飞的帮忙才能够正确输出结果,但最后不管输入哪年,输出的结果十二月 30 号后面总是有一个多余 0。这个问题好没有解决。在编写图形程序过程中也出现了问题,输出的图形不
8、正确,上半部分输出下半部分不能正确输出,或者*数和空格数不正确,上下两部分不能对齐,这些问题都是 for循环中的个数没有控制好,仔细考虑就可以把问题解决了,可以输出完整的图形。七设计实践过程中的自我感受。(1)当看到题目时觉得很难,上网查询以 2000年的 1 月 1 日星期六为准,计算各个月的星期数。(2)首先要有控制平年或闰年的函数isleap,一个控制月份的函数,yearshow函数,其次要有一个月份输出的函数,monthshow函数,知 7 道该月一号是星期几就能显示该月就,有了函数 getmonthweekday,而 getmonthweekday又需要一月一号的星期数和它前面的月的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 课程设计 报告 程序
限制150内