java课程设计日历记事本.docx
- 文档编号:8509424
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:216.72KB
java课程设计日历记事本.docx
《java课程设计日历记事本.docx》由会员分享,可在线阅读,更多相关《java课程设计日历记事本.docx(17页珍藏版)》请在冰豆网上搜索。
java课程设计日历记事本
题目日历记事本
起讫日期2009年12月28日至2010年1月11日
所在院系 软件学院
学生姓名xxxx专业xxxxx学号xxxx
指导教师职称讲师
所在单位软件学院
2010年1月11日
一.总体设计
1.类之间的关系如图1-1所示。
图1-1类之间的关系
2.java源文件及其功能如表1-1所示。
表1-1java源文件及其功能
序号
文件名
主要功能
备注
1
CalendarPad.java
创建实用万年历记事本程序的主窗口
含有main方法
2
NotePad.java
该文件负责创建记事本
3
Year.java
该文件负责创建管理年份的对象
4
Month.java
该文件负责创建管理月份的类对象
二.详细设计
1.主类CalendarPad
(1)成员变量见表1-2
表1-2主要成员变量(属性)
成员变量描述
变量类型
名称
年、月、日
Int
Year,month,day
显示日期
JTextField[]
showDay
日历对象
CalendarPad
日历
记事本对象
NotePad
notepad
月
Month
负责改变月
年
year
负责改变年
打印对象
PrintJob
p
图形对象
Graphics
g
保存日志的散列表
Hashtable
hashtable
存放散列表的文件
File
file
(2)方法见表1-3
表1-3主要方法
方法名
功能
备注
CalendarPad
创建程序主窗口
构造方法
设置日历牌
设置日历的年份和月份
排列号码
排列月份中的号码
mousePressed
处理MouseEvent事件
actionPerformed
处理ActionEvent事件
接口方法
main
程序开始运行
(3)源代码见文件CalendarPad.java
importjava.util.Calendar;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.Hashtable;
importjava.lang.String.*;
publicclassCalendarPadextendsJFrameimplementsMouseListener,ActionListener
{
intyear,month,day;
Hashtablehashtable;
Filefile;
JTextFieldshowDay[];
JLabeltitle[];
Calendar日历;
int星期几;
NotePadnotepad=null;
PrintJobp=null;//声明一个PrintJob对象。
Graphicsg=null;
Month负责改变月;
Year负责改变年;
String星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
JPanelleftPanel,rightPanel;
JButtonprint=newJButton("打印窗口");
JButtonmm=newJButton("打印日志");
publicCalendarPad(intyear,intmonth,intday)
{
leftPanel=newJPanel();
JPanelleftCenter=newJPanel();
JPanelleftNorth=newJPanel();
leftCenter.setLayout(newGridLayout(7,7));
rightPanel=newJPanel();
this.year=year;
this.month=month;
this.day=day;
负责改变年=newYear(this);
负责改变年.setYear(year);
负责改变月=newMonth(this);
负责改变月.setMonth(month);
JPanelpanel1=newJPanel();
panel1.add(print);
panel1.add(mm);
title=newJLabel[7];
showDay=newJTextField[42];
for(intj=0;j<7;j++)
{
title[j]=newJLabel();
title[j].setText(星期[j]);
title[j].setBorder(BorderFactory.createRaisedBevelBorder());
leftCenter.add(title[j]);
}
title[0].setForeground(Color.red);
title[6].setForeground(Color.blue);
for(inti=0;i<42;i++)
{
showDay[i]=newJTextField();
showDay[i].addMouseListener(this);
showDay[i].setEditable(false);
leftCenter.add(showDay[i]);
}
日历=Calendar.getInstance();
Boxbox=Box.createHorizontalBox();
box.add(负责改变年);
box.add(负责改变月);
leftNorth.add(box);
leftPanel.setLayout(newBorderLayout());
leftPanel.add(leftNorth,BorderLayout.NORTH);
leftPanel.add(leftCenter,BorderLayout.CENTER);
leftPanel.add(panel1,BorderLayout.SOUTH);
leftPanel.validate();
Containercon=getContentPane();
JSplitPanesplit=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,
leftPanel,rightPanel);
con.add(split,BorderLayout.CENTER);
con.validate();
hashtable=newHashtable();
file=newFile("日历记事本.txt");
if(!
file.exists())
{
try{
FileOutputStreamout=newFileOutputStream(file);
ObjectOutputStreamobjectOut=newObjectOutputStream(out);
objectOut.writeObject(hashtable);
objectOut.close();
out.close();
}
catch(IOExceptione)
{
}
}
notepad=newNotePad(this);
rightPanel.add(notepad);
print.addActionListener(this);
mm.addActionListener(this);
设置日历牌(year,month);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
setVisible(true);
setBounds(100,50,524,285);
validate();
}
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==print)
{p=getToolkit().getPrintJob(this,"ok",null);
g=p.getGraphics();
g.translate(60,200);
this.printAll(g);
g.dispose();
p.end();
}
elseif(e.getSource()==mm)
{p=getToolkit().getPrintJob(this,"ok",null);
g=p.getGraphics();
g.translate(120,200);
notepad.text.printAll(g);
g.dispose();
p.end();
}
}
publicvoid设置日历牌(intyear,intmonth)
{
日历.set(year,month-1,1);
星期几=日历.get(Calendar.DAY_OF_WEEK)-1;
if(month==1||month==2||month==3||month==5||month==7
||month==8||month==10||month==12)
{
排列号码(星期几,31);
}
elseif(month==4||month==6||month==9||month==11)
{
排列号码(星期几,30);
}
elseif(month==2)
{
if((year%4==0&&year%100!
=0)||(year%400==0))
{
排列号码(星期几,29);
}
else
{
排列号码(星期几,28);
}
}
}
publicvoid排列号码(int星期几,int月天数)
{
for(inti=星期几,n=1;i<星期几+月天数;i++)
{
showDay[i].setText(""+n);
if(n==day)
{
showDay[i].setForeground(Color.green);
showDay[i].setFont(newFont("TimesRoman",Font.BOLD,20));
}
else
{
showDay[i].setFont(newFont("TimesRoman",Font.BOLD,12));
showDay[i].setForeground(Color.black);
}
if(i%7==6)
{
showDay[i].setForeground(Color.blue);
}
if(i%7==0)
{
showDay[i].setForeground(Color.red);
}
n++;
}
for(inti=0;i<星期几;i++)
{
showDay[i].setText("");
}
for(inti=星期几+月天数;i<42;i++)
{
showDay[i].setText("");
}
}
publicintgetYear()
{
returnyear;
}
publicvoidsetYear(inty)
{
year=y;
notepad.setYear(year);
}
publicintgetMonth()
{
returnmonth;
}
publicvoidsetMonth(intm)
{
month=m;
notepad.setMonth(month);
}
publicintgetDay()
{
returnday;
}
publicvoidsetDay(intd)
{
day=d;
notepad.setDay(day);
}
publicHashtablegetHashtable()
{
returnhashtable;
}
publicFilegetFile()
{
returnfile;
}
publicvoidmousePressed(MouseEvente)
{
JTextFieldsource=(JTextField)e.getSource();
try{
day=Integer.parseInt(source.getText());
notepad.setDay(day);
notepad.设置信息条(year,month,day);
notepad.设置文本区(null);
notepad.获取日志内容(year,month,day);
}
catch(Exceptionee)
{
}
}
publicvoidmouseClicked(MouseEvente)
{
}
publicvoidmouseReleased(MouseEvente)
{
}
publicvoidmouseEntered(MouseEvente)
{
}
publicvoidmouseExited(MouseEvente)
{
}
publicstaticvoidmain(Stringargs[])
{
Calendarcalendar=Calendar.getInstance();
inty=calendar.get(Calendar.YEAR);
intm=calendar.get(Calendar.MONTH)+1;
intd=calendar.get(Calendar.DAY_OF_MONTH);
newCalendarPad(y,m,d);
}
}
二.记事本NotePad
(1)成员变量见表1-4
表1-4主要成员变量(属性)
成员变量描述
变量类型
名称
文本输入区
JTextArea
Text
保存、删除日志的按钮
Button
保存日志,删除日志
保存日志的散列表
Hashtable
table
保存散列表的文件
File
file
记录日志的年、月、日
int
学生
(2)方法见表1-5
表1-5主要方法
方法名
功能
备注
NotePad
创建记事本对象
构造方法
setYear
设置年份
getYear
获取年份
setMonth
设置月份
(3)源代码见文件ScoreSituation.java
3.年Year
(1)成员变量见表1-6
表1-6主要成员变量(属性)
成员变量描述
变量类型
名称
表示年份的整数
Int
学生成绩表
显示年份的文本条
JTextField
ShowYear
负责增减年份的按钮
JButton
明年,去年
(2)方法见表1-7
表1-7主要方法
方法名
功能
备注
Year
创建查询界面
构造方法
actionPerformed
处理ActionEvent事件
接口方法
setYear
设置年份
getYear
获取年份
(3)源代码见文件Year.java
4.月Month
(1)成员变量见表1-8
表1-8主要成员变量(属性)
成员变量描述
变量类型
名称
表示月份的整数
Int
month
显示月份的文本条
JTextField
showMonth
负责增减月份的按钮
JButton
下月,上月
(2)方法见表9
表9主要方法
方法名
功能
备注
Month
创建“月”对象
构造方法
setMonth
设置月份
getMonth
获取月份
actionPerformed
处理ActionEvent事件
接口方法
(3)源代码见文件Month.java
三.运行效果
1.使用eclipse软件运行该系统后,即可进入日历记事本程序的主窗口,绿色较大号的字体为当日日期。
如图1-2所示。
图1-2系统主窗口
2.通过点击“上年”“下年”“上月”“下月”可以选择查看往年日期,如图查看2007年12月的日历,单击“上年”,并5次点击“上月”如图1-3所示。
图1-3查看2007年12月的日历
3.除了能方便的查询日历功能,还可以记录当天日志。
回到当天的窗口,例如在记事本中添加文本“妈妈的生日”并保存,界面如图1-4所示。
图1-4添加文本界面
4.点击“是(Y)”,保存日志,当日期再度回到5月6日,会出现提示对话框。
单击是,可以看到当天日志。
单击是可看到如图1-5,1-6所示:
图1-5查看日志界面
图1-6查看日志界面
5.用户可以使用该程序的打印功能来实现对日历界面的外部显示。
用户可以有选择地打印整个界面或只打印日志
图1-7打印界面
四.工作总结
Java课程设计很快就结束了,这让我过得很充实,获益非浅,从了解与学习所需要的知识开始,我便一步一个脚印、踏踏实实地设计,一点点的完成我的课程设计。
这次课程设计的主要目的是学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程,以及进一步熟悉掌握Java程序设计语言的基础内容,提高Java编程技术以及分析解决问题的综合能力。
通过这次课程设计,我基本掌握了以上要求。
由于专业知识有限,以及动手能力的欠缺,所以开发的系统不是很完善,有一些功能未实现,但是万年历记事本的基本功能均已实现。
以前对Java语言的很多知识认识都不深刻,做过这次实训之后,我对Java语言的开发有了一个比较系统的了解;比如:
散列表应用,用户图形界面设计等的运用已经比较熟练。
这个课程设计使我巩固了Java语言的知识,对于Eclipse开发工具也有了一定的了解。
由于是第一次进行Java语言开发,所以不足之处不可避免。
本系统的统计功能还不够强大,较万年历程序还有不足之处。
比如查看所有保存的日志,添加农历等功能尚未实现,将在以后的时间,继续完善。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 日历 记事本