JAVA课程设计报告电子钟日历记事本

上传人:无*** 文档编号:136167403 上传时间:2022-08-16 格式:DOC 页数:44 大小:469.50KB
收藏 版权申诉 举报 下载
JAVA课程设计报告电子钟日历记事本_第1页
第1页 / 共44页
JAVA课程设计报告电子钟日历记事本_第2页
第2页 / 共44页
JAVA课程设计报告电子钟日历记事本_第3页
第3页 / 共44页
资源描述:

《JAVA课程设计报告电子钟日历记事本》由会员分享,可在线阅读,更多相关《JAVA课程设计报告电子钟日历记事本(44页珍藏版)》请在装配图网上搜索。

1、课程设计报告( 2012- 2013年度第2学期)日历记事本专业计算机科学与技术学生姓名董文龙班级计算机116学号1110704603指导教师徐秀芳完成日期2013.7目 录目 录21 概 述41.1 课程设计目的41.2 课程设计内容和要求42 系统需求分析52.1 系统目标52.2 主体功能52.3 开发环境53 系统总体设计53.1 系统的功能模块划分53.2 系统流程图64系统详细设计64.1 主窗口模块设计64.1.1 效果图64.1.2 类的主要成员变量和方法74.1.3 主要程序代码84.2 日期模块设计194.2.1 效果图194.2.2 类的主要成员变量和方法194.2.3

2、主要程序代码194.3日历模块设计214.3.1 效果图214.3.2 类的主要成员变量和方法224.3.3 主要程序代码224.4 记事本模块设计244.4.1 效果图244.4.2 类的主要成员变量和方法244.4.3 主要程序代码254.5 图像模块设计344.5.1 效果图344.5.2 类的主要成员变量和方法344.5.3 主要程序代码354.6 时钟模块设计364.6.1效果图364.6.2 类的主要成员变量和方法364.6.3主要程序代码375 代码调试416 软件发布427 小结42参考文献44日历记事本1 概 述 1.1 课程设计目的(1)加深对Java语言与面向对象技术课程

3、基础知识的理解,掌握Java语言面向对象程序设计的开发方法和步骤;(2)进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力;(3)课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力。加强学生研发、编写、调试程序的能力;(4)培养学生在项目开发中团队合作精神、创新意识及能力;(5)提高学生科技论文写作能力,规范完成课程设计报告。1.2 课程设计内容和要求设计GUI界面的日历记事本,系统将日历和记事本结合在一起,可以方便地保存、查看日志,即在任何日期记载下有关内容或查看某个日期记载的内容。具体要求如下:(1) 界面的左侧是日历和一幅图像。

4、该日历可以按年前后翻动,用鼠标鼠标单击“上年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。该日历还可以在某年内按月前月后翻动,当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月” 当前日历表的月份将加一。同时图片为了增加美观而加入了日历图像选择功能。(2)系统界面的右侧是记事本和一个闹钟。用鼠标单击日历上的日期,就可以通过该记事本编辑有关日志,并将日志保存到一个文件,该文件的名字由该日期组成的字符序列命名。用户可以查看,删除某个日期的日志,可以继续向某个日志添加新内容,也可以随着自己的心情而改变字体的大小和样式。(3)当某个日期有日志时

5、,在日历表该日期的外观上就会出现“有”标记,表明这个日期有日志,当用户删除某个日期的日志后,该日期的外观上“有”标记就会消失。2 系统需求分析2.1 系统目标创建日历记事本,实现对某日期的事情进行记录这主要功能,并能显示设置的图片和字体,增加美观。2.2 主体功能(1)可以对个人日志进行添加、查阅、删除;(2)可以方便地在任何日期记载个人日志以及查看某个日期记载的日志;(3)可以显示当前日期与时间,并在整点报时。(5)可以为日历更改自己喜爱的图片。(6)可以改变字体的大小和样式2.3 开发环境Eclipse3 系统总体设计3.1 系统的功能模块划分本系统主要有以下几个功能模块:日历,记事本,时

6、钟,图片等。该软件主要组成模块和各个模块之间的调用关系如图:日历记事本 日历记事本主窗口记事本模块图像模块时钟模块日历模块日期模块 3.2 系统流程图CalendarWindowCalendarMessageCalendarImageCalendarPad JTextFieldFileNotePad JTextArea Clock4系统详细设计4.1 主窗口模块设计4.1.1 效果图4.1.2 类的主要成员变量和方法 (1)成员变量1)year,month和day是int型变量。它们的值分别确定年份、月份和日期。2)calendarMessage是CalnedarMessage对象,该对象用来

7、处理与日期有关的数据。3)calendarPad是CalendarPad对象,该对象可以显示与日期有关的数据。4)notePad是NoetPad的对象。具有编辑、读取、保存和删除日志的功能。5)showYear和showMonth是JtextField类创建的文本框,用来显示年月。6)showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。7)calendarImage是CalendarImage创建的对象,用来显示图像。8)clock是Clock创建的对象,用来显示时钟。9)nextYear,PreviousYear,nextMonth和PreviousMonth是J

8、Button创建的按钮对象,名字依次为“下年、上年、下月、上月”。这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。10)savaDailyRecord,deleteDailyRecord和readDailyRecord是JButton创建的按钮对象,名字依次为“保存日志、删除日志、读取日志”。这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。 (2)方法1)CalendarWindow()是构造方法,负责完成窗口初始化。2)actionPerformed(ActionEvent)方法是CalendarWindow类实现的ActionListener接口中的方法

9、。CalendarWindow创建的窗口是nextYear,previousYear,nextMonth,previousMonth,saveDailyRecord,deleteDailyRecord和readDailyRecord按钮的ActionEvent事件监视器,当用户单击其中按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。3)mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中的方法。CalendarWindow创建的窗口时showDay数组中的JtextField文本

10、框的MouseEvent事件监视器,当用户在某个显示日期的文本框上按下鼠标左键时,窗口将执行mousePress(MouseEvent)方法进行相应操作。4) focusGained(FocusEvent)和focusLost(FocusEvent)方法是CalendarWindow类实现的FocusListener接口中的方法。CalendarWindow创建窗口是showDay数组中的JtextField文本框的FocusEvent事件监视器,当用户的操作导致某个显示日期的文本框的焦点发生变化时,窗口将执行focusGained(FocusEvent)或focusLost(FocusEve

11、nt)方法进行相应的操作。5) doMark()方法负责对有日志的日期作出标志。6) main方法是程序运行的入口方法3。4.1.3 主要程序代码import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import java.awt.SplashScreen;public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListenerint

12、 year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField showDay;CalendarImage calendarImage;String picturename;/图像名称;String getPicture_address;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyR

13、ecord,deleteDailyRecord,readDailyRecord;File dir;Color backColor=Color.white;public CalendarWindow()dir= new File(./dailyRecord);dir.mkdir();showDay = new JTextField42;for(int i=0;i12) month=1;showMonth.setText(+month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();n

14、otePad.setMessage(year,month,day);doMark();else if (e.getSource()=previousMonth)month-;if(month1) month=12;showMonth.setText(+month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setMessage(year,month,day);doMark();else if (e.getSource()=showYear)String s =

15、showYear.getText().trim();char a = s.toCharArray();boolean boo = false;for(int i = 0;i a.length;i+)if(!(Character.isDigit(ai)boo = true;if(boo=true)JOptionPane.showMessageDialog(this,你输入了非法年份,警告!, JOptionPane.WARNING_MESSAGE);else if(boo=false)year = Integer.parseInt(s);showYear.setText(+year);calen

16、darMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setMessage(year,month,day);doMark();else if (e.getSource()= saveDailyRecord)notePad.savefile(dir,year,month,day);doMark();else if(e.getSource()=deleteDailyRecord)notePad.deletefile(dir,ye

17、ar,month,day);doMark();else if (e.getSource()=readDailyRecord)notePad.readfile(dir,year,month,day);doMark();public void mousePressed(MouseEvent e)JTextField text = (JTextField)e.getSource();String str = text.getText().trim();tryday = Integer.parseInt(str);catch (NumberFormatException exp)calendarMes

18、sage.setDay(day);notePad.setMessage(year,month,day);public void mouseReleased(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)public void focusGained(FocusEvent e)Component com = (Component)e.getSource();com.setBackground(

19、Color.pink);public void focusLost(FocusEvent e)Component com = (Component)e.getSource();com.setBackground(backColor);public void doMark()for(int i=0;ishowDay.length;i+)showDayi.removeAll();String str = showDayi.getText().trim();tryint n = Integer.parseInt(str);if(isHaveDailyRecord(n)=true)JLabel mes

20、s = new JLabel(yes);mess.setFont(new Font(TimesRoman,Font.PLAIN,11);mess.setForeground(Color.blue);showDayi.add(mess);catch (Exception exp)calendarPad.repaint();calendarPad.validate();public boolean isHaveDailyRecord(int n)String key = +year+month+n;String dayFile = dir.list();boolean boo = false;fo

21、r(int k = 0;kdayFile.length;k+)if(dayFilek.equals(key+.txt)boo = true;break;return boo;public static void main(String args) new CalendarWindow();4.2 日期模块设计4.2.1 效果图4.2.2 类的主要成员变量和方法 (1)成员变量 year,month,day是int型数据,它们的值分别确定年份、月份和日期。 (2) 方法1) setYear(int)和getYear()方法分别用来设置year和获取year的值。2) setMonth(int)和

22、getMonth()方法分别用来设置month和获取month的值。3) setDay(int)和getDay()方法分别用来设置和获取day的值。4) getMonthCalendar()方法是用来处理日期数据,使其按着习惯来显示。即日历牌中每行的第一列为“星期天”。getMonthCalendar()方法根据year,month和day的值返回一个存放着“日历”数据的String类型的数组,例如,如果某月有30天,而且该月的第一天是星期三,那么返回的String类型的数组是:“”,“”,“”,“1”,“2”,“30”。4.2.3 主要程序代码import java.util.Calenda

23、r;public class CalendarMessage int year=-1,month=-1,day=-1;public void setYear(int year)this.year=year;public int getYear()return year;public void setMonth(int month)if(month=1)this.month=month;elsethis.month=1;public int getMonth()return month;public void setDay(int day)this.day=day;public int getd

24、ay()return day;public String getMonthCalendar()String day=new String42;Calendar rili=Calendar.getInstance();rili.set(year,month-1,1);/将日历翻到year年month月1日int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1;int dayAmount=0;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)dayAmount=31;if(month=4|month=

25、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;for(int i=0;i星期几;i+)dayi= ;for(int i=星期几,n=1;i星期几+dayAmount;i+)dayi=String.valueOf(n);n+;for (int i=星期几+dayAmount;i42;i+ ) dayi= ;return day;4.3日历模块设计4.3.1 效果图4.3.2 类的主要成员变量和方法 (1) 成员变量1)

26、year,month和day是int型数据,它们的值分别确定年份、月份和日期2) calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。3) showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。4) “星期”是String数组,单元的值依次为“SUN日”、“MON一”、“TUE二”、“WED三”、“THU四”、“FRI五”、“SAT六”。 (2) 方法1) CalendarPad()是构造方法,用来创建calendarPad对象。2) setShowDayTextField(JtextField)方法负责设置showDa

27、y数组。3) setCalendarMessage(CalendarMessage)方法负责设置calendarMessage对象。4) showMonthCalendar()方法负责显示“日历”4。4.3.3 主要程序代码import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class CalendarPad extends JPanelint year,month,day; CalendarMessage calendarMessage;JTextField show

28、Day;JLabel title ;String 星期=SUN 日,MON 一,TUE 二,WED 三,THU 四,FRI 五,SAT 六;JPanel north,center;public CalendarPad()setLayout(new BorderLayout();north=new JPanel();north.setLayout(new GridLayout(1,7);center=new JPanel();center.setLayout(new GridLayout(6,7);add(center,BorderLayout.CENTER);add(north,BorderL

29、ayout.NORTH);title=new JLabel7;for(int j=0;j7;j+)titlej=new JLabel();titlej.setFont(new Font(TimesRoman,Font.BOLD,12);titlej.setText(星期j);titlej.setHorizontalAlignment(JLabel.CENTER);titlej.setBorder(BorderFactory.createRaisedBevelBorder();north.add(titlej);title0.setForeground(Color.red);title6.set

30、Foreground(Color.blue);public void setShowDayTextField(JTextField text)showDay=text;for(int i=0;ishowDay.length;i+)showDayi.setFont(new Font(TimesRoman,Font.BOLD,15);showDayi.setHorizontalAlignment(JTextField.CENTER);showDayi.setEditable(false);center.add(showDayi);public void setCalendarMessage(Cal

31、endarMessage calendarMessage)this.calendarMessage=calendarMessage;public void showMonthCalendar()String a=calendarMessage.getMonthCalendar();for(int i=0;i42;i+)showDayi.setText(ai);validate();4.4 记事本模块设计4.4.1 效果图4.4.2 类的主要成员变量和方法 (1) 成员变量1)text是JtextArea创建的文本区,可在text中编译多行文本。2)showMessage 是 JTextFiel

32、d 创建的文本条,用来显示和日期相关的数据。3)popup是 JpopupMenu 创建的弹出式菜单。4) Copy、Cut、Paste是JmenuItem 创建的菜单项,名字依次是“复制”, “剪切”, “黏贴”。5)list1,list2是列表框Choice创建的两个列表对象。6)btn是JButton创建的一个按钮,叫做“颜色”。7)labl是JLabel创建的标签,叫做“事件发生时间(hh:mm)”。 (2)方法1) NotePad()构造方法,用来创建notePad对象。2) setShowMessage(int,int,int)方法根据参数指定的日期数据显示有关日期信息。3) sa

33、ve(File,int,int,int)方法根据参数指定日期保存日志4) delete(File,int,int,int) 用于删除日志5) read(File,int,int, int)用于读取日志。4.4.3 主要程序代码import java.awt.*;import javax.swing.*;import java.io.*;import java.awt.event.*;class NotePad extends JPanel implements ActionListener,MouseListener,ItemListener JPopupMenu popup;JMenuIte

34、m cut,copy,paste;JTextField ShowMessage,time;JTextArea ta;JPanel p1,p2,p3;Choice list1,list2;JButton btn;JLabel labl;String Size=10,12,14,16,18,20,22,24,26,28,30,32,34,36;NotePad()popup=new JPopupMenu();ShowMessage=new JTextField();ShowMessage.setEditable(false);ta=new JTextArea(5,20);p1=new JPanel(

35、);p2=new JPanel();p3=new JPanel();btn=new JButton(颜色);labl=new JLabel(事件发生时间(hh:mm):);time=new JTextField(10);list1=new Choice();list2=new Choice();GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();String fontname=ge.getAvailableFontFamilyNames();for(int i=0;ifontname.length;i

36、+)list1.add(fontnamei);for(int i=0;iSize.length;i+)list2.add(Sizei);cut=new JMenuItem(剪切);cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK);copy=new JMenuItem(复制);copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK);paste=new JMenuItem(粘贴);paste.

37、setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK);popup.add(cut);popup.add(copy);popup.add(paste);p1.add(list1);p1.add(list2);/p1.add(btn);p3.add(labl);p3.add(time);setLayout(new BorderLayout();add(ShowMessage,BorderLayout.NORTH);p2.setLayout(new BorderLayout();p2.add(new JSc

38、rollPane(ta),BorderLayout.CENTER);/p2.add(p3,BorderLayout.SOUTH);add(p2,BorderLayout.CENTER);add(p1,BorderLayout.SOUTH);setBounds(0,0,600,600);setVisible(true);btn.addActionListener(this);list1.addItemListener(this);list2.addItemListener(this);cut.addActionListener(this);copy.addActionListener(this)

39、;paste.addActionListener(this);ta.addMouseListener(this);public void setMessage(int year,int month,int day)ShowMessage.setText(year+年+month+月+day+日);ShowMessage.setForeground(Color.blue);ShowMessage.setFont(new Font(宋体,Font.BOLD,15);public void actionPerformed(ActionEvent e)if(e.getSource()=cut)cut(

40、);if(e.getSource()=copy)copy();if(e.getSource()=paste)paste();if(e.getSource()=btn)Color newColor=JColorChooser.showDialog(this, 选择颜色, ta.getForeground();if(newColor!=null)ta.setForeground(newColor);public void itemStateChanged(ItemEvent e)String n1=list2.getSelectedItem();String name=list1.getSelectedItem();int n2=Integer.parseInt(n1);Font f=new Font(name,Font.PLAIN,n2);ta.setFont(f);public void mouseReleased(MouseEvent e)if(e.getButton()=MouseEvent.BUTTON3)popup.show(ta,e.getX(),e.getY();if(e.getButton()=MouseEvent.BUTTON1)popup.setVisible(false)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!