Java课设之万年历

用Java语言编写一个万年历,满足以下要求:

(1)使用图形用户界面

(2)实现日期与星期的查询

package test;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class Test2 extends JFrame{
	//pUp面板用于盛放年、月和查询组件
	//pCenter用于盛放滚动组件
	JPanel pUp=new JPanel();
	JPanel pCenter=new JPanel();
	JLabel lblYear=new JLabel("年");                                                                                                                                                                                                                                                                                                                                                  
	JLabel lblMonth=new JLabel("月");
	JComboBox cbxYear=new JComboBox();
	JComboBox cbxMonth=new JComboBox();
	JButton btnQuery=new JButton("查询");
	//建立一个15行60列的文本区
	JTextArea jtaContent=new JTextArea(15,60);
	public Test2() {
		super("万年历");
		//在构造方法中添加各个组件
		pUp.add(lblYear);pUp.add(cbxYear);
		pUp.add(lblMonth);pUp.add(cbxMonth);pUp.add(btnQuery);
		pCenter.add(jtaContent);
		//采用边框式布局
		this.add(pUp,BorderLayout.NORTH);
		this.add(pCenter,BorderLayout.CENTER);
		for(int i=1900;i<2029;i++) {
			//为cbxYear添加一个可以选择的范围;
            //String.valueOf(i)将i由int变为String类型;
			cbxYear.addItem(String.valueOf(i));
		}
		//获取当前时间,将cbxYear默认设置为当前年份
		Calendar calendar=Calendar.getInstance();
		cbxYear.setSelectedItem(String.valueOf(calendar.get(Calendar.YEAR)));
		for(int i=1;i<=12;i++) {
			cbxMonth.addItem(String.valueOf(i));
		}
		cbxMonth.setSelectedItem(String.valueOf(calendar.get(Calendar.MONTH)+1));
		//“查询”按钮添加事件
		btnQuery.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//获取cbxYear中的值,将其转换为字符串并赋给y,将y转换为int型赋给yt
				String y=cbxYear.getSelectedItem().toString();
				int yt=Integer.valueOf(y);
				int mt=Integer.valueOf(cbxMonth.getSelectedItem().toString());
				int day=0;
				int totalDays=0;
				boolean isLeap;
				if(yt%400==0||(yt%4==0&&yt%100!=0))
					isLeap=true;
				else
					isLeap=false;
				//统计从1900年到指定年月(该月的前一个月)的总天数,1900年的第一天恰好为周一
				for(int i=1900;i

该程序中最核心的算法就是对年份月份的判断和最初日期的选择,如不同的年份,月份它们的天数不同。如1,3,5,7,8,10,12月均有31天,4,6,9,11月均有30天,平年2月有28天,闰年2月有29天。因为万年历中还要知道某一天具体是周几,所以我们要确定第一天是星期几,后面的日期依次填充即可。本程序的查询范围为1900年1月至2028年12月,故第一天是1900年1月1日,经查询当天是周一,故1900年1月2日为周二,1900年1月3日为周三,依次类推,可以知道后面所有日期具体是周几。

运行结果:

Java课设之万年历_第1张图片

Java课设之万年历_第2张图片

你可能感兴趣的:(java,eclipse)