C语言编写方案万年历.docx
《C语言编写方案万年历.docx》由会员分享,可在线阅读,更多相关《C语言编写方案万年历.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、难易程度中等开发语言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 系统运行环境一、硬件环境l 处理器:Intel Pentium 166 MX或更高l 内存:32MBl 硬盘空间:1GBl 显卡:SVGA显示适配器二、软件环境l 操作系统: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 g
4、et_week(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 系统流程图1:计算上一年份2:计算下一年份计算阳历信息计算农历信息输入年份输入1-2输入3-4输入
5、5输入月份界面输出1:计算上一月份2:计算下一月份6.2.3数据结构设计一、农历信息数据结构typedef struct int lunar_year; /农历年份int lunar_month; /农历月份int lunar_day; /农历日期int current_mday; /本月天数int leap_month; /本年闰月int leap_flag; /闰月标记Lunar_info;二、公历信息数据结构typedef structint era_year; /阳历年份int era_month; /阳历月份int era_day; /阳历日期Chinese_era; 三、数组用来定
6、义相关的农历信息,如天干地支、节气、生肖、农历日和月等数据。1. 1900-2050年的农历数据int lunar_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,0x049
7、70,0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,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,0
8、x0d950,0x05b57,0x056a0,0x096d0,0x04dd5,0x04ad0,0x0a4d0,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,0x075
9、52,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,0x0a950,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,0
10、x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,0x14b63;数据格式说明:数组中的每一个数字都是一个由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年没有闰
11、月,从1月到12月的天数依次为:30、29、29、30、29、30、29、30、30、29、30、30。2.天干、地支、生肖、节气等/*天干*/char Gan103=甲,乙,丙,丁,戊,己,庚,辛,壬,癸;/*地支*/char Zhi123=子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥;/*生肖*/char Animals123=鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪;/*24节气*/char solar_term245= 小寒,大寒,立春,雨水,惊蛰,春分, 清明,谷雨,立夏,小满,芒种,夏至, 小暑,大暑,立秋,处暑,白露,秋分, 寒露,霜降,立冬,小雪,大雪,冬至;/*农历日
12、*/char chinese_day305= 初一,初二,初三,初四,初五,初六,初七, 初八,初九,初十,十一,十二,十三,十四, 十五,十六,十七,十八,十九,廿十,廿一, 廿二,廿三,廿四,廿五,廿六,廿七,廿八, 廿九,卅十;char build45=光绪,宣统,民国,建国;/*农历月*/char chinese_month125=正,二,三,四,五,六,七,八,九,十,冬,腊;6.3详细设计6.3.1程序预处理头文件calendar.h包含上节所描述的所有数据。具体清单如下:#include#include#include #include#include#include#defin
13、e YUANDAN 1typedef struct int lunar_year; /农历年份int lunar_month; /农历月份int lunar_day; /农历日期int current_mday; /本月天数int leap_month; /本年闰月int leap_flag; /闰月标记Lunar_info;typedef structint era_year; /阳历年份int era_month; /阳历月份int era_day; /阳历日期Chinese_era; int s_year;int s_month;int s_day;static int t_year;s
14、tatic short today = YUANDAN;/*1900-2050年的农历数据*/int lunar_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,0x0497
15、0,0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,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,0x
16、0d950,0x05b57,0x056a0,0x096d0,0x04dd5,0x04ad0,0x0a4d0,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,0x0755
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编写 方案 万年历
限制150内