万年历课程设计实验报告

合集下载

万年历课程设计报告报告

万年历课程设计报告报告

WORD格式可编辑面向对象课程设计题目万年历程序设计系部商学系专业信息管理与信息系统班级信息N122 学号学生姓名指导教师编写日期 2015.01.15第一章需求分析 (3)第二章概要设计 (4)第三章详细设计与编码 (6)第四章调试分析 (10)第五章用户使用说明 (13)第六章设计心得 (14)第一章需求分析如今的社会是一个信息的时代,随着电脑等科技产品在人们生活中占据着越来越重要的地位,人们就会越加的善加利用,这为我们的生活带来了极大的效率,同时计算机的普及更可以看出它所占的地位。

万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便,是一种比较实用的小工具。

我们每个人都可以在自己的个人电脑上进行制作,一方面不仅可以加强巩固我们对C#语言的学习,还可以通过自主的编程找到自身的缺点。

这对培养我们自身的创新能力和动手能力具有很大的作用。

第二章概要设计1.设计要求程序完成运行时,能过正确的表达出所输入年份的万年历。

2.总体设计<1>实现操作流程图<2>程序设计流程图第三章详细设计与编码<1>源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Linq;using System.Windows.Forms;using System.Globalization;namespace AllAgesCalendar{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e) {string intmonth =monthCalendar1.TodayDate.Month.ToString();string intdaty =monthCalendar1.TodayDate.Day.ToString();if (monthCalendar1.TodayDate.Month < 10){intmonth = "0" +monthCalendar1.TodayDate.Month.ToString();}if (monthCalendar1.TodayDate.Day < 10){intdaty = "0" +monthCalendar1.TodayDate.Day.ToString();}string s = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.TodayDate),GetMonth(monthCalendar1.TodayDate),GetDay(monthCalendar1.TodayDate)); label1.Text = monthCalendar1.TodayDate.Year + "年" + intmonth + "月" + intdaty + "日" + " " + s + " " + getReturnYear(monthCalendar1.TodayDate) + "年";label1.ForeColor = Color.Green;}private void label1_Click(object sender, EventArgs e) {}ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();public string GetYear(DateTime time){StringBuilder sb = new StringBuilder();int year = calendar.GetYear(time);int d;do{d = year % 10;sb.Insert(0, ChineseNumber[d]);year = year / 10;} while (year > 0);return sb.ToString();}private static string ChineseNumber = "〇一二三四五六七八九";public string GetMonth(DateTime time){int month = calendar.GetMonth(time);int year = calendar.GetYear(time);int leap = 0;for (int i = 3; i <= month; i++){if (calendar.IsLeapMonth(year, i)){leap = i;break;}}if (leap > 0) month--;return (leap == month + 1 ? "闰" : "") + ChineseMonthName[month - 1];}public static readonly string[] ChineseMonthName = new string[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };public string GetDay(DateTime time){returnChineseDayName[calendar.GetDayOfMonth(time) - 1];}public static readonly string[] ChineseDayName = new string[] {"初一","初二","初三","初四","初五","初六¨´","初七","初八?","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六¨´","廿七","廿八","廿九","三十"};public string GetStemBranch(DateTime time){int sexagenaryYear =calendar.GetSexagenaryYear(time);string stemBranch =CelestialStem.Substring(calendar.GetCelestialStem(sexagenar yYear) - 1, 1) +TerrestrialBranch.Substring(calendar.GetTerrestrialBranch(s exagenaryYear) - 1, 1);return stemBranch;}public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸";public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";public string getReturnYear(DateTime time){int sexagenaryYear =calendar.GetSexagenaryYear(time);string Tree =TreeYear.Substring(calendar.GetTerrestrialBranch(sexagenary Year) - 1, 1);return Tree;}public const string TreeYear = "鼠牛虎兔龙蛇马羊猴鸡狗猪";private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e){string strYesr = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.SelectionStart),GetMonth(monthCalendar1.SelectionStart),GetDay(monthCalendar1.SelectionStart));toolTip1.ToolTipTitle =monthCalendar1.SelectionStart.ToShortDateString();toolTip1.Show(strYesr + " " +getReturnYear(monthCalendar1.SelectionStart) + "年", monthCalendar1, monthCalendar1.Location, 5000);}}}第四章调试分析<1>程序运行测试①进入程序界面:。

万年历实验报告

万年历实验报告

万年历实验报告1. 引言日历是人们日常生活中必不可少的工具,用于追踪时间和日期。

在计算机科学中,开发一个能够准确显示日期和日历的程序也是非常重要的。

本实验的目标是设计并实现一个万年历程序,能够显示指定年份和月份的日历。

2. 实验目标本实验的目标是设计和实现一个简单的万年历程序,具体要求如下: - 能够根据指定的年份和月份显示该月的日历。

- 显示的日历应包含月份的名称、年份、星期几和日期。

- 如果输入的年份和月份超出了合法范围(如年份小于1或大于9999,月份小于1或大于12),程序应给出相应的错误提示。

3. 实验方法为了实现上述目标,我们采用了以下步骤:3.1 设计算法设计一个算法来确定给定年份和月份的开始日期,以及该月份的天数。

我们使用基于蔡勒公式的算法来计算开始日期,并根据每个月的天数确定日历的布局。

3.2 编写代码使用Python编程语言编写代码来实现万年历程序。

采用面向对象的编程方式,将日历的显示和计算逻辑封装到一个Calendar类中。

3.3 编写测试用例编写一系列测试用例来验证万年历程序的正确性。

测试用例包括输入合法年份和月份的情况,以及输入非法年份和月份的情况。

3.4 运行程序运行程序,并根据输入的年份和月份来显示相应的日历。

如果输入的年份和月份超出合法范围,程序应给出相应的错误提示信息。

4. 实验结果经过编写代码并进行测试,我们得到了一个能够正常显示日历的万年历程序。

以下是几个测试用例的示例结果:4.1 输入合法年份和月份输入年份为2022,月份为6的情况下,程序显示的结果如下:六月 2022日一二三四五六1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 304.2 输入非法年份和月份输入年份为0,月份为13的情况下,程序应给出错误提示信息,如下:输入的年份或月份不合法,请重新输入。

万年历实验报告

万年历实验报告

万年历实验报告万年历实验报告一、引言万年历是一种用来记录日期和时间的工具,它可以帮助人们追溯过去和规划未来。

在这个数字化时代,人们已经习惯了使用智能手机或电脑上的日历应用来管理时间。

然而,万年历的历史悠久,它的设计和功能一直在不断演进。

本实验旨在通过制作一个简单的万年历,探索其原理和功能。

二、实验材料和方法1. 材料:- 一张大纸板- 一支铅笔- 一把剪刀- 一些彩色纸张- 一些装饰用的贴纸或标签- 一把直尺2. 方法:- 使用直尺和铅笔在大纸板上绘制一个正方形,边长为30厘米。

- 将正方形分为7行7列,形成一个格子状的网格。

- 在每个格子中填写日期和星期几,从1号到31号。

- 使用剪刀将彩色纸张剪成小方块,每个方块代表一个特殊的日子(如生日、节日等)。

- 将彩色纸张粘贴在相应的日期上,并使用贴纸或标签进行装饰。

三、实验结果经过一番努力,我成功地制作了一个简单的万年历。

每个格子中都填写了日期和星期几,并且我还用彩色纸张标记了一些特殊的日子。

整个万年历看起来非常漂亮,装饰用的贴纸和标签增添了一些趣味性。

四、讨论万年历是人类文明的重要组成部分,它不仅帮助人们记录时间,还反映了人们对时间的认知和组织。

通过制作万年历,我更深入地理解了时间的概念和日期的变化规律。

我发现,每个月的天数不同,而星期几则是按照一定的循环顺序变化的。

此外,万年历还可以帮助我们规划未来。

通过标记特殊的日子,我们可以提前做好准备,如购买礼物、安排行程等。

而且,万年历还可以提醒我们重要的事项,如朋友的生日、会议的时间等。

它是我们生活中不可或缺的工具之一。

然而,制作一个完整的万年历并不容易。

除了填写日期和星期几之外,还需要考虑闰年的影响。

闰年是指能被4整除但不能被100整除的年份,或者能被400整除的年份。

在闰年中,2月份会多出一天,即29号。

这是为了与地球公转周期相适应,以保持日历系统的准确性。

五、结论通过本实验,我成功地制作了一个简单的万年历,并对时间的概念和日期的变化规律有了更深入的了解。

万年历实验报告

万年历实验报告

万年历实验报告万年历实验报告一、实验目的本次实验的目的是通过制作一个万年历来加深对时间、日期和闰年的理解,并提高对日历制作的实践能力。

二、实验材料1. 硬纸板2. 尺子3. 铅笔4. 剪刀5. 胶水6. 彩色纸7. 圆规三、实验步骤1. 使用尺子和铅笔在硬纸板上绘制一个正方形,边长为20厘米。

2. 将正方形分成7个等分,每个小方格的边长为2.86厘米。

3. 使用圆规在彩色纸上绘制一个直径为2.86厘米的圆。

4. 将圆剪下来,并在其上方留下一段直线。

5. 将圆粘贴在正方形的左上角小方格内,并将直线向下延伸至第二行小方格的中心。

6. 在正方形的左上角小方格内写下月份的缩写,如1月、2月等。

7. 在第二行小方格内写下1、2、3等日期。

8. 重复步骤6和步骤7,直到填满整个正方形。

9. 在正方形的左上角小方格内写下星期几的缩写,如周一、周二等。

10. 将整个正方形的边缘用彩色纸包裹,以增加美观度。

四、实验结果通过以上步骤,我们成功制作了一个简易的万年历。

每个小方格对应一个日期,上方的直线表示该月份的第一天是星期几。

通过翻阅这个万年历,我们可以轻松地查找到任意日期所对应的星期几。

五、实验心得通过这次实验,我深刻理解了时间和日期的关系,以及闰年的概念。

制作万年历的过程中,我不仅学会了使用尺子、铅笔、剪刀等工具,还提高了我的手工能力和空间想象力。

此外,通过实践,我对日历的结构和设计有了更深入的了解。

六、实验拓展1. 可以尝试使用不同颜色的彩色纸来制作万年历,增加视觉效果。

2. 可以尝试增加一些特殊日期的标记,如节假日、生日等。

3. 可以尝试制作一个更大的万年历,包含更多年份和月份的信息。

七、结论通过本次实验,我们成功制作了一个简易的万年历,并通过实践加深了对时间、日期和闰年的理解。

这个万年历不仅具有实用性,还提高了我们的手工能力和空间想象力。

通过实践,我们对日历的结构和设计有了更深入的了解。

万年历实验报告c

万年历实验报告c

万年历实验报告c万年历实验报告一、引言万年历是一种用来记录时间和日期的工具,它可以帮助人们更好地组织日常生活和工作。

本实验旨在探究万年历的原理和功能,并通过实际操作来验证其准确性和可靠性。

二、实验设备和方法1. 实验设备:万年历软件、计算机、手机等。

2. 实验方法:通过使用万年历软件和其他设备,观察和记录不同日期和时间的显示情况,并与实际情况进行对比。

三、实验结果和讨论1. 日期显示准确性在实验过程中,我们发现万年历软件能够准确地显示当前日期,并且可以根据需要切换到其他日期。

无论是过去的日期还是将来的日期,软件都能正确地显示出来。

这表明万年历软件具有很高的日期显示准确性。

2. 节假日提醒功能万年历软件还具有节假日提醒功能,可以在特定的节假日提醒用户。

我们设置了几个节假日,如春节、国庆节等,并观察软件是否能够准确地提醒。

结果显示,软件能够在相应的节假日前一天或当天提醒用户,这对于人们合理安排假期和活动非常有帮助。

3. 日期计算功能万年历软件还提供了日期计算功能,可以根据用户输入的日期和天数,计算出未来或过去的日期。

我们进行了一些日期计算的实验,结果发现软件能够准确地计算出目标日期。

这对于人们进行时间规划和安排非常方便。

4. 多时区显示功能在实验中,我们还测试了万年历软件的多时区显示功能。

通过设置不同的时区,我们观察软件是否能够准确地显示不同地区的时间。

实验结果显示,软件能够根据设置的时区自动调整时间显示,确保用户能够准确了解不同地区的时间。

5. 天气预报功能一些万年历软件还提供了天气预报功能,可以显示当前和未来几天的天气情况。

我们对软件的天气预报功能进行了测试,结果显示软件能够准确地显示天气情况,并且提供了详细的天气信息。

这对于人们出行和活动的决策非常有帮助。

四、结论通过本实验,我们验证了万年历软件的准确性和可靠性。

它能够准确地显示日期、提醒节假日、进行日期计算、显示多时区时间以及提供天气预报等功能。

万年历课程设计报告

万年历课程设计报告

课程设计报告万年历学生姓名:系别:自动化学院专业:测控技术与仪器班级:1102目录一、方案简介二、逻辑总框图三、设计所需的元件四、单元电路设计4.1、主控制系统4.2、时钟振荡电路4.3、复位电路4.4、DS1302时钟电路4.5、按键电路4.6、显示电路五、流程图与软件设计5.1、程序流程图5.2、软件设计六、个人心得一、方案简介:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。

主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作。

二、逻辑总框图:该电子万年历的总体设计框图如图(1)所示。

图(1)电子万年历总体设计框图三、设计所需的元件:元件名称型号数量/个单片机 AT89C52 1时钟芯片 DS1302 1晶振 12MHz 1晶振 32.768kHz 1电容 30pF 2电容 22uF 1按键开关 4电阻 10K 9滑动变阻器 1K 1电池 1.5V 4LCD LCD1602 1电源Vcc +5V 1导线若干四、单元电路设计:4.1、主控制系统单片机中央处理系统的方案设计,选用AT89C52单片机作为中央处理器,如图(2)所示。

该单片机除了拥有MCS-51系列单片机的所有优点外,内部还具有8K的在系统可编程FLASH存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗,还包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。

整个系统结构紧凑,抗干扰能力强,性价比高。

P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。

万年历设计报告

万年历设计报告

万年历设计1、设计目的:1、学会对单片机外围电路的使用。

2、熟悉使用proteus电路仿真软件。

3、熟悉使用KILE C语言编程软件。

4、了解数字万年历的工作原理及其组成。

2、设计任务:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能3、方案比较:用单片机设计电子时钟通常有两种方法:一是通过单片机内部的定时器或者计数器。

这种方法硬件线路简单,采用软件编程实现时钟计数,一般称为软时钟。

系统的功能一般与软件设计有关,通常用在对时间精度要求不高的场合;二是采用时钟芯片,它的功能强大,功能部件集成在芯片内部,自动产生时钟等相关功能。

硬件成本相对较高,软件编程简单。

通常使用在对时钟精度要求较高的场合。

本次设计采用第一种方法4、设计方案4.1 设计原理:本方案有的时间脉冲由单片机内部的定时器/计数器产生,所以硬件电路相对简单,由单片机产生时钟信号,通过程序分别产生年月日时分秒,同时可以区分闰年闰月,加送数码管显示,同时加上按键电路,可以对年月日时分秒进行调整,还有清零。

4.2硬件设计:图1如图1该电路由51单片机为核心,使用数码管显示,按键电路进行调整,考虑到单片机P0口的驱动能力不足的情况,使用上拉电阻提升驱动能力。

4.3软件设计:仿真开始,先初始化系统时间加送数码管显示,然后判断按键是否按下,如果按下,就表明要对时间进行调整,接下来则显示调整完的时间,如果没有按下,则显示初始时间。

5、设计结果图2如图2所示,数码管阵列第一列显示年月日,第二列显示时分秒,按键电路从上到下分别为复位,秒分时日月年的调整按键。

每当秒到60则分进位,同理,分满时进位,时满日进位,日满月进位,月满年进位,还可以区分闰年闰月。

6、总结和个人体验通过该课程设计很好的掌握了KILE,proteus两个和专业相关的软件,极大的拓宽了自己的知识宽度,期间产生的问题都与老师一起讨论得到了很好的解决,这对自己的问题阐述能力以及解决问题的能力都有很大的提升。

万年历课程设计报告

万年历课程设计报告

万年历课程设计报告课程设计报告课程名称程序设计基础专周题目年历显示姓名XX班级XXXXXX学号XX指导教师XXX设计时间2022-03-02至2022-03-06XX学院计算机工程系XX学院课程设计(论文)任务书一、课程设计题目年历显示二、课程设计工作自2022年03月02日至2022年03月06日。

三、课程设计地点:XXXX四、课程设计内容要求:1.本课程设计的目的1)增进对C语言各理论知识的熟练程度,2)加强算法设计的能力,为以后的程序设计与编写打下良好基础。

3)增加对C语言的熟练程度,提高程序设计的能力,并初步接触实用程序的编写。

2.课程设计的任务及要求题目:年历显示要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。

假定输入的年份在1940-2040年之间。

(2)输入年月,输出该月的日历。

(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。

3)课程设计编写要求1)详细清晰地描述个人的课程设计工作;2)要按照本模板的规格打印誊写课程报告;3)课程报告包括目录、内容提要、正文、课程设计体会、参考文献、附录等;4)课程报告装订按学校的统一要求完成4)评分标准:1)完成原理分析:20分;2)完成设计过程:40分;3)完成代码分析:20分。

4)个人创新工作:20分。

学生签名:XX2022年3月8日目录目录-1-正文-2-一、需求分析-2-二、个人工作-2-三、概要设计-2-流程图……………………………………………………………….-2-程序……………………………………………………………….-4-四、程序结果-7-课程设计体会-9-正文一、需求分析我选择课程设计题目:年历显示日常生活当中,我们查询日期很大程度上需要用到日历。

而手动去翻纸质日历查询速度慢,而且会让人看的眼花缭乱。

因此,我们可以编写一个程序来显示某一年的日历。

①程序要能够准确输出某一年的日历;②程序要能够准确的输出某一年的某一月的月历;③程序能够详细查询某一年某一天的日期;④程序能够循环输出。

万年历的实训报告模板

万年历的实训报告模板

摘要:本实训报告旨在通过对万年历的设计与应用,加深对时间管理、编程技术以及用户界面设计的理解。

通过实训,我们不仅学会了万年历的基本原理,还掌握了编程实现和用户体验优化的方法。

以下是对实训过程的详细记录和分析。

一、实训目的1. 理解万年历的基本原理和设计思路。

2. 掌握编程语言(如Python、Java等)在万年历开发中的应用。

3. 提升用户界面设计能力,优化用户体验。

4. 培养团队合作与沟通能力。

二、实训环境1. 操作系统:Windows 102. 开发工具:Python3.8、PyCharm3. 用户界面设计工具:Qt Designer4. 数据库:SQLite三、实训原理万年历是一种用于记录和显示日历的工具,它按照公历或农历的日期排列,方便用户查看和查询。

万年历的设计原理主要包括以下几个方面:1. 闰年判断:通过判断年份是否为4的倍数来确定是否为闰年,同时还需考虑能被100整除但不能被400整除的年份不是闰年。

2. 月份天数:根据月份和闰年/非闰年的判断来确定每月的天数。

3. 星期计算:根据年、月、日计算出星期几。

4. 农历转换:根据农历的算法将公历日期转换为农历日期。

四、实训过程1. 确定项目需求:根据实训要求,设计一个功能齐全、界面友好的万年历软件。

2. 设计软件架构:确定软件的模块划分,包括主界面、日期计算、农历转换等模块。

3. 编写代码实现:使用Python语言实现万年历的各个功能模块。

4. 用户界面设计:使用Qt Designer设计软件的用户界面,包括日期选择、查询结果展示等。

5. 数据库设计:使用SQLite数据库存储万年历的数据,包括日期、农历信息等。

6. 调试与优化:对软件进行调试,修复可能出现的问题,并优化用户体验。

五、实训结果1. 成功实现万年历的基本功能,包括公历和农历的日期转换、查询等。

2. 软件界面简洁美观,用户操作方便。

3. 数据库设计合理,保证了数据的完整性和安全性。

万年历课程设计报告

万年历课程设计报告

万年历课程设计报告一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及其换算方法。

2. 学生能够运用所学知识,独立制作并使用简易的万年历。

3. 学生了解我国农历与公历的区别及相互转换方法。

技能目标:1. 培养学生运用数学知识解决实际问题的能力,提高逻辑思维和推理能力。

2. 培养学生动手操作和团队协作能力,通过制作万年历的过程,锻炼实践操作技能。

情感态度价值观目标:1. 培养学生对时间管理的重视,树立珍惜时间的观念。

2. 增强学生对传统文化的认识,激发对中国古代天文历法的兴趣。

3. 培养学生积极探究、合作交流的良好学习态度,提高学习自信心。

课程性质分析:万年历课程属于数学与生活相结合的综合性课程,旨在让学生在实际问题中运用数学知识,提高解决实际问题的能力。

学生特点分析:考虑到学生所在年级的特点,课程内容应以直观、生动、有趣的方式进行设计,注重培养学生的动手操作能力和团队协作精神。

教学要求:1. 教师应充分准备教学资源,提供丰富的实例,引导学生主动参与学习过程。

2. 教学过程中,教师要以学生为主体,关注学生的个体差异,给予个性化指导。

3. 教师要关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。

二、教学内容1. 年、月、日的关系及其换算方法- 公历与农历的基本概念- 年、月、日的定义及其相互关系- 闰年和平年的判断方法2. 简易万年历的制作- 万年历的基本结构- 制作步骤及注意事项- 万年历的使用方法3. 我国农历与公历的转换方法- 农历与公历的对应关系- 农历日期的推算方法- 二十四节气的计算与应用教学大纲安排:第一课时:导入万年历的概念,介绍年、月、日的关系及其换算方法,讲解闰年和平年的判断方法。

第二课时:指导学生动手制作简易万年历,掌握万年历的基本结构和使用方法。

第三课时:学习我国农历与公历的转换方法,了解二十四节气的计算与应用。

教材章节:《数学》教科书:第四章 时间与测量,第四节 万年历的制作与应用。

万年历综合课程设计报告

万年历综合课程设计报告

目录目录 (1)第一章设计目的与要求 (3)1.1设计目的 (3)1.2设计要求 (3)第二章课程设计分析 (4)2.1设计背景 (4)2.2程序开发环境 (4)2.3课程设计主要内容 (4)第三章总体设计 (5)3.1整体流程图 (5)3.2功能模块图 (6)3.3各模块功能详细说明 (6)3.3.1 查询星期模块 (6)3.3.2 判断模块 (6)3.3.3 查询月历模块 (6)3.3.4 显示模块 (7)3.3.5 显示模块 (7)3.3.6 退出模块 (7)3.4各模块函数说明 (7)3.4.1查询星期模块程序: (7)3.4.2 判断模块程序 (7)3.4.3 查询月历模块 (7)3.4.4 显示模块程序 (9)3.4.4 重载模块程序 (10)3.4.4类成员与成员函数 (11)第四章程序调试与功能实现 (13)4.1系统使用说明 (13)4.2系统运行结果及运行截图 (13)4.2.1 系统总体选择图 (13)4.2.2 当前月份日历并可以翻页 (13)4.2.3 某一年的日历 (14)4.2.4输出所要查询的日期并可以翻页 (15)4.2.5 输出所查询的日期星座 (17)4.3主函数代码 (17)第五章课程设计心得与体会 (20)参考文献 (21)附录:源代码 (22)第一章设计目的与要求1.1 设计目的通过显示年日历程序的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。

通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C++面向对象程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了C++语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C++语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

万年历课程设计报告

万年历课程设计报告

课程设计(基于51单片机的电子万年历)题目:万年历课程设计院(系)成都农业科技职业学院信息技术分院专业应用电子技术班级14电子2班学生姓名黄攀学号************指导老师陈一虎、雷永辉日期2016年6月目录绪论 (Ⅰ)1项目概述(项目组成,功能) (1)1.1硬件部分 (2)1.2软件部分 (2)2项目原理分析 (3)2.1原理框图 (3)2.2原理分析 (3)2.3系统关键元器件选择 (4)2.4项目印制板设计过程心得 (5)3系统的软件设计与实现 (6)3.1程序流程框图 (6)3.2 子程序的设计 (7)4项目软硬件联调 (10)4.1印制板图 (10)4.2原理图 (10)4.3 DXP图 (11)4.4系统调试 (11)5总结 (12)参考文献 (12)信息技术分院课程设计–集成电路设计VHDL教程绪论电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。

数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。

钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。

可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。

所有这些,都是以钟表数字化为基础的。

因此,研究数字时钟及扩大其应用有着非常现实的意义。

本设计就是数字时钟简单的扩展应用。

1项目概述本设计基于AT89s51单片机,结合DS1302时钟芯片设计了一个数字万年历,显示部分用数码管动态显示,初始时间可由按键设置,此外还具有温度显示功能,掉电保护功能。

万年历还具有节能模式,具有很强的实用性。

关键词:单片机万年历数码管显示温度万年历设计项目组成与功能1.1硬件部分硬件部分主要由AT89S52单片机,LED显示电路,以及调时按键电路等组成。

C语言课程设计实验报告(万年历)

C语言课程设计实验报告(万年历)

C语言课程设计一、题目及功能描述题目:万年历的设计利用C语言设计出万年历,使其实现如下要求1、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。

假定输入的年份在1-9999年之间。

2、输入年月,输出该月的月历。

3、输入年月日,输出距今天还有多少天,是星期几,是否是公历节日。

:4、指定键盘的某些键,用于控制变换不同年、月、日的显示。

即:当前若正在显示2011年的年历,按下键盘“←”方向键后,年历变为2010年的。

二、使用的所有变量的说明变量说明:(以下均为整型变量)year 表示年份的变量month 表示月份的变量day 表示日期的变量select 表示菜单选择的变量i 表示月份的变量j 表示一个月中的某一天的变量sum 判断某天是一年中的第几天的变量number判断某天离公元1年1月1日还有几天的变量a[] 表示每月天数的数组变量year1 系统时间年份的变量month1 系统时间月份的变量day1 系统时间日期的变量三、程序清单及其说明#include "time.h" /*包含的头文件*/#include "stdio.h"#include "math.h"#include "windows.h"#include "conio.h"#define KEYNUMUp 0x48 /*宏定义*/#define KEYNUMDown 0x50#define KEYNUMLeft 0x4b#define KEYNUMRight 0x4d#define KEYNUMPageUp 0x49int eachyeartotal(int year,int month,int day); /*函数声明*/int counterdays(int year,int month,int day);int nowtime(int year,int month,int day);int week(int year,int month,int day);int maxDay(int year,int month);int isleap(int year);void whatweek(int year,int month,int day);void display(int year ,int month);void display2(int year,int month);void display3(int year,int month,int day) ;void setDay1(int year,int month,int day);void setDay2(int year,int month,int day);void setDay3(int year,int month,int day);void jieri(int month,int day);void display1(int year);void getmenu();void main() /*主函数*/{int year,month,day,select;while(1){getmenu();printf(" 请输入相应数字:"); /*菜单选择*/scanf("%d",&select);system("cls");switch(select){case 1: /*当选择为1时显示年历*/printf(" 年历显示:输入年(如2011):");scanf("%d",&year);if(year>0&&year<10000) /*显示年份从0-10000 */{display1(year); /*调用函数*/printf(" 提示按↑:上一年按↓:下一年按其他键:返回菜单\n\n");setDay1( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 2: /*当选择为2显示月历*/printf(" 月历显示:输入年月(如2011,6):");if(year>0&&year<10000&&month>=1&&month<=12){display2(year,month);printf(" 提示按←:上个月按→:下个月按其他键:返回菜单\n\n");setDay2( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 3: /*当选择为3时显示日期*/printf(" 日期显示:输入年月日(比如2011,6,23):");scanf("%d,%d,%d",&year,&month,&day);if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<=maxDay(year,month) ){display3(year,month,day);printf(" 提示按PageUp:前一天按PageDown:后一天按其他键:返回菜单\n\n");setDay3( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 4:exit(0);default: /*当输入其他数字时,输入无效,重新输入*/system("cls");printf(" 输入无效,重新输入!\n");}}}int isleap(int year) /*判断是否为闰年*/{if(year%4==0&&year%100!=0||year%400==0)return 1;elsereturn 0;int maxDay(int year,int month) /*每月的天数*/{int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; /*每个月中的天数*/ if(isleap( year))a[1]=29; /*闰年2月份有29天*/ return a[month-1];}int eachyeartotal(int year,int month,int day) /*判断某天是一年中的第几天*/ {int i,sum=0;for(i=1;i<month;i++)sum+=maxDay(year,i);sum+=day;return sum;}int week(int year,int month,int day) /*对天数进行判断确定是星期几*/ {int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7 ;return number;}void display(int year ,int month) /*输出年月*/{int max,number,i,j=1;max=maxDay(year,month);number=week(year,month,1);printf(" %4s %4s %4s %4s %4s %4s %4s\n","Sun","Mon","Tue","Wed", "Thu","Fri","sat");for(i=0;i<number;i++)printf(" "); /*1号前的星期补空格*/ while(j<=max){printf("%6d",j);if (i%7==6)printf("\n"); /* 每7格换一行*/i++;j++;printf("\n\n");}void display1(int year) /*输出年历*/{int i;printf("\n");for(i=1;i<=12;i++){printf("%d 年%d 月\n\n ",year,i);display(year,i);}}void display2(int year,int month) /*输出月历*/{printf("\n%d 年%d 月\n ",year,month);display(year,month);}void display3(int year,int month,int day) /*输出日历*/{whatweek( year,month,day);jieri(month,day);counterdays(year,month, day);}int counterdays(int year,int month,int day) /*判断今天距特定日期的天数*/{int year1, days0,days1,month1,days, day1;time_t timep;struct tm *p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year) ;month1=(1+p->tm_mon) ;day1=(p->tm_mday); /*获取系统时间year1、month1、day1分别为年、月、日*/days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,daydays=days0-days1; /*计算出两个日期之间的时间差*/printf("\n 今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}void whatweek(int year,int month,int day) /*判断是星期几*/{int number;number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); number=number%7 ;switch( number){case 0:printf( "\n %d年%d月%d日是星期日",year,month,day);break;case 1:printf( "\n %d年%d月%d日是星期一",year,month,day);break;case 2:printf( "\n %d年%d月%d日是星期二",year,month,day);break;case 3:printf( "\n %d年%d月%d日是星期三",year,month,day);break;case 4:printf( "\n %d年%d月%d日是星期四",year,month,day);break;case 5:printf( "\n %d年%d月%d日是星期五",year,month,day);break;case 6:printf( "\n %d年%d月%d日是星期六",year,month,day);break;default:system("cls");printf(" 出现错误!\n" );}}void jieri(int month,int day) /*判断是否公历节日*/{if(month==1)switch(day){case 1:printf(",这天是元旦");}if(month==2)switch(day){case 14:}if(month==3)switch(day){case 8:printf(",这天是妇女节");break;case 12:printf(",这天是植树节");}if(month==4)switch(day){case 1:printf(",这天是愚人节");}if(month==5)switch(day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if(month==6)switch(day){case 1:printf(",这天是儿童节");}if(month==7)switch(day){case 1:printf(",这天是建党节");}if(month==8)switch(day){case 1:printf(",这天是建军节");}if(month==9)switch(day){printf(",这天是教师节");}if(month==10)switch(day){case 1:printf(",这天是国庆节");}}void setDay1(int year,int month,int day) /*通过键盘“↑”“↓”控制年历的变换*/ { char k;getch();k=getch();switch(k){case KEYNUMUp: /*“↑”年份减小*/ if(year<2){system("cls");printf(" 警告!超出范围!\n");break;}year--;display1(year);setDay1(year,month,day);break;case KEYNUMDown:/*“↓”年份变大*/ year++;display1(year);setDay1(year,month,day);break;default:system("cls");}}void setDay2(int year,int month,int day) /*通过键盘“←”“→”控制月历的变换*/char k;getch();k=getch();switch(k){case KEYNUMLeft: /*“←”月份变小*/if(month<2){month+=12;year--;}if(year<1){system("cls");printf(" 警告!超出范围!\n");break;}month--;display2(year , month);setDay2(year,month,day);break;case KEYNUMRight:/*“→”月份变小*/if(month>11){month-=12;year++;}if(year<9999);month++;display2(year , month);setDay2(year,month,day);break;default:system("cls");;}}void setDay3(int year,int month,int day) /*通过键盘“PageUp”“PageDown”控制日期的变换*/{char k;getch();switch(k){case KEYNUMPageUp: /*“PageUp”日期变小*/ if(day<2){month--;day=maxDay(year,month);}if(month<1){month+=12;year--;}if(year<1){system("cls");printf(" 警告!超出范围!\n");break;}day--;display3(year , month,day);setDay3(year,month,day);break;case KEYNUMPageDown: /*“PageDown”日期变大*/ day++;if(day>maxDay(year,month)){day=1;month++;}if(month>12){month-=12;year++;}if(year<10000);display3(year , month,day);setDay3(year,month,day);break;default:system("cls");;}}{printf(" ************主菜单************\n\n");printf(" * 欢迎进入万年历系统*\n\n");printf(" * 1、年历显示*\n\n");printf(" * 2、月历查询*\n\n");printf(" * 3、日期查询*\n\n");printf(" * 4、退出系统*\n\n");printf(" ******************************\n\n"); }四、运行结果清单打开软件,进入如下菜单界面,输入数字进行选择1年历的显示(1)输入数字1进入年历的显示(2)输入年份2011,显示2011年的年历如下(3)按↑键盘显示上一年(2010年)的年历,显示如下(4)按↓键盘显示上一年(2012年)的年历,显示如下2、月历的显示(1)在菜单中选择2,进入月历的显示,输入2011,6,显示2011年6月份的月历,显示效果如下(2)按←键盘显示上一个月(5月)的月历,显示效果如下(3)按→键盘显示上上个月(7月)的月历,显示效果如下3、日历的显示(1)输入选择3进入日历的显示,如图输入2011,10,1显示这天的星期,是否为公历节日,距离现在还有多少天(2)按PagDown显示前一天的日历,显示如下(3)按PagUp显示后一天的日历,显示如下4 退出程序输入选择4,显示如下界面,按任意键退出程序五、总结和体会。

数字万年历实训报告总结

数字万年历实训报告总结

一、实训背景随着科技的飞速发展,电子产品的普及,人们对信息获取和展示的需求日益增长。

数字万年历作为一种实用性强的电子设备,其设计制作在当今社会具有重要意义。

为了提高自身动手能力、设计能力和创新思维,我参加了本次数字万年历实训课程。

二、实训目的1. 熟悉数字万年历的设计原理和制作流程;2. 掌握电子元器件的选择和电路设计;3. 提高编程能力和嵌入式系统应用能力;4. 培养团队合作精神和创新能力。

三、实训内容1. 硬件设计:根据数字万年历的功能需求,选择合适的电子元器件,如单片机、显示屏、按键等,并设计相应的电路图。

2. 软件设计:编写单片机程序,实现万年历的功能,包括日期显示、星期显示、闰年判断、节假日提醒等。

3. 系统集成:将硬件和软件进行集成,调试并测试系统功能。

4. 优化与改进:针对实际运行中存在的问题,对系统进行优化和改进。

四、实训过程1. 硬件设计阶段:在老师的指导下,我了解了数字万年历的基本硬件结构,并学会了如何选择合适的电子元器件。

根据功能需求,我选择了AT89C52单片机作为核心控制单元,并选择了1602液晶显示屏和按键作为输入输出设备。

通过查阅相关资料,我完成了电路图的设计。

2. 软件设计阶段:我学习了C语言编程,并掌握了单片机程序设计的基本方法。

在编写程序时,我实现了以下功能:(1)初始化:设置单片机的工作状态,初始化LCD显示和按键扫描。

(2)日期显示:读取实时日期,并在LCD上显示年、月、日。

(3)星期显示:根据日期计算出星期,并在LCD上显示。

(4)闰年判断:根据年份判断是否为闰年。

(5)节假日提醒:根据预设的节假日信息,在LCD上显示提醒信息。

3. 系统集成阶段:将硬件和软件进行集成,调试并测试系统功能。

在调试过程中,我发现了以下问题:(1)按键响应不及时:经过检查,发现按键扫描程序存在bug,导致按键响应不及时。

经过修改程序,问题得到解决。

(2)LCD显示不清晰:发现LCD显示模块的背光亮度不足,导致显示不清晰。

万年历课程设计实验报告

万年历课程设计实验报告

黄淮学院JAVA 课程设计报告题目:《万年历》课程设计学院:信息工程学院专业:计算机科学与技术班级:计科1101班指导老师:二0一三年六月目录前言 (2)1需求分析 (3)1.1需求分析 (3)1.2功能设计 (3)2.概要设计 (3)2.1程序设计思路 (3)3.流程图 (7)4.程序的主要类,和说明: (7)C (19)F (20)G (20)I (20)M (21)S (21)U (21)类分层结构 (22)接口分层结构 (22)前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了Java。

1997年J2SE1.1发布。

1998年J2SE1.2发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有Java ME,Java SE和Java EE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中Java Development Kit 简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

1需求分析1.1需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。

数学万年历实训报告

数学万年历实训报告

一、实训目的本次数学万年历实训旨在通过对万年历的制作,加深对日历编制原理和方法的理解,提高学生的动手能力和创新思维。

通过对万年历的编制,使学生掌握以下知识和技能:1. 理解日历的编制原理和方法;2. 掌握公历和农历的换算方法;3. 提高计算机编程和数据处理能力;4. 培养学生的创新思维和团队协作精神。

二、实训内容1. 万年历的基本原理万年历是一种记录日期、星期、节假日等信息的时间工具。

它以年为周期,将一年中的每一天都标注出来。

万年历的编制需要遵循以下原则:(1)公历:以太阳为参照物,以地球绕太阳公转一周为一年,一年分为12个月,平年有365天,闰年有366天。

(2)农历:以月亮为参照物,以月亮绕地球公转一周为一个月,一年分为12个月,平年有354或355天,闰年有384或385天。

2. 万年历的编制方法(1)确定起始年份:以一个闰年开始编制万年历,例如:2016年。

(2)确定起始月份:以一个农历月的第一天为起始月份,例如:2016年1月。

(3)计算闰年:根据闰年的规则,确定闰年的年份。

(4)计算农历月份:根据农历的规则,计算每个月的天数。

(5)计算公历月份:根据公历的规则,计算每个月的天数。

(6)标注节假日:根据国家法定节假日和地方习俗,标注节假日。

(7)绘制万年历:将计算出的日期、星期、节假日等信息绘制在万年历上。

三、实训过程1. 实训分组:将学生分为若干小组,每组负责编制一部分万年历。

2. 研究资料:查阅相关书籍、网络资料,了解万年历的编制原理和方法。

3. 编写程序:利用编程语言(如Python、Java等)编写万年历的编制程序。

4. 数据处理:对公历和农历数据进行处理,计算每个月的天数、节假日等信息。

5. 绘制万年历:根据计算出的数据,绘制万年历。

6. 团队协作:各小组之间互相交流、协作,确保万年历的编制质量和美观。

四、实训结果经过实训,我们成功编制出一本万年历。

万年历中包含了公历和农历的日期、星期、节假日等信息,具有以下特点:1. 日期准确:万年历中的日期、星期、节假日等信息准确无误。

课程设计实验报告(万年历)..

课程设计实验报告(万年历)..
int days1(int y,int m,int d);//计算该天时这一年的第几天
int days2(int y);//判断该年有多少天
int days3(int y);//计算从元年到该之年前总天数
int totaldays(int y,int m,int d);//计算指定日期距今天的天数
int yi();//实现万年历的时间校对功能
second=59;
minute--;}
if(minute==-1){
minute=59;
hour--;}
if(hour==-1)
hour=23;}
private:
int hour,minute,second;};
int yi(){
char a,i,temp[30];
int b,c,d,shi,fen,miao;
《C++语言程序设计》
课程设计报告
设计题目:简单万年历
专业:网络工程
班级:12级
姓名:杨茂林
学号:121124028
联系方式:13213501410
1.设计目标……………………………………………3
2.设计思想……………………………………………3
3.类及函数的实现……………………………………3
4.程序流程图…………………………………………3
cout<<setw(6)<<" "<<"╬★欢迎进入万年历的页面★╬"<<endl;
cout<<setw(6)<<" "<<"╬★★★★╬"<<endl;

万年历课程设计报告

万年历课程设计报告

课程设计报告课程:面向对象程序设计设计项目:万年历学号:姓名:班级:指导教师:1.设计内容:显示公元后任何年份的日历,日历以月份顺序排列,每月一星期顺序排列,类似于一般挂历上的格式。

2.设计目的与要求:达到熟练掌握c++语言的基本知识和技能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的设计问题。

3.工具与准备工作:在开始实验前,应回顾或复习相关内容。

需要一台计算机,其中装有Visual C++ 6.0 ,Visual C++ 2005,Dev-C++或MinGW Developer Studio等集成开发环境软件。

4. 系统分析与设计:万年历具有以下特点:平年365天(52周+1天),闰年366天(52周+2天),平年2月28天,闰年2月29天;每400年整一闰,或每4年且不为百年的一闰。

由以上特点以及1900年的元旦刚好是星期一这一已知条件,在程序中定义Date类的声明如下:class Data{private:int year;public:void getyear(); //提示用户输入想要查询的年份 int ioleapyear(); //判断该年是不是闰年int weekday(); //判断该年的元旦是星期几int monthday(int i); //该年每个月的天数void disp(); //显示结果。

};5.具体实现步骤:#include <iostream>#include <iomanip>using namespace std;class Data{private:int year;public:void getyear(); //提示用户输入想要查询的年份 int ioleapyear(); //判断该年是不是闰年int weekday(); //判断该年的元旦是星期几int monthday(int i); //该年每个月的天数void disp(); //显示结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<二>获得当月第一天是星期几?
1,生成一个格里高利日期对象
Calendar c =newGregorianCalendar() ;
2,把要求年的年,月,第一天放进去
c.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),1);
3,获得当前月第一天是当前周的第几天?
intbegin = c.get(Calendar.DAY_OF_WEEK);
(2)日期类面板的设计
<一>提供一个日期类的接口,为以后程序修改更新做基础。
publicinterfaceUIinterface {
publicvoidinitView() ;
publicvoidshowView() ;
publicvoidsetCalendar(intmaxDay,intcurrentDay,intbegin);
intresetYear=Integer.parseInt(boxYear.getSelectedItem().toString())-1;
if(resetYear<1){
resetYear=9999;//年小于1单击按钮实现跳转。
}
boxYear.setSelectedIndex(resetYear-1) ;
黄淮学院
JAVA课程设计报告
题目:《万年历》课程设计
学院:信息工程学院
专业:计算机科学与技术
班级:计科1101班
指导老师:
二0一三年六月
前言2
1需求分析2
1.1需求分析2
1.2功能设计3
2.概要设计3
2.1程序设计思路3
3.流程图5
4.程序的主要类,和说明:6
C17
F18
G18
I19
M19
S19
U20
1
1.1
本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。
2
本程序要构建的万年历程序,其功能有以下几个方面:
(1)实现图形界面,通过简单的单击按钮能实现查询日期操作。
(2)能以月历形式显示日期与星期。
(3)提供月份的下拉形式菜单来选择月份。
2.
2.1
(1)日期类的设计:
设定日期年的方法
cal.set(Calendar.MONTH,Integer.parseInt(month)-1) ;
updateCalendar();//每次修改月后,更新日期
}
日期类的更新日期方法
<一>获得当月最大的天是多少天。
intmaxDay=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
//给周日改变颜色
for(inti=0;i<labelDays.length;i+=7){
labelDays[i].setForeground(Color.red) ;
}
//给周六改变颜色
for(inti=6;i<labelDays.length;i+=7){
labelDays[i].setForeground(Color.green) ;
类分层结构20
接口分层结构21
前言
Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。
for(inti=0;i<7;i++){
labelDays[i].setText(logs[i]) ;
}
//初始化label的颜色
for(inti=7;i<labelDays.length;i++){
labelDays[i].setForeground(Color.black) ;
labelDays[i].setText("");
publicvoidchangeYear(String year){
cal.set(Calendar.YEAR,Integer.parseInt(year)) ;
updateCalendar();//每次修改年后,更新日期
}
设定日期月的方法
publicvoidchangeMonth(String month){
}
<二>设计日期类面板,继承JFrame并实现UIinterface接口。
添加按钮/下拉列表/标签等常用组件。实现窗口布局如下:
程序运行界面
(1)为按钮组件添加监听,以年为例说明。
buttonPreYear.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvent e){
}
//把日期添加到对应的label中
for(inti=1;i<maxDay;i++){
String str = i<=9?"0"+i:i+"";
action.changeYear(resetYear+"") ;
//调用changeYear方法更改年份,以实现更新年的目的
}
}) ;
(2)刷新标签页,使之显示当前日期下的年份日期:
publicvoidsetCalendar(intmaxDay,intcurrentDay,intbegin){
String [] logs =newString[]{"日","一","二","三","四","五","六"};
相关文档
最新文档