日历记事本JAVA课程设计Word文档格式.docx

上传人:b****5 文档编号:21244718 上传时间:2023-01-28 格式:DOCX 页数:25 大小:271.98KB
下载 相关 举报
日历记事本JAVA课程设计Word文档格式.docx_第1页
第1页 / 共25页
日历记事本JAVA课程设计Word文档格式.docx_第2页
第2页 / 共25页
日历记事本JAVA课程设计Word文档格式.docx_第3页
第3页 / 共25页
日历记事本JAVA课程设计Word文档格式.docx_第4页
第4页 / 共25页
日历记事本JAVA课程设计Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

日历记事本JAVA课程设计Word文档格式.docx

《日历记事本JAVA课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《日历记事本JAVA课程设计Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

日历记事本JAVA课程设计Word文档格式.docx

功能模块

此设计共有以下几个功能模块。

年份改变

点击一次“上年”按钮可增加一年,点击一次“下年”按钮可减少一年,多次连

续点击即可依次改变多个年份。

月份改变

点击一次“上月”按钮可以增加一月,点击一次“下年”按钮可以减少一月,多

次连续点击即可一次改变多个月份。

日期显示

用于显示当前所选择的所在的年份月份的所有日期、星期,并在记载有日志的日期格中左上角显示“有”标记,而没有记载日志的日期则没有任何标记。

图片显示

为了使本设计界面美观,设置了图片显示模块,使整个设计更加实用、美观、大方。

日志显示

界面的右侧上半部的文本框中,可以选择某天记载日志,并且读取的日志在此部

分显示出来。

时钟显示

以传统时钟(有时针、分针、秒针)的模式显示当前的时间。

保存、删除、读取日志。

可以在没有记载日志的日期里记载日志并保存,可以对以保存的日志进行读取、修改或者删除。

流程图如下

图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

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

当前位置:首页 > 高等教育 > 管理学

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

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