您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > JAVA课程设计报告-日历记事本
东华理工大学信息工程学院《JAVA技术应用开发》课程设计报告日历记事本姓名:胡玖龙学号:201320070142同组成员:无完成日期:2015.7.31目录1.项目概述.....................................................................................22.需求分析.....................................................................................23.概要设计.....................................................................................33.1功能结构...............................................................................33.2布局.......................................................................................34.详细设计及功能实现.................................................................44.1结构.......................................................................................44.2主界面...................................................................................54.3日历模块...............................................................................74.4记事本模块............................................................................94.5记事列表模块......................................................................114.6提醒功能.............................................................................135.运行测试...................................................................................156.总结...........................................................................................1921.项目概述日历记事本是将日历和记事本结合在一起,用户可以任意选择某一天,保存这一天需要记录的记事,或者任意查看某一天已经记录的记事。同时还应具备提醒功能,当到达提醒时间时会自动弹出提醒。2.需求分析日历记事本大致分为日历和记事两个部分。①日历部分首先,需要选择日期,用户可以通过点击按钮选择前一年或后一年,同样也可以选择前一个月或后一个月,当月份为1月时,用户点击前一个月,会自动跳转到前一年的12月,同理,在12月时点击后一个月,会自动跳转到下一年的1月。另外,当选择跨度比较大时,需要多次点击按钮,很不方便,所以需要一个下拉框,可以直接选择某一年或某一个月。当用户改变选择日期时,日历会自动显示出这一个月的日历,并且可以通过点击某一天,来进行添加记事的操作,鼠标经过日历或点击日历时,会有不同的效果以提示用户这是可以点击的。②记事部分首先,需要一个文本域给用户编辑记事内容,记事和日历部分所选择的日期是相关的,当用户点击日历选择某一天,则记事本上端会显示出选择的日期信息。同时,记事应该还具有设置提醒的功能,用户点击设置提醒按钮后,会弹出一个新的对话框,用来选择提醒时间。为保存记事,应将记事以文件的形式存储在计算机上。另外,当用户想查看所有记事,或者想搜索某一则记事时,可以将日历部分换成一个表格,列出所有的记事,或者符合搜索结果的记事。33.概要设计3.1功能结构日历记事本以功能划分,大致分为日历、记事列表及记事本三个部分:3.2布局软件界面的大致布局如下图,可以通过点击按钮将日历切换为记事列表日历/记事列表记事本日历记事本日历记事本记事列表日期选择及其他操作44.详细设计及功能实现4.1结构①类结构类名父类说明CalendarNotepadJFrame创建程序的总体界面,本身只有日期选择和显示当前日期等功能,以下3个类将作为JPanel在此类中实例化。包含main方法,是程序执行的入口。MyCalendarJPanel实现日历,可以根据选择的年份和月份显示出此月的日历,并能用鼠标点击选择对哪一天进行操作。NotepadJPanel实现记事本,可以编辑和保存当天的记事,同时可以设置提醒时间。NoteListJPanel实现记事列表,可以查看某一个月的记事或所有记事,也可以搜索记事。②文件存储结构程序第一次运行时,会在设定的位置自动创建路径:“.../日历记事本/data/”。例如默认会创建:“E:/日历记事本/data”。每一则记事都会以txt文件的形式保存在data文件夹下,txt的文件名为记事的日期,例如“20150702.txt”保存的是2015年7月2日的记事资料,txt文件第一行记录是否有提醒时间,第二行为提醒时间(若无提醒则为空),第三行及以后为记事内容,具体保存格式见4.4记事本模块。54.2主界面①主要组件:类型名称说明JComboBoxStringyearComboBox通过下拉列表选择年份JComboBoxStringmonthComboBox通过下拉列表选择月份JButtonpreviousYear选择前一年JButtonnextYear选择后一年JButtonpreviousMonth选择前一月JButtonnextMonth选择后一月JButtoncurrentBtn返回当前日期JButtonallNoteBtn切换为显示记事列表或切换回日历JLabelcurrentTime显示当前日期和时间MyCalendarleftPane日历NotepadrightPane记事本NoteListnotePane记事列表②主要方法:方法返回类型说明getTime()void获取和显示当前时间,并和提醒时间比较noteMark(intyear,intmonth)void检查本月中的每一天是否有记事,若有,则用不同颜色标记setFilePath(Stringpath)void设置记事文件的保存路径makeDir(Filedir)void创建文件路径getAlarmList()void获取需要提醒的记事的提醒时间表actionPerformed(ActionEvente)void实现各种按钮功能main(String[]args)void主函数6③一些重要方法的实现:makeDir(Filedir)这个方法的功能是当路径不存在时创建文件路径,例如设置记事存储在E:/日历记事本/data下,则掉用该方法后,会在E盘创建“日历记事本”文件夹,并在其中再创建“data”文件夹。实现方法:先获取父文件夹,若父文件夹不存在,则递归调用自身,获取父文件夹的父文件夹,直到父文件夹存在(根目录一般必定存在),若父路径存在,则在父路径下创建此文件夹。流程图如下:getAlarmList()这个方法的功能是读取所有需要提醒的时间,将这些提醒时间按先后顺序存储在链表中。实现方法:先读取data中所有的txt文件的文件名以获取每一则记事的日期(txt文件的文件名就是日期信息),然后将日期作为参数,调用getAlarm()方法(在NoteList类中,下文4.5记事列表模块中会说明)获取提醒时间,然后再将日期和提醒时间一起存储在链表中,如2015年7月2日的记事的提醒时间为16:30:00,则该方法会将这些信息在链表中保存为“20150702163000”,这样做的原因以及提醒功能的具体运行方式见下文4.6提醒功能。主界面完成后如下图:(日历和记事本及记事列表是通过其他类实现的)开始获取父文件夹检查父文件夹是否存在在父文件夹下创建文件夹否是结束(递归)7点击记事列表按钮后界面如下图:4.3日历模块①主要组件:8类型名称说明JLabel[]weeksJLabel类数组,用来显示星期,一个7个JLabel[]daysJLabel类数组,用来显示日历,一个42个②主要方法:方法返回类型说明howManyDays(intyear,intmonth)int返回此月有多少天getWeek(intyear,intmonth,intday)int返回这个日期是星期几getDays(intyear,intmonth)String[]返回此月天数的数组③一些重要方法的实现:howManyDays(intyear,intmonth)这个方法是通过参数获取这个月有多少天,实现方法很简单,除了二月份,每个月的天数都是固定的,只要检查参数的年份是否是闰年,就可知道二月份的天数。getWeek(intyear,intmonth,intday)这个方法的作用是得到参数所写的日期是星期几,在程序中,最后一个参数一般都是1,因为这个方法主要用来获取某个月的第一天是星期几。实现方法:JAVA本身提供Calendar类,可以通过这个类自带的方法来获取某一天是星期几,但需要注意的是,得到的结果1-7表示星期天-星期一,也就是Calendar类默认一个星期是从星期天开始的。为使程序符合中国人习惯,要先将结果转换为从星期一开始,例如用intweek保存结果,则只需要加一条语句:week=week-1=0?7:week;就可以将结果转换为从星期一开始。howManyDays(intyear,intmonth)从上面的组件表可知,不管这个月有多少天,都是先创建42个Jlabel,然后将日期填入其中,没有这一天则为空白,这个方法返回的String[]中的某项若为null,则没有这一天。例如2015年7月,这个月的第一天是星期三,则第一天的前两个Jlabel内容为空。这个方法返回的String[]长度为42不变,这样就可以很方便的将返回值依次填入42个Jlabel。实现方法:通过getWeek()方法获取这个月的第一天是星期几,然后再通过howManyDays()获取这个月有多少天,最后根据这两个数据在String[]中填入值并返回。例如2015年7月,9通过上面两个方法可知此月第一天是星期三,一共有31天,则返回值String[]dayNums为:dayNums[]={null,null,”1”,”2”,”3”….”31”,null,...,null};完成后如下图(不能单独存在,这是显示在主界面中的一部分):4.4记事本模块①主要组件:类型名称说明JButtonsave保存记事JButtondelete删除记事JButtonalarm设置提醒JTextAreanote记事内容编辑区域JLabelnoteDate显示记事的日期JLabelnoteWeek显示记事的星期AlarmDialogalarmDialog设置提醒时间,点击alarm按钮后弹出②主要方法:方法返回类型说明10saveNote(intyear,intmonth,intday)void保存记事及提醒deleteNote(intyear,intmonth,intday)void删除记事及提醒actionPerformed
本文标题:JAVA课程设计报告-日历记事本
链接地址:https://www.777doc.com/doc-5204812 .html