后得知方法,再对其代码做出修改,然后顺利进行。从中得到思考,设计需要对其作出反复测试与检验,了解问题,寻找方法,最后得出正确的代码。
参考文献
[1] 李刚.疯狂Java讲义.第四版.电子工业出版社.2018.
仿照如上格式,写不少于5条参考文献记录
,
1.选题背景
时间是人类生活必不可少的重要因素,如果没有时间的概念,社会将不会有所发展。在网络越来越发达的今天,人们通过网络接触的时间小程序越来越多,而一切小程序皆是为了人们而服务的,而日历则是记录时间的工具之一,翻看日历则是日历最重要的功能。此次选题则是针对日历做出日历的基本功能。
本程序是可以根据用户的选择来查看用户所需要知道的年月份。
2.开发技术概述
本程序采用Java,开发者应具有Java程序设计语言,Swing基本GUI组件,多线程,文件使用的基本知识和技能,程序初始显示出当前的日期,而后根据用户的选择来跳转至用户想要查看的年份与月份。
3.功能需求分析
用户可在年份与月份的列表框中选择出想要查看的年份与月份,程序可以根据用户的要求显示出相应信息。
(1)年份查询功能
以当前的年份为基础,将前20年的年份记录,和其后100年的年份,生成在年份查询列表中。即年份列表中收集了当前年份的前20年与后100年。
(2)月份查询功能
月份列表,包含一年具有的12个月份。
(3)查看功能
提供一个按钮,用来实现查看功能。程序初始运行,默认显示的是当前系统的年份和月份,用户需要选择要查询的日期,单击查看按钮,程序就会将默认的当前年份月份跳转至用户所要查看的年份月份。
(4)菜单及菜单项功能 页码
提供菜单的相关组件,菜单条上有2个菜单:1)编辑菜单,其包括一个菜单项――退出,可根据用户意愿来选择是否退出。2)关于菜单,其包括一个菜单项――我,单击显示作者信息。
(5)日期面板
用7*6的42个按钮作为组成面板的内容,第1行作为星期几的标题。
4.功能设计
(1)年份查询功能
通过组合框,显示年份列表信息,可以选择下拉列表选项实现对不同年份的选择。具体说明如下表所示。
表4-1 年份列表
序号
功能内容
控件或方法
对象名
备注
1
存放年份
JComboBox
YearBox
2
年份标签
JLabel
YearLabel
3
年份获取
getYear( )
now_year
获取的值为当前年份-1900
4
添加年份
addItem( )
YearBox
5
设置默认年份
setSelectedIndex( )
YearBox
(2)月份查询功能
通过组合框,显示月份列表信息,可以选择下拉列表选项实现对不同月份的选择。具体说明如下表所示。
表4-2 月份列表
序号
功能内容
控件或方法
对象名
备注
1
存放月份
JComboBox
MonthBox
2
月份标签
JLabel
MonthLabel
3
月份获取
getMonth( )
now_month
4
添加月份
addItem( )
MonthBox
5
设置默认月份
setSelectedIndex( )
MonthBox
(3)查看功能
给按钮添加监听器,当单击按钮时,执行查询,查询当前选择的年份月份的日历信息。具体说明如下表所示。
表4-3 按钮功能表
序号
功能内容
控件或方法
对象名
备注
1
查看按钮
JButton
button_ok
2
添加监听器
addActionListener
button_ok
(4)菜单及菜单项
首先创建菜单条,若干菜单,和若干菜单项。再把菜单项放到菜单上,把菜单放到菜单条上,把菜单条放到窗体上。给菜单项添加监听器,单击菜单项,执行相应的操作。具体说明如下表所示。
表4-4 菜单功能
序号
功能内容
控件或方法
对象名
备注
1
设置菜单
JMenu
bj1.bj2
2
设置菜单子项
JMenuItem
x1.x2
3
添加内容
add( )
bj1.bj2
4
设置监听器
addActionListener( )
x1,x2
5
弹出确认框
showConfirmDialog( )
this
JOptionPane类
6
弹出信息框
showMessageDialog( )
this
JOptionPane类
(5)日期面板
创建JPanel面板,设置网格布局方式,添加按钮控件显示日历信息。具体说明如下表所示。
表4-5 日期功能表
序号
功能内容
控件或方法
对象名
备注
1
设置按钮数组
JButton[]
button_day
2
设置布局
setLayout( )
place_day
网格布局与间隙
3
设置星期几布局
setText( )
button_week[]
4
转换整形
parseInt( )
year_sel
Integer类
5
设置日历时间
setTime( )
cal
GregorianCalendar类
6
判断闰年
isLeapYear( )
cal
GregorianCalendar类
7
获取星期几
getDay( )
firstDay
Date类
8
设置文本
setText( )
button_day[]
9
事件最初的对象
getSource( )
e
(6)窗体设计
自定义窗体类,实现日历基础面板的展示。具体说明如下表所示。
表4-6 窗体功能表
序号
功能内容
控件或方法
对象名
备注
1
设置标题名称
setTitle( )
this
2
设置窗口位置
setLocation( )
this
3
设置窗口大小
setResizable( )
this
4
自动设置长高度
pack( )
this
5
添加内容
add( )
place_ym,place_day,place_main,bar
6
设置关闭操作
setDefaultCloseOperation( )
ct
7
设置可见性
setVisible( )
ct
5.系统流程分析
本日历程序的功能是查看当前的年月份与跳转至用户想要的年月份。启动程序后,当前展示的界面则为目前的年月份,然后用户则可以选择想要查看的年份,然后可选择是否查看也可以继续选择月份,再确认查看。此步骤可重复操作,直至用户想要结束本程序,则可以选择编辑中的退出,当选择编辑中的退出后,会弹出确认对话框,再确认后即可退出程序,取消退出即可返回程序,继续查看内容。系统的流程图如下所示。




默认界面








确认 选择月份



确认





确认

图5-1系统总体设计流程图
6.界面设计
默认界面:运行Calendar.java程序后,得到默认界面。

图6-1默认界面
查看界面:点击查看按钮后,得到查看界面。

图6-2查看界面
退出确认界面:选择编辑的退出后,弹出确认对话框。

图6-3确认界面
7.系统测试
用户运行程序,通过选择年份与月份,点击查看得到目标界面。再点击编辑中退出按钮,确认退出。

图7-1月份选择

图7-2查看界面

图7-3确认界面
8.总结
本次系统设计总结,我们将对在做这次系统设计中遇到过的问题进行总结。本次设计遇到了以下问题:
(1)获取当前日期的方法中,获取年份的方法需要注意返回的值不为期望的值。
(2)年份的变量之间的类型转换,由于方法的变量要求,其类型的转换有点棘手。
而针对以上问题做出的解决方法为上网查看问题所在,最