ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:114.28KB ,
资源ID:23288721      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java万年历学年论文.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java万年历学年论文.docx

1、java万年历学年论文 学 年 论 文题 目: 基于Java开发的万年历程序设计 学 院: 数学与统计学院 专 业: 信息与计算科学 班 级: 11级(1)班 * * 学 号: * * * 基于Java开发的万年历程序设计 郝玉霞 (西北师范大学数学与统计学院 兰州 730070)摘要: 本文是在Java的基础上,使用了Mycalendar、JFrame、Clock、TimeThread、Timer等类和showCalendar、getDaysOfMonth、mouseClicked、run、today等方法,运用了if-else、try-catch等基本的Java语句,使用图形用户界面为用户

2、开发了一个便捷的万年历。关键字: Java 语言;万年历;图形界面 Calendar program design based on Java development HAOYuxia (College of Mathematics and Statistics, Northwest Normal University, Lanzhou 730070)Abstract: This article is based on Java, use the Mycalendar, JFrame, Clock, TimeThread, Timer, etc and theshowCalendar、getD

3、aysOfMonth、run、today mouseClicked methods, and using the if - else, try-catch basic Java statements, such as using a graphical user interface for users to develop a convenient Calendar. Key Words :Java language; Calendar; The graphical interface 引言在当代繁忙的工作与生活中,时间与我们每一个人都有非常亲密的关系,每个人都受到时间的影响,为了更好的利用我

4、们自己的时间,我们必须对时间有一个度量,因此产生了钟表。随着社会、科技的发展,人类得知时间,从观看太阳、摆钟到现在电子钟,不断研究、创新。为了在观测时间的同时能够了解其他与人类密切相关的信息,比如阴阳历、星期、日期等,而后万年历被人们所发明,在此我在原来万年历的基础上做个改进,为大家设计了能够为大家提供更多服务的万年历,它集时间、日期、星期和时区于一身,而且还具有闹钟和备忘录功能,方便你设置查看日程,防止你在每天忙忙碌碌的工作中忘记一些关键事情或重大事件,并且具有读取方便、显示直观、功能多样 使用寿命长,误差小诸多优点,符合众多人们的需求,具有广阔的使用前景。 1 简要概述1.1用户需求 (1

5、)能够提供时区选择。 (2)能够实现日期与星期的查询。 (3)可显示1-9999年的日历信息 (4)显示准确、完整,界面美观。1.2设计目的 (1)为用户开发一个便捷的万年历; (2)对java技术的灵活应用; (3)掌握日期处理技术; (4)初步了解软件工程理论知识。1.3主要特点 (1)清楚直观,便于查询 (2)功能齐全2 功能分析2.1功能设计本程序要构建的万年历程序,其功能有以下几个方面: (1) 能够查找1至9999年的日期与星期的关系。 (2)能以阳历和阴历形式显示日期与星期。 (3)支持用户自己输入年份及月份。 (4)本程序能够实现闹钟提示。 (5)本程序具有备忘录功能。 (6)

6、本程序能够提供时区选择,以便查看不同时区的时间。2 .2 系统功能结构图 (1)Clock类:运用线程,包含了run方法,实现时钟的功能。(2)Mycalendar类:作为主类实现了ActionListener, MouseListener 接口,继承了JFrame类,包含了showCalendar,actionPerformed, showTextArea,updateTimeText和main等方法。showCalendar方法:定义各个参数,应用AWT的绘图功能,构建总体框架;获取所要查找的年份和月份,通过调用getDaysOfMonth方法,实现日历模块功能,并得到所需结果;actio

7、nPerformed方法:控制年月份的正确输入;showTextArea方法:其主要功能是将功力化为农历;updateTimeText方法:设置时区查询,以便用户查询不同时区的时间;图1 系统功能结构3 总体设计3.1程序设计思路本程序主要分为以下几个模块:(1)闹钟模块:此模块的主要功能为:在用户设置的闹钟提示时间5分钟内,进行闹钟提示。(2)备忘录模块:此模块的主要为用户提供记录重要事件功能,减少用户所面临的不必要的烦恼。(3)日期模块 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,若是闰年,该年的总天数为366,否则为365,然后判断输入的年是否为定义年,若是,令总

8、天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该 日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该 月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 如果年份大于9999年则程序不予判断。(4)农历和气节显示模块:其主要

9、功能是方便用户查询当天的农历、星期、节气、生肖等。(5)温馨提示模块:此模块主要内容为惜时励志名言,主要功能是激励广大用户珍惜时间,把握好生命中的每一天。(6)时区选择模块:此模块的主要功能是方便用户查看不同时区的时间。3.2程序运行界面 运行界面如下:图2 运行界面3.3流程图:图3 流程图4 各模块的功能及程序说明4.1初始化组件 private Calendar cld = Calendar.getInstance(); private String week = 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六 ; private DefaultTableModel

10、dtm = new DefaultTableModel(null, week); private JTable table = new JTable(dtm); private JScrollPane sp = new JScrollPane(table); private JButton bLastYear = new JButton(上一年); private JButton bNextYear = new JButton(下一年); private JButton bLastMonth = new JButton(上月); private JButton bNextMonth = new

11、 JButton(下月); private JButton bAddClock = new JButton(确定); private JPanel p1 = new JPanel(); / 装入控制日期的按钮模块 private JPanel p2 = new JPanel(new GridLayout(3,2); private JPanel p3 = new JPanel(new BorderLayout(); private JPanel p4 = new JPanel(new GridLayout(2,1); private JPanel p5 = new JPanel(new Bor

12、derLayout(); private JPanel p6 = new JPanel(new GridLayout(2,2); private JPanel p7 = new JPanel(new GridLayout(2,1); private JPanel p8 = new JPanel(new BorderLayout(); private JPanel p9 = new JPanel(new BorderLayout(); private JPanel p10 = new JPanel(new GridLayout(6,1); private JPanel p11 = new JPa

13、nel(new BorderLayout(); private JTextField jtfYear = new JTextField(5); private JTextField jtfMonth = new JTextField(2); private JTextField timeField=new JTextField(); private JTextField h1=new JTextField(5); private JTextField m1=new JTextField(5); private static JTextArea jta = new JTextArea(4,5);

14、 private JScrollPane jsp = new JScrollPane(jta); private JTextArea jta1 = new JTextArea(1,4); private JTextArea bwl = new JTextArea(5,4); private JScrollPane jsp1 = new JScrollPane(jta1); private JLabel l = new JLabel(你可以向年份和月份输入框中输入正确的年份和月份,提高查询效率); private JLabel lt = new JLabel(); private JLabel

15、ld = new JLabel(); private JLabel ts=new JLabel( 请在右边下拉菜单选择你要选择的城市); private JLabel clock= new JLabel(闹钟,JLabel.CENTER); private JLabel notice= new JLabel(闹钟提示,JLabel.CENTER); private JLabel beiwl= new JLabel(备忘录,JLabel.CENTER); private JLabel hour = new JLabel(小时,JLabel.CENTER); private JLabel minu

16、te= new JLabel(分钟,JLabel.CENTER); private JLabel lu = new JLabel(农历和节气,JLabel.CENTER); private JLabel lizhi0 = new JLabel(温馨提示,JLabel.CENTER); private JLabel lizhi = new JLabel( 明日复明日,明日何其多); private JLabel lizhi1 = new JLabel( 花开有落时,人生容易老); private JLabel lizhi2 = new JLabel( 成 功 立 业 在 今 日); privat

17、e JLabel lizhi3 = new JLabel( 莫 待 明 朝 悔 今 朝); private JLabel lizhi4 = new JLabel( 珍惜时间,从你我做起!); private JLabel null1=new JLabel(); private int lastTime; private String localTime = null; private String s = null; private SimpleDateFormat dateFormat=new SimpleDateFormat(yyyy年MM月dd日 hh时mm分ss秒);4.2闹钟线程 c

18、lass Clock extends Thread public void run() Calendar now=Calendar.getInstance(); int h=now.get(Calendar.HOUR_OF_DAY);/获取小时 int mi=now.get(Calendar.MINUTE);/获取分钟 int s=now.get(Calendar.SECOND);/获取秒钟int ss=h*3600+mi*60+s; if(ss(Integer.parseInt(h1.getText()*3600+Integer.parseInt(m1.getText()*60-300)&s

19、sInteger.parseInt(h1.getText()*3600+(Integer.parseInt(m1.getText()*60) jta1.setText( 闹钟启动); else jta1.setText( 没有正在提示的闹钟); 4.3绘制图形界面 public Mycalendar() super(My Calendar 郝玉霞制作);/ 框架命名 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 窗口关闭函数 this.getContentPane().setLayout(new BorderLayout(5, 5)

20、; jta.setLineWrap(true);/ 长度大于分配长度时候则换行 table.setGridColor(Color.GRAY);/ 星期之间的网格线是灰色的 table.setColumnSelectionAllowed(true);/ 将table中的列设置为可选择的 table.setSelectionBackground(Color.GRAY);/当选定某一天时背景颜色为黑色 table.setSelectionForeground(Color.GREEN); table.setBackground(new Color(184,207, 229);/ 日期显示表格为浅蓝色

21、table.setFont(new Font(黑体, Font.BOLD, 24);/ 日期数字字体格式 table.setRowHeight(32);/ 表格的高度 table.addMouseListener(this); / 鼠标监听器结束语本次学年论文题目为万年历,通过设计这样的一个日历小组件,使我对Java语言有了更进一步的认识。不仅对基础知识掌握的更加牢固,而且运用Java知识去解决实际问题的能力得到了很大的提高。对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用到哪些知识点,如相关的类和对象等。然后根据初步设计的功能和布局构架,考虑用源代码进行实现

22、。经过长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个论文设计。在这个过程中,在把书本上的知识给系统的复习了一下的同时,也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。在设计的每个的环节中,都会多多少少的遇到一些问题,这就促使我去查阅各种资料,或者请教同学,极大的提高我的专业素养,同时对在有些书上的理论知识在实际的运用,以及应该注意的问题有了比较深刻的认识。当然,仍然有些理论问题不是很好的去运用,或者是了解的不深刻。这就使的在实践中的所设计的程序有些功能不是自己所想的那样的完美。不过,既然发现了问题的所在,我就不会放弃的,直至问题得到

23、解决。这些也同时反映出了平时运用知识去实践这方面做的太少,太缺乏经验。对所设计中将所面临的问题认识不够,是学年论文让我认识到了这些问题的存在,同时给我提供了去面对这些问题的平台,也使我充分的认识到在以后也应该怎样去实践,怎样去学习一门计算机语言,以及如何去运用这门语言去解决实际问题等等。总之,通过这次论文设计,我明白了编写程序,不仅要求对课本知识有深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。是这次论文设计,使我认识到了自己很多的缺点,同时,也是我学到新知识和新方法的一个机会,这

24、给我在以后继续学习好这门语言指明了方向。参考文献1 耿祥义,张跃平.Java面向对象程序设计M,清华大学出版社,2009.112 孙全党,王吴迪 ,赵枫朝.Java程序设计应用教程M,电子工业出版社,2006.23 赵玉阳.Java从入门到精通M,清华大学出版社,2006.84 李兴华.Java开发实战经典M,清华大学出版社,2009.85 曾令明,索望,甘刚,宋波.Java程序设计教程M,西安电子科技大学出版社,2007.86 席国钦.深入体验Java项目开发M,清华大学出版社,2011.7附录(程序源代码)import java.awt.*;import java.awt.event.*;

25、import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.io.*;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;import java.util.TimeZone;public class Mycalendar

26、extends JFrame implements ActionListener, MouseListener private Calendar cld = Calendar.getInstance();/获取一个Calendar类的实例对象private String week = 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六 ;private DefaultTableModel dtm = new DefaultTableModel(null, week);private JTable table = new JTable(dtm);private JScrollPa

27、ne sp = new JScrollPane(table); private JButton bLastYear = new JButton(上一年);private JButton bNextYear = new JButton(下一年);private JButton bLastMonth = new JButton(上月);private JButton bNextMonth = new JButton(下月);private JButton bAddClock = new JButton(确定);private JPanel p1 = new JPanel(); / 装入控制日期的按

28、钮模块private JPanel p2 = new JPanel(new GridLayout(3,2);private JPanel p3 = new JPanel(new BorderLayout();private JPanel p4 = new JPanel(new GridLayout(2,1);private JPanel p5 = new JPanel(new BorderLayout(); private JPanel p6 = new JPanel(new GridLayout(2,2); private JPanel p7 = new JPanel(new GridLay

29、out(2,1); private JPanel p8 = new JPanel(new BorderLayout(); private JPanel p9 = new JPanel(new BorderLayout(); private JPanel p10 = new JPanel(new GridLayout(6,1); private JPanel p11 = new JPanel(new BorderLayout();private JComboBox timeBox = new JComboBox(TimeZone.getAvailableIDs();/用复选框对所有支持时区进行迭

30、代,获取所有的id;private JTextField jtfYear = new JTextField(5);/ jtfYeaar年份显示输入框private JTextField jtfMonth = new JTextField(2);/ jtfMouth月份显示输入框private JTextField timeField=new JTextField();private JTextField h1=new JTextField(5);private JTextField m1=new JTextField(5);private static JTextArea jta = new JTextArea(4,5);private JScrollPane jsp = new JScrollPane(jta);private JTextArea jta1 = new JTextArea(1,4);private JTextArea bwl = new JTextArea(5,4);private JScrollPane jsp1 = new JScrollPane(jta1);private JLabel l = new JLabel(你可以向年份和月份输入框中输入正确的年份和月份,提高查询效);private JLabel lt = new JLabel();private

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1