ajva课程设计报告电子钟日历记事本毕业设计.docx
- 文档编号:12304092
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:47
- 大小:207.58KB
ajva课程设计报告电子钟日历记事本毕业设计.docx
《ajva课程设计报告电子钟日历记事本毕业设计.docx》由会员分享,可在线阅读,更多相关《ajva课程设计报告电子钟日历记事本毕业设计.docx(47页珍藏版)》请在冰豆网上搜索。
ajva课程设计报告电子钟日历记事本毕业设计
课程设计报告
(2012--2013年度第2学期)
日历记事本
专业
计算机科学与技术
学生姓名
董文龙
班级
计算机116
学号
1110704603
指导教师
徐秀芳
完成日期
2013.7
日历记事本
1概述
1.1课程设计目的
(1)加深对《Java语言与面向对象技术》课程基础知识的理解,掌握Java语言面向对象程序设计的开发方法和步骤;
(2)进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力;
(3)课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力。
加强学生研发、编写、调试程序的能力;
(4)培养学生在项目开发中团队合作精神、创新意识及能力;
(5)提高学生科技论文写作能力,规范完成课程设计报告。
1.2课程设计内容和要求
设计GUI界面的日历记事本,系统将日历和记事本结合在一起,可以方便地保存、查看日志,即在任何日期记载下有关内容或查看某个日期记载的内容。
具体要求如下:
(1)界面的左侧是日历和一幅图像。
该日历可以按年前后翻动,用鼠标鼠标单击“上年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。
该日历还可以在某年内按月前月后翻动,当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月”当前日历表的月份将加一。
同时图片为了增加美观而加入了日历图像选择功能。
(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创建的按钮对象,名字依次为“保存日志、删除日志、读取日志”。
这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。
(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[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("TimesRoman",Font.BOLD,12)); 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("picture_address.txt"); 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--; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } elseif(e.getSource()==nextMonth) { month++; if(month>12)month=1; showMonth.setText(""+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } elseif(e.getSource()==previousMonth) { month--; if(month<1)month=12; showMonth.setText(""+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } elseif(e.getSource()==showYear) { Strings=showYear.getText().trim(); chara[]=s.toCharArray(); booleanboo=false; for(inti=0;i { if(! (Character.isDigit(a[i]))) boo=true; } if(boo==true) JOptionPane.showMessageDialog(this,"你输入了非法年份","警告! ", JOptionPane.WARNING_MESSAGE); elseif(boo==false) year=Integer.parseInt(s); showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } elseif(e.getSource()==saveDailyRecord) { notePad.savefile(dir,year,month,day); doMark(); } elseif(e.getSource()==deleteDailyRecord) { notePad.deletefile(dir,year,month,day); doMark(); } elseif(e.getSource()==readDailyRecord) { notePad.readfile(dir,year,month,day); doMark(); } } publicvoidmousePressed(MouseEvente) { JTextFieldtext=(JTextField)e.getSource(); Stringstr=text.getText().trim(); try { day=Integer.parseIn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ajva 课程设计 报告 电子钟 日历 记事本 毕业设计