JAVA记事本的设计与实现.doc_第1页
JAVA记事本的设计与实现.doc_第2页
JAVA记事本的设计与实现.doc_第3页
JAVA记事本的设计与实现.doc_第4页
JAVA记事本的设计与实现.doc_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0 面向对象程序设计面向对象程序设计 课程设计报告课程设计报告 题题 目 目 日记本的设计与实现日记本的设计与实现 课程设计课程设计 学学 院 院 信息工程信息工程 姓姓 名 名 xxxx 学学 号 号 1134120131 专专 业 业 软件工程软件工程 班班 级 级 软工软工 11011101 班班 指导教师 指导教师 xxxx 二 0 一二年十二月十四日 目 录 1 引 言 3 2 设计目的与任务 4 3 设计方案 5 3 1总体设计 5 3 2设计要求 5 3 3系统的主要功能 5 3 4开发环境 5 3 5系统的功能模块划分与系统流程图 6 3 5 1系统的功能模块划分 6 3 5 2万年历模块流程图 7 3 5 3日记本模块流程图 7 3 6各个类说明 7 3 6 1主类 NoteBook 7 3 6 2记事本 Note 类 8 3 6 3左侧面板 LeftPane 类 9 3 6 4月份显示 MonthPane 类 9 3 6 5年月显示 YearMonth 类 9 3 6 6背景音乐 Music 类 10 3 6 7日期获取 DateTime 类 10 3 6 8右侧记事本显示 NotePane 类 11 3 6 9记事本弹出菜单 NotePopupMenu 类 11 4 各种功能截图 12 5 课程设计总结 15 6 个人心得体会 16 7 附录 17 摘 要 1 摘 要 本课程设计通过代码实现将理论知识和具体实践相结合 巩固提高了对 JAVA 的相 关方法与概念的理解 使学生的发散思维及动手能力进一步加强 加强对计算机及软 件工程的进一步了解 在这个课程设计中 做成了一个有日历标记的记事本软件 日记本面板由日历 记事本 图片 时钟四部分组成 日历部分可以选择不同的年份 月份 日期和星期 记事本模块可以实现查看 保存 删除日志等操作 并且每一步操作都有相应提示 图片模块可以显示预设的图片 时钟模块可以用时钟来显示当前时间 本软件是一个 实用性较强 简洁 美观 方便的功能软件 关键字 记事本 日历 1 引 言 Java 是一种纯面向对象的 网络编程首选的语言 Java 技术作为软件开的一种革 命性技术 已被列为当今世界信息技术的主流之一 为了适应时代潮流 我们应该加 强对 Java 的学习 更好的掌握这门课程 为此 Java 课程设计决定以 写字留痕 为设 题材 借此巩固加深我们对 Java 的了解 本次课程设计的实例虽然比较简单 程序设计也不是很复杂 但在此程序的设计 过程也是一个学习过程 更是对复杂程序的一个学习过程 还能培养我们的数抽象能 力 因此 我们觉得这次课程设计是非常有意义的 能为我们今后学习面向过程的程 序设计作一些铺垫 2 设计目的与任务 2 2 设计目的与任务 本课程设计所要求达到的目的和任务 通过 Java 程序设计的一些重要理论基础 来实现 日记本 的 日历 和 记事本 的双重功能 并通过此次课程设计的训 练 使学生巩固和加深对 Java 这门课程的理解 通过利用所学到的计算科学的理论 知识 提高解决实际问题的能力 增强运算 编程和使用技术资料的技能 通过实 际问题的分析设计 编程和调试 掌握应用软件的分析方法和工程设计方法 能正 确阐述设计和实验结果 通过这次课程设计 培养实事求是 认真 严谨的科学态 度和刻苦钻研不断创新的精神 逐步建立正确的全局观念 3 设计方案 3 1总体设计 1 问题定义 问题定义 创建日记本 实现对某日期的事情进行记录这主要功能 并能显示 设置的图片 增加美观 2 问题分析 问题分析 通过对 日记本的设计与实现 这一题材的分析 我需要四个类来 实现其 日历 和 记事本 这两大功能 通过主类 CalendWindow 创建动写字留痕软 件的主窗口 该类含有 main 方法 程序从该类开始执行 再用余下 CalendarPad CalendarMessage NotePad 类来显示并改变日期和实现记事本的功能 而 CalendarImage 类用来显示图片 3 研究意义 研究意义 通过本次课程设计 我们掌握了 Java 语言的基本运用 提高了理论结 合实际的能力 3 2设计要求 1 日记本使用 Java 语言开发设计 课程的基本功能包括万年历 记事本和辅助功能三个部分 2 万年历部分由微调器确定年月 由一组文本框显示日历 年月可选择数据符合逻辑 默认为当 3 设计方案 3 前日期 3 月历显示应该符合查看习惯 如星期六和星期日分别用不同颜色表示 当日可用特别的字号和 颜色 4 记事本区 记事本内容按年月日记录且保存 5 微调器应该进行事件设置 以及即时地显示该年月的月历 日期文本框可监听鼠标事件 当单 击任何一个日期时 若该日有记事内容 则在日记本中显示该日期的记录文字 若该日无记录 记 事区保持空白 6 日记本应该是开放的 内容可按日期增减 保存应即时 删除需谨慎删除记录时 应进行对话 框询问确定 7 辅助功能包含了日记的导入导出 导入 可以将其他日记文件导入合并到当前 写字留痕 的 日记本中 导出 可将 写字留痕 的所有记录内容按日期为序导出到一个文本文件中 为安全 起见导出时需加以安全确认 要求输入正确设定的密码后才能导出 8 系统界面外观和布局 可个性化设计 总体原则是 界面简洁 操作便捷 3 3系统的主要功能 1 可以对个人日志进行保存 删除 导入和导出 2 可以方便地在任何日期记载个人日志以及查看某个日期记载的日志 3 可以显示当前日期 3 4开发环境 Windows XP jdk1 6 0 eclipse 编辑器 3 5系统的功能模块划分与系统流程图 3 5 1系统的功能模块划分 本日历记事本共有 9 个 java 源文件 NoteBook javaNoteBook java 该 java 文件生成的类负责创建本日历记事本程序主窗口 该类含有 main 方法 程序从该类开始执行 Note javaNote java 该文件负责创建日记文本 leftPane javaleftPane java 该文件负责创建创建左侧面板 NotePade javaNotePade java 该文件负责创建右侧面板 NotePopupMenu javaNotePopupMenu java 该文件负责在文本框上弹出快捷菜单 DateTime javaDateTime java 该文件获得系统当前的日期 包括年月日 YearMonth javaYearMonth java 3 设计方案 4 该文件负责创建管理年份和月份的对象 MonthPane javaMonthPane java 该文件负责生成日历创建日历 Music javaMusic java 该文件负责创添加背景音乐 3 5 2万年历模块流程图 万年历 选择微调按钮选择日期 正确输入错误输入 改变当天日期 NoteBook leftPaneMusic MonthPaneYearMonth Pane DateTimeNotePane NoteNotePopupMenu Pane 3 设计方案 5 当天是否有日记 有无 更改记事本显示 3 5 3日记本模块流程图 显示日记本 保存 删除 导入 导出 以当前日期为值 如果当前 TreeMap打开打开文件对 打开保存文件 当前内容为值保 有今天的记录就话框 如果选择 对话框 保存 存到 TreeMap 中 删除它了文件就导入 到所选路径下 3 6各个类说明 3 6 1主类 NoteBook 1 成员变量成员变量 成员变量描述成员变量描述 变量类型变量类型 名称名称 年 月 日 int year month day 日历对象 Calendar c 左侧日历面板 LeftPane notepad 记事本面板 NotePane 负责改变月 图标 Image 负责主窗口标题栏图标的显示 2 方法方法 名称名称 功能功能 备注备注 NoteBook 创建窗口主程序 构造方法 bookInit 变量初始化 addEvent 年月微调按钮事件 noteBookRefresh 刷新 ymListener 年月改变事件监听 main 程序开始运行 3 设计方案 6 3 6 2记事本 Note 类 1 成员变量 成员变量 描述描述 变量类型变量类型 名称名称 文本输入区 JTextArea text 保存 删除日志的按钮 Button 保存日志 删除日志 保存日志的散列表 Hashtable table 保存散列表的文件 File file 记录日志的人年 月 日 int year month day 2 方法 方法 名称名称 功能功能 备注备注 NotaPad 创建记事本对象 构造方法 setYear 设置年份 getYear 获取年份 setMonth 设置月份 getMonth 获取月份 setDay 设置日期 getDay 获取日期 获取日志内容 获取日志内容 保存日志 保存日志 删除日志 删除日志 actionPerformed 处理 ActionEvent 事件 接口方法 3 6 3左侧面板 LeftPane 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 2 方法方法 名称名称 功能功能 备注备注 3 设计方案 7 3 6 4月份显示 MonthPane 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 2 方法方法 3 6 5年月显示 YearMonth 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 2 方法方法 3 6 6背景音乐 Music 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 名称名称 功能功能 备注备注 名称名称 功能功能 备注备注 3 设计方案 8 2 方法方法 3 6 7日期获取 DateTime 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 2 方法方法 3 6 8右侧记事本显示 NotePane 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 2 方法方法 名称名称 功能功能 备注备注 名称名称 功能功能 备注备注 名称名称 功能功能 备注备注 4 各种功能截图 9 3 6 9记事本弹出菜单 NotePopupMenu 类 1 成员变量成员变量 描述描述 变量类型变量类型 名称名称 2 方法方法 4 各种功能截图 主界面主界面 名称名称 功能功能 备注备注 4 各种功能截图 10 保存日记保存日记 删除日志删除日志 4 各种功能截图 11 导入日志导入日志 导出日志导出日志 导出前要输入密码导出前要输入密码 4 各种功能截图 12 密码不正确不能导出密码不正确不能导出 密码正确可以指定文件名导出密码正确可以指定文件名导出 5 课程设计总结 13 5 课程设计总结 这次课程设计的主要目的是学会 Java 程序开发的环境搭建与配置 并在实际运 用中学习和掌握 Java 程序开发的全过程 以及进一步熟悉掌握 Java 程序设计语言的 基础内容 提高 Java 编程技术以及分析解决问题的综合能力 通过这次课程设计 我 基本掌握了以上要求 由于专业知识有限 以及动手能力的欠缺 所以开发的系统不 是很完善 有一些功能未实现 但是万年历记事本的基本功能均已实现 这个课程设计使我巩固了 Java 语言的知识 对于 Eclipse 开发工具也有了一定的 了解 由于是第一次进行 Java 语言开发 所以不足之处不可避免 本系统的统计功能 还不够强大 背景音乐 还有日历的阴历 节气都没实现 将在以后的时间 继续完 善 6 6 个人心得体会 Java 课程设计很快就结束了 虽然每天都熬到深夜 但却让我过得很充实 获益 非浅 通过这次课程设计 我懂得了只有坚持才会有成就 回顾起此课程设计 至今我仍感慨颇多 从理论到实践 在这段日子里 可以说 得是苦多于甜 但是可以学到很多很多的东西 同时不仅可以巩固了以前所学过的知 识 而且学到了很多在书本上所没有学到过的知识 通过这次课程设计使我懂得了理 论与实际相结合是很重要的 只有理论知识是远远不够的 只有把所学的理论知识与 实践相结合起来 从理论中得出结论 才能真正提高自己的实际动手能力和独立思考 的能力 在设计的过程中遇到问题 可以说得是困难重重 但可喜的是最终都得到了 解决 7 附录 14 7 附录 A A YearMonth java 源程序代码 import java awt import javax swing public class YearMonth extends JPanel private int year private int month private JLabel yl private JLabel ml JSpinner showYear JSpinner showMonth SpinnerNumberModel yearModel monthModel YearMonth ymInit add yl add showYear add ml add showMonth void ymInit yl new JLabel 年 ml new JLabel 月 year DateTime getYear month DateTime getMonth yearModel new SpinnerNumberModel year 0 10000 1 showYear new JSpinner yearModel showYear setEditor new JSpinner NumberEditor showYear 0000 showYear setPreferredSize new Dimension 60 30 改变尺寸 yl setFont new Font TimesRomn Font BOLD 16 monthModel new SpinnerNumberModel month 0 13 1 showMonth new JSpinner monthModel showMonth setPreferredSize new Dimension 60 30 改变尺寸 ml setFont new Font TimesRomn Font BOLD 16 7 附录 15 B B Note java 源程序代码 C C DateTime java 源程序代码 D D LeftPane java 源程序代码 E E MonthPane java 源程序代码 F F Music java 源程序代码 G G Note java 源程序代码 H H NoteBook java 源程序代码 I I NotePane java 源程序代码 J J NotePopupMenu java 源程序代码 日记本的设计与实现日记本的设计与实现 源代码 源代码 import java awt import java awt event import java io import java util import javax swing import javax swing event class NoteBook extends JFrame implements ChangeListener MouseListener int year month day Calendar c int first days LeftPane lp NotePane np 7 附录 16 public NoteBook super 日记本的设计与实现 this setDefaultCloseOperation 3 Container con getContentPane bookInit addEvent add lp West add np this pack this setResizable true this setVisible true void bookInit lp new LeftPane np new NotePane year DateTime getYear month DateTime getMonth day DateTime getDay void addEvent lp ym showMonth addChangeListener this lp ym showYear addChangeListener this for int i 0 i lp mp showDay length i lp mp showDay i addMouseListener this public void stateChanged ChangeEvent e month Integer parseInt lp ym showMonth getValue toString year Integer parseInt lp ym showYear getValue toString noteBookRefresh void noteBookRefresh np refreshContent year month day np setDateInfo year month day lp mp arrangeNum year month day public void mouseClicked MouseEvent e JTextField source JTextField e getSource try day Integer parseInt source getText noteBookRefresh catch Exception ee public void mousePressed MouseEvent e 7 附录 17 public void mouseReleased MouseEvent e public void mouseEntered MouseEvent e public void mouseExited MouseEvent e class YearMonth extends JPanel private int year private int month private JLabel yl private JLabel ml JSpinner showYear JSpinner showMonth YearMonth ymInit add yl add showYear add ml add showMonth void ymInit yl new JLabel 年 ml new JLabel 月 year DateTime getYear month DateTime getMonth showYear new JSpinner new SpinnerNumberModel year 0 10000 1 showYear setEditor new JSpinner NumberEditor showYear 0000 showYear setPreferredSize new Dimension 60 30 yl setFont new Font TimesRomn Font BOLD 16 showMonth new JSpinner new SpinnerNumberModel month 1 12 1 showYear setPreferredSize new Dimension 60 30 ml setFont new Font TimesRomn Font BOLD 16 static class DateTime static Calendar today Calendar getInstance static int getYear return today get today YEAR static int getMonth return today get today MONTH 1 static int getDay return today get today DAY OF MONTH static int getMonDay int year int month 7 附录 18 if month 1 month 3 month 5 month 7 month 8 month 10 month 1 2 return 31 else if month 4 month 6 month 9 month 11 return 30 if year 4 0 else return 28 class LeftPane extends JPanel YearMonth ym MonthPane mp JLabel tupian JPanel lp JSplitPane split LeftPane super new BorderLayout ym new YearMonth mp new MonthPane lp new JPanel new BorderLayout lp add ym South lp add mp split new JSplitPane JSplitPane HORIZONTAL SPLIT this add lp this add split East class MonthPane extends JPanel JTextField showDay int first days YearMonth ym String week JLabel title int year month day MonthPane 7 附录 19 super new GridLayout 7 7 3 3 mcInit for int i 0 i 7 i add title i for int i 0 i 42 i add showDay i arrangeNum year month day void mcInit year DateTime getYear month DateTime getMonth day DateTime getDay String week 日 一 二 三 四 五 六 title new JLabel 7 for int j 0 j 7 j title j new JLabel title j setText week j title j setBorder BorderFactory createEmptyBorder title j setFont new Font 1 18 title 0 setForeground Color red title 6 setForeground Color blue showDay new JTextField 42 for int i 0 i 42 i showDay i new JTextField showDay i setFont new Font 0 14 showDay i setEditable false public void arrangeNum int year int month int day days DateTime getMonDay year month Calendar c Calendar getInstance c set year month 1 1 first c get Calendar DAY OF WEEK 1 if first 0 for int i 0 i first i showDay i setText for int i first n 1 i first days i n showDay i setText n int r i 1 if n day if r 7 0 r 6 7 0 showDay i setForeground Color blue 7 附录 20 showDay i setFont new Font TimesRoman Font BOLD 20 else showDay i setForeground Color green showDay i setFont new Font TimesRoman Font BOLD 20 else showDay i setFont new Font TimesRoman Font BOLD 12 showDay i setForeground Color black if i 7 0 showDay i setForeground Color red if i 7 6 showDay i setForeground Color blue if first days 41 for int i first days i 42 i showDay i setText class NotePane extends JPanel implements ActionListener MouseListener private int year month day private JTextArea note private JButton save delete input export private Hashtable table private JLabel dateInfo private File file private JPanel buttonPane private JMenuItem copy private JMenuItem cut private JMenuItem paste private JPopupMenu f JPanel p new JPanel NotePane super new BorderLayout noteInit buttonInit addEvent p add dateInfo 7 附录 21 add p North add new JScrollPane note add buttonPane South refreshContent year month day private void noteInit year DateTime getYear month DateTime getMonth day DateTime getDay dateInfo new JLabel year 年 month 月 day 日 JLabel CENTER dateInfo setFont new Font TimesRomn Font BOLD 16 dateInfo setForeground Color BLUE table new Hashtable file new File Note txt initFile note new JTextArea note setFont new Font 0 14 note setLineWrap true private void buttonInit f new JPopupMenu cut new JMenuItem 剪切 copy new JMenuItem 复制 paste new JMenuItem 粘贴 save new JButton 保存日记 delete new JButton 删除日记 input new JButton 导入日记 export new JButton 导出日记 buttonPane new JPanel new FlowLayout buttonPane add save buttonPane add delete buttonPane add input buttonPane add export f add cut f add copy f add paste private void addEvent save addActionListener this delete addActionListener this input addActionListener this export addActionListener this cut addActionListener this copy addActionListener this 7 附录 22 paste addActionListener this note addMouseListener this private void initFile if file exists try FileOutputStream out new FileOutputStream file ObjectOutputStream objectOut new ObjectOutputStream out objectOut writeObject table objectOut close out close catch IOException e public void actionPerformed ActionEvent e if e getSource save save year month day else if e getSource delete delete year month day else if e getSource input input else if e getSource export export else if e getSource cut note cut else if e getSource copy note copy else if e getSource paste note paste public void setDateInfo int y int m int d this year y this month m this day d dateInfo setText y 年 m 月 d 日 public String getDateKey String s year if month 10 s 0 month else s month if day 10 s 0 day else s day return s 7 附录 23 public void refreshContent int year int month int day String key this getDateKey try FileInputStream in1 new FileInputStream file ObjectInputStream in2 new ObjectInputStream in1 table Hashtable in2 readObject in1 close in2 close catch Exception ee if table containsKey key note setText table get key else note setText public void save int year int month int day String logContent note getText String key this getDateKey try table put key logContent FileOutputStream out new FileOutputStream file ObjectOutputStream objectOut new ObjectOutputStream out objectOut writeObject table objectOut close out close catch Exception ee JOptionPane showMessageDialog null key 当天的日记已成功保存 public void delete int year int month int day String key this getDateKey if table containsKey key JOptionPane jo new JOptionPane int x jo showConfirmDialog null 要删除 year 年 month 月 day 日 的记录吗 JOptionPane YES NO

温馨提示

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

评论

0/150

提交评论