C++课程设计万年历的设计论文

上传人:鲁** 文档编号:457448514 上传时间:2023-06-22 格式:DOC 页数:33 大小:889.03KB
返回 下载 相关 举报
C++课程设计万年历的设计论文_第1页
第1页 / 共33页
C++课程设计万年历的设计论文_第2页
第2页 / 共33页
C++课程设计万年历的设计论文_第3页
第3页 / 共33页
C++课程设计万年历的设计论文_第4页
第4页 / 共33页
C++课程设计万年历的设计论文_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《C++课程设计万年历的设计论文》由会员分享,可在线阅读,更多相关《C++课程设计万年历的设计论文(33页珍藏版)》请在金锄头文库上搜索。

1、C+ 课 程 设 计 报 告目 录一、课程设计题目.1二、课程设计目的.1三、需求分析及开发背景.1四、设计原理.1五、课程设计内容1. 程序功能描述.22. 算法实现描述.2六、程序操作界面.5七、流程图.6八、程序代码.7九、程序调试.23十、总结.28附: 程序使用说明书及工作列表.29一、 课程设计题目:万年历+记事簿+倒计时二、 课程设计目的 在完成C+程序设计课程学习后,通过本次教学实习,对所学专业知识进一步消化、理解并掌握,锻炼和提高综合运用所学知识解决实际问题的能力,熟悉编译工具的使用方法和环境,协调团队合作力,相互学习,相互帮助。对C+中时间函数博大精深有了更深刻的认识,了解

2、自己有哪些方面的不足之处,以便日后改进。另外,希望通过本次课程设计,增加对C+这门课的兴趣,促进学习的积极性,为尽早确定将来选择方向定下目标。三、 需求分析及开发背景 目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用

3、铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。四、 设计原理 面向对象的程序设计是现在最外流行的程序设计方法。面向对象的方法模仿人们建立现实世界模型的方法,认为客观世界是由各种各样的对象组成的,每个对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种各样的系统。利用人们对事物分类和抽象的自然倾向,引进了类的概念,具有封装性、继承性和多态性等特点。 在C+中,类是指由用户定义的一种抽象数据类型,将一组具有相关性的数据成员结合在一起,要使用类中所包含的数据时,必须通过有该类所提供的成员函数来存取。 数据封装是指将类中的数据成员以

4、其可被使用或不可被使用的方式进行分类,即有条件地限制类中部分或全部的数据成员被使用,在定义数据成员时在其前面冠以private、protected或public,分别表示私有的、保护的和公有的。因此,类是实现数据封装的一个有力方法,类的特性是实现了数据封装或数据抽象。 C+的流插入运算符“”是C+在类库中提供的,所有C+编译系统都在类库中提供输入流类istream和输出流类ostream。Cin和Cout分别是istream和ostream的对象。在类库中提供的头文件中已经对“”进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C+标准类型的数据。对流插入运算符“”进行重载后,在

5、程序中用“”不仅能输出标准类型数据,而且可以输出用户自己定义的类对象。五、 课程设计内容1、程序功能描述 阳历查询功能:程序开始默认当前系统时间月份的日历表,可单击按钮逐月前翻、后翻;也可直接输入指定年、月查看; 农历查询功能:当点击日历中对应阳历日期,可在顶部显示出当前选择日期的农历信息; 记事本功能:可在记事栏目中写入文本记事内容,可实现对记事时间与当前时间的时差计算,显示倒计时,并将记事内容保存在数据库中,以便随时查看; 记事查看功能:可在记事显示区域查看数据库中已经存放了的记事事件,实现翻页功能显示;并提取记事内容中的时间元素,进行时间差判断,显示倒计时差! 提示功能:对程序可能发生的

6、错误进行相关处理,以弹窗形式反馈给用户。2、算法实现描述【一】阳历相关 平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。由于公元1月1日设为星期六,故3月1日为星期三。注意这个“三”为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。 每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这

7、个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。) 每 4年(3个平年+1个闰年)共208周+5天。每百年共100*(208周+5天)-1天=5217周+5天 (整百年暂设为平年), 每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天(4个整百年只有一个闰年) 即400年一轮回!(原来万年历400年前是一家)【二】农历相关 节气的计算 先给节气进行编号,从近日点开始的第一个节气编为0,编号如下及其相应的月份如下: 0 小寒 腊月 6 清明 三月 12 小暑 六月 18 寒露 九月 1 大寒 腊

8、月 7 谷雨 三月 13 大暑 六月 19 霜降 九月 2 立春 正月 8 立夏 四月 14 立秋 七月 20 立冬 十月 3 雨水 正月 9 小满 四月 15 处暑 七月 21 小雪 十月 4 惊蛰 二月 10 芒种 五月 16 白露 八月 22 大雪 冬月 5 春分 二月 11 夏至 五月 17 秋分 八月 23 冬至 冬月 把当天和1900年1月0日(星期日)的差称为积日,那么第y年(1900年算第0年)第x 个节气的积日是 F = 365.242 * y + 6.2 + 15.22 * x - 1.9 * sin(0.262 * x) 这个公式的误差在0.05天左右。 朔日的计算 从1

9、900年开始的第m个朔日的公式是 M = 1.6 + 29.5306 * m + 0.4 * sin(1 - 0.45058 * m) 这个公式的误差在0.2天左右。 年份的确定 1864年1月0日是农历癸亥年,所以用当年减去1864,用10除得的余数作为年份天干的,用12除得的余数作为年份的地支,数字对应的天干和地支如下。 数字 0 1 2 3 4 5 6 7 8 9 10 11 天干 甲 乙 丙 丁 戊 己 庚 辛 壬 癸 地支 子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥 当年的1月0日换算为积日,可以用年份减去1900得到的年数被4整除,所得商数作为 y(D4),余数作为y(M4),

10、y(M4)为零的年份是公历闰年,积日是 D(1) = 1461 * y(D4) - 1 y(M4)不为零的年份是公历平年,积日是 D(1) = 1461 * y(D4) + 365 * y(M4) 月份的确定 计算前一年冬至的积日F(0),并用F(0)计算冬至所在的朔月m及其朔日M(0),就可以推算冬至的农历日期,冬至所在的农历月份总是十一月。计算下一个中气F(1)和下一个朔日M(1),如果F(1)M(1),那么该月就是上一个月的闰月,并把这个中气作为F(2),以后的中气、朔日和农历月份也这样确定。【三】算法及公式推导 某平年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%

11、7 某闰年3月1日星期几=(年+年/4+月星期表+日+2天)%7 某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。六、 程序操作界面界面(Windows 窗口应用程序): 当前时间显示(包含农历显示) 逐月查看按钮(向前、向后) 星期列表项 当月日历内容显示 指定日期跳转框及按钮 记事日期选择列表项 记事文本输入框及提交按钮 记事显示区及翻页按 获得各按钮命令返回参数 对文本中时间的读取转换 重置curYear、curMonth、curDay 农历转换实现 刷新并显示label内容

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号