万年历应用小程序设计报告

合集下载

万年历课程设计报告报告

万年历课程设计报告报告

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的情况下,程序应给出错误提示信息,如下:输入的年份或月份不合法,请重新输入。

C语言万年历设计报告

C语言万年历设计报告

C语言课程设计报告题目:编写万年历系统年级:专业:班级:姓名:学号:目录第1章设计目的第2章需求分析第3章概要设计第4章源程序清单第5章执行结果1)登陆界面2)显示当前日月历3)显示具体日期信息第6章程序问题调试与课程设计心得第1章设计目的设计目的(实验要求):1.模仿现实生活中的挂历.2.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).3.当系统日期变到下一月时,系统自动翻页到下一月.第2章需求分析(1)程序运行时,首先给出菜单选项和输入提示:(2)用户可以通过主菜单选择不同选项。

输入1,通过输入当前日期可显示当前月的日历;输入2,通过输入具体日期(中间以空格分开)可显示该日具体信息;输入3,则退出查询系统。

第3章概要设计1.菜单选择界面可通过下面所示函数时现;主要思路:通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选项的功能实现。

闰年与平年的判断:代码如下:void main(){int year,month,day,a,b;while(1){printf("\n\n\n\n");printf("**********************************************************\n\n");printf(" * * \n");printf(" Welcome to enter calendar system \n");printf(" * * \n\n");printf("**********************************************************\n\n\n");printf(" 1 The month of current date 2 Date 3 Exit\n");printf(" please import your choose<1~3>,press Enter to define: ");scanf("%d",&b);switch(b){case 1:printf("\n Please import the year,month and day which you want tocheck,the year,month and day separation by blank space: ");scanf("%d%d%d",&year,&month,&day);a=x3(year,month,1);if(a==0){printf("Error!Please import again.\n");break;}yueli(year,month,day);break;case 2:printf("\n Please import the year,month and day which you want to check,the year,month and day separation by blank space: ");scanf("%d%d%d",&year,&month,&day);a=x3(year,month,day);if(a==0){printf("Error!Please import again.\n");break;}rili(year,month,day);break;case 3:exit(0);default:printf("Error!Please import again.\n\n");}}2.闰年的判断:计算所输入的年份是否可被4整除,若不能被整除,为平年。

(2023)C语言万年历设计报告(一)

(2023)C语言万年历设计报告(一)

(2023)C语言万年历设计报告(一)C语言万年历设计报告这份报告是针对 2023 年度 C 语言万年历设计而准备的。

设计目的该万年历的设计目的是为了让用户能够快速地查看任意公历年份的日历,同时还能够显示节气、万年历和日历信息。

设计思路该万年历的主要思路是通过用户输入任意公历年份,在程序中计算并显示该年的日历信息。

具体实现思路如下:1.用户输入年份信息。

2.程序判断该年份是否为闰年,并计算该年的总天数。

3.根据该年第一天是星期几,排列该年每个月的天数。

4.标记国历节日,如元旦、劳动节等。

5.计算并标记该年的节气,如立春、清明等。

6.计算并标记该年的重要万年历信息,如“三伏”、“四季”等。

设计要点在实现该万年历的过程中需要注意以下几个要点:1.为了代码的可维护性,尽量将每个功能模块拆分成函数的形式。

2.程序中需要处理日期的加减运算,可以使用标准库中的<time.h>。

3.节气和万年历的计算应该基于一些公式而不是硬编码。

设计结果经过实现,该万年历已经能够正常运行,并能够正确地显示各种信息。

用户输入任意公历年份后,程序可以迅速计算并展示该年的万年历、节气和重要节日信息。

结论通过本次 C 语言万年历的设计,我们不仅深入地了解了日期处理等相关知识,还提升了编码的能力。

在日常开发中,我们也可以根据这些基础知识,设计更为实用的应用程序。

可改进之处尽管该万年历已经能够满足基本的需求,但仍有一些改进空间。

例如:1.目前仅支持公历,可以添加其他历法的支持,如农历、阴阳历等。

2.界面可以进一步美化,增加更多交互性的组件,如按钮、下拉菜单等。

3.可以添加更多的功能,如查询特定日期的天气、星座运势等。

总结本次 C 语言万年历设计,使我们更好地理解了日期处理的相关知识,提高了我们的编码水平。

同时,我们也意识到在实际项目中,需要更多的功能和优化,才能更好地服务于用户的需求。

通过持续不断的学习和实践,我们可以不断提升自己的编程技能。

万年历设计报告

万年历设计报告

万年历设计报告1. 引言万年历是一种用于查询日期和显示重要节假日的工具,可以帮助用户快速了解任意日期所处的星期、月份、季节等信息。

在本设计报告中,我们将介绍一个基于Python语言的万年历设计方案。

该万年历设计方案使用了面向对象编程的思想,具有良好的可拓展性和易于维护的特点。

2. 功能需求本次万年历设计的功能需求如下:•显示指定年份的公历日历•查询指定日期的公历信息,如星期、星座、节假日等•支持农历查询,显示指定日期的农历信息•支持阳历和农历之间的转换•提供用户友好的命令行界面3. 设计思路基于以上功能需求,我们设计了以下几个核心类来实现万年历的功能:3.1 DateConverterDateConverter是一个日期转换的工具类,用于实现公历日期和农历日期之间的转换。

它包含了以下主要方法:•convert_to_lunar(year, month, day):将公历日期转换为农历日期•convert_to_solar(year, month, day):将农历日期转换为公历日期3.2 CalendarCalendar类负责输出指定年份的公历日历。

它包含以下主要方法:•display(year):输出指定年份的公历日历3.3 HolidayHoliday类负责确定指定日期是否为节假日。

它包含以下主要方法:•is_holiday(year, month, day):判断指定日期是否为节假日3.4 LunarCalendarLunarCalendar类负责显示指定日期的农历信息。

它包含以下主要方法:•display(year, month, day):输出指定日期的农历信息4. 实现结果4.1 用户界面我们使用命令行界面来与用户进行交互。

用户可以输入指令来查询对应的日期信息,例如:请输入指令(输入 help 查看帮助):cal 20222022 年日历如下:一月二月三月日一二三四五六日一二三四五六日一二三四五六...十月十一月十二月日一二三四五六日一二三四五六日一二三四五六4.2 功能展示以下是使用我们设计的万年历程序的一些功能示例:•查询公历日期请输入指令(输入 help 查看帮助):info 2022-01-01查询结果如下:日期:2022-01-01星期:六星座:摩羯座节假日:元旦节•查询农历日期请输入指令(输入 help 查看帮助):lunar 2022-01-01查询结果如下:日期:2022-01-01农历日期:腊月廿七农历年份:牛年•查询节假日请输入指令(输入 help 查看帮助):holiday 2022-05-01查询结果如下:日期:2022-05-01节假日:劳动节5. 总结本次万年历设计方案基于Python语言,使用了面向对象编程的思想,实现了查询公历和农历日期、显示公历日历以及查询节假日等功能。

用Java程序编写万年历程序的设计报告

用Java程序编写万年历程序的设计报告

用Java程序编写万年历程序的设计报告一、引言本文档是针对使用Java程序编写万年历程序的设计报告,旨在详细介绍该程序的设计思路和实现细节。

二、需求分析1.背景介绍在现代社会中,人们经常需要查看特定日期的日历信息。

为了方便用户直观地查看任意年月的日历信息,设计一个万年历程序,可以满足用户的需求。

2.功能需求万年历程序具备以下功能:●显示指定年月的日历信息●支持用户输入任意年月●能够高亮当前日期●具备简洁易读的界面设计3.性能需求●用户界面响应迅速,无明显卡顿●日历信息准确无误,支持闰年判断三、概要设计1.系统架构万年历程序采用MVC(Model.View.Controller)架构,将数据模型、用户界面和控制逻辑分离。

模型层:负责处理日期计算和数据存储视图层:负责展示日历信息,接收用户输入控制器层:负责协调模型层和视图层的交互2.关键模块●日历模块:负责日期计算,并提供接口给视图层调用●用户界面模块:提供用户交互界面,并接收用户输入●控制器模块:负责协调日历模块和用户界面模块四、详细设计1.日历模块设计●定义日期对象:包括年、月、日等属性●实现日期计算功能:如计算指定年月的第一天是星期几,判断某年是否为闰年等●提供接口给其他模块调用:如获取指定年月的日历信息2.用户界面设计●设计主界面:包括输入年月的文本框和显示日历信息的面板●设计按钮事件:响应用户输入的年月,调用日历模块计算并显示日历信息3.控制器设计●建立模型与视图之间的联系:将用户输入传递给日历模块,并将计算后的日历信息传递给视图层进行显示五、测试计划1.单元测试●对日历模块进行单元测试,测试日期计算功能的准确性●对用户界面模块进行单元测试,测试界面的交互和显示是否正常2.集成测试●测试控制器模块与日历模块、用户界面模块之间的功能协调是否正常六、附录1.附件●无2.法律名词及注释●无。

c语言万年历课程设计报告

c语言万年历课程设计报告

本次课程设计的主题为“C语言万年历”,旨在通过设计和实现一个简单的万年历程序,深入了解C语言程序设计的基本方法和技巧。

通过本课程设计的学习,我对C语言程序设计的各个方面进行了深入的了解和掌握,同时也提高了自己的编程思维和实践能力。

一、设计思路。

本次课程设计的主要功能是实现万年历。

在设计程序之前,我首先对万年历的基本功能进行了分析和思考,包括输入年月日,输出当月的日历和星期几等。

同时,考虑到用户友好性,我还增加了一些额外的功能,如输入错误时的提示,具体日历同时附带节假日等。

在分析了功能需求之后,我便开始考虑程序设计的具体实现。

首先,我选择了C语言作为实现程序的语言,因为C语言广泛应用于各类软件工程和移动计算等领域,适用性强,易于学习和掌握。

接着,我根据分析需求,确定了程序的基本框架和主要模块,包括输入年月日模块、求解该日是星期几模块、绘制当月日历模块和判断节日等模块。

二、程序实现。

在程序实现过程中,我遵循了模块化编程的原则,把整个程序划分成几个独立的模块,并在模块之间进行数据交互和函数调用。

具体来说,我分别实现了以下几个模块:1.输入年月日模块:该模块负责接收用户输入的年月日信息,并检查输入格式是否正确。

在输入不合法时,该模块能够给用户相应的提示信息,并要求用户重新输入。

2.求解该日是星期几模块:该模块根据给定年月日,求出该日是星期几。

该模块采用基姆拉尔森计算公式来实现。

3.绘制当月日历模块:该模块负责绘制给定月份的日历,并标注当日及节假日等信息。

在绘制日历时,该模块能够考虑各种特殊情况,如闰年、月初不为星期一等。

4.判断节日等模块:该模块能够根据给定年月日信息,判断当日是否为节假日、纪念日等特殊日子,如春节、圣诞节等,并在日历上作出相应标注。

以上四个模块构成了整个程序的主要功能。

在实现过程中,我还遇到了一些问题,如求解闰年的问题、绘制多行日历的问题等。

针对这些问题,我通过查找资料、借鉴其他同学的代码等方式进行了解决。

桌面万年历程序设计综合实践报告

桌面万年历程序设计综合实践报告

程序设计综合实践报告(C语言)项目名称:桌面万年历班级:姓名:学号:山东科技大学信息科学与工程学院2012年12月目录1. 项目概述 (3)1.1 需求陈述 (3)1.2 开发技术、环境与工具 (3)2. 软件需求 (3)2.1 功能性需求 (3)2.2 非功能性需求 (3)3. 软件架构设计 (3)4. 软件详细设计与实现 (3)4.1 主要模块的流程图 (3)4.2 核心代码 (4)5 总结与体会 (22)5.1遇到的问题与解决途径 (22)5.2 心得体会 (22)1. 项目概述1.1 需求陈述本项目是桌面小时钟的实现,表盘上可以实现星期、年月日、时分秒、生肖以及天干地支,右击可以打开延伸项目,包括日历、关于、表盘颜色设置、以及退出等选型,在日历表中可以实现从1901-2099年公历农历以及周几的查询,在日历表格中也可以进行换肤操作,同时还可以进行闹钟设定,通过“开启闹钟”“关闭闹钟”两个按钮来实现对闹钟开关的控制1.2 开发技术、环境与工具相关技术:1、(DrawClocktext)2、(DrawCalendar)2. 软件需求基于c语言利用vb2008实现改程序2.1 功能性需求可以实现时钟的消息处理(包括添加图片、背景色透明、更新时钟、绘制时钟、弹出菜单、处理菜单消息)、绘制时钟(包括年月日、时分秒)、万年历的背景的绘制、日历的绘制、以及按键消息。

2.2 非功能性需求编制闹钟,实现了闹钟的设定3. 软件架构设计1、日历绘制函数2、表盘函数的绘制3、按键函数的绘制4. 软件详细设计与实现1、通过GetLocalTime(&datetime);来实现获得当下时间,然后通过SunToLunar实现公历和农历日期的转化。

通过绘制表格,由GetDayOfWeek可以判断出某一天是周几,然后可以确定日历表中各个月份天数所在的位置,实现了万年历的基本功能。

其次,利用按键功能,实现了对年月日的的选择。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:万年历应用小程序一、题目陈述:设计一个万年历,要求具有显示年份、月份、日期的功能,与windowsXP 系统的日期与时间的界面和功能类似。

二、问题分析:万年历的界面可由内容面板类panel 和spinner 、textArea 、comboBox 等容器构成;布局可以由BorderLayout 、FlowLayout 、GridLayout 使其达到美观整齐的效果。

万年历功能的实现是通过添加相应的监听器和事件处理函数来完成的。

三、题目设计:(一)、类设计:1、 面板类CalendarDemo :嵌入显示月份的comboBox 和显示年份的spinner ,以及显示日期的textArea 。

2、 窗口类CalendarTest :镶入面板,设计窗口大小等属性,并包含主函数。

运行后显示该窗口。

3、 类与类之间的关系:(二)、界面设计:根据windows 的日期界面,利用JPanel 提供的BorderLayout 、FlowLayout ,将包含comboBox 和spinner 的panel1放在NORTH 区,包含textArea 的panel2放在CENTER 区。

CalendarDemo 类的对象panel 的titledBorder 设置为“日期”(三)、事件处理:匿名内部类事件监听器做事件处理:用comboBox实现月份变换改变日期变换的PopupMenuListener()、用spinner实现年份变换改变日期变换的ChangeListener()。

具体处理方式:(四)、主要的成员变量和成员函数:1、面板类CalculatorDemo:JComboBox comboBox;JSpinner spinner;JTextArea textArea;JPanel panel1,panel2;String[] monthsString[] date;int thisYear, thisMonth;Public void typeset() ;2、窗口类CalculatorTest:CalendarDemo panel;public static void main;四、源代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;public class CalendarDemo extends JPanel{JComboBox comboBox;JSpinner spinner;JTextArea textArea;JPanel panel1,panel2;String[] months = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月","十月", "十一月", "十二月" };String[] date = { "日", "一", "二", "三", "四", "五", "六" };int thisYear , thisMonth;public CalendarDemo(){super(new BorderLayout());setBorder(BorderFactory.createTitledBorder("日期"));comboBox = new JComboBox(months);spinner = new JSpinner(new SpinnerNumberModel(2006, 1980, 2099, 1));textArea = new JTextArea();panel1=new JPanel(new FlowLayout());panel2=new JPanel(new FlowLayout());panel1.add(comboBox);panel1.add(spinner);panel2.add(textArea);add(panel1,BorderLayout.NORTH);add(panel2,BorderLayout.CENTER);comboBox.setSelectedItem( "十二月");thisMonth =comboBox.getSelectedIndex()+1;comboBox.addPopupMenuListener(new PopupMenuListener() {public void popupMenuCanceled(PopupMenuEvent e) {}public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {thisMonth = comboBox.getSelectedIndex() + 1;typeset();}public void popupMenuWillBecomeVisible(PopupMenuEvent e) {}});spinner.setValue( 2006);spinner.addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {thisYear = Integer.parseInt(spinner.getValue().toString());typeset();}});textArea.setBorder(BorderFactory.createLoweredBevelBorder());textArea.setEditable(false);textArea.setTabSize(3);typeset();}public void typeset(){textArea.setText( "");int jan,march,may,july,augest,oct,dec;int feb=28;int april,june,sept,nov;int day,days,tempdays;int i,j,num=1;jan=march=may=july=augest=oct=dec=31;april=june=sept=nov=30;i=j=0;day=days=tempdays=0;thisYear = 2006;if(thisYear%4==0){if(thisYear%100==0){ if(thisYear%400==0) feb=29;else feb=28;}else feb=29;}else feb=28;tempdays=(thisYear-1980)/4*(365*3+366)+((thisYear-1980)%4)*365+29-feb;switch (thisMonth){case 1:days=jan;day=tempdays%7;break;case 2:days=feb;day=(jan+tempdays)%7;break;case 3:days=march;day=(jan+feb+tempdays)%7 ;break;case 4:days=april;day=(jan+feb+march+tempdays)%7 ;break;case 5:days=may;day=(jan+feb+march+april+tempdays)%7 ;break;case 6:days=june;day=(jan+feb+march+april+may+tempdays)%7 ;break;case 7:days=july;day=(jan+feb+march+april+may+june+tempdays)%7 ;break;case 8:days=augest;day=(jan+feb+march+april+may+june+july+tempdays)%7 ;break;case9:days=sept;day=(jan+feb+march+april+may+june+july+augest+tempdays)%7 ;break;case10:days=oct;day=(jan+feb+march+april+may+june+july+augest+sept+tempdays)%7;break;case11:days=nov;day=(jan+feb+march+april+may+june+july+augest+sept+oct+tempdays)%7 ;break;case12:days=dec;day=(jan+feb+march+april+may+june+july+augest+sept+oct+nov+tempdays)%7 ;br eak;}for(i=0;i<7;i++)textArea.append("\t"+date[i]);textArea.append( "\n");if(day<5){ textArea.append( "\t \t ");for(i=0,j=3;i<day;i++,j++)textArea.append("\t ");}else if(day==6){textArea.append("\t ");j=2;}else j=1;for(num=1;num<=days;num++,j++){if(num<10) textArea.append(" \t" + num);else textArea.append("\t" + num);if((j!=0)&&((j%7)==0)) textArea.append("\n");}textArea.append("");}}import java.awt.*;import javax.swing.*;public class CalendarTest extends JFrame{CalendarDemo panel;public CalendarTest(){super("Karen's Calendar");Container contentPane = getContentPane();panel = new CalendarDemo();contentPane.add(panel);setBounds(300, 200, 295, 240);setResizable(false);setVisible(true);}public static void main(String[] args){CalendarTest calFr = new CalendarTest();calFr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}五、收获体会:1、写监听器类的时候要覆盖它的全部父类函数,因为它是抽象类2、学会了使用java自带的库函数3、类与类之间数据通过类对象的传递4、尝试了创建事件监听器的4种方法。

相关文档
最新文档