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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(C语言编写方案万年历讲解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言编写方案万年历讲解.docx

1、C语言编写方案万年历讲解难易程度中等开发语言C开发工具操作系统:Windows XP或更高开发平台:VC+ 6.0关键字万年历C语言程序设计课程综合案例案例06 万年历6.1需求分析本系统提供给用户一个万年历查询平台,用来查询1900-2050年任何一个月的月历。在使用本系统的过程中,用户除了可以查看到公历数据外,还可以查看相应的农历数据。要查询的年份和月份可以从键盘直接输入,另外还可以输入1和2来增加和减少年份,输入3和4来增加和减少月份。6.1.1 功能概述如图6-1所示,系统主要功能有:1.显示当前日期和时间,以及星期信息。2.显示要查询的某年某月的月历,包括公历数据以及其相应的农历数据

2、,如:天干地支、生肖、节气等。3.要查询的年份和月份可以从键盘直接输入,也可以通过输入“1-4”四个数字键来增加减少年份和月份的方法查询。6.1.2 系统运行环境一、硬件环境处理器:Intel Pentium 166 MX或更高内存:32MB硬盘空间:1GB显卡:SVGA显示适配器二、软件环境操作系统:Windows 98/ME/2000/XP6.1.3 功能需求描述万年历查询平台为用户提供简单方便的日期查询功能,给出完整清晰的日期信息。本系统需要实现的基本功能如下:1.取得系统当前时间:取得系统当前的日期、时间及星期信息。2.判断某年是否为闰年。3.得到阳历某月的天数以及某年的总天数等信息。

3、4.判断某年月日为星期几。5.得到某个具体日期的农历数据,包括农历日期、天干地支、节气等信息。图6-1 万年历界面6.2总体设计6.2.1系统流程描述系统的流程描述如图6-2所示。6.2.2功能模块设计根据功能需求描述,定义如下函数:void TIME():取得系统当前时间;int leap(int year):返回阳历某年的天数,闰年返回366天,平年返回365天;int day(int month):返回阳历当月的天数;int get_solar_total(int solar_year, int solar_month):返回1900年01月01日到M年M月的天数;int get_wee

4、k(int solar_year, int solar_month):返回M年M月的1号为星期几;int get_lunar_info(int solar_year, int solar_month, Lunar_info *l_info,Chinese_era *china_era):返回农历信息;int out_chinese(Lunar_info *l_info,char *chinese_str):输出农历日期信息;void sub_menue():界面输出。6.2.3数据结构设计一、农历信息数据结构typedef struct int lunar_year; /农历年份 int lu

5、nar_month; /农历月份 int lunar_day; /农历日期 int current_mday; /本月天数 int leap_month; /本年闰月 int leap_flag; /闰月标记Lunar_info;二、公历信息数据结构typedef struct int era_year; /阳历年份 int era_month; /阳历月份 int era_day; /阳历日期Chinese_era; 三、数组用来定义相关的农历信息,如天干地支、节气、生肖、农历日和月等数据。1. 1900-2050年的农历数据int lunar_info= 0x04bd8,0x04ae0,0

6、x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2, 0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977, 0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970, 0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x

7、0c950, 0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557, 0x06ca0,0x0b550,0x15355,0x04da0,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0, 0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0, 0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x

8、0d558,0x0b540,0x0b6a0,0x195a6, 0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570, 0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0, 0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5, 0x0a950,0x0b4a0,0x0baa4,0x

9、0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930, 0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530, 0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45, 0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0, 0x

10、14b63;数据格式说明:数组中的每一个数字都是一个由5位十六进制数组成的数字, 例:04bd8。第0位表示当年有无闰月, 有的话为闰月的月份,没有的话,为0;第1、2、3位转换成二进制共12位,如:0100 1011 1101表示一年中的12个月分别有多少天(1为30天,0为29天);第4位表示闰月是大月还是小月,仅当存在闰月的情况下有意义。例如:1980年的数据是: 0x095b0其二进制为:0000 1001 0101 1011 0000 表示1980年没有闰月,从1月到12月的天数依次为:30、29、29、30、29、30、29、30、30、29、30、30。2.天干、地支、生肖、节气

11、等/*天干*/char Gan103=甲,乙,丙,丁,戊,己,庚,辛,壬,癸;/*地支*/char Zhi123=子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥;/*生肖*/char Animals123=鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪;/*24节气*/char solar_term245= 小寒,大寒,立春,雨水,惊蛰,春分, 清明,谷雨,立夏,小满,芒种,夏至, 小暑,大暑,立秋,处暑,白露,秋分, 寒露,霜降,立冬,小雪,大雪,冬至;/*农历日*/char chinese_day305= 初一,初二,初三,初四,初五,初六,初七, 初八,初九,初十,十一,十二,十三,十四

12、, 十五,十六,十七,十八,十九,廿十,廿一, 廿二,廿三,廿四,廿五,廿六,廿七,廿八, 廿九,卅十;char build45=光绪,宣统,民国,建国;/*农历月*/char chinese_month125=正,二,三,四,五,六,七,八,九,十,冬,腊;6.3详细设计6.3.1程序预处理头文件calendar.h包含上节所描述的所有数据。具体清单如下:#include#include#include #include#include#include#define YUANDAN 1typedef struct int lunar_year; /农历年份 int lunar_month;

13、/农历月份 int lunar_day; /农历日期 int current_mday; /本月天数 int leap_month; /本年闰月 int leap_flag; /闰月标记Lunar_info;typedef struct int era_year; /阳历年份 int era_month; /阳历月份 int era_day; /阳历日期Chinese_era; int s_year;int s_month;int s_day;static int t_year;static short today = YUANDAN;/*1900-2050年的农历数据*/int lunar_

14、info= 0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2, 0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977, 0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970, 0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x1

15、86e3,0x092e0,0x1c8d7,0x0c950, 0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557, 0x06ca0,0x0b550,0x15355,0x04da0,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0, 0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0, 0x096d0,0x04dd5,0x04ad0,0x0

16、a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b6a0,0x195a6, 0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570, 0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0, 0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5, 0x0

17、a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930, 0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530, 0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45, 0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b

18、255,0x06d20,0x0ada0, 0x14b63;/*天干*/char Gan103=甲,乙,丙,丁,戊,己,庚,辛,壬,癸;/*地支*/char Zhi123=子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥;/*生肖*/char Animals123=鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪;/*24节气*/char solar_term245= 小寒,大寒,立春,雨水,惊蛰,春分, 清明,谷雨,立夏,小满,芒种,夏至, 小暑,大暑,立秋,处暑,白露,秋分, 寒露,霜降,立冬,小雪,大雪,冬至;/*农历日*/char chinese_day305= 初一,初二,初三,初四,初五

19、,初六,初七, 初八,初九,初十,十一,十二,十三,十四, 十五,十六,十七,十八,十九,廿十,廿一, 廿二,廿三,廿四,廿五,廿六,廿七,廿八, 廿九,卅十;char build45=光绪,宣统,民国,建国;/*农历月*/char chinese_month125=正,二,三,四,五,六,七,八,九,十,冬,腊;6.3.2计算所查询日期的公历数据主要功能有:取得系统的当前日期、时间和星期信息;判断某年是否闰年并返回当年的天数;返回1900年01月01日到M年M月的天数;返回M年M月的1号为星期几。代码清单如下:#include calendar.h/*函数功能:取得系统当前时间 入口参数:无

20、 出口:系统当前时间 调用方式:如TIME() 返回系统当前时间*/void TIME() static char *week=日,一,二,三,四,五,六; time_t t; struct tm *tp; t=time(NULL); tp=localtime(&t); printf(%d年%02d月%02d日,tp-tm_year+1900,tp-tm_mon+1,tp-tm_mday); printf( %02d:%02d:%02d ,tp-tm_hour,tp-tm_min,tp-tm_sec); printf(星期%st ,weektp-tm_wday);/*函数功能:延迟刷新时间 入

21、口参数: n:秒出口: 对应秒数 调用方式:如buffer(2) 返回2秒后执行下一操作*/void buffer(int n) time_t start,end; start=time(NULL); end=time(NULL); while(end-startn) end=time(NULL);/*函数功能:返回阳历某年的天数,闰年返回366天,平年返回365天 入口参数: year:公历年出口: 对应天数 调用方式:如leap(2000) 返回366天*/int leap(int year) if(year%4=0&year%100!=0|year%400=0) return 366;

22、else return 365; /*函数功能描述:返回阳历当月的天数 入口参数: month:公历月出口: 对应天数 调用方式:如day(1) 返回31天*/int day(int month) if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) return 31; if(month=4|month=6|month=9|month=11) return 30; if(month=2&leap(s_year)=366) return 29; else return 28; /*函数功能:返回1900年01月01日到M年M

23、月的天数 入口参数: s_year,s_month:年份和月份 出口:M年M月-1900-01-01 调用方式:如get_solar_total(2000,01) 返回36555天*/int get_solar_total(int solar_year, int solar_month) int total; int temp_num; total=0; for (temp_num=1900;temp_numsolar_year;temp_num+) total+=leap(temp_num); for(temp_num=1;temp_numsolar_month;temp_num+) tot

24、al+=day(temp_num); return total;/*函数功能:返回M年M月的1号为星期几,以1900.01.01为基准1为星期日入口参数: s_year,s_month:年份和月份 出口: M年M月的一号是星期几 调用方式:如get_week(2000,01) 返回星期六*/int get_week(int solar_year, int solar_month) int week; int total; /* 1900.01.01为星期一*/ week=2; total=get_solar_total(solar_year, solar_month); total%=7; w

25、eek=week+total; week%=7; if (week=0) week=7; return week;6.3.3计算所查询日期的农历数据主要功能有:计算农历当年总天数,当月天数,判断某年是否存在农历的闰月及闰月的天数等,代码清单如下:/*函数功能:确定是否存在农历的闰月 入口参数: lunar_year :年份 出口: 是否存在闰月 调用方式:如get_leap_month(1982) 返回存在闰4月*/int get_leap_month(int lunar_year) return lunar_infolunar_year-1900&0xf;/*函数功能:若存在闰月,返回闰月的天数,30?29 入口参数: lunar_year:年

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

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