浙江科技学院Java程序课程设计日历记事本.docx

上传人:b****5 文档编号:5985716 上传时间:2023-01-02 格式:DOCX 页数:25 大小:197.52KB
下载 相关 举报
浙江科技学院Java程序课程设计日历记事本.docx_第1页
第1页 / 共25页
浙江科技学院Java程序课程设计日历记事本.docx_第2页
第2页 / 共25页
浙江科技学院Java程序课程设计日历记事本.docx_第3页
第3页 / 共25页
浙江科技学院Java程序课程设计日历记事本.docx_第4页
第4页 / 共25页
浙江科技学院Java程序课程设计日历记事本.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

浙江科技学院Java程序课程设计日历记事本.docx

《浙江科技学院Java程序课程设计日历记事本.docx》由会员分享,可在线阅读,更多相关《浙江科技学院Java程序课程设计日历记事本.docx(25页珍藏版)》请在冰豆网上搜索。

浙江科技学院Java程序课程设计日历记事本.docx

浙江科技学院Java程序课程设计日历记事本

2010级Java程序课程设计报告

 

报告题目:

基于Java的日历记事本的

设计与开发

学院:

信息与电子工程学院   

专业:

计算机科学与技术     

班级:

计算机102班      

学号:

110021051

11002104、110021052

学生姓名:

傅攀攀(组长)、

陆建浩、刘凌阳

指导教师:

许加兵           

 

二○一二年一月

Java程序课程设计任务书

一、主要任务与目标:

1.掌握Java语言,能熟练使用Javascript,Jcreator等开发工具,

2.熟悉软件分析和设计方法。

3.使用所学知识开发一个基于Java的日历记事本。

二、主要内容与基本要求:

设计GUI界面的日历记事本。

系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。

1.系统界面的左侧是日历。

该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。

2.该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。

3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。

三、开发工具:

JCreatorPro、JDK、MyEclipse、UML、SQLServer2008等。

四、计划进度:

1.12月27日:

分组确定组员,搜集资料、查阅文献,确定选题。

2.12月28日--12月31日:

日历记事本的需求分析,设计,功能模块完善

3.1月1日--1月2日:

基于日历记事本信息存储的数据库分析与设计

4.1月3日--1月5日:

主要模块程序流程图、编程实现游戏功能

5.1月3日--1月5日:

日历记事本调试、测试、修改与完善

6.1月6日:

日历记事本课程设计报告撰写

7.1月6日:

日历记事本课程设计报告答辩

五、主要参考文献

[01]耿祥义,张跃平.Java课程设计(第二版)[M].清华大学出版社.2008年11月

[02]耿祥义,张跃平.Java2实用教程(第三版)[M].清华大学出版社.2006年8月

六、小组分工

傅攀攀(组长):

资料汇总,撰写任务书,撰写课程设计报告,部分代码编写注释,添加部分功能,总体设计。

详细设计:

负责Block类,HandleImage类,HandleMove类,VerifySuccess类等代码的编写。

程序运行界面与结果。

陆建浩:

查找资料,需求分析,部分代码编写注释,添加部分功能

详细设计:

负责PuzzleGame类,Point类的代码编写。

程序测试与运行界面。

刘凌阳:

查找资料,需求分析,部分代码编写注释,添加部分功能,

详细设计:

负责PuzzlePad类的代码编写。

代码检查与调试。

学生(签字)傅攀攀陆建浩刘凌阳2011年12月26日

指导教师许加兵2011年12月26日

 

系统的功能模块划分与系统流程图:

本日历记事本共有4个java源文件。

CalendarPad.java

该java文件生成的类负责创建本日历记事本程序主窗口。

该类含有main方法,程序从该类开始执行。

Year.java

该文件负责创建管理年份的对象。

Month.java

该文件负责创建管理月份的类对象。

NotePad.java

该文件负责创建记事本。

系统详细设计:

主类CanlendarPad

1.成员变量

成员变量描述

变量类型

名称

年、月、日

int

year,month,day

保存日志的散列表

Hanshtable

hanshtable

存放散列表的文件

File

file

显示日期

JtextFile[]

showDay

日历对象

Calendar

日历

记事本对象

NotePad

notepad

Month

负责改变月

Year

负责改变年

2.方法

名称

功能

备注

CalendarPad

创建窗口主程序

构造方法

设置日历牌

设置日立的年份、月份

排列号码

排列月份中的号码

mousePressed

处理MouseEvent事件

接口方法

main

程序开始运行

 

记事本Note

1、成员变量

描述

变量类型

名称

文本输入区

JTextArea

text

保存、删除日志的按钮

Button

保存日志、删除日志

保存日志的散列表

Hashtable

table

保存散列表的文件

File

file

记录日志的人年、月、日

int

year,month,day

2、方法

名称

功能

备注

NotaPad

创建记事本对象

构造方法

setYear

设置年份

getYear

获取年份

setMonth

设置月份

getMonth

获取月份

setDay

设置日期

getDay

获取日期

获取日志内容

获取日志内容

保存日志

保存日志

删除日志

删除日志

actionPerformed

处理ActionEvent事件

接口方法

年Year

1.成员变量

描述

变量类型

名称

表示年份的整数

int

year

显示年份的文本条

JtextFiled

showYear

负责增减年份的按钮

Jbutton

明年、去年

2.方法

名称

功能

备注

Year

创建年对象

构造方法

setYear

设置年份

getYear

获取年份

actionPerformed

处理ActionEvent事件

接口方法

月Month

1.成员变量

描述

变量类型

名称

表示月份的整数

int

month

显示月份的文本条

JtextFiled

showMonth

负责增减月份的按钮

Jbutton

下月,上月

2.方法

名称

功能

备注

Month

创建“月”对象

构造方法

SetMonth

设置月份

getMonth

获取月份

actionPerformed

处理ActionEvent

接口方法

程序截图:

 

日历记事本程序代码:

importjava.io.*;

importjava.awt.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.event.*;

importjavax.swing.event.*;

importjava.util.Hashtable;

importjava.util.Calendar;

publicclassCalendarPadextendsJFrameimplementsMouseListener

{

intyear,month,day;

Hashtablehashtable;

Filefile;

JTextFieldshowDay[];

JLabeltitle[];

Calendar日历;

int星期几;

NotePadnotepad=null;

Month改变月;

Year改变年;

String星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

JPanelleftPanel,rightPanel;

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);

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.red);

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(newLabel("请在年份输入框输入所查年份.并回车确定."),

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);

设置日历牌(year,month);

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

setVisible(true);

setBounds(100,50,700,285);

validate();

}

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.blue);

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.red);}

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);

}

}

 

classNotePadextendsJPanelimplementsActionListener//记事本

{

JTextAreatext;

JButton保存日志,删除日志;

Hashtabletable;

JLabel信息条;

intyear,month,day;

Filefile;

CalendarPadcalendar;

publicNotePad(CalendarPadcalendar)

{

this.calendar=calendar;

year=calendar.getYear();

month=calendar.getMonth();

day=calendar.getDay();;

table=calendar.getHashtable();

file=calendar.getFile();

信息条=newJLabel(""+year+"年"+month+"月"+day+"日",JLabel.CENTER);

信息条.setFont(newFont("TimesRoman",Font.BOLD,16));

信息条.setForeground(Color.blue);

text=newJTextArea(10,10);

保存日志=newJButton("保存日志");

删除日志=newJButton("删除日志");

保存日志.addActionListener(this);

删除日志.addActionListener(this);

setLayout(newBorderLayout());

JPanelpSouth=newJPanel();

add(信息条,BorderLayout.NORTH);

pSouth.add(保存日志);

pSouth.add(删除日志);

add(pSouth,BorderLayout.SOUTH);

add(newJScrollPane(text),BorderLayout.CENTER);

}

 

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==保存日志)

{

保存日志(year,month,day);

}

elseif(e.getSource()==删除日志)

{

删除日志(year,month,day);

}

}

publicvoidsetYear(intyear)

{

this.year=year;

}

publicintgetYear()

{

returnyear;

}

publicvoidsetMonth(intmonth)

{

this.month=month;

}

publicintgetMonth()

{

returnmonth;

}

publicvoidsetDay(intday)

{

this.day=day;

}

publicintgetDay()

{

returnday;

}

publicvoid设置信息条(intyear,intmonth,intday)

{

信息条.setText(""+year+"年"+month+"月"+day+"日");

}

publicvoid设置文本区(Strings)

{

text.setText(s);

}

publicvoid获取日志内容(intyear,intmonth,intday)

{

Stringkey=""+year+""+month+""+day;

try

{

FileInputStreaminOne=newFileInputStream(file);

ObjectInputStreaminTwo=newObjectInputStream(inOne);

table=(Hashtable)inTwo.readObject();

inOne.close();

inTwo.close();

}

catch(Exceptionee)

{

}

if(table.containsKey(key))

{Stringm=""+year+"年"+month+"月"+day+"有记事.确认查看?

";

intok=JOptionPane.showConfirmDialog(this,m,"询问",JOptionPane.YES_NO_OPTION,

JOptionPane.QUESTION_MESSAGE);

if(ok==JOptionPane.YES_OPTION)

{text.setText((String)table.get

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

当前位置:首页 > 求职职场 > 简历

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

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