ImageVerifierCode 换一换
格式:DOC , 页数:44 ,大小:740.50KB ,
资源ID:2908152      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2908152.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(毕业论文-ajva课程设计报告电子钟日历记事本.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

毕业论文-ajva课程设计报告电子钟日历记事本.doc

1、Java语言与面向对象技术课程设计 课程设计报告 ( 2012-- 2013年度第2学期) 日历记事本 专业 计算机科学与技术 学生姓名 董文龙 班级 计算机116 学号 1110704603 指导教师 徐秀芳 完成日期 2013.7 1 Java语言与面向对象技术课程设计 目 录 目 录 2 1 概 述 4 1.1 课程设计目的 4 1.2 课程设计内容和要求 4 2 系统需求分析 5 2.1 系统目标 5 2.2 主体功能 5 2

2、3 开发环境 5 3 系统总体设计 5 3.1 系统的功能模块划分 5 3.2 系统流程图 6 4系统详细设计 6 4.1 主窗口模块设计 6 4.1.1 效果图 6 4.1.2 类的主要成员变量和方法 7 4.1.3 主要程序代码 8 4.2 日期模块设计 19 4.2.1 效果图 19 4.2.2 类的主要成员变量和方法 19 4.2.3 主要程序代码 19 4.3日历模块设计 21 4.3.1 效果图 21 4.3.2 类的主要成员变量和方法 22 4.3.3 主要程序代码 22 4.4 记事本模块设计 24 4.4.1 效果图 24 4.4.2

3、类的主要成员变量和方法 24 4.4.3 主要程序代码 25 4.5 图像模块设计 34 4.5.1 效果图 34 4.5.2 类的主要成员变量和方法 34 4.5.3 主要程序代码 35 4.6 时钟模块设计 36 4.6.1效果图 36 4.6.2 类的主要成员变量和方法 36 4.6.3主要程序代码 37 5 代码调试 41 6 软件发布 42 7 小结 42 参考文献 44 日历记事本 1 概 述 1.1 课程设计

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

5、关内容或查看某个日期记载的内容。具体要求如下: (1) 界面的左侧是日历和一幅图像。该日历可以按年前后翻动,用鼠标鼠标单击“上年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。该日历还可以在某年内按月前月后翻动,当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月” 当前日历表的月份将加一。同时图片为了增加美观而加入了日历图像选择功能。 (2)系统界面的右侧是记事本和一个闹钟。用鼠标单击日历上的日期,就可以通过该记事本编辑有关日志,并将日志保存到一个文件,该文件的名字由该日期组成的字符序列命名。用户可以查看,删除某个日期的日志,可以继续

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

7、的大小和样式 2.3 开发环境 Eclipse 3 系统总体设计 3.1 系统的功能模块划分 本系统主要有以下几个功能模块:日历,记事本,时钟,图片等。 该软件主要组成模块和各个模块之间的调用关系如图: 日历记事本 日历记事本主窗口 记事本模块 图像模块 时钟模块 日历模块 日期模块 3.2 系统流程图 CalendarW

8、indow CalendarMessage CalendarImage CalendarPad JTextField File NotePad JTextArea Clock 4系统详细设计 4.1 主窗口模块设计 4.1.1 效果图 4.1.2 类的主要成员变量和方法 (1)成员变量 1)year,month和day是int型变量。它们的值分别确定年份、月份和日期。 2)calendarMessage是CalnedarMessage对象,该对象用来处理与日期有关的数据。 3)calendarPad是Calend

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

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

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

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

13、行相应的操作。 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, MouseL

14、istener,FocusListener { int year,month,day; CalendarMessage calendarMessage; CalendarPad calendarPad; NotePad notePad; JTextField showYear,showMonth; JTextField showDay[]; CalendarImage calendarImage; String picturename;//图像名称; String getPicture_address; Clock clock; JButton n

15、extYear,previousYear,nextMonth,previousMonth; JButton saveDailyRecord,deleteDailyRecord,readDailyRecord; File dir; Color backColor=Color.white; public CalendarWindow() { dir= new File("./dailyRecord"); dir.mkdir(); showDay = new JTextField[42]; for(int i=0;i

16、 { showDay[i]=new JTextField(); showDay[i].setBackground(backColor); showDay[i].setLayout(new GridLayout(3,3)); showDay[i].addMouseListener(this); showDay[i].addFocusListener(this); } calendarMessage = new CalendarMessage(); calendarPad = new CalendarPad(); notePad

17、 = new NotePad(); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH)+1; day = calendar.get(Calendar.DAY_OF_MONTH); calendarMessage.setYear(year); calendarMessage.setMonth(month); c

18、alendarMessage.setDay(day); calendarPad.setCalendarMessage(calendarMessage); calendarPad.setShowDayTextField(showDay); notePad.setMessage(year,month,day); calendarPad.showMonthCalendar(); doMark(); calendarImage = new CalendarImage(); picturename=getPicture_address();// cale

19、ndarImage.setImageFile(new File(picturename)); JMenuBar menuBar = new JMenuBar(); JMenu menusetting = new JMenu(); JMenuItem changepicture=new JMenuItem(); menusetting.setText("图像");//设置标题 changepicture.setText("更改图片背景");//设置标题 //添加菜单条上去; menusetting.add(chan

20、gepicture); menuBar.add(menusetting); setJMenuBar(menuBar); //注册监听器 changepicture.addActionListener(this); clock = new Clock(); JSplitPane splitV1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage); JSplitPane splitV2 = new JSplitPane(JSplitPane.

21、VERTICAL_SPLIT,notePad,clock); JSplitPane splitH = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2); add(splitH,BorderLayout.CENTER); showYear = new JTextField(""+year,6); showYear.setFont(new Font("TimesRoman",Font.BOLD,12)); showYear.setHorizontalAlignment(JTextField.CENT

22、ER); showMonth = new JTextField(""+month,4); showMonth.setFont(new Font("TimesRoman",Font.BOLD,12)); showMonth.setHorizontalAlignment(JTextField.CENTER); nextYear = new JButton("下年"); previousYear = new JButton("上年"); nextMonth = new JButton("下月"); previousMonth = new JButton("上

23、月"); nextYear.addActionListener(this); previousYear.addActionListener(this); nextMonth.addActionListener(this); previousMonth.addActionListener(this); showYear.addActionListener(this); JPanel north = new JPanel(); north.add(previousYear); north.add(showYear); north.add(nex

24、tYear); north.add(previousMonth); north.add(showMonth); north.add(nextMonth); add(north,BorderLayout.NORTH); saveDailyRecord = new JButton("保存日志"); deleteDailyRecord = new JButton("删除日志"); readDailyRecord = new JButton("读取日志"); saveDailyRecord.addActionListener(this);

25、 deleteDailyRecord.addActionListener(this); readDailyRecord.addActionListener(this); JPanel pSouth = new JPanel(); pSouth.add(saveDailyRecord); pSouth.add(deleteDailyRecord); pSouth.add(readDailyRecord); add(pSouth,BorderLayout.SOUTH); setVisible(true); setBounds(70,70,770,5

26、00); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public String getPicture_address() { String address=null; try { FileInputStream outOne=new FileInputStream("picture_address.txt"); ObjectInputStream outTwo=new Objec

27、tInputStream(outOne); try{address=(String)outTwo.readObject();} catch(Exception ex){} outTwo.close(); } catch(IOException eee) { } if(address!=null) { return address; }

28、 else { return "picture.jpg"; } } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("更改图片背景")) { FileDialog dia=new FileDialog(this,"选定图片",FileDialog.LOAD);//新建一个文件选择对话框,用dia获得选择得到的信息; dia.setModal(true

29、);//设置为模态对话框; dia.setVisible(true); //将取得的内容存入“picture_address.txt”文件中,下次打开软件时还能记住上次的图片路径的选择; if((dia.getDirectory()!=null)&&(dia.getFile()!=null))//如果得到的路径和文件名不为空; { try { FileOutputStream inOne=new FileOutputStream("picture_address.txt"); O

30、bjectOutputStream inTwo=new ObjectOutputStream(inOne); inTwo.writeObject(dia.getDirectory()+dia.getFile()); inTwo.close(); } catch(IOException ee) { } picturename=getPicture_address();//从文件中读出显示图片的路径地址; calendarImage.setImageFile(new File

31、picturename));//将获得路径传给图片,显示该路径指定的图片 } } if(e.getSource()==nextYear) { year++; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMa

32、rk(); } else if (e.getSource()==previousYear) { year--; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } else if (e.ge

33、tSource()==nextMonth) { month++; if(month>12) month=1; showMonth.setText(""+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } else if (e.getSource()==previousMonth) { m

34、onth--; if(month<1) month=12; showMonth.setText(""+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } else if (e.getSource()==showYear) { String s = showYear.getText().trim();

35、 char a[] = s.toCharArray(); boolean boo = false; for(int i = 0;i < a.length;i++) { if(!(Character.isDigit(a[i]))) boo = true; } if(boo==true) JOptionPane.showMessageDialog(this,"你输入了非法年份","警告!", JOptionPane.WARNING_MESSAGE);

36、 else if(boo==false) year = Integer.parseInt(s); showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setMessage(year,month,day); doMark(); } else if (e.getSource()== sav

37、eDailyRecord) { notePad.savefile(dir,year,month,day); doMark(); } else if(e.getSource()==deleteDailyRecord) { notePad.deletefile(dir,year,month,day); doMark(); } else if (e.getSource()==readDailyRecord) { notePad.readfile(dir,year,month,day); doMark();

38、 } } public void mousePressed(MouseEvent e) { JTextField text = (JTextField)e.getSource(); String str = text.getText().trim(); try { day = Integer.parseInt(str); } catch (NumberFormatException exp) {} calendarMessage.setDay(day); notePad.setMessage(year,month,d

39、ay); } 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(Color.pin

40、k); } public void focusLost(FocusEvent e) { Component com = (Component)e.getSource(); com.setBackground(backColor); } public void doMark() { for(int i=0;i

41、 = Integer.parseInt(str); if(isHaveDailyRecord(n)==true) { JLabel mess = new JLabel("yes"); mess.setFont(new Font("TimesRoman",Font.PLAIN,11)); mess.setForeground(Color.blue); showDay[i].add(mess); } } catch (Exception exp){} } calendarPad.repaint

42、); calendarPad.validate(); } public boolean isHaveDailyRecord(int n) { String key = ""+year+""+month+""+n; String []dayFile = dir.list(); boolean boo = false; for(int k = 0;k

43、 } 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)和getMonth()方法分别用来设

44、置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.Calendar

45、 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<=12&&month>=1) this.month=month; else this.month=1; } public int getMonth

46、){ return month; } public void setDay(int day){ this.day=day; } public int getday() { return day; } public String [] getMonthCalendar(){ String [] day=new String[42]; Calendar rili=Calendar.getInstance(); rili.set(year,month-1,1);//将日历翻到year年month月1日 int 星期几=rili.

47、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==6||month==9||month==11) dayAmount=30; if(month==2) if(((year%4==0)&&(year%100!=0))||year%400==0) dayAmount=29; els

48、e dayAmount=28; for(int i=0;i<星期几;i++) day[i]=" "; for(int i=星期几,n=1;i<星期几+dayAmount;i++){ day[i]=String.valueOf(n); n++; } for (int i=星期几+dayAmount;i<42;i++ ) day[i]=" "; return day; } } 4.3日历模块设计 4.3.1 效果图 4.3.2 类的主要成员变量和方法 (1) 成员变量 1) y

49、ear,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[

50、])方法负责设置showDay数组。 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 JPanel{ int year,month,day; Cale

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服