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型赋给ytString 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;elseisLeap=false;//统计从1900年到指定年月(该月的前一个月)的总天数,1900年的第一天恰好为周一for(int i=1900;i<yt;i++) {if(i%400==0||(i%4==0&&i%100!=0)) totalDays+=366;elsetotalDays+=365;}for(int i=1;i<=mt;i++) {switch(i) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;case 4:case 6:case 9:case 11:day=30;break;case 2:if(isLeap)day=29;elseday=28;}if(i!=mt)totalDays+=day;}//确定该月的第一天所在行前面有几个"\t"int t=(totalDays+1)%7;jtaContent.setText("日\t一\t二\t三\t四\t五\t六\n");for(int i=0;i<t;i++) {jtaContent.append("\t");}for(int i=1;i<=day;i++) {jtaContent.append(i+"\t");if((t+i)%7==0)jtaContent.append("\n");}}});}public static void main(String[] args) {Test2 t=new Test2();t.setSize(700, 400);t.setVisible(true);//将窗口设置为屏幕中间位置t.setLocationRelativeTo(null);t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
}
该程序中最核心的算法就是对年份月份的判断和最初日期的选择,如不同的年份,月份它们的天数不同。如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课设之万年历相关推荐
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- java 课设 商品库存管理系统
比较辛苦的java课设!写了蛮久的,战斗了好多个通宵. 下载https://download.csdn.net/download/qq_37871063/10297290 入门:JAVAFX+MVC+ ...
- 华南农业大学课设——数据结构课设、Java课设、操作系统课设
文章目录 缘起 大二上-数据结构课设(高校教学管理系统)-C++.Qt 视频演示 感想 大二下-Java课设(流程图绘制程序)-JavaFX 视频演示 感想 大三上-操作系统课设(模拟磁盘文件系统实现 ...
- 学生信息管理系统(成绩统计)Java课设
下载地址:学生信息管理系统(成绩统计)Java课设-Web服务器文档类资源-CSDN下载 ├── StudentInfo │ ├── bin │ │ ├── com │ │ │ ...
- JAVA课设单人版五子棋小游戏
内容介绍:该程序为Java课设的单人版五子棋小游戏,通过eclipse编辑,实现了动作事件的监听与处理,以及JavaSwing的界面编程. 编辑排行榜,包含局数,结果,步数,以及"关于我们 ...
- Java课设——ArxivHelper
项目地址https://github.com/PKUCSS/arxiv-helper How to run运行方式:java -jar arxiv-helper.jar Tips:We use pyi ...
- 100套java课设源码参考/毕设源码代码参考
引言:本人是一个Java 开发者,喜欢分享Java课设源码和代码,用于课程设计或者作业学习参考噢,开发一些有技术含量的Java web源码,主要的技术有JSP+Servlet,SSM/SpringBo ...
- JAVA课设:电子英汉词典(附源码+调试)
JAVA课设:电子英汉词典 电子英汉词典功能概述 整体要求:用图形用户界面实现,能够编辑词典库中的信息,能够实现英译汉,汉译英.(要考虑一词多义) 具体实现:1.用图形用户界面实现:2.能够实现英译汉 ...
- 【Java课设】--ATM取款机(Gui界面)
[Java课设]–ATM取款机(Gui界面)
最新文章
- SubLime Text 3 配置SublimeREPL来交互式调试程序
- (转)C# foreach 中获取索引index的方法
- AI如何提升10倍筛药效率?6月18日华为云携手中科院上海药物所揭开谜底
- 【英语学习】【WOTD】foray 释义/词源/示例
- 智能设备破解的那些事儿
- 公司顾问岗位职责_【热门推荐】泉州奥育特教育科技有限公司
- shell 选择对话框
- java regex 简单使用
- Linux卷没有权限,linux – Docker主机安装的卷权限
- 利用AOP+Swagger注解实现日志记录功能
- OKR助理源代码说明
- 完美卸载mac电脑里的软件及残留清理教程
- sessionid java_java如何获取sessionid
- 显示器刷新率30hz_如何使您的120Hz或144Hz显示器使用其广告刷新率
- NUnit的入门学习
- 模型加速之轻量化网络
- 美团餐饮娱乐知识图谱——美团大脑揭秘
- 16. 设计模式之契约原则:如何做好 API 接口设计?
- 原创游戏:血战太平洋1.1(可在Dev-C++上运行)
- elasticsearch(es)在用户画像业务上的应用【elasticsearch(es)性能调优】