1、 黄 淮 学 院 JAVA 课程设计报告 题目 : 日记本的设计与实现课程设计 学 院: 信息工程 学院 姓 名: 刘学超 学 号: 1134120151 专 业: 软 件 工 程 班 级: 软工 1101B 班 指导教师: 王海荣 二 0 一 二 年 十二 月 目 录 1. 引 言 . 2 2. 设计目的与任务 . 2 3. 设计方案 . 2 3.1 总体设计 . 2 3.2 设计要求 . 3 3.3 系统的主要功能 . 3 3.4 开发环境 . 3 3.5 系统的功能模块划分与系统流程图 . 3 3.5.1 系统的功能模块划分 . 3 3.5.2 万年历模块流程图 . 4 3.5.3 日记
2、本模块流程图 . 5 3.6 各个类说明 . 6 3.6.1 主类 NoteBook . 错误 !未定义书签。 3.6.2 记事本 Note 类 . 6 3.6.3 左侧面板 LeftPane 类 . 7 3.6.4 月份显示 MonthPane 类 . 7 3.6.5 年月显示 YearMonth 类 . 8 3.6.6 日期获取 DateTime 类 . 8 3.6.7 右侧记事本显示 NotePane 类 . 错误 !未定义书签。 3.6.8 记事本弹出菜单 NotePopupMenu 类 . 错误 !未定义书签。 4. 各种功能截图 . 9 5. 课程设计总结 . 11 6. 个人心得
3、体会 . 11 7. 附录 . 11 西南交通大学本科毕业设计(论文) 第 2 页 摘 要 本课程设计通过代码实现将理论知识和具体实践相结合, 巩固提高了对 JAVA 的相关方法与概念的理解 , 使学生的发散思维及动手能力进一步加强 ,加强对计算机及软件工程的进一步了解。 在这个课程 设计 中, 做成 了一个有日历标记的记事本软件,日记本的设计与实现 面板由日历 、记事本、图片、时钟四 部分组成。日历部分可以 选择不同的 年份 、 月份 、 日期 和 星期 ; 记事本 模块 可以 实现 查看,保存,删除 日志 等操作 ; 并且每一步操作都有相应提示 ;图片模块可以显示预设的图片;时钟模块可以用
4、时钟来显示当前时间。本软件是一个实用性较 强,简洁, 美观, 方便的功能软件。 关键字:记事本;日历; 1. 引 言 Java 是一种纯面向对象的、网络编程首选的语言。 Java 技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流 ,我们应该加强对Java 的学习,更好的掌握这门课程。为此 Java 课程设计 决定以“ 日记本的设计与实现 ”为设题材,借此巩固加深我们对 Java 的了解。 本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设
5、计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。 2. 设计目的与任务 本课程设计所要求达到的目的和任务:通过 Java 程序设计的一些重要理论基础来实现“ 日记本的设计与实现 ”的“日历”和 “记事本”的双重功能。并通过此次课程设计的训练,使学生巩固和加深对 Java 这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念
6、。 3. 设计方案 3.1 总体设计 ( 1)问题定义: 创建 日记本的设计与实现 ,实现对某日期的事情进行记录 这主要 功能 ,并能显示设置的图片,增 加美观 。 西南交通大学本科毕业设计(论文) 第 3 页 ( 2) 问题分析 :通过对“ 日记本的设计与实现 ”这一题材的分析,我需要四个类来实现其“日历”和“记事本”这两 大功能。通过主类 NoteBook 创建 动 日记本的设计与实现 软件的 主窗口, 该类含有 main 方法,程序从该类开始执行。 再用余 下 LeftPane、NotePane 类来 显示并改变 日期和实现记事本的功能。 ( 3) 研究意义 : 通过本次课程设计 ,我们
7、掌握了 Java 语言的基本运用 ,提高了理论结合实际的能力。 3.2 设计要求 (1)日记本使用 Java 语言开发设计。课程的基本功能包括万年历、记事本和辅助功能三个部分。 (2)万年历部分由微调器确定年月,由一组文本框显示日历。年月可选择数据符合逻辑,默认为当前日期。 (3)月历显示应该符合查看习惯,如星期六和星期日分别用不同颜色表示,当日可用特别的字号和颜色 (4)记事本区,记事本内容按年月日记录且保存。 (5)微调器应该进行事件设置,以及即时地显示该年月的月历;日期文本框可监听鼠标事件,当单击任何一个日期时,若该日有记事内容,则在日记本中显示该日期的记录文字;若该日无记录,记事区保持
8、空白。 (6)日记本应该是开放的,内容可按日期增减,保存应即时,删除需谨慎删除记录时,应进行 对话框询问确定。 (7)辅助功能包含了日记的导入导出。“导入”可以将其他日记文件导入合并到当前“ 日记本的设计与实现 ”的日记本中;“导出”可将“ 日记本的设计与实现 ”的所有记录内容按日期为序导出到一个文本文件中。 为安全起见导出时需加以安全确认,要求输入正确设定的密码后才能导出。 (8)系统界面外观和布局,可个性化设计,总体原则是“界面简洁,操作便捷”。 3.3 系统的主要功能 ( 1) 可以 对个人日志 进行 保存 、删除 、导入和导出 ; ( 2) 可以方便地在任何日期记载 个人日志 以及查看
9、某个日期记载的 日志 ; ( 3) 可以显示当前日 期 。 3.4 开发环境 Windows XP; jdk1.5.0_16, Eclipse。 3.5 系统的功能模块划分与系统流程图 3.5.1 系统的功能模块划分 本日历记事本共有 11 个 java 源文件。 NoteBook.java 该 java 文件生成的类负责创建本日历记事本程序主窗口。该类含有 main 方法,程序从该类开始执行。 西南交通大学本科毕业设计(论文) 第 4 页 leftPane.java 该文件负责创建 创建左侧面板 。 NotePane.java 该文件负责创建 右侧面板 、 在文本框上弹出快捷菜单 、创建日记
10、文本 DateTime.java 该文件获得 系统当前的日期,包括年 月日 YearMonth.java 该文件负责创建管理年份和月份的对象。 MonthPane.java 该文件负责生成 日历创建日历 类模块图如图 3-1 所示 . 3.5.2 万年历模块流程图 万年历流程图如图 3-2 所示 图 3-1 Notebook leftPane MonthPane YearMonth NotePane DateTime TimeLabel 西南交通大学本科毕业设计(论文) 第 5 页 万年历 按钮 选择日期 正确输入 错误输入 改变当天日期 当天 是否有日记? 有 无 更改记事本显示 3.5.3
11、 日记本模块流程图 日记本流程图如图 3-3 所示 . 显示日记本 保存 删除 导入 导出 以当前日期为值, 如果当前 TreeMap 打开文件对 打开保存文件 当前内容为值保 有今天的记录就 话框,如果选择 对话框,保存 存到 TreeMap 中 删除它 了文件就导入 到所选路径下 图 3-2 图 3-3 西南交通大学本科毕业设计(论文) 第 6 页 3.6 各个类说明 3.6.1 记事本 NoteBook 类 1.成员变量 表 3-1 成员变量描述 变量类型 名称 年、月、日 int year,month,day 日历对象 Calendar c 左侧日历面 板 LeftPane lp 记事
12、本面板 NotePane np 2.方法 表 3-2 名称 功能 备注 NoteBook 创建窗口主程序 构造方法 bookInit 变量初始化 addEvent 年月微调按钮事件 noteBookRefresh 刷新 ymListener 年月改变事件监听 main 程序开始运行 3.6.2 记事本 NotePane 类 1、成员变量 表 3-3 描述 变量类型 名称 文本输入区 JTextArea note 输入文本区 JTextArea note 保存、删除 导入、导出 日志的按钮 JButton save、 delete、 input、 export 保存日志的散列表 Hashtabl
13、e table 保存散列表的文件 File file 记录日志的 年、月、日 int year,month,day 日期显示 JLable dateInfo 剪切、复制、粘贴按钮 JMenuItem copy、 cut、 paste 2、方法 西南交通大学本科毕业设计(论文) 第 7 页 表 3-4 名称 功能 备注 NotePane 创建记事本面板对象 构造方法 noteInit 在记事本上显示日期、 buttonInit 对所有按钮进行初始化, 并加入到按钮面板中 addEvent 对所有按钮进行监听, 接口方法 并对记事本进行监听 initFile 文件存在,对文件进行排序 action
14、Performed 对按钮设计监听 setDateInfo 设置日期信息 input 导入 日志内容 save 保存日志 delete 删除日志 export 导出日志 actionPerformed 处理 ActionEvent 事件 接口方法 3.6.3 左侧面板 LeftPane 类 1.成员变量 表 3-5 描述 变量类型 名称 日历上方图片 JLabel tupian 左面板 JPanel lp 年月 微调器 YearMonth ym 月份面板 MonthPane mp 2.方法 表 3-6 名称 功能 备注 LeftPane 设置左面图片,日历面板 3.6.4 月份显示 Month
15、Pane 类 1.成员变量 表 3-7 描述 变量类型 名称 文本区 JTextField showDay 年月微调器 YearMonth ym 星期 String week 星期标签 JLabel title 年、月、日 int year,month,day 西南交通大学本科毕业设计(论文) 第 8 页 2.方法 表 3-8 3.6.5 年月显示 YearMonth 类 1.成员变量 表 3-9 描述 变量类型 名称 年、月、日 int year,month,day 年标签 JLabel y1 月标签 JLabel m1 显示年 JSpinner showYear 显示月 JSpinner
16、showMonth 2.方法 表 3-10 表 3-11 3.6.6 日期获取 DateTime 类 1.成员变量 表 3-13 描述 变量类型 名称 日历 获取 Calendar today 2.方法 表 3-14 名称 功能 备注 MonthPane 创建月份面板对象 构造方法 mcInit 日期显示,并对星期六与星期天 进行红、蓝 设置 arrangeNum 对日期按七天 一个周期进行 进行排列,不足七天,就按照时间的 顺序排列 名称 功能 备注 YearMonth 创建年月微调器对象 构造方法 ymInit 年月微调器显示 名称 功能 备注 getYear 返回 当前年份 getMonth 返回 当前月份 getDay 返回 当前对应的日期 getMonDay 对于月份进行编写, 每月含有 的天数,和是否是闰年考虑在内 西南交通大学本科毕业设计(论文) 第 9 页 4、 各种功能截图 主界面 保存日记