JAVA小日历软件设计报告.docx
- 文档编号:28716640
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:19
- 大小:211.62KB
JAVA小日历软件设计报告.docx
《JAVA小日历软件设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA小日历软件设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
JAVA小日历软件设计报告
佛山科学技术学院
《可视化编程技术》课程设计报告
小日历软件设计
***********
学号:
**********
年级专业:
12级教育技术学
***********
学院:
教育科学学院
广东★佛山
提交日期:
2014年6月
1.前言………………………………………………………………………………2
2.概要设计…………………………………………………………………………3
2.1开发环境……………………………………………………………………3
2.2设计目标……………………………………………………………………3
2.3小日历功能…………………………………………………………………3
2.4界面设计……………………………………………………………………3
3.详细设计………………………………………………………………………4
3.1使用的java类的说明……………………………………………………4
3.2类的主要方法………………………………………………………………5
3.2.1设计的方法分析………………………………………………………5
3.2.2程序大纲……………………………………………………………5
3.2.3设计总体认识…………………………………………………………6
3.2.4程序流程图……………………………………………………………6
4.运行结果………………………………………………………………………7
5.测试分析………………………………………………………………………7
5.1程序操作…………………………………………………………………7
5.2退出程序…………………………………………………………………7
6.源程序…………………………………………………………………………8
参考文献…………………………………………………………………………13
设计总结…………………………………………………………………………13
摘要:
该程序是一个图形界面的简单的Java小日历,具有美观舒适的界面,使用者能快捷简单地进行操作。
即时点击就能准确地获得需要的日期信息,充分降低了日期查找的难度和节约了时间,对人们的生活有重要的作用。
点击年份上下箭头可以选取所查年份,通过月份下拉箭头可以选择月份,然后页面就会出现你选择的那月进行每一天日期和星期的查询。
界面以红色系为主,给人舒适的感觉。
关键字:
java小日历软件,日历类,查询,事件
1前言
Java技术在1995年被互联网所接受,通过不断的发展和完善,已由单一的编程语言演变成为具有广泛实用性的开发大平台。
Java技术已被IT业内的主要公司所接受并加以运用。
Java技术的高效性、通用性、平台移植性和安全性等使之成为网络应用的首选技术。
从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java无处不在!
Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
Java基本版本叫Java2标准版(Java2StandardEdition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。
Java2移动版(TheJava2MobileEdition,J2ME)包含创建无线Java应用程序的API。
还有Java2企业版(TheJava2Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。
Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。
作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。
Java语言去掉了C++语言的一些容易引起错误的特性。
Java语言的特点有:
面向对象、跨平台、安全性、多线程和图形功能强。
Java应用小程序(JavaApplets)是需要Web浏览器(这种Web浏览器必须具有Java虚拟机和Java类库。
例如Netseave的Navigator、Mlerosoft的Explorer和Sun的Hotjava等)支持运行的Java应用程序。
利用Java应用小程序,就可以由Java应用小程序直接与应用服务软件进行交互。
这样,首先可以减轻HTTP协议的传输负荷,使其专用于HTML文件和Java应用小程序的传输;其次,Java应用小程序可以同时与多个应用服务软件之间建立连接,同时接受多个应用服务器的服务。
因此,Java的引入不仅给Web页面带来了动态性,而且使Web客户可以访问更强大的应用服务软件,进一步提高信息共享的质量。
2概要设计
2.1开发环境
开发平台:
MicrosoftWindowsXPProfessionalServicePack2
开发工具:
JBuilder2007+JDK1.6.0_02
2.2设计目标
(1)显示当月日历、当前日期、当前时间;
(2)可查寻任意月以及任意年的日历;
(3)使用图形化界面能够弹出对话框;
(4)正常退出程序。
2.3小日历功能
功能1:
启动小程序,日历就会显示系统当天的日期,这是最初的功能。
功能2:
点击其他日期,该日期小框的背景色会变成粉红色,数字变成白色,突出显示你选中的日期。
功能3:
点击年份上下箭头可以选取所查年份,此时月份和日期还是原来你选取的,不会改变。
功能4:
通过月份下拉箭头可以选择月份,页面就会出现你选择的年份、月份,便可进行每一天日期和星期的查询。
然后可重复功能3和功能4。
功能5:
窗口可以进行缩小放大,以及可以正常关闭程序。
2.4页面设计
图2.3小日历面板
3详细设计3.1小日历使用的Java类的说明
类名:
MyCalendar
作用:
主类
继承的父类:
JApplet类
publicclassMyCalendarextendsJApplet{}
让applet作为一个可执行的程序来运行
publicstaticvoidmain(String[]args){
JFrameframe=newJFrame("日历");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyCalendarmyCalendar=newMyCalendar();
myCalendar.init();
frame.getContentPane().add(myCalendar);
frame.setSize(270,200);
frame.show();
}
}
类名:
CalendarTable
作用:
主类
继承的父类:
JTable类
classCalendarTableextendsJTable{}
设置日历的table
publicstaticclassCalendarTableextendsJTable{//表格类privateCalendarcalendar;
publicCalendarTable(TableModelmodel,Calendarcalendar){//构造方法super(model);
this.calendar=calendar;}
publicvoidchangeSelection(introw,intcolumn,booleantoggle,booleanextend){//选择表格单元格时
super.changeSelection(row,column,toggle,extend);
if(row==0){//选择为第一行(星期)时不改变单元格return;}
Objectobj=getValueAt(row,column);
if(obj!
=null){
calendar.set(Calendar.DAY_OF_MONTH,((Integer)obj).intValue());}}}
3.2类的主要方法
3.2.1设计的方法分析
在本程序中:
定义了一个Frame类,主要定义一个窗体框架,用于显示日历信息,并在主函数中只创建一个该窗体对象实现程序功能。
定义了一个主日历面板类MyCalendar,其中包含了日历设计所用到的全局变量、功能函数等,在Frame类里定义了其对象。
在该日历面板类里又设计了一个内部类CalendarTable表格类,用于布局日历天的显示格式。
3.2.2程序大纲
3.2.3设计的总体认识
●JAVA设计的摘要
●JAVA设计的目录结构
●JAVA设计的概要和详细设计
●JAVA设计需要编译的环境
●JAVA设计的实用性
3.2.4程序流程图
4运行结果
图4改变年月结果显示
5测试分析
5.1程序操作
对小程序进行调试,没有错误出现。
然后弹出了名为“日历”的小窗口,窗口左上角出现年份显示,按上下按钮可以改变年份;右上角显示月份,按下拉窗口可以选择1——12月;网格窗口中第一行是星期的显示;剩下的行大部分网格的背景色为白色,数字字体为红色,只有选中(当前系统)的日期显示为粉红色背景。
5.2退出程序
小程序弹出的窗口上方有最小化、最大化(还原)、关闭窗口的按键。
窗口最初大小是程序设计中frame.setSize(300,150);设置的,300是宽度,150是高度。
只要按红色关闭按钮,就可以顺利退出程序。
不存在无法关闭小程序的问题。
6程序清单:
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.table.*;
publicclassMyCalendarextendsJApplet{
//定义周日到周六全局变量
publicstaticfinalStringWEEK_SUN="周日";
publicstaticfinalStringWEEK_MON="周一";
publicstaticfinalStringWEEK_TUE="周二";
publicstaticfinalStringWEEK_WED="周三";
publicstaticfinalStringWEEK_THU="周四";
publicstaticfinalStringWEEK_FRI="周五";
publicstaticfinalStringWEEK_SAT="周六";
//设置背景的颜色
publicstaticfinalColorbackground=Color.white;
//设置前景的颜色
publicstaticfinalColorforeground=Color.red;
//设置星期的背景颜色和前景颜色
publicstaticfinalColorheaderBackground=Color.pink;
publicstaticfinalColorheaderForeground=Color.white;
//设置被选中的日期的背景颜色和前景颜色
publicstaticfinalColorselectedBackground=Color.pink;
publicstaticfinalColorselectedForeground=Color.white;
privateJPanelcPane;
privateJLabelyearsLabel;//年的改变
privateJSpinneryearsSpinner;//年调控
privateJLabelmonthsLabel;
privateJComboBoxmonthsComboBox;//月份的下拉框
privateJTabledaysTable;//用来显示日期的table
privateAbstractTableModeldaysModel;
privateCalendarcalendar;
publicMyCalendar(){//构造初始化方法panel
cPane=(JPanel)getContentPane();
}
//初始化,对所有的空间进行布局
publicvoidinit(){
cPane.setLayout(newBorderLayout());//使用border布局管理器
calendar=Calendar.getInstance();
calendar=Calendar.getInstance();
yearsLabel=newJLabel("年:
");
yearsSpinner=newJSpinner();
yearsSpinner.setEditor(newJSpinner.NumberEditor(yearsSpinner,"0000"));
yearsSpinner.setValue(newInteger(calendar.get(Calendar.YEAR)));
//增加监听,监听年份的改变
yearsSpinner.addChangeListener(newChangeListener()
{
publicvoidstateChanged(ChangeEventchangeEvent)
{
intday=calendar.get(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.YEAR,
((Integer)yearsSpinner.getValue()).intValue());
intmaxDay=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,day>maxDay?
maxDay:
day);
updateView();
}
});
JPanelyearMonthPanel=newJPanel();
cPane.add(yearMonthPanel,BorderLayout.NORTH);
yearMonthPanel.setLayout(newBorderLayout());
yearMonthPanel.add(newJPanel(),BorderLayout.CENTER);
JPanelyearPanel=newJPanel();
yearMonthPanel.add(yearPanel,BorderLayout.WEST);
yearPanel.setLayout(newBorderLayout());
yearPanel.add(yearsLabel,BorderLayout.WEST);
yearPanel.add(yearsSpinner,BorderLayout.CENTER);
monthsLabel=newJLabel("月:
");//向月份下拉框中添加内容
monthsComboBox=newJComboBox();
for(inti=1;i<=12;i++){//构造下拉框的12个月份
monthsComboBox.addItem(newInteger(i));
}
monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));
//下拉框当前月份为选中状态
monthsComboBox.addActionListener(newActionListener()
//注册月份下拉框的事件监听器
{publicvoidactionPerformed(ActionEventactionEvent){
intday=calendar.get(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.MONTH,monthsComboBox.getSelectedIndex());
intmaxDay=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,day>maxDay?
maxDay:
day);
updateView();//更新显示
}
});
JPanelmonthPanel=newJPanel();
yearMonthPanel.add(monthPanel,BorderLayout.EAST);
monthPanel.setLayout(newBorderLayout());
monthPanel.add(monthsLabel,BorderLayout.WEST);
monthPanel.add(monthsComboBox,BorderLayout.CENTER);
daysModel=newAbstractTableModel(){
publicintgetRowCount(){
return7;//设置行数为7
}
publicintgetColumnCount(){
return7;//设置列数为7
}
publicObjectgetValueAt(introw,intcolumn){
if(row==0){//第一行显示星期
returngetHeader(column);
}
row--;
Calendarcalendar=(Calendar)MyCalendar.this.calendar.clone();
calendar.set(Calendar.DAY_OF_MONTH,1);
intdayCount=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
intmoreDayCount=calendar.get(Calendar.DAY_OF_WEEK)-1;
intindex=row*7+column;
intdayIndex=index-moreDayCount+1;
if(index
returnnull;
}
else{
returnnewInteger(dayIndex);
}
}
};
daysTable=newCalendarTable(daysModel,calendar);
//设置每个cell可以被选中
daysTable.setCellSelectionEnabled(true);//设置表格单元格可选择
daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
daysTable.setDefaultRenderer(daysTable.getColumnClass(0),
newTableCellRenderer()
{
publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,
booleanisSelected,booleanhasFocus,introw,intcolumn){
Stringtext=(value==null)?
"":
value.toString();
JLabelcell=newJLabel(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);
}
}
returncell;
}});
updateView();
cPane.add(daysTable,BorderLayout.CENTER);};
//返回指定索引index位置上的字符,索引范围从头开始
publicstaticStringgetHeader(intindex)
{
switch(index){
case0:
returnWEEK_SUN;
case1:
returnWEEK_MON;
case2:
returnWEEK_TUE;
case3:
returnWEEK_WED;
case4:
returnWEEK_THU;
case5:
returnWEEK_FRI;
case6:
returnWEEK_SAT;
default:
returnnull;}}
publ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 日历 软件设计 报告