万年历的源代码

import java.applet.Applet; import java.awt.*; import java.util.*; public class CalendarApplet extends Applet{ static final int TOP = 70; //顶端距离 static final int CELLWIDTH=50,CELLHEIGHT = 30; //单元格尺寸 static final int MARGIN = 3; //边界距离 static final int FEBRUARY = 1; TextField tfYear = new TextField("2004", 5); //显示年份的文本域 Choice monthChoice = new Choice(); //月份选择下拉框 Button btUpdate = new Button("更新"); //更新按钮 GregorianCalendar calendar=new GregorianCalendar(); //日历对象 Font smallFont = new Font("TimesRoman", Font.PLAIN, 15); //显示小字体 Font bigFont = new Font("TimesRoman", Font.BOLD, 50); //显示大字体 String days[] = {"星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六"}; String months[] = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月", "九月","十月", "十一月", "十二月"}; int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数 int searchMonth,searchYear; //查询的年份及月份 public void init(){ setBackground(Color.white); //设置背景颜色 searchMonth = calendar.get(Calendar.MONTH); //得到系统年份 searchYear = calendar.get(Calendar.YEAR); //得到系统月份 add(new Label(" 年:")); //增加组件到Applet tfYear.setText(String.valueOf(searchYear)); //设置文本域文字 add(tfYear); add(new Label(" 月:")); monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体 for (int i = 0; i < 12; i++) { monthChoice.addItem(months[i]); //增加下拉框选项 } monthChoice.select(searchMonth); //设置下拉框当前选择项 add(monthChoice); add(btUpdate); int componentCount=this.getComponentCount(); //得到Applet中的组件数量 for (int i=0;i totalWidth) { xNum = CELLWIDTH - MARGIN; yNum += CELLHEIGHT; } } } public boolean action(Event e, Object o){ int searchYearInt; if (e.target==btUpdate){ searchMonth = monthChoice.getSelectedIndex(); //得到查询月份 searchYearInt = Integer.parseInt(tfYear.getText(), 10); //得到查询年份 if (searchYearInt > 1581) { searchYear = searchYearInt; } repaint(); //重绘屏幕 return true; } return false; } private int getNumberRows(int year, int month) { //得到行数量 int firstDay; int numCells; if (year < 1582) { //年份小于1582年,则返回-1 return (-1); } if ((month < 0) || (month > 11)) { return (-1); } firstDay = getFirstDayOfMonth(year, month); //计算月份的第一天 if ((month == FEBRUARY) && (firstDay == 0) && !calendar.isLeapYear(year)) { return 4; } numCells = firstDay + daysInMonth[month]; if ((month == FEBRUARY) && (calendar.isLeapYear(year))) { numCells++; } return ((numCells <= 35) ? 5 : 6); //返回行数 } private int getFirstDayOfMonth(int year, int month) { //得到每月的第一天 int firstDay; int i; if (year < 1582) { //年份小于1582年,返回-1 return (-1); } if ((month < 0) || (month > 11)) { //月份数错误,返回-1 return (-1); } firstDay = getFirstDayOfYear(year); //得到每年的第一天 for (i = 0; i < month; i++) { firstDay += daysInMonth[i]; //计算每月的第一天 } if ((month > FEBRUARY) && calendar.isLeapYear(year)) { firstDay++; } return (firstDay % 7); } private int getFirstDayOfYear(int year){ //计算每年的第一天 int leapYears; int hundreds; int fourHundreds; int first; if (year < 1582) { //如果年份小于1582年 return (-1); //返回-1 } leapYears = (year - 1581) / 4; hundreds = (year - 1501) / 100; leapYears -= hundreds; fourHundreds = (year - 1201) / 400; leapYears += fourHundreds; first=5 + (year - 1582) + leapYears % 7; //得到每年第一天 return first; } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Keil5万年历源代码是一段程序代码,用于编写和实现一个可在Keil5软件中实现的万年历功能。万年历是一种可以显示任何年份和月份的日历,并且能够显示每个日期的详细信息,如星期几、节假日等。 关于Keil5万年历源代码的具体实现细节,可以考虑以下几点: 首先,该源代码需要定义一些变量和数据结构,用来存储和表示日期和日历信息。例如,可以设计一个日期结构体,包含年、月、日等字段。 其次,代码需要实现一个日期计算函数,用来计算某一年某一月的日历信息,包括每个日期对应的星期几、是否是节假日等。这可以通过使用日期和时间相关的库函数来实现。 然后,代码可以使用 printf 函数等来输出日历信息,使用户可以看到具体的日期和相关信息。也可以考虑使用图形界面或者文本界面来显示日历,并提供一些交互功能,如跳转到指定日期、切换月份等。 最后,为了提高代码的可读性和可扩展性,可以根据需要编写一些辅助函数,用来处理日期格式、计算星期几、判断节假日等。此外,还可以考虑使用注释来解释代码的作用和实现思路。 综上所述,Keil5万年历源代码是一段实现万年历功能的程序代码,通过使用日期和时间相关的库函数以及自定义的变量和数据结构,计算和显示特定年份和月份的日历信息。这段代码可以作为一个简单的日历功能程序的基础,可以根据实际需要进行拓展和优化。 ### 回答2: Keil5万年历源代码是为Keil开发工具编写的一个程序,它的功能是提供万年历的相关查询和显示功能。 源代码的主要部分包括了日期计算、数据显示和用户交互等模块。其中,日期计算模块负责根据用户输入的年份和月份,计算出对应的月历信息。数据显示模块将计算得到的月历信息进行格式化和展示,使用户可以清晰地看到每个月的日期、星期和节气等信息。用户交互模块允许用户通过键盘或鼠标进行操作,比如切换到上个月或下个月的月历。 源代码还包括了一些辅助函数和数据结构,用于支持日期计算和数据显示。比如,可以使用函数来判断某一年是否是闰年,以及计算某一年某个月的天数等。还可以使用数据结构来存储和管理计算得到的月历信息,以便于后续的显示和处理。 此外,源代码还可能包括了一些注释和错误处理机制,以提高程序的可读性和健壮性。注释用于解释源代码中的关键部分和算法,使其他开发人员能够更容易地理解和修改代码。错误处理机制包括对用户输入的合法性进行检查,以及对异常情况的处理,使程序在运行过程中能够更加稳定和可靠。 总的来说,Keil5万年历源代码是一个完整的程序,包含了各种功能模块、辅助函数和数据结构,通过编译和运行这个源代码,可以实现万年历的查询和显示功能。 ### 回答3: Keil 5万年历源代码是一套用于计算万年历的程序代码。它基于Keil 5集成开发环境(IDE),以C语言进行开发。 Keil 5万年历源代码主要包含了计算闰年、计算某年某月的天数、计算某年某月某日是星期几等功能。 首先,Keil 5万年历源代码会使用闰年判断函数,根据公历的规则来判断某年是否是闰年。闰年的判断规则按照如下方式进行计算:如果年份能被4整除但不能被100整除,或者年份能被400整除,则为闰年。 接着,代码中会使用函数来计算某年某月的天数。根据公历的规则,每个月的天数是固定的,但2月份的天数会受到闰年的影响。所以在计算特定月份的天数时,除了对2月份特别处理之外,其他月份的天数都可以直接确定。 最后,代码会通过一系列的计算,来确定某年某月某日是星期几。这里使用了蔡勒(Zeller)公式来计算。公式是根据基姆拉尔森(Kim Larsen)所提供的算法,能够根据日期来计算出星期几。 总的来说,Keil 5万年历源代码是一个方便、灵活、高效的程序,可以实现万年历的功能。通过适当的调用和计算,可以得到某个日期的具体信息,如是星期几、是哪一天等。这样的源代码可以在许多需要使用万年历功能的应用中得到应用,如日历软件、计算器等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值