java日历小程序课程设计.docx

上传人:王** 文档编号:1217949 上传时间:2024-06-05 格式:DOCX 页数:17 大小:116.56KB
下载 相关 举报
java日历小程序课程设计.docx_第1页
第1页 / 共17页
java日历小程序课程设计.docx_第2页
第2页 / 共17页
java日历小程序课程设计.docx_第3页
第3页 / 共17页
java日历小程序课程设计.docx_第4页
第4页 / 共17页
java日历小程序课程设计.docx_第5页
第5页 / 共17页
java日历小程序课程设计.docx_第6页
第6页 / 共17页
java日历小程序课程设计.docx_第7页
第7页 / 共17页
java日历小程序课程设计.docx_第8页
第8页 / 共17页
java日历小程序课程设计.docx_第9页
第9页 / 共17页
java日历小程序课程设计.docx_第10页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java日历小程序课程设计.docx》由会员分享,可在线阅读,更多相关《java日历小程序课程设计.docx(17页珍藏版)》请在优知文库上搜索。

1、湖南农业大学课程论文学院:信息科学技术班级:08级信息工程2班课程论文题目:JAVA日历小程序课程名称:JaVa程序设计(双语)评阅成绩:评阅意见:成绩评定教师签名:日期:年月摘要-1-关键词-1-1需求分析-1-1需求分析-1-1.2功能设计-1-2概要设计-1-2.1 开发环境-1-2. 2程序设计思路-1-2. 3具体功能设计-2-2. 4程序运行界面-2-1. 5程序流程图-3-3详细设计-3-2. 1初始化组件-3-3. 2初始化程序数据,绘制程序面板-3-4. 3显示日期的方法-6-3. 4点击按钮产生的效果-8-4程序测试-9-3.1 程序不能完全退出-9-4. 2下拉列表数据不

2、能返回-10-5心得体会-10-6参考文献-11-致谢-11-附:程序源代码-12-JAVA日历小程序学生:郭显勇、刘彦波、任涛湖南农业大学信息科学技术学院2008级信息工程2班学号200841843227、200841843228、200841843219摘要:万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查询,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。关键词:日历;swing;布局管理器;1需求分析1.1需求分析本程

3、序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。1.2功能设计本程序要构建的万年历程序,其功能有以下几个方面:1.实现图形界面。2 .能以月历形式显示日期与星期。工作日、双休日、当天分别以黑色、红色和蓝色显示。3 .支持用户通过下拉形式菜单来选择月份。4 .通过点击“现在日期”来刷新日历。2概要设计2.1开发环境开发平台:MicrosoftWindowsXPProfessionalServicePack2开发工具:EclipseSDK3.2.0+JDK1.6.0_022.2程序设计思路1.月份总天数的算法:直接根据month_int,即月份序号判断该月的天数。当month

4、_int等于2时,调用isLeapYear()方法判断是否为闰年。2 .网格内容算法:用dt.getDate()方法算出输出月份第一天为星期几,第一天的格子序号应该为7+第一天的星期序号。算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并从该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得O换行,即可完整的输出该月的日历。3 .日期颜色的算法:格子数从O开始,第一行为星期序号,则日期从第7格开始。根据格子序号i进行判断,当i模7余数为O或者6时日期为周末,置为红色;当i等于第一天的格子序号加上当前日期减一时,置为蓝色;其余日期为黑色。4 .如果年份小于20

5、01年大于2031年则程序不予判断。2. 3具体功能设计数据选择列表:年份选择列表、月份选择列表。点击日期跳转按钮,即在日历中显示用户选择日期数据;点击现在日期按钮,即在日历中显示当前日期数据。2.4 程序运行界面(图2.4.1:程序运行界面截图)2.5 程序流程图(图251:程序流程图)3详细设计2.6 初始化组件importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;3. 2初始化程序数据,绘制程序面板在初始化模块中,首先定义一个公共类CalenderTrain,它继承自JFranIe。AC

6、tionLiStener是一个接口,在实现此接口的类CaIenderTrain中,给需要关注其动作的组件跳转按钮button_jump和现在日期按钮button_today添加监听器(addActionListener(this),之后在事件处理方法publicvoidactionPerformed(ActionEvente)中,对每个事件进行不同处理。在这个类中,定义用到的标签、下拉列表框、按钮,放置面板。publicclassCalenderTrainextendsJFrameimplementsActionListenerJComboBoxMonth=newJComboBox();JCo

7、mboBoxYear=newJComboBox();JLabelYear=newJLabeI.(“年份:”);JLabelMonth=newJLabCI(月份;Datenow_date=newDate();JButtonbutton_day=newJButton49;JButtonbutton_jump=newJBUtton(日期跳转);JButtonbutton_today=newJButton(现在日期);intnow_year=now_date.getYear()+1900;intnow_month=now_date.getMonth();booleanbool=false;String

8、year_int=null;intmonth_int;JPanelpane_ym=newJPanel();JPanelpane_day=newJPanel();JPanelpane_parent=newJPanel();调用CaIenderTrain,设定面板标题为JAVA日历程序。只给窗口设置frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLC)SE)的话,点击关闭按钮,执行的其实只有把窗口隐藏动作,在任务管理器中可以看到进程仍在运行。于是加上后面的代码,确保点击关闭,程序直接退出SySteII)。面板的大小设置为不能变化。publicCalen

9、derTrainOsuper(z,JAVA日历程序);SetDefau1tCIoseOperation(DISPOSE_ON_CLOSE);addWindowListener(newWindowAdapterOpublicvoidwindowClose(WindowEvente)System,exit(0););SetResizable(false);设定年月时,规定年份的区间是当前年份的过去10年到当前年份的未来20年,月份区间为正常1-12月。由于在年份区间中,今年是所有年份中的第十一个,所以Year.SetSelectedIndexO指定要选择的列表项的整数,其中0指定列表中的第一项的参

10、数为10时,年份刚好是2011。Pane_ym即放置年月下拉列表框以及两个控制按钮的面板。给“跳转按钮”和“现在日期”按钮添加监听事件。for(inti=now_year-10;i=now_year+20;i+)Year,additem(i+“);)for(inti=1;i13;i+)Month,addltem(i+“):addItem(Objectanbject)为项列表添加项。仅当JConIbOBOX使用可变数据模型时此方法才有效。anObjeCL要添加到列表的Object)Year.SetSelectedIndex(10);button_jump.addActionListener(th

11、is);button_today.addActionListener(this);初始化日期按钮并绘制。由于每一月第一天不能确定,即所在列的位置(星期)不能确定,加上第一行的星期序号,画一个7*7网格布局管理器GridLayout0GridLayoUt把容器分成指定行和列的若干个网格,每个组件占一个网格,从左向右、从上到下依次把组件添加进来。所有的网格都是同样大小的。GridLayOUt(7,7)设置行列数为7*7。pane_day.SetLayout(newGridLayout(7,7);forGnti=0;i49;i+)button_dayi=newJButton(,z);pane_day

12、.add(button_dayi);)本程序中,对组件的布置、整形和定位授权给一个布局管理器,由布局管理器来负责。利用布局管理器可以做到:(1)计算一个容器的所选尺寸和最小尺寸(2)布置一个容器的组件。这里采用的是BorderLayout,按东南西北和中心将组件布置在容器的四周和中心。用SetCOntentPane()方法把容器置为JFrame的内容面板。用pack。方法调整此窗口的大小,以适合其子组件的首选大小和布局实现全部显示,然后用ShOW()方法显示出来。pane_parent.SetLayout(newBorderLayout();先把子容器pane_parent设置为东南西北中Se

13、tContentPane(pane_day);SetContentPane(pane_ym);pane_parent.add(pane_day,BorderLayout.SOUTH);pane_parent.add(pane_ym,BorderLayout.NORTH);把而容面板添加到子容器pane_parent中SetContentPane(pane_parent);把子容器添加到栏框中pack();调整此窗口的大小show();3. 3显示日期的方法根据bool的值,由if语句进行判断执行哪一显示日期的语句块,为true时,显示现在的时间;为false时,显示用户选定的时间。网格第一行,

14、即0至6号格子,内容固定为星期序号,即“星期日”到“星期六”。voidsetDay()if(bool)year_int=now_year+;month_int=now_month;)elseyear_int=Year.getSelectedItem().toString();month_int-Month.getSelectedlndexO;getSelectedIndex()指定当前选择的丽表项的整数,其中0指定列表中的第一项;如果没有选择任何项或者当前所选项不在列表中,则返回-1)intyear_sel-Integer,parselnt(year_int)-1900;Integer构造个新

15、分配的Integer对象,它表示String参数所指示的int值。使用与parselnt方法(对基数为10的值)相同的方式将该字符串转换成int值。Datedt=newDate(year_sel,month_int,1);GregorianCalendarcal=newGregorianCalendarO;cal.setTime(dt);Stringweek二星期日,星期一,星期二,星期三,星期四,星期五,星期六;intday-0;intday_week=0;for(inti=0;i7;i+)button_dayi.setText(weeki);)判断当前月份的天数,根据它来设定day的值,其中二月份要判断是否是闰年。因为第一行的星期序号已经占用了7个格子,所以day_wcck的值要加上7,即day_week=7+dt.getDay()。if(month_i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > Java

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!