网学网计算机论文编辑为广大网友搜集整理了:免费毕业论文--万年历设计(一)绩等信息,祝愿广大网友取得需要的信息,参考学习。
目 录
1.引言 1
2.设计思想: 1
3.算法分析说明 2
4.要用到的函数和语句 2
5.流程图 3
6.设计分析 4
7.功能过程的推导: 5
8.测试结果 13
9.部分源代码 15
10.结束语 21
11.参考文献 22
万年历设计
摘要:
随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来的诸多方便。本设计主要是以单片机的C++语言进行软件设计,增加了程序的可读性和可移植性,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。系统通过纯DOS界面显示调试结果,所以运行操作比较简单。可以显示公农历日期、星期、节气,天干地支。是一个比较简易适合大众的万年历。
1.引言
目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,一个时间跨度较大的日历程序是很有参考价值的,本程序在这种背景下开始编辑,其中集成了国际通用日历和中国农历,此外还可以显示星期和加载了部分节日,显示本机准确日期等功能。
2.设计思想:
众所周知,地球绕太阳公转,公转一周历时365天5小时48分46秒。现代国际上普遍采用罗马历法,在罗马历法中人为地规定一年365天,也就是我们所说的平年,为了弥补每一年多出的5小时48分46秒,同时又规定4年中有一年是闰年,闰年为366天(平年的2月份为28天,而闰年的2月份为29天),这样4年有365*3+366=1461天,而地球绕太阳公转4周历时1460天23小时15分4秒,这样,每4年又产生了44分56秒的误差,为了减小影响,历法上又规定,每400年中只存在97个闰年,这样400年中共有365*400+97=146097天,而地球绕太阳公转400周历时146096天21小时6分40秒,较好的弥补了这一缺陷,这样几乎3300年才产生一天的误差。所以在历法规定:年份能被4整除的(即年份为4的倍数)都是闰年,不过,年份以“00”结尾的但年份不能被400整除的不是闰年,即公元100、200、300等都不是闰年,公元400、800、1200等是闰年。这一规定适合于公元后的任何年份,但是不适合于公元前的年份,同时现代历法也认为, 不存在公元0年,公元前1年的第二年为公元1年,并不存在公元0年。
实现年月日及时间的查询与修改,功能类似于Windows的时间和日期。同时具备了阴阳历的转换功能,能显示所要查日期的星期和一些纪念日等的功能。
3.算法分析说明
1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。
4.要用到的函数和语句
1.<stdio.h>,<conio.h>,<math.h> /*头文件*/
2.main() /*主函数*/
3.printf(),
4.scanf()
5.textbackground(),textcolor() /*定义背景和字体颜色*/
6.if 语句
7.for 语句
8.printstar() /*调用函数*/
9.int day_year() /*定义函数*/
10.goto /*循环语句*/
5.流程图
6.设计分析
如何计算某一天是星期几? —— 蔡勒(Zeller)公式
历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的是蔡勒(Zeller)公式。 即:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是