基于Java实现的(GUI)万年历

摘要

本课程设计的目的及意义是:通过代码实现将理论知识和具体实践相结合,巩固提高了对java的相关方法与概念的理解,使学生的发散思维及动手能力进一步加强,和对计算机的进一步理解。

本图像生成器含一个主体框架和三个面板:查看面板、日期面板、时钟面板,框架包含一个“查看”按钮和两个下拉式菜单:年份和月份下拉式菜单。

关键词:Java;GUI;Runnable

1 引言

  • 相关知识:线程、java标准类库、GUI程序设计
  • 作用:用于查看日期和时间,可查万年间的日期与星期的关系
  • 应用前景:万年历作为大众的日期查看软件,便于人们查看日期和时间,用法简单,设计新颖,适合各种用户,有广泛应用前景

2 设计任务与目的

通过本课程设计教学所要求达到的目的是:实现一个简洁的万年历,通过日期的处理,能按照用户的需求查看各年份的日期。

3 需求分析

3.1 系统的主要功能

  • 可以查看当前的年份、月份和日期
  • 增加了时间栏,便于用户查看当前时间
  • 能够查找1至9999年的日期与星期的关系

3.2 系统功能结构图

  • Clock类:实现了Runnable接口,运用线程,实现时钟的功能,包含了paint方法
    • Paint方法:从系统获取当前日期,以设置时钟的初始值
  • MainFrame类:作为主类实现了JFrame接口,调用Clock类,包含了MainFrame方法,Init方法,use方法,Resetday方法
    • MainFrame方法:定义各个参数,应用AWT的绘图功能,构建总体框架;获取所要查找的年份和月份,通过调用use方法和Resetday方法,实现“查看”按钮的功能,并得到所需结果
    • Init方法:调用系统的年份和月份,以设置查看面板和日期面板的初始值
    • use方法:确定所要查询的年月的第一天的是星期几
    • Resetday方法:进一步处理所查询的年份月份,确定查询月份的天数

4 系统设计

4.1 万年历

4.1.1 万年历

包含Clock类以及MainFrame类

4.1.2 相关类包

4.2 Clock类

实现了Runnable接口,运用线程,实现时钟的功能,包含了paint方法。

4.2.1 Clock方法

功能:从系统获取当前日期,以设置时钟的初始值。

4.3 MainFrame类

作为主类实现了JFrame接口,调用Clock类,包含了MainFrame方法,Init方法,use方法,Resetday方法。

4.3.1 MainFrame方法

功能:定义各个参数,应用AWT的绘图功能,构建总体框架;获取所要查找的年份和月份,通过调用use方法和Resetday方法,实现“查看”按钮的功能,并得到所需结果。

4.3.2 Init方法

功能:调用系统的年份和月份,以设置查看面板和日期面板的初始值。

4.3.3 use方法

功能:确定所要查询的年月的第一天的是星期几。

4.3.4 Resetday方法

功能:进一步处理所查询的年份月份,确定查询月份的天数;

5 系统运行

5.1 运行界面

用户可根据需要在下拉式菜单中选择所要查询的年份和月份,然后点击“查看”按钮:

6 结束语

通过本次课程设计,了解了课程设计的要求与方法,学会了程序设计基本步骤。进一步提高了团队合作的意识。

目 录 前言 3 1需求分析 3 1.1需求分析 3 1.2功能设计 3 2.概要设计 3 2.1程序设计思路 3 2.2程序运行界面 4 2.3流程图 5 3.各模块的功能及程序说明 6 3.1.初始化组件 6 3.2.初始化数据 6 3.3.绘制程序界面 7 4.测试分析 8 5.源程序清单 10 6.课程设计体会 18 参考文献 19 前言 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功能设计 本程序要构建的万年历程序,其功能有以下几个方面: (1)通过网页形式运行,实现图形界面。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。 (4)通过点击"更新"来刷新日历。 2.概要设计 2.1程序设计思路 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年, 该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天 数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到 要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再 使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数 。 2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7, 则为星期日。 3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以 前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一 日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4. 如果年份小于1582年则程序不予判断。 2.2程序运行界面 2.3流程图 3.各模块的功能及程序说明 3.1.初始化组件 import java.awt.*; import java.util.*; 3.2.初始化数据 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[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神仙别闹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值