浙江科技学院Java程序课程设计日历记事本.docx
- 文档编号:5985716
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:25
- 大小:197.52KB
浙江科技学院Java程序课程设计日历记事本.docx
《浙江科技学院Java程序课程设计日历记事本.docx》由会员分享,可在线阅读,更多相关《浙江科技学院Java程序课程设计日历记事本.docx(25页珍藏版)》请在冰豆网上搜索。
浙江科技学院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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江 科技学院 Java 程序 课程设计 日历 记事本