ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:143.04KB ,
资源ID:2727285      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2727285.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(java日历小程序专业课程设计.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

java日历小程序专业课程设计.doc

1、湖南农业大学课程论文学 院:信息科学技术 班 级:08级信息工程2班姓 名:郭显勇、刘彦波、任涛 学 号:41843227、41843228、41843219课程论文题目:JAVA日历小程序课程名称:Java程序设计(双语)评阅成绩:评阅意见:成绩评定老师署名:日期: 年 月 日目 录摘 要- 1 -关键词- 1 -1需求分析- 1 -1.1需求分析- 1 -1.2功效设计- 1 -2概要设计- 1 -2.1开发环境- 1 -2.2程序设计思绪- 1 -2.3具体功效设计- 2 -2.4程序运行界面- 2 -2.5程序步骤图- 3 -3具体设计- 3 -3.1初始化组件- 3 -3.2初始化程

2、序数据,绘制程序面板- 3 -3.3显示日期方法- 6 -3.4点击按钮产生效果- 8 -4程序测试- 9 -4.1程序不能完全退出- 9 -4.2下拉列表数据不能返回- 10 -5心得体会- 10 -6参考文件- 11 -致谢- 11 -附:程序源代码- 12 -JAVA日历小程序学 生:郭显勇、刘彦波、任涛湖南农业大学信息科学技术学院级信息工程2班学号41843227、41843228、41843219 摘 要: 万年历是一个强大日历系统,经过它能够实现对过去,现在和未来日期查询,经过在年份对话框中输入要查询年份,再对应在月份对应下拉菜单选择要查询月份,则可得到对应日历。本试验是对图形用户

3、界面,布局管理器综合利用,了解JAVA时间处理机制,编写独立运行窗口。关键词: 日历;swing;布局管理器; 1需求分析1.1需求分析本程序要求为: 1.使用图形用户界面; 2.本程序能够实现日期和星期查询。1.2功效设计本程序要构建万年历程序,其功效有以下多个方面: 1.实现图形界面。 2.能以月历形式显示日期和星期。工作日、双休日、当日分别以黑色、红色和蓝色显示。 3.支持用户经过下拉形式菜单来选择月份。 4.经过点击“现在日期”来刷新日历。2概要设计2.1开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2 开发工具:Ec

4、lipse SDK 3.2.0 + JDK 1.6.0_022.2程序设计思绪 1.月份总天数算法:直接依据month_int,即月份序号判定该月天数。当month_int等于2时,调用isLeapYear()方法判定是否为闰年。2.网格内容算法:用dt.getDate()方法算出输出月份第一天为星期几,第一天格子序号应该为7+第一天星期序号。算出输出月份第一天为星期几后,把该日期以前位置用空格补上,并从该日起一次输出天数直到月底,该月中天数加上该月一日为星期几数字再除以7得0换行,即可完整输出该月日历。3.日期颜色算法:格子数从0开始,第一行为星期序号,则日期从第7格开始。依据格子序号i进行

5、判定,当i模7余数为0或6时日期为周末,置为红色;当i等于第一天格子序号加上目前日期减一时,置为蓝色;其它日期为黑色。4. 假如年份小于大于2031年则程序不予判定。2.3具体功效设计数据选择列表:年份选择列表、月份选择列表。点击日期跳转按钮,即在日历中显示用户选择日期数据;点击现在日期按钮,即在日历中显示目前日期数据。2.4程序运行界面(图2.4.1:程序运行界面截图)2.5程序步骤图是否计算,绘制屏幕是否选择日期提交年月变更数据 程序初始化结束获取目前系统时间年份等数据开始(图2.5.1:程序步骤图)3具体设计3.1初始化组件import java.awt.*;import java.aw

6、t.event.*;import javax.swing.*;import java.util.*;3.2初始化程序数据,绘制程序面板在初始化模块中,首先定义一个公共类 CalenderTrain,它继承自JFrame。ActionListener是一个接口,在实现此接口类CalenderTrain中,给需要关注其动作组件跳转按钮button_jump和现在日期按钮button_today添加监听器(addActionListener(this),以后在事件处理方法public void actionPerformed (ActionEvent e) 中,对每个事件进行不一样处理。在这个类中,

7、定义用到标签、下拉列表框、按钮,放置面板。public class CalenderTrain extends JFrame implements ActionListener JComboBox Month = new JComboBox(); JComboBox Year = new JComboBox(); JLabel Year_l = new JLabel(年份:); JLabel Month_l = new JLabel(月份:); Date now_date = new Date(); JButton button_day = new JButton49; JButton but

8、ton_jump = new JButton(日期跳转); JButton button_today = new JButton(现在日期); int now_year = now_date.getYear() + 1900; int now_month = now_date.getMonth(); boolean bool = false;String year_int = null; int month_int; JPanel pane_ym = new JPanel(); JPanel pane_day = new JPanel();JPanel pane_parent = new JP

9、anel(); 调用CalenderTrain,设定面板标题为JAVA日历程序。只给窗口设置frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)话,点击关闭按钮,实施其实只有把窗口隐藏动作,在任务管理器中能够看到进程仍在运行。于是加上后面代码,确保点击关闭,程序直接退出system。面板大小设置为不能改变。public CalenderTrain() super(JAVA日历程序); setDefaultCloseOperation(DISPOSE_ON_CLOSE);addWindowListener(new WindowAdapter()

10、 public void windowClose(WindowEvent e) System.exit(0););setResizable(false); 设定年月时,要求年份区间是目前年份过去到目前年份未来20年,月份区间为正常1-12月。因为在年份区间中,今年是全部年份中第十一个,所以Year.setSelectedIndex()指定要选择列表项整数,其中 0 指定列表中第一项参数为10时,年份刚好是。Pane_ym即放置年月下拉列表框和两个控制按钮面板。给“跳转按钮”和“现在日期”按钮添加监听事件。for (int i = now_year - 10; i = now_year + 20

11、; i+) Year.addItem(i + );for (int i = 1; i 13; i+) Month.addItem(i + );/addItem(Object anObject)为项列表添加项。仅当 JComboBox 使用可变数据模型时此方法才有效。anObject- 要添加到列表 Object Year.setSelectedIndex(10); button_jump.addActionListener(this); button_today.addActionListener(this); 初始化日期按钮并绘制。因为每一月第一天不能确定,即所在列位置(星期)不能确定,加上

12、第一行星期序号,画一个7*7网格布局管理器GridLayout。GridLayout把容器分成指定行和列若干个网格,每个组件占一个网格,从左向右、从上到下依次把组件添加进来。全部网格全部是一样大小。GridLayout(7, 7)设置行列数为7*7。pane_day.setLayout(new GridLayout(7, 7); for (int i = 0; i 49; i+) button_dayi = new JButton( );pane_day.add(button_dayi); 本程序中,对组件部署、整形和定位授权给一个布局管理器,由布局管理器来负责。利用布局管理器能够做到:(1)

13、计算一个容器所选尺寸和最小尺寸(2)部署一个容器组件。这里采取是BorderLayout,按东南西北和中心将组件部署在容器四面和中心。用setContentPane()方法把容器置为JFrame内容面板。用pack()方法调整此窗口大小,以适合其子组件首选大小和布局实现全部显示,然后用show()方法显示出来。pane_parent.setLayout(new BorderLayout(); /先把子容器pane_parent设置为东南西北中setContentPane(pane_day);setContentPane(pane_ym);pane_parent.add(pane_day, Bo

14、rderLayout.SOUTH);pane_parent.add(pane_ym, BorderLayout.NORTH);/把内容面板添加到子容器pane_parent中setContentPane(pane_parent);/把子容器添加到栏框中pack();/调整此窗口大小show();3.3显示日期方法 依据bool值,由if语句进行判定实施哪一显示日期语句块,为true时,显示现在时间;为false时,显示用户选定时间。网格第一行,即0至6号格子,内容固定为星期序号,即“星期日”到“星期六”。void setDay() if (bool) year_int = now_year +

15、 ;month_int = now_month; else year_int = Year.getSelectedItem().toString();month_int = Month.getSelectedIndex();/getSelectedIndex()指定目前选择列表项整数,其中 0 指定列表中第一项;假如没有选择任何项或目前所选项不在列表中,则返回 -1int year_sel = Integer.parseInt(year_int) - 1900; /Integer结构一个新分配 Integer 对象,它表示 String 参数所指示 int 值。使用和 parseInt 方法(

16、对基数为 10 值)相同方法将该字符串转换成 int 值。 Date dt = new Date(year_sel, month_int, 1); GregorianCalendar cal = new GregorianCalendar(); cal.setTime(dt);String week = 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六 ;int day = 0; int day_week = 0; for (int i = 0; i 7; i+) button_dayi.setText(weeki); 判定目前月份天数,依据它来设定day值,其中二月份要判定

17、是否是闰年。因为第一行星期序号已经占用了7个格子,所以day_week值要加上7,即day_week = 7 + dt.getDay()。if (month_int = 0| month_int = 2| month_int = 4| month_int = 6| month_int = 7| month_int = 9| month_int = 11) day = 31; else if (month_int = 3| month_int = 5| month_int = 8| month_int = 10) day = 30; else if (cal.isLeapYear(year_se

18、l) day = 29; else day = 28;day_week = 7 + dt.getDay(); 绘制GridLayout网格内容。首先要依据选定月份第一天是星期几来确定我们绘制按钮起始位置。前段代码中day_week就是我们要绘制起始位置。对于那些没有数值能够显示按钮要置空。星期六和星期日以红色字体显示,工作日以黑色字体显示,当日以蓝色字体显示。对于没有日期数值显示按钮进行置空处理。Count值即网格内容,值从1一直到day(当月总天数)。int count = 1;for (int i = day_week; i day_week + day; count+, i+) if (

19、i % 7 = 0| i = 13| i = 20| i = 27| i = 48| i = 34| i = 41) if (i = day_week + now_date.getDate() - 1)button_dayi.setForeground(Color.blue);button_dayi.setText(count + ); else button_dayi.setForeground(Color.red);button_dayi.setText(count + ); elseif (i = day_week + now_date.getDate() - 1) button_day

20、i.setForeground(Color.blue);button_dayi.setText(count + ); else button_dayi.setForeground(Color.black);button_dayi.setText(count + );3.4点击按钮产生效果 对监听器关注按钮动作进行处理,点击“日期跳转”按钮时,将bool置为false,并调用setDay()方法重新绘制网格内容;点击“现在日期”按钮时,将bool置为true,得到今天日期,将月份置为目前月份,将年份置为目前年份。public void actionPerformed(ActionEvent e)

21、 if (e.getSource() = button_jump) bool = false;this.setDay(); else if (e.getSource() = button_today) bool = true;this.setDay(); Month.setSelectedIndex(now_month);Year.setSelectedIndex(10); 4程序测试4.1程序不能完全退出 点击窗口右上角关闭按钮,程序窗口消失,不过,查看任务管理器,能够发觉进程仍然在运行。(图4.1.1:程序不能完全退出)处理方法:将关闭部分代码修改为下段代码后,程序能够完全退出。setDe

22、faultCloseOperation(DISPOSE_ON_CLOSE);addWindowListener(new WindowAdapter() public void windowClose(WindowEvent e) System.exit(0);4.2下拉列表数据不能返回 运行程序,跳转日期后,再点击“目前日期”按钮,日期面板显示是目前日期数据,年份、月份下拉列表值还是停留在跳转时所选定值,不能正常返回。(图4.2.1:下拉列表数据不能返回)处理方法:把button_day处理事件,修改为下段代码else if (e.getSource() = button_today) boo

23、l = true;this.setDay(); Month.setSelectedIndex(now_month);Year.setSelectedIndex(10); 5心得体会经过短暂两周Java程序设计,使我又学到了很多知识,尤其是利用Java知识去处理实际问题能力又得到了很大提升。尽管所设计程序比较简单,不过程序中每个功效实现全部经过了自己一定认真思索。因为把所学知识做到很灵活利用在实际中,对于现在我还有一定难度,故而,在设计每个步骤中,全部会多多少少碰到部分问题,这就促进我去查阅多种资料,或请教同学,极大提升我专业素养,同时对在有些书上理论知识在实际利用,和应该注意问题有了比较深刻认

24、识。当然,仍然有些理论问题不是很好去利用,或是了解不深刻。这就使在实践中所设计程序有些功效不是自己所想那样完美。不过,既然发觉了问题所在,我就不会放弃,直至问题得四处理。这些也同时反应出了平时利用知识去实践这方面做太少。太缺乏经验。对所设计中将所面临问题认识不够。是Java课程设计让我认识到了这些问题存在。同时给我提供了去面对这些问题平台。也使我充足认识到在以后也应该怎样去实践,怎样去学习一门计算机语言,和怎样去利用这门语言去处理实际问题等等。总而言之,在经过这次Java课程设计,使我认识到了自己很多缺点,同时,也是我学到新知识和新方法一个机会。这给我在以后继续学习好这门语言指明了方向。6参考

25、文件1.曾令明 索 望 甘 刚 宋 波,Java程序设计教程,西安电子科技大学出版社,.82.孙全党 王吴迪 赵枫朝,Java程序设计应用教程,电子工业出版社,.23.赵玉阳,Java从入门到精通,清华大学出版社,.8致 谢 本设计及汇报是在指导老师张老师指导下完成,所此在此衷心感谢张老师悉心教育和耐心讲解。同时还要感谢在设计程序和汇报期间给我帮助和启示同学,让我了解了很多自己没有注意或忽略地方,期望我们一起分享成功喜悦。附:程序源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.

26、*;public class CalenderTrain extends JFrame implements ActionListener JComboBox Month = new JComboBox(); /月份下拉列表框JComboBox Year = new JComboBox(); /年份下拉列表框JLabel Year_l = new JLabel(年份:); /定义标签JLabel Month_l = new JLabel(月份:); /定义标签Date now_date = new Date(); /获取今天日期JButton button_day = new JButton4

27、9; /定义一个数组用来存放日期JButton button_jump = new JButton(日期跳转); /现实选择日期JButton button_today = new JButton(现在日期); /显示今天日期按钮int now_year = now_date.getYear() + 1900; /获取年份值int now_month = now_date.getMonth(); /获取月份值(目前月份-1)boolean bool = false;String year_int = null; /存放年份int month_int; /存放月份JPanel pane_ym =

28、 new JPanel(); /放置下拉列表框和控制按钮面板JPanel pane_day = new JPanel(); /放置日期面板JPanel pane_parent = new JPanel(); /放置以上两个面板/定义方法绘制面板public CalenderTrain() super(JAVA日历程序); /设定面板标题/-以下几行使得关闭面板时退出程序setDefaultCloseOperation(DISPOSE_ON_CLOSE);addWindowListener(new WindowAdapter() public void windowClose(WindowEve

29、nt e) /System.out.print(CLOSING THE WIN);System.exit(0););setResizable(false); /面板大小不能改变/设定年月/*年份区间是目前年份过去到目前年份未来20年* 月份正常1-12月*/for (int i = now_year - 10; i = now_year + 20; i+) Year.addItem(i + );for (int i = 1; i 13; i+) Month.addItem(i + );Year.setSelectedIndex(10); /设定年份下拉列表为目前年份/Year.setText(

30、)pane_ym.add(Year_l); /添加年份标签pane_ym.add(Year); /添加年份下拉列表框Month.setSelectedIndex(now_month); /设定月份下拉列表为目前月份pane_ym.add(Month_l); /添加月份标签pane_ym.add(Month); /添加月份下拉列表框pane_ym.add(button_jump); /添加跳转按钮pane_ym.add(button_today); /添加“现在日期”按钮button_jump.addActionListener(this); /跳转按钮添加 监听事件button_today.a

31、ddActionListener(this); /“现在日期”按钮添加 监听事件/年月设定结束/初始化日期按钮并绘制pane_day.setLayout(new GridLayout(7, 7);for (int i = 0; i 49; i+) button_dayi = new JButton( );pane_day.add(button_dayi);this.setDay(); /调用setDay()方法pane_parent.setLayout(new BorderLayout(); /设定布局管理器setContentPane(pane_day);setContentPane(pan

32、e_ym);pane_parent.add(pane_day, BorderLayout.SOUTH);pane_parent.add(pane_ym, BorderLayout.NORTH);setContentPane(pane_parent);pack();show();/SET DAY 方法,显示日期void setDay() if (bool) year_int = now_year + ;month_int = now_month; else year_int = Year.getSelectedItem().toString();month_int = Month.getSele

33、ctedIndex();/year_int=Year.getText();/month_int=Integer.parseInt(Month.getText();int year_sel = Integer.parseInt(year_int) - 1900; /取得年份值Date dt = new Date(year_sel, month_int, 1); /结构一个日期GregorianCalendar cal = new GregorianCalendar(); /创建一个Calendar实例cal.setTime(dt);String week = 星期日, 星期一, 星期二, 星期三

34、, 星期四, 星期五, 星期六 ;int day = 0; /day中存放某个月份天数int day_week = 0; /用来存放某个月第一天是星期几数值/-将星期添加到前7个按钮中for (int i = 0; i 7; i+) button_dayi.setText(weeki);/-/*判定是几月份,依据它来设定day值* 其中二月份要判定是否是闰年*/if (month_int = 0| month_int = 2| month_int = 4| month_int = 6| month_int = 7| month_int = 9| month_int = 11) day = 31

35、; else if (month_int = 3| month_int = 5| month_int = 8| month_int = 10) day = 30; else if (cal.isLeapYear(year_sel) day = 29; else day = 28;day_week = 7 + dt.getDay();int count = 1;/*绘制按钮*首先要依据选定月份第一天是星期几来确定我们绘制按钮起始位置* 其中day_week就是我们要绘制起始位置* 对于那些没有数值能够显示按钮要置空*/for (int i = day_week; i day_week + day

36、; count+, i+) if (i % 7 = 0| i = 13| i = 20| i = 27| i = 48| i = 34| i = 41) if (i = day_week + now_date.getDate() - 1) button_dayi.setForeground(Color.blue);button_dayi.setText(count + ); else button_dayi.setForeground(Color.red);button_dayi.setText(count + ); else if (i = day_week + now_date.getDa

37、te() - 1) button_dayi.setForeground(Color.blue);button_dayi.setText(count + ); else button_dayi.setForeground(Color.black);button_dayi.setText(count + );/-对于没有日期数值显示按钮进行置空处理if (day_week = 0) for (int i = day; i 49; i+) button_dayi.setText( ); else /第一天前面按钮置空for (int i = 7; i day_week; i+) button_day

38、i.setText( ); /最终一天后面按钮置空for (int i = day_week + day; i 49; i+) button_dayi.setText( );/点击按钮产生效果public void actionPerformed(ActionEvent e) if (e.getSource() = button_jump) bool = false;this.setDay(); /假如点击跳转按钮就调用setDay()方法重新绘制按钮 else if (e.getSource() = button_today) bool = true;this.setDay(); /假如点击现在日期按钮,得到今天日期Month.setSelectedIndex(now_month);/将月份置为目前月份Year.setSelectedIndex(10); /将年份置为目前年份public static void main(String args) CalenderTrain ct = new CalenderTrain();

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服