ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx

上传人:b****2 文档编号:3099200 上传时间:2023-05-01 格式:DOCX 页数:47 大小:207.58KB
下载 相关 举报
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第1页
第1页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第2页
第2页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第3页
第3页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第4页
第4页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第5页
第5页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第6页
第6页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第7页
第7页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第8页
第8页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第9页
第9页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第10页
第10页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第11页
第11页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第12页
第12页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第13页
第13页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第14页
第14页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第15页
第15页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第16页
第16页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第17页
第17页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第18页
第18页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第19页
第19页 / 共47页
ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx

《ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx》由会员分享,可在线阅读,更多相关《ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx(47页珍藏版)》请在冰点文库上搜索。

ajva课程设计报告电子钟日历记事本毕业设计Word格式.docx

该日历还可以在某年内按月前月后翻动,当鼠标左键单击“上月”按钮时,当前日历的月份将减一;

当鼠标左键单击“下月”当前日历表的月份将加一。

同时图片为了增加美观而加入了日历图像选择功能。

(2)系统界面的右侧是记事本和一个闹钟。

用鼠标单击日历上的日期,就可以通过该记事本编辑有关日志,并将日志保存到一个文件,该文件的名字由该日期组成的字符序列命名。

用户可以查看,删除某个日期的日志,可以继续向某个日志添加新内容,也可以随着自己的心情而改变字体的大小和样式。

(3)当某个日期有日志时,在日历表该日期的外观上就会出现“有”标记,表明这个日期有日志,当用户删除某个日期的日志后,该日期的外观上“有”标记就会消失。

2系统需求分析

2.1系统目标

创建日历记事本,实现对某日期的事情进行记录这主要功能,并能显示设置的图片和字体,增加美观。

2.2主体功能

(1)可以对个人日志进行添加、查阅、删除;

(2)可以方便地在任何日期记载个人日志以及查看某个日期记载的日志;

(3)可以显示当前日期与时间,并在整点报时。

(5)可以为日历更改自己喜爱的图片。

(6)可以改变字体的大小和样式

2.3开发环境

Eclipse

3系统总体设计

3.1系统的功能模块划分

本系统主要有以下几个功能模块:

日历,记事本,时钟,图片等。

该软件主要组成模块和各个模块之间的调用关系如图:

记事本模块

图像模块

时钟模块

日历模块

日期模块

3.2系统流程图

4系统详细设计

4.1主窗口模块设计

4.1.1效果图

4.1.2类的主要成员变量和方法

(1)成员变量

1)year,month和day是int型变量。

它们的值分别确定年份、月份和日期。

2)calendarMessage是CalnedarMessage对象,该对象用来处理与日期有关的数据。

3)calendarPad是CalendarPad对象,该对象可以显示与日期有关的数据。

4)notePad是NoetPad的对象。

具有编辑、读取、保存和删除日志的功能。

5)showYear和showMonth是JtextField类创建的文本框,用来显示年月。

6)showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。

7)calendarImage是CalendarImage创建的对象,用来显示图像。

8)clock是Clock创建的对象,用来显示时钟。

9)nextYear,PreviousYear,nextMonth和PreviousMonth是JButton创建的按钮对象,名字依次为“下年、上年、下月、上月”。

这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。

10)savaDailyRecord,deleteDailyRecord和readDailyRecord是JButton创建的按钮对象,名字依次为“保存日志、删除日志、读取日志”。

(2)方法

1)CalendarWindow()是构造方法,负责完成窗口初始化。

2)actionPerformed(ActionEvent)方法是CalendarWindow类实现的ActionListener接口中的方法。

CalendarWindow创建的窗口是nextYear,previousYear,nextMonth,previousMonth,saveDailyRecord,deleteDailyRecord和readDailyRecord按钮的ActionEvent事件监视器,当用户单击其中按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。

3)mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中的方法。

CalendarWindow创建的窗口时showDay数组中的JtextField文本框的MouseEvent事件监视器,当用户在某个显示日期的文本框上按下鼠标左键时,窗口将执行mousePress(MouseEvent)方法进行相应操作。

4)focusGained(FocusEvent)和focusLost(FocusEvent)方法是CalendarWindow类实现的FocusListener接口中的方法。

CalendarWindow创建窗口是showDay数组中的JtextField文本框的FocusEvent事件监视器,当用户的操作导致某个显示日期的文本框的焦点发生变化时,窗口将执行focusGained(FocusEvent)或focusLost(FocusEvent)方法进行相应的操作。

5)doMark()方法负责对有日志的日期作出标志。

6)main方法是程序运行的入口方法[3]。

4.1.3主要程序代码

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjava.io.*;

importjava.awt.SplashScreen;

publicclassCalendarWindowextendsJFrameimplementsActionListener,

MouseListener,FocusListener

{

intyear,month,day;

CalendarMessagecalendarMessage;

CalendarPadcalendarPad;

NotePadnotePad;

JTextFieldshowYear,showMonth;

JTextFieldshowDay[];

CalendarImagecalendarImage;

Stringpicturename;

//图像名称;

StringgetPicture_address;

Clockclock;

JButtonnextYear,previousYear,nextMonth,previousMonth;

JButtonsaveDailyRecord,deleteDailyRecord,readDailyRecord;

Filedir;

ColorbackColor=Color.white;

publicCalendarWindow()

{

dir=newFile("

./dailyRecord"

);

dir.mkdir();

showDay=newJTextField[42];

for(inti=0;

i<

showDay.length;

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=Calendar.getInstance();

calendar.setTime(newDate());

year=calendar.get(Calendar.YEAR);

month=calendar.get(Calendar.MONTH)+1;

day=calendar.get(Calendar.DAY_OF_MONTH);

calendarMessage.setYear(year);

calendarMessage.setMonth(month);

calendarMessage.setDay(day);

calendarPad.setCalendarMessage(calendarMessage);

calendarPad.setShowDayTextField(showDay);

notePad.setMessage(year,month,day);

calendarPad.showMonthCalendar();

doMark();

calendarImage=newCalendarImage();

picturename=getPicture_address();

//

calendarImage.setImageFile(newFile(picturename));

JMenuBarmenuBar=newJMenuBar();

JMenumenusetting=newJMenu();

JMenuItemchangepicture=newJMenuItem();

menusetting.setText("

图像"

//设置标题

changepicture.setText("

更改图片背景"

//添加菜单条上去;

menusetting.add(changepicture);

menuBar.add(menusetting);

setJMenuBar(menuBar);

//注册监听器

changepicture.addActionListener(this);

clock=newClock();

JSplitPanesplitV1=newJSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage);

JSplitPanesplitV2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock);

JSplitPanesplitH=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);

add(splitH,BorderLayout.CENTER);

showYear=newJTextField("

"

+year,6);

showYear.setFont(newFont("

TimesRoman"

Font.BOLD,12));

showYear.setHorizontalAlignment(JTextField.CENTER);

showMonth=newJTextField("

+month,4);

showMonth.setFont(newFont("

showMonth.setHorizontalAlignment(JTextField.CENTER);

nextYear=newJButton("

下年"

previousYear=newJButton("

上年"

nextMonth=newJButton("

下月"

previousMonth=newJButton("

上月"

nextYear.addActionListener(this);

previousYear.addActionListener(this);

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

showYear.addActionListener(this);

JPanelnorth=newJPanel();

north.add(previousYear);

north.add(showYear);

north.add(nextYear);

north.add(previousMonth);

north.add(showMonth);

north.add(nextMonth);

add(north,BorderLayout.NORTH);

saveDailyRecord=newJButton("

保存日志"

deleteDailyRecord=newJButton("

删除日志"

readDailyRecord=newJButton("

读取日志"

saveDailyRecord.addActionListener(this);

deleteDailyRecord.addActionListener(this);

readDailyRecord.addActionListener(this);

JPanelpSouth=newJPanel();

pSouth.add(saveDailyRecord);

pSouth.add(deleteDailyRecord);

pSouth.add(readDailyRecord);

add(pSouth,BorderLayout.SOUTH);

setVisible(true);

setBounds(70,70,770,500);

validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

publicStringgetPicture_address()

Stringaddress=null;

try

FileInputStreamoutOne=newFileInputStream("

picture_address.txt"

ObjectInputStreamoutTwo=newObjectInputStream(outOne);

try{address=(String)outTwo.readObject();

}

catch(Exceptionex){}

outTwo.close();

catch(IOExceptioneee)

if(address!

=null)

returnaddress;

else

return"

picture.jpg"

;

}

publicvoidactionPerformed(ActionEvente)

if(e.getActionCommand().equals("

))

FileDialogdia=newFileDialog(this,"

选定图片"

FileDialog.LOAD);

//新建一个文件选择对话框,用dia获得选择得到的信息;

dia.setModal(true);

//设置为模态对话框;

dia.setVisible(true);

//将取得的内容存入“picture_address.txt”文件中,下次打开软件时还能记住上次的图片路径的选择;

if((dia.getDirectory()!

=null)&

&

(dia.getFile()!

=null))//如果得到的路径和文件名不为空;

{

try

FileOutputStreaminOne=newFileOutputStream("

ObjectOutputStreaminTwo=newObjectOutputStream(inOne);

inTwo.writeObject(dia.getDirectory()+dia.getFile());

inTwo.close();

catch(IOExceptionee)

picturename=getPicture_address();

//从文件中读出显示图片的路径地址;

calendarImage.setImageFile(newFile(picturename));

//将获得路径传给图片,显示该路径指定的图片

if(e.getSource()==nextYear)

year++;

showYear.setText("

+year);

calendarMessage.setYear(year);

calendarPad.setCalendarMessage(calendarMessage);

calendarPad.showMonthCalendar();

notePad.setMessage(year,month,day);

doMark();

elseif(e.getSource()==previousYear)

year--;

elseif(e.getSource()==nextMonth)

month++;

if(month>

12)month=1;

showMonth.setText("

+month);

elseif(e.getSource()==previousMonth)

month--;

if(month<

1)month=12;

elseif(e.getSource()==showYear)

Strings=showYear.getText().trim();

chara[]=s.toCharArray();

booleanboo=false;

for(inti=0;

i<

a.length;

if(!

(Character.isDigit(a[i])))

boo=true;

if(boo==true)

JOptionPane.showMessageDialog(this,"

你输入了非法年份"

"

警告!

JOptionPane.WARNING_MESSAGE);

elseif(boo==false)

year=Integer.parseInt(s);

elseif(e.getSource()==saveDailyRecord)

notePad.savefile(dir,year,month,day);

elseif(e.getSource()==deleteDailyRecord)

notePad.deletefile(dir,year,month,day);

elseif(e.getSource()==readDailyRecord)

notePad.readfile(dir,year,month,day);

publicvoidmousePressed(MouseEvente)

JTextFieldtext=(JTextField)e.getSource();

Stringstr=text.getText().trim();

day=Integer.parseIn

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2