Java课程设计记事本.docx
《Java课程设计记事本.docx》由会员分享,可在线阅读,更多相关《Java课程设计记事本.docx(23页珍藏版)》请在冰豆网上搜索。
Java课程设计记事本
Java语言程序设计B报告
班级:
学号:
姓名:
成绩:
2012年1月
日历记事本
1、题目要求:
带有日程提醒功能的日历:
1、显示信息:
用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期;
2、定时提醒:
用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框;
3、查询信息:
用户可以查询到某个月的所有的提示信息。
二、编程语言和运行环境
整个程序是在Eclipse环境下编写的,采用的语言为java语言
三、编程思想
创建主类CalendarPad控制整个程序的调控与连接,该类负责创建本日历记事本程序的主窗口,含有main方法,程序从该类开始执行。
并创建Year、Month、NotePad三个类分别负责年份、月份以及记事本的创建及管理。
CalendarPad模块负责该类负责创建本日历记事本程序的主窗口,含有
main方法,程序从该类开始执行;
Year模块负责管理创建年份的对象;
Month模块负责管理创建月份的对象;
NotePad模块负责创建记事本。
流程图(如下所示)
4、设计目的
本Java程序设计是为了帮助我们深入学习掌握Java语言,熟练运用这个工具而设立的课程。
通过课程设计各个项目的综合训练,加强我们对JAVA语言的理解,检验我们对专业理论知识理解与掌握的程度,锻炼学生综合运用JAVA程序设计处理所学的知识实际分析问题、解决问题的能力,使课堂上的理论在实践中得到运用。
同时也满足了大多数同学对于一款简单易用的日记本软件的需求。
五、程序运行截图
6、源程序
该类负责创建本日历记事本程序的主窗口,含有main方法,程序从该类开始执行:
importjava.util.Calendar;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.Hashtable;
publicclassCalendarPadextendsJFrameimplementsMouseListener
{
super("周鹏的课程设计——日历记事本");
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.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(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,524,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.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);
}
}
该类负责管理创建月份的对象
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassMonthextendsBoximplementsActionListener
{
intmonth;
JTextFieldshowMonth=null;
JButton下月,上月;
CalendarPad日历;
publicMonth(CalendarPad日历)
{
super(BoxLayout.X_AXIS);
this.日历=日历;
showMonth=newJTextField
(2);
month=日历.getMonth();
showMonth.setEditable(false);
showMonth.setForeground(Color.blue);
showMonth.setFont(newFont("TimesRomn",Font.BOLD,16));
下月=newJButton("下月");
上月=newJButton("上月");
add(上月);
add(showMonth);
add(下月);
上月.addActionListener(this);
下月.addActionListener(this);
showMonth.setText(""+month);
}
publicvoidsetMonth(intmonth)
{
if(month<=12&&month>=1)
{
this.month=month;
}
else
{
this.month=1;
}
showMonth.setText(""+month);
}
publicintgetMonth()
{
returnmonth;
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==上月)
{
if(month>=2)
{
month=month-1;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
elseif(month==1)
{
month=12;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
showMonth.setText(""+month);
}
elseif(e.getSource()==下月)
{
if(month<12)
{
month=month+1;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
elseif(month==12)
{
month=1;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
showMonth.setText(""+month);
}
}
}
该类负责管理创建年份的对象
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassYearextendsBoximplementsActionListener
{
intyear;
JTextFieldshowYear=null;
JButton明年,去年;
CalendarPad日历;
publicYear(CalendarPad日历)
{
super(BoxLayout.X_AXIS);
showYear=newJTextField(4);
showYear.setForeground(Color.blue);
showYear.setFont(newFont("TimesRomn",Font.BOLD,14));
this.日历=日历;
year=日历.getYear();
明年=newJButton("下年");
去年=newJButton("上年");
add(去年);
add(showYear);
add(明年);
showYear.addActionListener(this);
去年.addActionListener(this);
明年.addActionListener(this);
}
publicvoidsetYear(intyear)
{
this.year=year;
showYear.setText(""+year);
}
publicintgetYear()
{
returnyear;
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==去年)
{
year=year-1;
showYear.setText(""+year);
日历.setYear(year);
日历.设置日历牌(year,日历.getMonth());
}
elseif(e.getSource()==明年)
{
year=year+1;
showYear.setText(""+year);
日历.setYear(year);
日历.设置日历牌(year,日历.getMonth());
}
elseif(e.getSource()==showYear)
{
try
{
year=Integer.parseInt(showYear.getText());
showYear.setText(""+year);
日历.setYear(year);
日历.设置日历牌(year,日历.getMonth());
}
catch(NumberFormatExceptionee)
{
showYear.setText(""+year);
日历.setYear(year);
日历.设置日历牌(year,日历.getMonth());
}
}
}
}
该类负责创建记事本
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.io.*;
publicclassNotePadextendsJPanelimplementsActionListener
{
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)
{