日历记事本课程设计报告Word下载.docx
《日历记事本课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《日历记事本课程设计报告Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
![日历记事本课程设计报告Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/13/b35bd233-f74a-4e3b-8e76-2e631ccf4eaf/b35bd233-f74a-4e3b-8e76-2e631ccf4eaf1.gif)
当鼠标左键单击“下年”按钮,当前日历的年份加一。
2.该日历也可以在某年内按月前后翻动。
当鼠标左键单击“上月”按钮时,当前日历的月份减一;
当鼠标左键单击“下月”按钮时,当前日历的月份加一。
3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。
4.用户选择具体日期后,可以将记事本的当前内容保存起来,形成日志。
2.2主体功能
用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
通过按按钮“上年”和“下年”对年份进行翻页。
通过按按钮“上月”和“下月”对月份进行翻页。
用户可以通过输入年份来查看自己的日志。
2.3开发环境
WindowsXP;
jdk1.5.0-0-05;
ultraedit开发工具
3系统概要设计
3.1系统的功能模块划分与系统流程图
本日历记事本共有4个java源文件。
CalendarPad.java
该java文件生成的类负责创建本日历记事本程序主窗口。
该类含有main方法,程序从该类开始执行。
Year.java
该文件负责创建管理年份的对象。
Month.java
该文件负责创建管理月份对象。
NotePad.java
该文件负责创建记事本。
CalendarPad(主类)
NotePad
Year
Month
4系统详细设计
主类CalendarPad
1.成员变量
成员变量描述
变量类型
名称
年、月、日
int
Year,month,day
保存日志的散列表
Hashtable
hashtable
存放散列表的文件
File
file
显示日期
JTextField[]
showDay
日历对象
Calendar
日历
记事本对象
notepad
月
负责改变月
年
负责改变年
2.方法
功能
备注
CalendarPad
创建程序主窗口
构造方法
设置日历牌
设置日历的年份、月份
排列号码
排列月份中的号码
mousePressed
处理MouseEvent事件
接口方法
mian
程序开始运行
记事本NotePad
1.成员变量
描述
文本输入区
JTextArea
text
保存、删除日志的按钮
Button
保存日志、删除日志
table
保存散列表的文件
记录日志的年、月、日
year,month,day
创建记事本对象
setYear
设置年份
getYear
获取年份
setMonth
设置月份
getMonth
获取月份
setDay
设置日期
getDay
获取日期
获取日志内容
保存日志
删除日志
actionPerformed
处理ActionEvent事件
年Year
表示年份的整数(负数表示公元前)
year
显示年份的文本条
JTextField
showYear
负责增减年份的按钮
JButton
明年,去年
创建“年”对象
月Month
表示月份的整数(负数表示公元前)
month
显示月份的文本条
ShowMonth
负责增减月份的按钮
上月,下月
Month
创建“月”对象
setMonth
getMonth
5测试
5.1测试方案
1.打开主界面,鼠标左键右击,查看日历界面。
2.选定一个日期写日志。
3.对日历添加、删除日志。
4.修改年份,查看一些日志。
5.2测试结果
1.打开主界面,鼠标左键点击,查看日历界面。
如图:
2.下图为选择在2012年1月5日写的日志:
3.添加、删除日志,如图:
添加日志
删除日志
4.修改年份,查看日志,如图:
6小结
经过几天的努力,基本上完成了我的java课程设计。
通过这次的课程设计,基本上将书本上的知识运用到实践上,从而进一步巩固和丰富所学知识,也让我更加深层次的认识了java及其功能的强大。
为了更好地完成这次课程设计,我做了很多准备,上网查阅资料,到图书馆翻阅书籍。
这个过程中也锻炼了我的思维分析、遇到问题及想法设法通过各种途径解决问题的能力。
从理论到实践,在整整几天的时间里,可以说,是苦大于甜,但确实学到很多东西,同时不仅巩固了以前的知识,而且学到了许多书上学不到的知识。
通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是不够的,只有把所学的理论知识和实践结合起来,从理论中得出结论,才能真正服务社会,从而提高自己的实际动手能力和独立思考能力。
通过这次课程设计,了解到了自己的不足之处,对以前的知识没有掌握到位,所以我们一定要学好理论知识,为以后的实践打下基础。
总而言之,这次课程设计我学到了很多。
参考文献
[1]耿祥义,张跃平.
Java2实用教程(第三版)[M].北京:
清华大学出版社,2006
[2]耿祥义.
Java课程设计(第三版)[M].北京:
清华大学出版社,2004
[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M].北京:
[4]JacquieBarker,Java面向对象编程指南,电子工业出版社,2001
附录1
源程序清单
主类CalendarPad:
CalendarPad。
Java
importjava.util.Calendar;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.Hashtable;
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.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++)
{showDay[i].setText("
"
+n);
if(n==day)
{showDay[i].setForeground(Color.green);
showDay[i].setFont(newFont("
TimesRoman"
Font.BOLD,20));
{showDay[i].setFont(newFont("
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++;
星期几;
{showDay[i].setText("
for(inti=星期几+月天数;
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:
importjava.util.*;
importjavax.swing.event.*;
publicclassNotePadextendsJPanelimplementsActionListener
{JTextAreatext;
JButton保存日志,删除日志;
Hashtabletable;
JLabel信息条;
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("
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;
publicvoidsetMonth(intmonth)
{this.month=month;
{returnmonth;
publi