欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

java课程设计简单日历程序

  • 资源ID:82518709       资源大小:103.51KB        全文页数:19页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

java课程设计简单日历程序

湖南第一师范学院信息科学与工程系课程设计报告题 目 JAVA简易时间日历程序 2009 年 12 月 18 日目 录1. 课程设计任务书第 2页2. 题目说明第 4页3. 系统设计第 4页4. 类及接口描述第 5页5. 运行结果第 7页6. 程序源代码第 8页7. 总 结第17页8. 参考文献第18页2007级计算机应用专业Java课程设计安排计划书指导老师:伍智平 指导方式:集体辅导、分组讨论研究一、 课程设计教学目的及基本要求1、 培养独立的Java语言与算法设计方法,具备初步的独立分析和设计能力;2、 学习软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、 训练综合运用所学的理论知识和方法进行独立分析和解决问题的能力;4、 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。5、 设计的题目要求达到一定工作量,程序能够运行,并对标准的测试数据有正确的输出结果。6、 按湖南第一师范学院信息科学与工程系课程设计报告写作规范要求的书写格式编写出课程设计报告书,报告书不少于8页(代码不算)。二、 计划安排1、 任务书下达时间:第15周2、 任务讲解与动员:第15周3、 任务设计与辅导:辅导教师:伍智平辅导形式:以学生自行设计为主,教师现场解答学生疑难问题。纪律要求:上课前学生签到,课后学习委员交名单给老师。4、完成时间:第16周星期四三、课程设计课题与安排每位学生在下面列出的设计题目中选择其中的一个独立完成:课题详细要求:参见教材13.2节课程设计的要求和选题(P408413)五、提交成果1、课程设计报告(电子版和打印版,格式参照湖南第一师范学院信息科学与工程系课程设计报告写作规范)(注意:报告中一定要包括课程设计任务书,课程设计任务书的格式参加本文档的附件1)2、源代码(电子版和打印版)六、成绩评定1、根据平时上机考勤(考勤20分);注重平时上机成绩,教师要不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。2、根据程序运行结果(上机演示30分);3、 根据Java课程设计报告,学生能对自己的程序面对教师提问并能熟练地解释清楚(报告50分)4、无报告书者或者答辩不通过者,课程设计记0分。 指导教师:伍智平 2009年12月10日课程设计题目2. 题目说明通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。3. 系统设计2.1 设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。 2.2 设计思想设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提示信息。在设计中应用了多种容器和控件。2.3 系统模块划分public static class CalendarTable(日历类)public static void main(String args)public static class RollbyJFrame(滚动时间类)public class MyCalendar extends JApplet(主日历框架类)图1:简易日历的程序结构图2.3.1 初始化: public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。2.3.2 日历描述:    (1)public void updateView()改变日期后完成更新界面;  (2)抽象类java.util.Calendar获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几;  (3)public static void main(String args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置;2.3.3 滚动时间:     将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。4. 使用类及接口仅仅简单说明类的功能,详细资料请参看 JavaTM 2 Platform Standard Ed. 6的电子文档,常规的接口与包则省略不屑。/以下是日历程序块中使用的类package fancy; import java.awt.*; import java.awt.event.*; import java.util.*; /主要用此包中的日期和时间类import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*;/以下是对滚动时间程序块所使用的类和接口,用到定时器类Timerimport java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.FocusListener;、/用于监听鼠标单击(焦点改变)事件import java.awt.event.FocusEvent;/用于响应鼠标单击(焦点改变)事件、import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.JSpinner;/让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。import javax.swing.JPanel;import javax.swing.Timer;/在指定时间间隔触发一个或多个 ActionEvent, 创建一个 Timer 对象,在该对象上注册一个或多个动作侦听器,以及使用 start 方法启动该计时器。并配合事件监听器支持时间的滚动播放。import javax.swing.event.ChangeListener;import javax.swing.event.ChangeEvent;5. 运行结果与分析图2:初始界面显示日历。图3:点击查看时间按钮, 弹出时间消息对话框。图4:滚动显示当前时间。6. 程序源代码/* * (#) MyCalendar.java * author fancy */日历使用的类 import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.util.Calendar;import javax.swing.JApplet;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JSpinner;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.ListSelectionModel;import javax.swing.Timer;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableModel;/日历 public class MyCalendar extends JApplet public static final String WEEK_SUN = "SUN" public static final String WEEK_MON = "MON" public static final String WEEK_TUE = "TUE" public static final String WEEK_WED = "WED" public static final String WEEK_THU = "THU" public static final String WEEK_FRI = "FRI" public static final String WEEK_SAT = "SAT" public static final Color background = Color.yellow; public static final Color foreground = Color.black; public static final Color headerBackground = Color.blue; public static final Color headerForeground = Color.white; public static final Color selectedBackground = Color.blue; public static final Color selectedForeground = Color.white; private JPanel cPane; private JLabel yearsLabel; private JSpinner yearsSpinner; private JLabel monthsLabel; private JComboBox monthsComboBox; private JTable daysTable; private AbstractTableModel daysModel; private Calendar calendar; private JButton button1; public MyCalendar() cPane = (JPanel) getContentPane(); public void init() cPane.setLayout(new BorderLayout(); calendar = Calendar.getInstance(); calendar = Calendar.getInstance(); JButton button1=new JButton(" 单击此处 查看时间 "); button1.setBounds(10,10,10,10); cPane.add(button1,BorderLayout.SOUTH); button1.addActionListener( new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) RollbyJFrame myrili=new RollbyJFrame(); JOptionPane.showMessageDialog(null, "您点击了"+e.getActionCommand().toString()+"按钮"); ); yearsLabel = new JLabel("Year: "); yearsSpinner = new JSpinner(); yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000"); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR); yearsSpinner.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent changeEvent) int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.YEAR, (Integer) yearsSpinner.getValue().intValue(); int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day); updateView(); ); JPanel yearMonthPanel = new JPanel(); cPane.add(yearMonthPanel, BorderLayout.NORTH); yearMonthPanel.setLayout(new BorderLayout(); yearMonthPanel.add(new JPanel(), BorderLayout.CENTER); JPanel yearPanel = new JPanel(); yearMonthPanel.add(yearPanel, BorderLayout.WEST); yearPanel.setLayout(new BorderLayout(); yearPanel.add(yearsLabel, BorderLayout.WEST); yearPanel.add(yearsSpinner, BorderLayout.CENTER); monthsLabel = new JLabel("Month: "); monthsComboBox = new JComboBox(); for (int i = 1; i <= 12; i+) monthsComboBox.addItem(new Integer(i); monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH); monthsComboBox.addActionListener(new ActionListener() public void actionPerformed(ActionEvent actionEvent) int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex(); int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day); updateView(); ); JPanel monthPanel = new JPanel(); yearMonthPanel.add(monthPanel, BorderLayout.EAST); monthPanel.setLayout(new BorderLayout(); monthPanel.add(monthsLabel, BorderLayout.WEST); monthPanel.add(monthsComboBox, BorderLayout.CENTER); daysModel = new AbstractTableModel() public int getRowCount() return 9; public int getColumnCount() return 7; public Object getValueAt(int row, int column) if (row = 0) return getHeader(column); row-; Calendar calendar = (Calendar) MyCalendar.this.calendar.clone(); calendar.set(Calendar.DAY_OF_MONTH, 1); int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1; int index = row * 7 + column; int dayIndex = index - moreDayCount + 1; if (index < moreDayCount | dayIndex > dayCount) return null; else return new Integer(dayIndex); ; daysTable = new CalendarTable(daysModel, calendar); daysTable.setCellSelectionEnabled(true); daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) String text = (value = null) ? "" : value.toString(); JLabel cell = new JLabel(text); cell.setOpaque(true); if (row = 0) cell.setForeground(headerForeground); cell.setBackground(headerBackground); else if (isSelected) cell.setForeground(selectedForeground); cell.setBackground(selectedBackground); else cell.setForeground(foreground); cell.setBackground(background); return cell; ); updateView(); cPane.add(daysTable, BorderLayout.CENTER); public static String getHeader(int index) switch (index) case 0: return WEEK_SUN; case 1: return WEEK_MON; case 2: return WEEK_TUE; case 3: return WEEK_WED; case 4: return WEEK_THU; case 5: return WEEK_FRI; case 6: return WEEK_SAT; default: return null; public void updateView() daysModel.fireTableDataChanged(); daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH), calendar.get(Calendar.WEEK_OF_MONTH); daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1, calendar.get(Calendar.DAY_OF_WEEK) - 1); public static class CalendarTable extends JTable private Calendar calendar; public CalendarTable(TableModel model, Calendar calendar) super(model); this.calendar = calendar; public void changeSelection(int row, int column, boolean toggle, boolean extend) super.changeSelection(row, column, toggle, extend); if (row = 0) return; Object obj = getValueAt(row, column); if (obj != null) calendar.set(Calendar.DAY_OF_MONTH, (Integer)obj).intValue(); public static void main(String args) JFrame frame = new JFrame("简易时间日历"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyCalendar myCalendar = new MyCalendar(); myCalendar.init(); frame.getContentPane().add(myCalendar); frame.setLocation(330,80); frame.setSize(360, 212); frame.setVisible(true); /滚动字public static class RollbyJFrame extends JFrame implements ActionListener, FocusListener, javax.swing.event.ChangeListener private JTextField text; private JSpinner spinner; private Timer timer; private JButton button; public RollbyJFrame() super("滚动时间"); this.setSize(360,100); this.setBackground(java.awt.Color.lightGray); this.setLocation(700,120); Container c=getContentPane(); JButton button=new JButton("修改速度"); this.add(button,"East"); button.addActionListener(this); Calendar now = Calendar.getInstance();int hour=now.get(Calendar.HOUR);int minute=now.get(Calendar.MINUTE);int year=now.get(Calendar.YEAR);int month=now.get(Calendar.MONTH);int day=now.get(Calendar.DAY_OF_MONTH); text = new JTextField(" Hello 当前时间是: "+hour+":"+minute+" "+year+"/"+month+"/"+day); this.add(text,"Center"); text.addFocusListener(this); /注册焦点事件监听器 timer = new Timer(136,this); timer.start(); JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT); this.add(panel,"South"); spinner = new JSpinner(); spinner.setValue(timer.getDelay(); panel.add(spinner); spinner.addChangeListener(this); this.setVisible(true); public void focusGained(FocusEvent e) /获得焦点时 if (e.getSource()=text) timer.stop(); public void focusLost(FocusEvent e) /失去焦点时 if (e.getSource()=text) timer.restart(); public void stateChanged(ChangeEvent e) if (e.getSource()=spinner) timer.setDelay(new Integer(""+spinner.getValue(); /设置延时的时间间隔 public void actionPerformed(ActionEvent e) /定时器定时执行事件 if (e.getSource()=button); else String temp = text.getText(); temp = temp.substring(1) + temp.substring(0,1); text.setText(temp); public void buttondown(ActionEvent e) /单击事件 if (e.getSource()=button) ; 7. 总 结本次作业是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,因此,开始设计的时候先回顾以前所学的内容,明确本次作业设计所要用到的技术点并在网上搜索以及查阅相关的书籍来搜集资料。也非常感谢这次实验让我学到了不少知识。懂得了独立学习中非常重要的方法:自己分析问题,并根据需要查资料,分析资料,真正达到学以致用的目的。5-1、用户界面设计为“鼠标单击响应”模式,使人们更加容易使用。5-2、在编程中使用了很不规范的编程方法,应用了一些临时变量来实现功能,而大量临时变量在代码中没有很好地进行命名。这给程序的调试带来了相当的困难。5-3、这次课程设计没有将各个功能的类代码段独立书写,以至于程序的结构不清晰,由于一个函数完成多个功能致使程序的各个函数间关系复杂,程序难以阅读。从实践中我获得的经验是设计时应尽量把功能模块设计好考虑全。5-4.程序能和计算机的日期和时间保持同步,但还不能像网络上提供的万年历一样有节日提醒、农历查询等功能。有时间时我要进一步改进,把此程序完善。5-5.设计中得到了老师和广大同学的帮助,并参考了网络上的优秀论文和文献书籍,使我的程序设计能够较为顺利的进行下去。在此我衷心感谢老师同学和提供宝贵资源的作者。8. 参考文献 书籍资料【1】:java2 程序设计实用教程(第二版) 电子工业出版社 叶核亚编著【2】:Java大学简明教程 作者:(美)戴尔特 电子工业出版社 译者:张琛恩【3】:JavaTM 2 Platform Standard Edition 6 API 规范Sun Microsystems公司共19页 第页

注意事项

本文(java课程设计简单日历程序)为本站会员(沈***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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