java课程设计日历记事本.docx

上传人:b****5 文档编号:8509424 上传时间:2023-01-31 格式:DOCX 页数:17 大小:216.72KB
下载 相关 举报
java课程设计日历记事本.docx_第1页
第1页 / 共17页
java课程设计日历记事本.docx_第2页
第2页 / 共17页
java课程设计日历记事本.docx_第3页
第3页 / 共17页
java课程设计日历记事本.docx_第4页
第4页 / 共17页
java课程设计日历记事本.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java课程设计日历记事本.docx

《java课程设计日历记事本.docx》由会员分享,可在线阅读,更多相关《java课程设计日历记事本.docx(17页珍藏版)》请在冰豆网上搜索。

java课程设计日历记事本.docx

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语言开发,所以不足之处不可避免。

本系统的统计功能还不够强大,较万年历程序还有不足之处。

比如查看所有保存的日志,添加农历等功能尚未实现,将在以后的时间,继续完善。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

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

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