《面向对象程序设计》课程设计报告题目:电子日历记事本的设计院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕2014年12月29日至2015年1月9日华中科技大学武昌分校制面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目电子日历记事本的设计二、设计(调查报告/论文)主要内容内容:设计GUI界面的日历记事本,系统将记事本与日历相结合,可在任何时间记载编辑或查看相关内容日志,系统可实现基本的辅助办公与行政管理。基本功能与要求:①设计记事本编辑器程序,所有编辑功能可以在菜单栏中选择,包括编辑、保存、打开、剪切、复制等操作,能打开和显示已存在的文本文件,界面设计要求采用类组件实现。②设计日历系统,要求用图形用户界面实现,用户可以方便地在任何日期编辑有关内容以及查看某个日期记载的内容。日历可以按年/月前后翻动,当鼠标单击“上一年/上一月”按钮时,当前日历的年份/月份将减一;当鼠标左键单击“下一年/下一月”按钮,当前日历的年份/月份将加一。③使用鼠标左键在要选择的日期上单击,如有记事内容,程序将弹出对话框提示用户是否用记事本显示该内容或编辑新内容,同时可将记事本的新内容保存起来,形成一个日志供用户日后使用。④设计用户密码功能或对信息内容加密,提高系统的安全性。三、原始资料1.《面向对象程序设计课程设计》指导书2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.[5]邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名):20年月日目录1需求与总体设计..........................................................11.1需求分析..............................................................11.2总体设计思路..........................................................11.2.1功能图..............................................................11.2.2类图................................................................22详细设计.................................................................32.1CalendarPad类说明....................................................32.2Year类说明...........................................................32.3Month类模块..........................................................42.4NotePad类说明........................................................43编码实现................................................................63.1CalendarPad模块......................................错误!未定义书签。3.2Year模块.............................................错误!未定义书签。3.3Month模块............................................错误!未定义书签。3.4NotePad模块..........................................错误!未定义书签。4系统运行与测试.........................................................204.1程序主界面...........................................................204.2日志查看——无日志...................................................204.3建立日志.............................................................214.4日志查看——有日志...................................................214.5删除日志.............................................................23总结.....................................................................2411需求与总体设计1.1需求分析根据题目要求,将日历与记事本功能相结合,实现对某日期的事件进行记录的功能,设计出简洁方便美观的GUI界面。将本程序主界面可以分为四个部分:日历日期信息展示、年份、月份、记事本内容、记事本下方的时钟,用四个类来实现其“日历”和“记事本”这两大功能。通过主类CalendarPad创建动日历记事本软件的主界面,且该类中含有main方法,程序从该类开始执行。再用余下的year、mouth、NotePad类来显示并改变日期和实现记事本的功能。1.2总体设计思路1.可以编辑日历的日期2.可以判断当前日期是否存在日志记录3.对有日志记录的日期,可以对该日期的日志记录进行修改和删除4.对没有日志记录的日期,可以创建并保存新建的日志记录5.对保存的日志加密,查看时得输入密码1.2.1功能图电子日历记事本的系统记事本编辑器日历系统密码查看日志编辑日志编辑日期21.2.2类图+CalendarPad()+设置日历牌()+排列号码()+getYear()+setYear()+getMonth()+setMonth()+getDay()+setDay()+getHashtable()+mousePressed()+main()-year-month-day-file-calendarPad-showYear-showMonth-weekCalendarpad+notepad()+actionPerforme()+setYear()+setMonth()+getMonth()+setDay()+设置信息条()+获取日志内容()+保存日志()+删除日志()-text-file-delte-save-year-month-dayNotepad+Month()+setMonth()+getMont()+actionPerformed()-year-month-dayMonth+Year()+setYear()+getYear()+actionPerformed()-year-month-dayYear32详细设计2.1CalendarPad类说明该模块设计主要主要包含以下成员变量:年(year)月(month)日(day)存放日期的表(Hashtable)存放日志的文件(File)主要方法有:创建程序主面板的构造方法(CalendarPad)处理ActionEvent事件的接口方法(actionPerformed)程序开始运行的main()方法。表1日历记事本系统主面板与日历板模块(CalendarPad.java)类名CalendarPadpublic接口MouseListenerpublic方法CalendarPad(int,int,int)设置日历牌(int,int)排列号码(int,int)main()publicpublicvoidpublicvoidpublicstaticvoid2.2Year类说明该模块用于实现日历记事本系统中关于年的设置模块中包含的主要成员变量有用于改变年的按钮(Jbutton明年去年),显示年的文本框(JTextField)模块中包含的主要方法有用于设置年的方法(setYear),用于获取年的方法(getYear)和处理ActionEvent事件的接口方法(actionPerformed)等4表2日历记事本系统年设置模块(Year.java)类名Yearpublic接口ActionListenerpublic方法setYear()getYear()actionPerformed(ActionEvente)publicvoidpublicintpublicvoid2.3Month类模块该模块用于实现日历记事本系统中关于月的设置模块中包含的主要成员变量有用于改变月的按钮(Jbutton上月下月),显示月的文本框(JTextField)模块中包含的主要方法有用于设置月的方法(setMonth),用于获取月的方法(getMonth)和处理ActionEvent事件的接口方法(actionPerformed)等表3日历记事本系统月设置模块(Month.java)类名Monthpublic接口ActionListenerpublic方法setMonth()getMonth()actionPerformed(ActionEvente)publicvoidpublicintpublicvoid2.4NotePad类说明该模块中包含的主要成员变量有文本框(JTextArea),按钮(JButton保存日志删除日志),用于存放日志记录的文件(File)以及响应相关操作的信息提示(JLabel)该模块中包含的主要方法有设置信息条,设置文本区,获取日志内容,保存日志,删除日志5表4日历记事本系统记事本模块(NotePad.java)类名NotePadpublic接口ActionListenerpublic方法设置信息条()设置文本区()获取日志内容()保存日志()删除日志()publicvoidpublicvoidpublicvoidpublicvoidpublicvoid63编码实现源代码importjava.util.Calendar;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.Hashtable;importjava.util.*;importjavax.swing.event.*;publicclassCalendarPadextendsJFrameimplementsMouseListener{intyear,month,day;//定义全局变量的三个属性Hashtablehashtable;Filefile;//定义一个文件变量JTextFieldshowDay[];//定义一个文本框组数JLabeltitle[];Calendar日历;int星期几;NotePadnotepad=null;//定义一个NotePad对象,必须先给其处置null才能在下面使用Month负责改变