日历记事本JAVA课程设计Word文档格式.docx
- 文档编号:21244718
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:25
- 大小:271.98KB
日历记事本JAVA课程设计Word文档格式.docx
《日历记事本JAVA课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《日历记事本JAVA课程设计Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
功能模块
此设计共有以下几个功能模块。
年份改变
点击一次“上年”按钮可增加一年,点击一次“下年”按钮可减少一年,多次连
续点击即可依次改变多个年份。
月份改变
点击一次“上月”按钮可以增加一月,点击一次“下年”按钮可以减少一月,多
次连续点击即可一次改变多个月份。
日期显示
用于显示当前所选择的所在的年份月份的所有日期、星期,并在记载有日志的日期格中左上角显示“有”标记,而没有记载日志的日期则没有任何标记。
图片显示
为了使本设计界面美观,设置了图片显示模块,使整个设计更加实用、美观、大方。
日志显示
界面的右侧上半部的文本框中,可以选择某天记载日志,并且读取的日志在此部
分显示出来。
时钟显示
以传统时钟(有时针、分针、秒针)的模式显示当前的时间。
保存、删除、读取日志。
可以在没有记载日志的日期里记载日志并保存,可以对以保存的日志进行读取、修改或者删除。
流程图如下
图2流程图
类、方法、属性说明
类
(1)成员变量
·
year,month和day是int型数据,它们的值分别确定年份、月份和日期。
calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。
calendarPad是CalendarPad对象,该对象可以显示和日期有关的数据。
notePad是NotePad对象,具有编辑、读取、保存和删除日志的功能。
showYear和showMonth是JTextField类创建的文本框,用来显示年份和月份。
showDay数组的每个单元是JTextField类创建的用来显示日期的文本框。
calendarImage是CalendarImage创建的对象,用来显示图像。
clock是Clock创建的对象,用来显示时钟。
nextYear等是JButton创建的按钮对象,名字依次为“下年”、“上年”、“下月”、“上
月”。
这些按钮都将当前窗口注册为自己的ActionEvent事件监听者。
saveDauktRecord,deleteDailyRecord,readDailyRecord是JButton创建的按钮对象,
名字依次为“保存日志”、“删除日志”、“读取日志”。
这些按钮都当前窗口注册为自
己的ActionEvent事件监听者。
(2)方法
CalendarWindow()是构造方法,负责完成窗口的初始化。
actionPerformed(AcrionEvent)方法是CalendarWindow类实现的ActionListner接
口中的方法。
mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中
的方法。
doMark()方法负责对有日志的日期作出标记。
main方法是程序运行的人口方法。
year、month和day是int型数据,它们的值分别确定年份、月份和日期。
setYear(int)和getYear()方法分别用来设置year和获取year的值。
setMonth(int)和getMonth()方法分别用来设置month和获取month的值。
setDay(int)和getDay()方法分别用来设置day和获取day的值。
2.类
calenderMessage是CalenderMessage对象,该对象可以处理和日期有关的数据。
CalenderPad()是构造方法,用来创建calenderPad对象。
setShowDayTextField(JTextField[])方法负责设置showDay数组。
showMonthCalendar()方法负责显示“日历”。
text是JTextArea创建的文本区,可在text中编辑多行文本。
menu是JpopupMenu创建的弹出式菜单。
showMessage是JTextField创建的文本条,用来显示和日期有关的数据。
Notepad()是构造方法,用来创建notePad对象。
setShowMessage(int,int,int)方法根据参数指定的日期数据显示有关日期信息。
save(File,int,int,int)方法根据参数指定的日期保存日志。
delete(File,int,int,int)方法删除参数日期指定的日志。
imageFile是File对象,用来存放图像文件的引用。
image是Image对象。
tool是Toolkit对象,负责创建image对象。
CalendarImage()是构造方法,负责创建calendarImage对象。
paintComponent(Graphics)方法负责绘制image。
date是Date对象,负责封装本地时间。
secondTime是包中Timer类中创建的计时器。
pointSX,pointSY是double型数组,其单元值用来表示秒针端点坐标。
Clock()是构造方法,用来创建clock对象。
paintComonent(Graphics)负责完成绘制工作。
3.设计结果与分析
将6个Java源文件:
、、、、和,以及所需要的名为的图像文件保存到同一目录中。
分别编译这6个Java源文件,或运行“javac*.java”命令,编译全部的源文件,然后运行主类,即运行CalendarWindow类。
运行结果图中可以看出记载日志的日期中会有“有”标记,而没有记载日志的日期中没有“有”标记。
右下侧是时钟,左下角显示图片。
图3运行结果图
在此结果中,点击上方的“上年”或“下年”可以改变年份,点击“上月”或“下月”可以改变月份。
右下角显示当前的时间。
可以在任意一天记日志,在有“有”标记的日期查看日志或删除日志。
当想保存日志时,选中某一天,在右侧记下日志点击“保存”即可。
当想查看某天的日志是选中带“有”标记的当天,点击“读取日志”可出现图4所示的提示框,点击是即可读取日志就可以查看日志内容,如图5所示。
图4提示显示页面图
图5查看日志图
若想要删除已有的日志,则选中要删除的日期,点击“删除日志”,则出现提示框,如图6所示,询问是否要删除,点击“是”,则删除了此篇日志,此时,原有的“有”字标记就会消失,此篇日志也就随之消失,如图7所示。
图6提示删除页面图
图7删除后页面图
4.设计体会
经过几天的努力,参考了一些书和网上的资料,完成了一个日历记事本的设计。
由于只学过一学期的Java课程,知识掌握的有限,所以此程序不是特别复杂。
在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。
自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。
通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。
还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。
本次课程设计不仅巩固了以前所学的知识,还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。
所以网络这个强大的工具,确实是我们学习之中可以借助的一个很好的帮手。
网络是我们学习的最好的老师之一。
有问题,问网络,是一个很好的习惯。
因此学到了不少书本上没有的知识;
学到了很多java编程知识。
可以说它给了我一次自我评估的机会。
通过设计让我知道了那些方面我还是有欠缺的,促使我花时间弥补。
总之,本次课程设计收获颇丰。
5.参考文献
[1]陈国君,陈磊,刘洋.Java2程序设计基础[M].北京:
清华大学出版社;
[2]耿祥义,张跃平.Java课程设计[M].北京:
:
228-251
[3]张思民,梁维娜.Java程序设计实践教程[M].北京:
1-21
[4]叶核亚.JAVA2程序设计实用教程[M](第2版).北京:
电子工业出版社;
.
6.附录:
(1);
import.*;
publicclassCalendarWindowextendsJFrameimplementsActionListener,
MouseListener,FocusListener{
intyear,month,day;
CalendarMessagecalendarMessage;
CalendarPadcalendarPad;
NotePadnotePad;
JTextFieldshowYear,showMonth;
JTextField[]showDay;
CalendarImagecalendarImage;
Clockclock;
JButtonnextYear,previousYear,nextMonth,previousMonth;
JButtonsaveDailyRecord,deleteDailyRecord,readDailyRecord;
Filedir;
ColorbackColor=;
publicCalendarWindow(){
dir=newFile("
./dailyRecord"
);
();
showDay=newJTextField[42];
for(inti=0;
i<
;
i++){
showDay[i]=newJTextField();
showDay[i].setBackground(backColor);
showDay[i].setLayout(newGridLayout(3,3));
showDay[i].addMouseListener(this);
showDay[i].addFocusListener(this);
}
calendarMessage=newCalendarMessage();
calendarPad=newCalendarPad();
notePad=newNotePad();
Calendarcalendar=();
(newDate());
year=;
month=+1;
day=;
(year);
(month);
(day);
(calendarMessage);
(showDay);
(year,month,day);
doMark();
rim();
chara[]=();
booleanboo=false;
i++)
if(!
(a[i])))
boo=true;
if(boo==true)rim();
try{day=(str);
catch(NumberFormatExceptionexp){
}
publicvoidmouseReleased(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmouseClicked(MouseEvente){}
publicvoidfocusGained(FocusEvente){
Componentcom=(Component)();
;
publicvoidfocusLost(FocusEvente){
(backColor);
publicvoiddoMark(){
showDay[i].removeAll();
Stringstr=showDay[i].getText().trim();
try{
intn=(str);
if(isHaveDailyRecord(n)==true){dd(mess);
}}
catch(Exceptionexp){}
();
publicbooleanisHaveDailyRecord(intn){
Stringkey="
"
+year+"
+month+"
+n;
String[]dayFile=();
for(intk=0;
k<
k++){
if(dayFile[k].equals(key+"
.txt"
)){
break;
}}
returnboo;
publicstaticvoidmain(Stringargs[]){
newCalendarWindow();
}}
(2).11表示十二月
int星期几=-1;
intdayAmount=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
dayAmount=31;
if(month==4||month==6||month==9||month==11)
dayAmount=30;
if(month==2)
if(((year%4==0)&
&
(year%100!
=0))||(year%400==0))
dayAmount=29;
else
dayAmount=28;
星期几;
day[i]="
for(inti=星期几,n=1;
星期几+dayAmount;
day[i]=(n);
n++;
for(inti=星期几+dayAmount;
42;
returnday;
(3);
publicclassCalendarPadextendsJPanel{
JLabeltitle[];
String[]星期={"
SUN日"
"
MON一"
TUE二"
WED三"
THU四"
FRI五"
SAT六"
};
JPanelnorth,center;
publicCalendarPad(){
setLayout(newBorderLayout());
north=newJPanel();
(newGridLayout(1,7));
center=newJPanel();
(newGridLayout(6,7));
add(center,;
add(north,;
title=newJLabel[7];
for(intj=0;
j<
7;
j++){
title[j]=newJLabel();
title[j].setFont(newFont("
TimesRoman"
,12));
title[j].setText(星期[j]);
title[j].setHorizontalAlignment;
title[j].setBorder());
(title[j]);
title[0].setForeground;
title[6].setForeground;
publicvoidsetShowDayTextField(JTextField[]text){
showDay=text;
i++){
showDay[i].setFont(newFont("
,15));
showDay[i].setHorizontalAlignment;
showDay[i].setEditable(false);
(showDay[i]);
publicvoidsetCalendarMessage(CalendarMessagecalendarMessage){
=calendarMessage;
publicvoidshowMonthCalendar(){
String[]a=();
i++)
showDay[i].setText(a[i]);
validate();
(4);
importclassNotePadextendsJPanelimplementsActionListener{
JTextAreatext;
JTextFieldshowMessage;
JPopupMenumenu;
JMenuItemitemCopy,itemCut,itemPaste,itemClear;
publicNotePad(){
showMessage=newJTextField();
(newFont("
,16));
());
(false);
menu=newJPopupMenu();
itemCopy=newJMenuItem("
复制"
itemCut=newJMenuItem("
剪切"
itemPaste=newJMenuItem("
粘贴"
itemClear=newJMenuItem("
清空"
(this);
(itemCopy);
(itemCut);
(itemPaste);
(itemClear);
text=newJTextArea(10,10);
(newMouseAdapter(){
publicvoidmousePressed(MouseEvente){
if()==
(text,(),());
}});
setLayout(newBorderLayout());
add(showMessage,;
add(newJScrollPane(text),;
}
publicvoidsetShowMessage(intyear,intmonth,intday){
("
年"
月"
+day+"
日"
publicvoidsave(Filedir,intyear,intmonth,intday){
StringdailyContent=();
StringfileName="
+day;
if(dayFile[k].startsWith(key)){
if(boo){
Stringm="
已有日志,将新的内容添加到日志吗"
into
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日历 记事本 JAVA 课程设计