java课程设计_简单日历程序

合集下载

java日历程序设计

java日历程序设计

一、需求分析设计并实现一个电子日历,用户能够使用下拉列表选择年份,并在下方表格中显示各月份信息。

二、概要设计(1)设计一个窗口,然后设置下拉列表,选择年份。

(2)设计一个底层容器,使用BorderLayout布局。

(3)新创建一个面板,设置为FlowLayout布局,插入两个按钮,改变月份。

(4)将panel放进pane2的北区。

(5)在中区插入一个带滚动条的表格,放入数组。

(6)在南区插入标签,显示当前日期,中间的滚动窗格中插入表格。

三、详细设计(1)使用类Canlendar创建日历,然后利用数组创建天数。

(2)创建类Win继承JFrame,然后让对象调用setBounds的方法,设置窗口的位置和大小。

(3)使用类JComboBox创建对象list,建立一个下拉列表,使用for循环语句,设置年份,年份的初始值为2005。

(4)使用类JLabel创建对象label,设置显示日期的标签,初始值为2005—1。

(5)调用方法add将上一步设置的标签加入面板中。

(6)使用类JPanel新创建一个对象pane。

(7)使用JButton创建两个按钮,分别为b1和b2,名字为上月和下月,(8)使用String类,创建星期和天数,并使用for循环遍历星期和天数。

(9)将日期和天数插入到表格中,并放入到创建的面板中。

(10)使用类JscrollPane创建滚动窗格。

(11)给按钮b1和b2添加监视器ActionListenner,并执行ActionEvent事件,下拉列表list添加监视器ItemListener,并执行ItemEvent事件,使得年月份的日期同步更改。

(12)向面板pane2中添加按钮和标签,窗体frame采用BorderLayout布局,将pane 放置在中心,label放置在南区,list放置在北区。

四、程序代码import javax.swing.*;import javax.swing.JLabel.*;import javax.swing.table.DefaultTableModel;import java.awt.*;import java.awt.event.*;import java.util.*;public class rili{public static void main(String args[]){Win win=new Win();win.setTitle("日历");}}class Win extends JFrame implements ItemListener,ActionListener{ Calendar calendar;Integer year=1990;Integer month=1;JButton b1;JButton b2;JPanel pane;JPanel pane2;DefaultTableModel t;JTable tab;JComboBox list;JLabel label;Win(){calendar=new GregorianCalendar(1990,1,1);label=new JLabel("日期:1990-1",JLabel.CENTER);list=new JComboBox();for(int i=1990;i<2017;i++)list.addItem(i);pane=new JPanel(new FlowLayout(FlowLayout.CENTER));pane2=new JPanel();pane2.setLayout(new BorderLayout());final String[] title={"周日","周一","周二","周三","周四","周五","周六"};final String[][] table=new String[6][7];int in=1;for(int i=0;i<table.length;i++){for(int j=0;j<table[0].length;j++){if(i==0&&j<calendar.getFirstDayOfWeek()){table[i][j]="";}else{if(in<=yue(1))table[i][j]=String.valueOf(in++);elsetable[i][j]="";}}}t=new DefaultTableModel(table,title);tab=new JTable(table,title);tab.setModel(t);tab.setRowHeight(30);JScrollPane table1=new JScrollPane(tab);b1=new JButton("上月");b2=new JButton("下月");b2.addActionListener(this);b1.addActionListener(this);list.addItemListener(this);pane.add(b1);pane.add(b2);pane2.add(pane,BorderLayout.NORTH);pane2.add(table1,BorderLayout.CENTER);setLayout(new BorderLayout());add(pane2,BorderLayout.CENTER);add(list,BorderLayout.NORTH);add(label,BorderLayout.SOUTH);setBounds(100,100,300,300);setVisible(true);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {final String[] title={"周日","周一","周二","周三","周四","周五","周六"};final String[][] table=new String[6][7];if(e.getSource().equals(b2)){month++;if(month>=12)month=12;calendar.set(year, month-1, 1);label.setText("日期:"+list.getSelectedItem()+"-"+month);int init=1;for(int i=0;i<table.length;i++){for(int j=0;j<table[0].length;j++){if(i==0&&j<calendar.get(Calendar.DAY_OF_WEEK)-1){table[i][j]="";}else{if(init<=yue(month))table[i][j]=String.valueOf(init++);elsetable[i][j]="";}}}DefaultTableModel t1=new DefaultTableModel(table,title);tab.setModel(t1);}if(e.getSource().equals(b1)){month--;if(month<=1)month=1;calendar.set(year, month-1, 1);label.setText("日期:"+list.getSelectedItem()+"-"+month);int init=1;for(int i=0;i<table.length;i++){for(int j=0;j<table[0].length;j++){if(i==0&&j<calendar.get(Calendar.DAY_OF_WEEK)-1){table[i][j]="";}else{if(init<=yue(month))table[i][j]=String.valueOf(init++);elsetable[i][j]="";}}}DefaultTableModel t1=new DefaultTableModel(table,title);tab.setModel(t1);}}public void itemStateChanged(ItemEvent e) {final String[] title={"周日","周一","周二","周三","周四","周五","周六"};final String[][] table=new String[6][7];year=(Integer) e.getItem();calendar.set(year, 0, 1);label.setText("日期:"+e.getItem()+"-1");int init=1;for(int i=0;i<table.length;i++){for(int j=0;j<table[0].length;j++){if(i==0&&j<calendar.get(Calendar.DAY_OF_WEEK)-1){table[i][j]="";}else{if(init<=yue(1)){table[i][j]=String.valueOf(init++);}elsetable[i][j]="";}}}DefaultTableModel t1=new DefaultTableModel(table,title); tab.setModel(t1);}int yue(int m){int y=calendar.get(Calendar.YEAR);int[] s={31,28,31,30,31,30,31,31,30,31,30,31};if((y%4==0&&y%100!=0)||(y%400==0)){if(m==2){return s[1]+1;}else{return s[m-1];}}else{return s[m-1];}}}五、运行结果六、设计总结。

Java程序日历记事本系统课程设计

Java程序日历记事本系统课程设计

目录1.课程设计目的………………………………………………………………页码2.课程设计题目描述和要求…………………………………………页码3.课程设计报告内容…………………………………………………………页码3.1总体设计……………………………………………………………………页码3.2详细设计……………………………………………………………………页码3.3编码实现……………………………………………………………………页码3.4系统测试……………………………………………………………………页码3.5系统运行……………………………………………………………………页码4.总结…………………………………………………………………………页码参考文献………………………………………………………………………页码1.课程设计目的1.学习Java程序开发的环境搭建与配置,并且在实际运用中学习和和掌握Java程序开发的过程2.通过课程设计进一步掌握Java程序设计语言的基础内容,如用户图形界面设计等3.通过亲自设计,编写,调试程序来扩展知识面和动手操作能力2.课程设计题目描述和要求设计一个日历记事本.具体要求如下:1.可以设置日历的日期2. 可以判断当前日期是否有日志记录3. 对有日志记录的日期,可以对该日期的日志记录进行修改和删除4. 对没有日志记录的日期,可以创建并保存新建的日志记录3.课程设计报告内容3.1总体设计1> 功能图2> 流程图3> 类图3.2详细设计表1 日历记事本系统主面板与日历板模块(CalendarPad.java)表2 日历记事本系统年设置模块(Year.java)表3 日历记事本系统月设置模块(Month.java)表4 日历记事本系统记事本模块(NotePad.java)3.3编码实现1.日历记事本系统主面板与日历板模块(CalendarPad.java)该模块设计主要主要包含以下成员变量:年(year)月(month)日(day)存放日期的表(Hashtable)存放日志的文件(File)主要方法有:创建程序主面板的构造方法(CalendarPad)处理ActionEvent事件的接口方法(actionPerformed)程序开始运行的main()方法。

java课程设计日历记事本

java课程设计日历记事本

java课程设计日历记事本湖南人文科技学院计算机系2009年6月19日- 1 -::1;(1)为用户提供一个简便的日历记事本;(2)对java技术的进一步了解和简单的运用;(3)初步的接触软件工程;26月8日分析课题、分配任务;对题目进行初步分析 6月9日建立模型,完成整体设计以及功能模块分析 6月10日确立每个类的功能,完成对算法的分析 6月11日完成CalendarPad类的设计6月12日完成对Year类的设计6月13日完成对Month类的设计6月14日完成对NotePad类的设计6月15日紧系程序测试与修改6月16日完成设计,整理说明书6月19日打包发布程序设计成绩:(教师填写)指导老师:(签字)2009年月日- 2 -摘要 ..................................................................... ................................................................... - 4 - 1. 引言 ..................................................................... ...................................................................... - 5 - 2.设计目的与任务 ..................................................................... ................................................... - 5 - 3.设计方案...................................................................... ............................................................... - 6 -3.1 总体设计 ..................................................................... ................................................... - 6 -3.2设计要求 ..................................................................... .................................................... - 6 -3.3系统的主要功能...................................................................... ....................................... - 6 -3.4系统功能结构图...................................................................... ....................................... - 6 -3.5运行功能(截图) ................................................................... ..................................... - 7 -4.结束语 ..................................................................... .................................................................... - 9 - 5.致谢 ..................................................................... .................................................................... - 9 - 6.参考文献...................................................................... ............................................................. - 10 - 7.附录A:源程序 ..................................................................... .................................................... - 11 - 8附录B:编码规范 ..................................................................... ............................................. - 24 -- 3 -本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,使学生的发散思维及动手能力进一步加强,加强对计算机及软件工程的进一步了解。

日历表java课程设计

日历表java课程设计

日历表java课程设计一、教学目标本课程旨在通过Java编程语言实现一个简单的日历表应用程序,帮助学生掌握基本的编程概念和技能,培养他们的逻辑思维能力和问题解决能力。

具体的教学目标如下:1.了解Java编程语言的基本语法和结构。

2.掌握面向对象编程的基本概念,如类、对象、封装、继承和多态。

3.学习日历表的基本结构和功能,包括年、月、日和星期等信息。

4.能够使用Java编程语言编写简单的程序。

5.学会使用Java编程语言实现日历表的基本功能,如显示当前日期、切换月份等。

6.掌握使用Java编程语言处理日期和时间的常用方法。

情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,通过小组合作完成日历表项目。

2.培养学生的创新思维和问题解决能力,鼓励他们提出新的想法和改进方案。

3.培养学生的学习兴趣和自信心,让他们感受到编程的乐趣和成就感。

二、教学内容本课程的教学内容主要包括Java编程语言的基本概念和语法、面向对象编程的原理和方法、日历表的基本结构和功能。

具体的教学大纲如下:1.Java编程语言的基本概念和语法:–数据类型、变量和常量–运算符和表达式–控制语句(条件语句、循环语句)–函数和方法2.面向对象编程的原理和方法:–类和对象的概念–属性和方法的封装–继承和多态的原理和应用3.日历表的基本结构和功能:–年、月、日和星期的表示方法–日历表的布局和设计–日历表的功能实现(显示当前日期、切换月份等)三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。

具体的教学方法如下:1.讲授法:教师通过讲解Java编程语言的基本概念和语法、面向对象编程的原理和方法,为学生提供系统的知识结构。

2.案例分析法:教师通过分析具体的日历表案例,引导学生理解和掌握日历表的设计和实现方法。

3.实验法:学生通过编写Java程序实现日历表的功能,培养他们的实际编程能力和问题解决能力。

4.小组讨论法:学生分组合作完成日历表项目,通过讨论和交流促进团队合作和沟通能力的发展。

java日历小程序课程设计

java日历小程序课程设计

java日历小程序课程设计【标题】Java日历小程序课程设计【摘要】本文将详细介绍一种基于Java编程语言的日历小程序的设计和实现。

通过该小程序,用户可以方便地查看日期、周数和节假日,并进行简单的日程安排。

本文将分为以下几个部分进行介绍:需求分析、系统设计、界面设计、功能实现和测试。

通过阅读本文,读者将了解到如何使用Java编写一个简单实用的日历小程序。

【关键词】Java编程语言、日历小程序、需求分析、系统设计、界面设计、功能实现、测试【正文】一、需求分析日历小程序的主要功能是显示当前日期、周数和节假日,并提供简单的日程安排功能。

用户可以通过界面直观地查看日历信息,并添加、编辑和删除日程。

具体需求如下:1. 显示当前日期:程序启动时,显示当前日期,包括年、月、日。

2. 显示当前周数:程序启动时,显示当前所在周数。

3. 显示节假日信息:根据国家或地区的节假日规定,显示当天是否为节假日。

4. 查看日历:用户可以通过界面查看指定年份和月份的日历信息。

5. 添加日程:用户可以添加新的日程安排,包括日期、时间和内容。

6. 编辑日程:用户可以编辑已有的日程安排,修改日期、时间和内容。

7. 删除日程:用户可以删除已有的日程安排。

二、系统设计1. 技术选型:本系统采用Java编程语言进行开发。

使用Java的面向对象特性,实现日历小程序的各项功能。

2. 架构设计:采用MVC(Model-View-Controller)架构模式,将数据、界面和逻辑分离,提高代码的可维护性和可扩展性。

3. 数据存储:使用SQLite数据库存储日程信息,包括日期、时间和内容。

4. 外部接口:通过调用第三方API获取节假日信息,并根据返回的数据判断当天是否为节假日。

三、界面设计1. 主界面:显示当前日期、周数和节假日信息。

提供查看日历、添加日程、编辑日程和删除日程的入口。

2. 日历界面:根据用户选择的年份和月份,显示对应的日历信息。

用户可以通过左右滑动切换月份。

(完整word版)小日历-JAVA课程设计实验报告

(完整word版)小日历-JAVA课程设计实验报告
public static final Color headerForegro und = Color.white;
public static final Color selectedBackgro und= Color.gree n;〃设置被选中的日期的背景颜色
public static final Color selectedForegro un d= Color.white;〃设置被选中的日期的前 景颜色
public static final Color backgro und = Color.white; public static final Color foregro und = Color.black;
public static final Color headerBackground = Color.blue;颜色
定义了一个主日历面板类MyCalendar,其中包含了日历设计所用到的全局变量、功
能函数等,在Frame类里定义了其对象。在该日历面板类里又设计了一个内部类Cale ndarTable表格类,用于布局日历天的显示格式。
为了设计一个超级链接,定义了一个LinkLable类,单独保存在一个文件
ar里定义了其对象。
3.
(1).AWT与Swing的使用.⑵应用JApplet生成界面.
4.
(1) 本小日历设计主体结构为:设计一个框架MainFrame,然后在MainFrame里 添加一个MainPanel面板。定义一个MainPanel面板类,该面板以边布局格式,所有其 他面板、标签等均添加到该面板中。
(2)Mai nPa nel面板北部(上方),添加一个年月面板YearMo nthPa nel。该年月面 板主要放年份显示、月份显示、标题显示。YearMonthPanel面板也使用边布局格式,西 部添加一个年份面板,放年份信息;中部添加一个TextPanel面板,放标题文本显示信 息;东部添加一个月份面板Mon thPa nel,放月份下拉框信息。

java课程设计_简单日历程序

java课程设计_简单日历程序

课程设计题目2. 题目说明通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。

3. 系统设计2.1 设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。

2.2 设计思想设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提示信息。

在设计中应用了多种容器和控件。

2.3 系统模块划分图1:简易日历的程序结构图2.3.1初始化:public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。

2.3.2 日历描述:(1)public void updateView()改变日期后完成更新界面;(2)获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几;(3)public static void main(String[] args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置;2.3.3 滚动时间:将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。

4. 使用类及接口仅仅简单说明类的功能,详细资料请参看《JavaTM 2 Platform Standard Ed. 6》的电子文档,常规的接口与包则省略不屑。

//以下是日历程序块中使用的类package fancy;import java.awt.*;import java.util.*; //主要用此包中的日期和时间类import javax.swing.*;//以下是对滚动时间程序块所使用的类和接口,用到定时器类Timer、//用于监听鼠标单击(焦点改变)事件//用于响应鼠标单击(焦点改变)事件、//让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。

//在指定时间间隔触发一个或多个 ActionEvent, 创建一个 Timer 对象,在该对象上注册一个或多个动作侦听器,以及使用 start 方法启动该计时器。

java日历课程设计详细设计

java日历课程设计详细设计

java日历课程设计详细设计一、教学目标本课程旨在通过Java编程语言实现一个简单的日历功能,让学生掌握Java基本语法、面向对象编程思想以及常用数据结构。

同时,培养学生的编程兴趣,提高解决实际问题的能力。

1.掌握Java基本语法和关键字。

2.理解面向对象编程的基本概念,如类、对象、封装、继承和多态。

3.熟悉常用数据结构,如数组、链表、栈和队列。

4.能够运用Java语法和面向对象编程思想编写简单的程序。

5.能够运用常用数据结构解决实际问题。

6.学会使用Java开发工具和调试技巧。

情感态度价值观目标:1.培养学生的编程兴趣,提高自主学习能力。

2.培养学生团队合作精神,学会与他人分享和交流。

3.培养学生解决问题的能力,培养创新思维。

二、教学内容本课程的教学内容主要包括Java基本语法、面向对象编程思想和常用数据结构。

具体安排如下:1.Java基本语法:介绍Java编程语言的基本语法,包括数据类型、运算符、控制语句等。

2.面向对象编程:讲解面向对象编程的基本概念,如类、对象、封装、继承和多态。

通过实例让学生理解并掌握这些概念。

3.常用数据结构:介绍数组、链表、栈和队列等常用数据结构,并通过实例让学生学会运用这些数据结构解决实际问题。

4.日历实现:利用所学知识,让学生动手实现一个简单的日历功能,巩固所学知识,提高解决实际问题的能力。

三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:通过讲解Java基本语法、面向对象编程思想和常用数据结构,让学生掌握理论知识。

2.案例分析法:通过分析实际案例,让学生学会运用所学知识解决实际问题。

3.实验法:让学生动手实践,实现日历功能,提高学生的实际编程能力。

四、教学资源1.教材:选用权威、实用的Java编程教材,为学生提供理论知识的学习材料。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT,直观展示知识点,帮助学生更好地理解。

日历记事本-JAVA课程设计

日历记事本-JAVA课程设计

该类创建动态日历记事本的主窗口,该类含有main方法,是程序的入口程序,CalenderWindow类的成员变量中有5种重要类型的对象,CalendarPad、NotePad、Calendarlmage、Clock、CalendarMessage 对象。

2.2.2Cale nderMessage.java该类用来刻画和“日期”有关的数据。

2.2.3Cale nderPad.java该类是JPanel类的子类,所创建的对象是CalendarWindow类的重要成员之一,用来表示”日历”,即负责显示和修改Cale ndarMessage对象中的日期数据。

2.2.4Notepad.java该类是JPanel的一个子类,创建的对象表示“记事本”,提供编辑读取和保存阐述日志的功能。

2.2.5Cale ndarlmage.java该类所创建的对象是CalendarWindow类的成员之一,负责绘制图像。

2.2.6Clock.java该类创建的对象是CalendarWindow类的成员之一,负责显示时钟。

日历记事本用到的一些重要的类以及之间的关系如图1所示。

图1类之间的组合关系图 2.3功能模块此设计共有以下几个功能模块。

2.3.1年份改变选择日期保存并标记有”显示日志删除并去掉有图2流程图2.5类、方法、属性说明2.5.1CalendarWindow 类(1)成员变量•year,mo nth和day是int型数据,它们的值分别确定年份、月份和日期。

-calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。

-calendarPad是CalendarPad对象,该对象可以显示和日期有关的数据。

-notePad是NotePad对象,具有编辑、读取、保存和删除日志的功能。

-showYear和showMonth是JTextField 类创建的文本框,用来显示年份和月份。

-showDay数组的每个单元是JTextField类创建的用来显示日期的文本框。

使用Java创建简单的日历应用程序

使用Java创建简单的日历应用程序

使用Java创建简单的日历应用程序-一个实战教程日历应用程序是一个有用的工具,它允许用户记录和管理事件、约会和提醒。

在这个实战博客中,我们将创建一个Java日历应用程序,演示如何使用Java编程语言和图形用户界面(GUI)库来实现事件管理和日期选择功能。

以下是本实战博客的主要内容:项目概述准备工作创建Java项目设计GUI界面实现日历视图添加事件管理功能总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个简单的Java日历应用程序,它包括以下主要功能:显示日历界面,允许用户选择日期。

在日历中标记已经安排的事件和约会。

允许用户添加、编辑和删除事件。

提供事件的日期和时间提醒功能。

我们将使用Java编程语言和Swing GUI库来构建这个日历应用程序。

2. 准备工作在开始之前,确保您的开发环境已设置好。

我们将使用Java编程语言和Swing库来构建日历应用程序,不需要额外的工具或库。

3. 创建Java项目首先,创建一个新的Java项目,您可以使用任何Java集成开发环境(IDE)来完成此操作。

在项目中,我们将创建Java类来实现日历应用程序。

4. 设计GUI界面我们将创建一个简单的Swing GUI界面,用于显示日历界面和事件列表。

创建一个Java类,例如CalendarApp,并在其中创建GUI界面。

javaCopy codeimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.Date;public class CalendarApp {private JFrame frame;private JPanel calendarPanel;private JPanel eventPanel;private JTextArea eventList;private JButton addButton;private JButton editButton;private JButton deleteButton;public CalendarApp() {frame = new JFrame("日历应用程序");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);frame.setLayout(new BorderLayout());calendarPanel = new JPanel(new BorderLayout());eventPanel = new JPanel(new BorderLayout());eventList = new JTextArea();eventList.setEditable(false);JScrollPane eventScrollPane = new JScrollPane(eventList);addButton = new JButton("添加事件");editButton = new JButton("编辑事件");deleteButton = new JButton("删除事件");eventPanel.add(eventScrollPane, BorderLayout.CENTER);eventPanel.add(addButton, BorderLayout.NORTH);eventPanel.add(editButton, BorderLayout.WEST);eventPanel.add(deleteButton, BorderLayout.EAST);frame.add(calendarPanel, BorderLayout.WEST);frame.add(eventPanel, BorderLayout.CENTER);addButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {addEvent();}});editButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {editEvent();}});deleteButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {deleteEvent();}});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(() -> new CalendarApp());}private void addEvent() {// 实现添加事件的代码,略...}private void editEvent() {// 实现编辑事件的代码,略...}private void deleteEvent() {// 实现删除事件的代码,略...}}在上述代码中,我们创建了一个CalendarApp类,包括一个Swing窗口、日历界面和事件列表。

用java做一个简单的日历

用java做一个简单的日历

用java做一个简单的日历简单日历1:第一步先求每个月的第一天是星期几-----1900年1月1日--2014年9月1日是星期几呢?就是把这之间的天数加起来在对7求余,结果是多少就是星期几2:求当月有多少天3:在对日历进行排位一:效果图如下所示:二:具体实现代码如下:import java.util.Scanner;public class Calendar {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner input=new Scanner(System.in);System.out.println("----万年历-----");System.out.println("请输入年份:");int year=input.nextInt();System.out.println("请输入月份:");int month=input.nextInt();int sumDay=0;int monthDay=0;//输入的月份天数;for(int oldYear=1900;oldYear<year;oldyear++)< bdsfid="90" p=""></year;oldyear++)<>{if(oldYear%4==0&&oldYear%100!=0||oldYear%400= =0) {sumDay+=366;if(month==2){monthDay=29;}else{if(month==4||month==6||month==9||month==11) {monthDay=30;}else{monthDay=31;}}}else{sumDay+=365;if(month==2){monthDay=28;}else{if(month==4||month==6||month==9||month==11) { monthDay=30;else{monthDay=31;}}}}for(int i=1;i<month;i++)< bdsfid="131" p=""></month;i++)<>{if(i==2){if(year%4==0&&year%100!=0||year%400==0) {sumDay+=29;}else{sumDay+=28;}}else{if(i==4||i==6||i==9||i==11){sumDay+=30;}else{sumDay+=31;}}sumDay+=1;int ofWeek=0;//星期几ofWeek=sumDay%7;//System.out.println("一共多少天:"+sumDay);//System.out.println("今天是星期几:"+ofWeek);//System.out.println("这个月一共多少天:"+monthDay); System.out.println("一\二\三\四\五\六\日");for(int i=1;i<=7;i++){if(ofWeek==0){ofWeek=7;}if(ofWeek==i){for(int j=1;j<=monthDay;j++){System.out.print(j+"\");if((ofWeek+j-1)%7==0){System.out.print("\");}}}else{System.out.print("\");}} }。

java编写简单日历课程设计

java编写简单日历课程设计

java编写简单日历课程设计一、课程目标知识目标:1. 理解Java面向对象编程的基本概念,掌握类和对象的创建及使用;2. 学习使用Java中的日期处理类,了解日期和时间的计算方法;3. 掌握在Java中运用条件语句和循环语句进行逻辑判断和重复操作;4. 理解并运用数组、字符串等数据结构存储和操作日历数据。

技能目标:1. 能够编写简单的Java程序,构建一个可展示当前日期、月份和年份的日历界面;2. 学会使用Java类库中的相关类和方法,实现对日期的增减和格式化输出;3. 通过编程实践,提高问题分析能力,培养解决实际问题的编程技能;4. 学会调试和修改程序错误,优化程序性能。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养学习Java语言的积极态度;2. 培养学生的团队合作精神,增强沟通与协作能力;3. 培养学生遇到困难时保持耐心和细心的品质,勇于克服编程过程中的问题;4. 引导学生认识到编程在生活中的实际应用,提高学习责任感。

二、教学内容1. Java基本语法复习:类与对象、构造方法、成员变量和局部变量;2. Java日期时间类:java.util.Calendar类的使用,日期和时间的获取、设置及计算;3. Java控制结构:if条件语句、for和while循环语句;4. 数据结构:数组、字符串的使用;5. 日历程序设计:设计一个简单的日历界面,显示当前日期、月份和年份;- 界面设计:使用控制台输出日历布局;- 逻辑实现:使用Calendar类获取日期信息,运用循环语句输出日历;- 功能扩展:实现日期的增减,显示当天是星期几;6. 程序调试与优化:代码检查、异常处理、性能优化;7. 课外拓展:探索Java中的其他日期时间处理类,如java.time包的使用。

教学内容安排与进度:第一课时:Java基本语法复习,介绍Calendar类及日期时间获取;第二课时:控制结构及应用,设计日历界面;第三课时:实现日历逻辑,完成日期增减及星期显示;第四课时:程序调试与优化,进行代码审查和性能提升;第五课时:课外拓展,引入java.time包进行高级日期时间处理。

java日历小程序课程设计

java日历小程序课程设计

湖南农业大学课程论文学院:信息科学技术班级:08级信息工程2班课程论文题目: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初始化程序数据,绘制程序面板..................................... - 3 -3.3显示日期的方法................................................... - 6 -3.4点击按钮产生的效果............................................... - 8 - 4程序测试............................................................... - 9 -4.1程序不能完全退出................................................. - 9 -4.2下拉列表数据不能返回............................................ - 10 - 5心得体会.............................................................. - 10 - 6参考文献.............................................................. - 11 - 致谢 ................................................................... - 11 - 附:程序源代码.......................................................... - 12 -JA V A日历小程序学生:郭显勇、刘彦波、任涛湖南农业大学信息科学技术学院2008级信息工程2班学号200841843227、200841843228、200841843219摘要:万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查询,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。

JAVA显示日历课程设计csdn

JAVA显示日历课程设计csdn

JAVA显示日历课程设计csdn一、教学目标本课程旨在通过Java编程语言实现一个简单的日历显示功能,帮助学生掌握以下知识目标:1.理解并掌握Java编程语言的基本语法和结构。

2.学习并应用Java中的日期和时间处理类库。

3.学习并实践面向对象编程的基本概念和方法。

在技能目标方面,学生将能够:1.运用Java编程语言独立开发一个简单的日历应用程序。

2.运用面向对象编程的思想,设计和实现具有良好结构的应用程序。

在情感态度价值观目标方面,学生将:1.培养解决问题的能力和创新精神。

2.培养团队合作和分享的意识。

二、教学内容本课程的教学内容将按照以下大纲进行:1.Java编程语言基础:介绍Java的基本语法、数据类型、控制结构等。

2.面向对象编程:介绍类、对象、继承、多态等概念和方法。

3.日历显示功能的实现:学习并应用Java中的日期和时间处理类库,实现一个简单的日历显示功能。

具体的教学内容安排如下:第1周:Java编程语言基础。

第2周:面向对象编程。

第3周:日历显示功能的实现。

三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:讲解Java编程语言的基础知识和面向对象编程的概念。

2.案例分析法:分析并讨论实际的日历应用程序案例,帮助学生理解和应用知识。

3.实验法:学生通过动手实践,独立开发一个简单的日历应用程序。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,将准备以下教学资源:1.教材:Java编程语言基础和面向对象编程的教材。

2.多媒体资料:相关的教学视频、演示文稿和案例分析资料。

3.实验设备:计算机和网络设备,以供学生实践和开发应用程序。

五、教学评估本课程的评估方式将包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:包括课堂参与度、小组讨论、提问等,占总评的20%。

2.作业:包括课后编程练习和相关的写作任务,占总评的30%。

3.考试:包括期中和期末考试,占总评的50%。

java日历小程序

java日历小程序

java日历小程序Java是一种广泛使用的编程语言,具有跨平台性和易于学习的特点。

在这篇文章中,我将介绍一个使用Java编写的日历小程序,该程序可以匡助用户查看任意年份和月份的日历。

1. 程序概述这个日历小程序的主要功能是根据用户输入的年份和月份,生成对应月份的日历。

用户可以通过命令行输入所需的年份和月份,程序将输出一个按照星期罗列的日历表格。

2. 实现思路为了实现这个日历小程序,我们需要使用Java提供的日期和时间相关的类。

Java提供了一个Calendar类,可以用于处理日期和时间。

我们可以使用Calendar 类中的方法来获取当前日期,以及计算指定日期的星期等信息。

程序的主要逻辑如下:- 获取用户输入的年份和月份。

- 创建一个Calendar对象,并设置为用户输入的年份和月份的第一天。

- 获取该月的天数,并计算该月的第一天是星期几。

- 输出日历表格,按照星期罗列。

3. 代码实现下面是一个简单的Java代码示例,用于实现上述日历小程序的功能:```javaimport java.util.Calendar;public class CalendarProgram {public static void main(String[] args) {// 获取用户输入的年份和月份int year = Integer.parseInt(args[0]);int month = Integer.parseInt(args[1]);// 创建一个Calendar对象,并设置为用户输入的年份和月份的第一天Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, 1);// 获取该月的天数,并计算该月的第一天是星期几int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);// 输出日历表格System.out.println("日一二三四五六");for (int i = 1; i < firstDayOfWeek; i++) {System.out.print(" ");}for (int i = 1; i <= daysInMonth; i++) {System.out.printf("%2d ", i);if ((i + firstDayOfWeek - 1) % 7 == 0) {System.out.println();}}}}```4. 运行结果以下是一个示例运行结果,用户输入年份为2022,月份为3(即3月份):```日一二三四五六1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31```5. 总结通过这个简单的Java日历小程序,我们可以看到Java语言的灵便性和易用性。

《面向对象程序设计》课程设计java日历

《面向对象程序设计》课程设计java日历

软件学院课程设计报告书课程名称《面向对象程序设计》课程设计设计题目 java日历专业班级学号姓名指导教师徐娇月2011 年12 月目录1 设计时间 (3)2 设计目的 (3)3设计任务 (3)4 设计内容 (3)4.1概念设计 (3)4.1.1 系统功能图 (3)4.1.2 需求分析 (4)4.1.3设计思路 (6)4.2详细设计 (7)4.2.1类设计 (7)4.2.2界面设计 (7)4.2.3功能实现 (9)4.3运行调试与分析讨论 (12)4.3.1运行结果和分析 (12)4.3.2改进想法 (13)5 总结与展望 (14)参考文献 (15)成绩评定 (15)1 设计时间2011年12月19日—2011年12月22日2 设计目的面向对象程序设计是学习完《Java 6 程序设计》课程之后,进行的一次全面的综合性练习,是学习完理论课程之后的必要的集中实践环节。

面向对象程序设计的课程设计的目的在于是提高学生对所学知识综合应用能力的一种方式,要求我们对理论课中所学习到的知识综合运用,实现有一定规模的Java 应用。

此次课程设计也为我们将来的毕业设计和具体工作实践奠定了坚实的基础。

3设计任务Java 日历设计一个java 日历,要求用java 编写简单日历,只需要输入年、月就可打印出对应月的日历。

要求有简单的用户界面。

4 设计内容4.1概念设计4.1.1 系统功能图该系统主要实现的功能如图一所示:图一万年历系统查询指定年份日历查询指定月份日历查询相邻年份日历选择其他日期查看今日查询相邻月份日历显示日期1、当用户需要查询指定年月的日历时,用户将选择框内年月改变,系统获取信息并设置月历,具体流程如图二所示:图二2、用户用鼠标点击选择一个日期后,系统可用蓝色方框框住该日期,表示系统已选择该日,具体流程如图三所示:图三4.1.2 需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历、对选中的日期进行标识。

JAVA日期日历xp课程设计

JAVA日期日历xp课程设计

JAVA日期日历xp课程设计一、课程目标知识目标:1. 学生能理解并掌握JAVA中日期和日历相关类的用法,如Date、Calendar、SimpleDateFormat等。

2. 学生能运用所学知识实现日期的格式化输出、日期的计算、日期比较等基本操作。

3. 学生了解并掌握异常处理在日期处理中的应用。

技能目标:1. 学生能独立编写简单的日历程序,展示日期、月份和年份。

2. 学生能通过编程解决与日期相关的实际问题,如计算日期间隔、判断闰年等。

3. 学生能在编写代码过程中,运用调试技巧,解决日期处理中的常见错误。

情感态度价值观目标:1. 学生通过学习日期日历编程,培养对编程的兴趣和热情,增强学习动力。

2. 学生在团队协作中,学会与他人分享、沟通,提高合作能力。

3. 学生通过解决实际问题,培养解决问题的能力和创新精神,增强自信心。

课程性质:本课程为实践性较强的课程,以理论为基础,注重培养学生的动手操作能力和实际问题解决能力。

学生特点:学生已具备一定的JAVA编程基础,具有较强的逻辑思维能力,对编程有一定的兴趣。

教学要求:教师需引导学生掌握日期日历相关类的用法,注重实践操作,鼓励学生创新和合作,提高学生的编程能力和实际问题解决能力。

通过本课程的学习,使学生能够将所学知识应用于实际编程中,培养具有实际操作能力的编程人才。

二、教学内容1. 日期和日历基础知识回顾:介绍JAVA中日期和日历相关类的概念、用途,回顾已学的Date、Calendar、SimpleDateFormat等类的特点和使用方法。

- 章节关联:课本第三章第二节“日期和时间的处理”2. 日期格式化输出:讲解SimpleDateFormat类的用法,实现日期的格式化输出。

- 章节关联:课本第三章第二节“日期和时间的格式化”3. 日期计算与比较:介绍日期加减、日期比较等操作,以及Calendar类在日期计算中的应用。

- 章节关联:课本第三章第二节“日期和时间的计算”4. 异常处理:讲解在日期处理过程中可能遇到的异常类型,如ParseException,以及如何进行异常处理。

Java课程设计报告——桌面日历

Java课程设计报告——桌面日历

Java课程设计报告——桌面日历目录一、需求分析 (2)二、概要设计 (3)三、详细设计 (4)四、调试分析 (9)五、用户说明 (9)六、运行结果 (10)七、附录 (10)一、需求分析选题意义:自上世纪以来,随着电脑的逐渐普及,人们的工作和生活越来越方便和快捷,也使越来越多的人依赖于电脑办公。

而传统的日历记事本显现出在当今时代的不足和局限性,比如不便携带、不便查找、不能自动提醒等等,电脑桌面日历由此孕育而生。

本设计就是针对当前网络上众多的桌面日历,综合其各项基本功能来开发一套属于自己的个性化日历系统。

本设计主要采用NetBeans开发平台,通过java语言来实现记事,日期查询以及日志提醒等工作。

为客户带来方便,同时系统的阐述开发采用的过程及方法。

功能实现:1、通过标签类jLabel显示日、月,程序主体框架。

2、通过按钮类jPanelButton,▲和▼调整年份通过代码“\u25C4”和“"\u25BA"”调整月份。

3、添加鼠标事件,键盘事件,分别可以通过按钮和键盘输入调整显示日期。

4、程序通过读取计算机当前日期,显示当前日期二、概要设计1、取得月份天数private JToggleButton cur=null;//月份天数数组,用来取得当月有多少天// 1 2 3 4 5 6 7 8 9 10 11 12private int[] mm={31,28,31,30,31,30,31,31,30,31,30,31}; //空日期构造函数2、带日期设置的构造函数public JCalendar() {try {jbInit();}catch(Exception e) {e.printStackTrace();}}//带日期设置的构造函数3、带日历输入的构造函数public JCalendar(int year, int month, int day) {cal.set(year, month, day);try {jbInit();}catch (Exception e) {e.printStackTrace();}}//带日历输入的构造函数4、带日期输入的构造函数public JCalendar(GregorianCalendar calendar) {cal=calendar;try {jbInit();}catch (Exception e) {e.printStackTrace();}}//带日期输入的构造函数5、初始化组件public JCalendar(Date date) {cal.setTime(date);try {jbInit();}catch (Exception e) {e.printStackTrace();}}//初始化组件三、详细设计部分代码void jPanelButtonComponentResized(ponentEvent evt){ YearUp.setLocation(0,0);YearDown.setLocation(0,YearUp.getHeight());jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2); jPanelButton.setPreferredSize(newDimension(YearUp.getWidth(),YearUp.getHeight()*2));jPanelButton.updateUI();}//测试用public static void main(String[] args){JFrame f=new JFrame();f.setContentPane(new JCalendar());f.pack();//f.setResizable(false);f.show();}//增加年份void YearUp_actionPerformed(ActionEvent e) {year++;showYear();showDate();showDays();}//减少年份void YearDown_actionPerformed(ActionEvent e) {year--;showYear();showDate();showDays();}//减少月份void MonthDown_actionPerformed(ActionEvent e) {month--;if(month<0) {month = 11;year--;showYear();}showMonth();showDate();showDays();}//增加月份void MonthUp_actionPerformed(ActionEvent e) {month++;if(month==12) {month=0;year++;showYear();}showMonth();showDate();showDays();}//初始化年月日void iniCalender(){year=cal.get(Calendar.YEAR);month=cal.get(Calendar.MONTH);day=cal.get(Calendar.DAY_OF_MONTH);}//刷新月份void showMonth(){Month.setText(Integer.toString(month+1)+"月");}//刷新年份void showYear(){Year.setText(Integer.toString(year)+"年");}//刷新日期void showDate(){Out.setText(Integer.toString(year)+"-"+Integer.toString(month+1)+"-"+In teger.toString(day));}//重画天数选择面板void showDays() {cal.set(year,month,1);int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK); int n=mm[month];if(cal.isLeapYear(year)&&month==1) n++;int i=0;for(;i<firstDayOfWeek-1;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setText("");}int d=1;for(;d<=n;d++){days[i].setText(Integer.toString(d));days[i].setEnabled(true);if(d==day) days[i].setSelected(true);else days[i].setSelected(false);;i++;}for(;i<42;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setText("");}}//单击年份面板选择整个年份字符串void SelectionYear(){Year.setSelectionStart(0);Year.setSelectionEnd(Year.getText().length());}//单击月份面板选择整个月份字符串void SelectionMonth(){Month.setSelectionStart(0);Month.setSelectionEnd(Month.getText().length());}//月份面板响应鼠标单击事件void Month_mouseClicked(MouseEvent e) {//SelectionMonth();inputMonth();}//检验输入的月份void inputMonth(){String s;if(Month.getText().endsWith("月")){s=Month.getText().substring(0,Month.getText().length()-1); }else s=Month.getText();month=Integer.parseInt(s)-1;this.showMe();}//月份面板键盘敲击事件响应void Month_keyPressed(KeyEvent e) {if(e.getKeyChar()==10)inputMonth();}//年份面板响应鼠标单击事件void Year_mouseClicked(MouseEvent e) {//SelectionYear();inputYear();}//年份键盘敲击事件响应void Year_keyPressed(KeyEvent e) {//System.out.print(new Integer(e.getKeyChar()).byteValue()); if(e.getKeyChar()==10)inputYear();}//检验输入的年份字符串void inputYear() {String s;if(Year.getText().endsWith("年")){s=Year.getText().substring(0,Year.getText().length()-1);}else s=Year.getText();year=Integer.parseInt(s);this.showMe();}//以字符串形式返回日期,yyyy-mm-ddpublic String getDate(){return Out.getText();}//以字符串形式输入日期,yyyy-mm-ddpublic void setDate(String date){if(date!=null){StringTokenizer f = new StringTokenizer(date, "-");if(f.hasMoreTokens())year = Integer.parseInt(f.nextToken());if(f.hasMoreTokens())month = Integer.parseInt(f.nextToken());if(f.hasMoreTokens())day = Integer.parseInt(f.nextToken());cal.set(year,month,day);}this.showMe();}//以日期对象形式输入日期public void setTime(Date date){cal.setTime(date);this.iniCalender();this.showMe();}//返回日期对象public Date getTime(){return cal.getTime();} //返回当前的日public int getDay() {return day;}//设置当前的日public void setDay(int day) {this.day = day;cal.set(this.year,this.month,this.day); this.showMe();}//设置当前的年public void setYear(int year) {this.year = year;cal.set(this.year,this.month,this.day); this.showMe();}//返回当前的年public int getYear() {return year;}//返回当前的月public int getMonth() {return month;}//设置当前的月public void setMonth(int month) {this.month = month;cal.set(this.year,this.month,this.day); this.showMe();}//刷新public void showMe(){this.showDays();this.showMonth();this.showYear();this.showDate();}}public class TestJCalendar {public static void main(String[] args) {JFrame f=new JFrame();f.setContentPane(new JCalendar());f.pack();//f.setResizable(false);f.show();}}四、调试分析1、程序调试初期,按钮无法调整程序日期,后重写Year_mouseClicked(MouseEvent e)添加void showYear()使得功能得以完善。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南第一师范学院信息科学与工程系课程设计报告题目JA V A简易时间日历程序学生姓名邹跃玲学号0307307016专业班级07计算机应用技术一班指导教师伍智平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节《课程设计的要求和选题》(P408~413)五、提交成果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 系统模块划分图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 ponent;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(newJSpinner.NumberEditor(yearsSpinner, "0000"));yearsSpinner.setValue(newInteger(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(Calend ar.WEEK_OF_MONTH),calendar.get(Calendar.WEEK_OF_MONTH));daysTable.setColumnSelectionInterval(calendar.get(Cal endar.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_CLOS E);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 JFrameimplements 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(newInteger(""+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. 总结本次作业是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,因此,开始设计的时候先回顾以前所学的内容,明确本次作业设计所要用到的技术点并在网上搜索以及查阅相关的书籍来搜集资料。

相关文档
最新文档