1、软件课程设计设计 (论文 )用纸 I 摘 要 Java是 Sun公司推出的一种基于面向对象技术的编程语言,同时也是一种跨 平台的程序设计语言,是软件开发的一种革命性技术,已被列为当今世界信息技术的主流之一, Java 语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此 Java 语言也是学习面向对象编程和网络编程的首选语言。 Java 有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。用 JAVA 语言进行程序开发 ,目前十分流行。本设计通过 JAVA 来实现具有图形界面的日历记事本 ,体现了 JAVA 的高效性等特
2、点。 随着社会的发展,越来越多的人依靠电子产品生活,而他们的日常工作也是离不开这些电子产品的,所以开发出一款日历备忘录就显得必不可少了。 利用面向对象的程序设计语言 Java 来实现具有图形界面的日历记事本 。 日历具有基本的浏览和日期修改的功能 。 记事本具有输入 、 保存 、 删除 、 查看等基本功能 。 关键词 : 面向对象 Java 日历 记事本 软件课程设计设计 (论文 )用纸 II 目 录 摘 要 . I 目 录 . II 第 1 章 绪论 .3 1.1 概 述 .3 1.2 课程设计题目 . 3 1.3 课程设计目的 . 3 1.4 课程设计内容 . 3 1.5 项目背景和目标
3、.3 第 2 章 系统需求分析 .5 2.1 系统目标 . 5 2.2 主体功能 . 5 2.3 开发环境 . 5 第 3 章 系统概要设计 .6 3.1 系统的功能模块划分 . 6 3.2 系统流程 . 6 第 4 章 系统详细设计 .8 4.1 程序变量和方法 .8 第 5 章 算法描述和编码实现 .12 5.1 类的算法 . 12 5.2 编码实现 . 13 第 6 章 测试 .16 6.1 测试方案 .16 6.2 测试结果 .16 总结 .20 参考文献 .21 附录 .22 软件课程设计设计 (论文 )用纸 3 第 1章 绪论 1.1 概 述 日历记事本的包括日历和日志记事本两部分
4、: 日历部分采用公历历法,界面设计:日期部分每行 7 天,每列 5 天,可完全 记录一个月中的所有天数。星期采用中文显示 ,每行的第一天为星期日。星期六显示为蓝色,星期日显示为红色,当前日期显示为绿色,其它日期显示为黑色。年份通过负数表示公元前,正数表示公元后。用户可通过使用鼠标点击按钮的方式改变日历的年份和月份。 记事本部分提供输入、保存、显示、删除日志的功能。用户输入的日志记录在本系统所在的目录保 存为后缀名为 .txt 的文本文件。 用户只要选定要查看日志的日期,即可以通过鼠标点击显示日志的按钮来实现。 1.2 课程设计题目 基于 Java 语言的日历记事本 1.3 课程设计目的 1.巩
5、固和提高 java 编程技术。 2.培养掌握成学设计的基本思路和方法。 3.加强研发、调试程序的能力。 4.增强分析、解决问题的能力。 5.提高科技论文写作能力。 1.4 课程设计内容 设计 GUI 界面的日历记事本。系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。 为使用者记录、管理 个人日记以及每日心里路程,其中主要实现以下功能 本系统界面的左侧是日历。系统界面的右侧是记事本。选择具体日期后,可以将记事本的内容保存起来,形成一个日志。显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。 1.5 项目背景和目标 目
6、前,很多新的技术领域都涉及到了 Java 语言, Java 语言是面向对象编程,软件课程设计设计 (论文 )用纸 4 并涉及到网络、多线程等重要的基础知识,因此 Java 语言也是学习面向对象编程和网络编程的首选语言。按照教学培养计划要求,学生在学习完课本中指定课时的知识后,应安排一定课时的课程设计 。其主要目的是使学生深入理解并实践在本课程中所学的有关 JAVA 程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等。故此“日历记事本”应运而生。 本课程设计是为了配合 Java 程序设计课程,帮助学生深入学习掌握 Java 语言,熟练运用这个工具而设立的课程。通过课程设
7、计各个项目的综合训练,加强学生对JAVA 语言的理解,检验学生对专业理论知识理解与掌握的程度,锻炼学生综合运用JAVA 程序设计处理所学的知识实际分析问题、解决问题的能力,使课堂上的理论在实践中得到运用,提高学生的综合素质,为学生 毕业后的实际工作打好基础。同时也满足了大多数同学对于一款简单易用的日记本软件的需求。 软件课程设计设计 (论文 )用纸 5 第 2 章 系统需求分析 2.1 系统目标 1系统界面的左侧是日历。该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。 2该日历也可以在某年内按月前后翻动。当鼠标左键单击“上月
8、”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮时,当前日历的月份加一。 3使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并 询问用户是否用记事本显示该内容。 4用户选择具体日期后,可以将记事本的当前内容保存起来,形成日志。 2.2 主体功能 用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。 通过按按钮“上年”和“下年”对年份进行翻页。通过按按钮“上月”和“下月”对月份进行翻页。用户可以通过输入年份来查看自己的日志。 显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。定时提醒:用户可以针对某一天来添加,删
9、除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的 对话框。查询信息:用户可以查询到某个月的所有的提示信息。 页面设计分为左右两个部分,左部分为日历的视图,上边放置了调节年份和月份的按钮,下边是日历的格式。右部分作为一个备忘录的文本域。当该日写有备忘时,会在文本域弹出提示有备忘是否查看。文本域的下边设有增加备忘和删除当前备忘的按钮。 2.3 开发环境 Windows XP; jdk1.5.0-0-05; ultraedit 开发工具 软件课程设计设计 (论文 )用纸 6 第 3 章 系统概要设计 3.1 系统的功能模块划分 本日历记事本共有 4 个 java 源文件
10、。 CalendarPad.java:该 java 文件生成的类负责创建本日历记事本程序主窗口。该类含有 main 方法, 程序从该类开始执行。 Year.java:该文件负责创建管理年份的对象。 Month.java:该文件负责创建管理月份对象。 NotePad.java:该文件负责创建记事本。 图 3-1 类之间的关系 3.2 系统流程 1.系统实现 图 3-2 系统功能结构 CalendarPad(主类) NotePad Year Month 设置日历牌 CalendarPad 排列 号码 mousePressed 事件 软件课程设计设计 (论文 )用纸 7 2.系统实现流程 Calen
11、darPad 作为主函数的入口。调用 NotePad 类的方法完善自己的窗口。当对窗口的年份和月份进行改变时就会触发 Year 类和 Month 类里的触发器和方法,从而达到日历备忘录的目的。 图 3-3 系统流程实现 显示窗口界面 保存日志 删除日志 读取日志 保存日志 显示日志 选择日期 删除并去掉“有” 否 是 是 是 否 否 结束程序 开始 是 软件课程设计设计 (论文 )用纸 8 第 4 章 系统详细设计 4.1 程序变量和方法 在设计日历记事本时,需要编写 3个 Java 类: CalendarPad.java、 Year.java、NotePad.java、 month.java
12、。日历记事本除了需要编写的上述 3个 Java 所给出的类外,还需要 Java 系统提供的一些重要的类,如 JTextField、 JTextArea 和 File 类。图形界面至少要有一个顶级 Swing 容器 顶级 Swing 容器为其它 Swing 组件在屏幕上的绘制和处理事件提供支持 ; 常用的顶级容器: Frame(框架):表示主程序窗口 JDialog(对话框):每个 JDialog对象表示一个对话框,对话框属于二级窗口 JApplet(小程序):在 浏览器 内显示一个小程序界面一个框架包括边界、菜单栏、 工具栏 、状态栏,以及中间占主要部分的窗格窗格也可以看作是一种面板,但它是框
13、架的一个组成部分组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上用框架对象的getContentPane()函数来获得窗格,再调用窗格的 add()函数放置面板 public static void main(String args)JFrame frame=new JFrame(“SwingApplication“); JPanel panel1=new JPanel(); frame.getContentPane().add(panel1,BorderLayout.CENTER); 关键是 java.awt.*里面的两个与显示设备有关的类: GraphicsEnviron
14、ment 和GraphicsDevice。 GraphicsEnvironment 为 Java 应用程序 提供了特定平台的 GraphicsDevice 对象和 Font 对象集合。这些 GraphicsDevice 可以是各种本机和远端机器的资源,如屏幕、打印机或者是 Image Buffer,甚至是 Graphics2D 绘图方法的目标对象。 而 GraphicsDevice 就是指特定的图形环境了,如屏幕和打印设备等。这样,我们就可以用 GraphicsDevice 来操纵屏幕了。 GraphicsDevice 提供的setFullScreenWindow()方法就是设置全屏幕用的。
15、监听器 actionlistion: 方 法: actionPerformed 事 件: ActionEvent String getActionCommand() 软件课程设计设计 (论文 )用纸 9 actioncommand 是控件内部的一个字符串,用于标识控件的状态。 此函数可以取得控件的状态,从而决定到底该做什么。 int getModifiers() 取得 “ 产生此事件时,用户同时按下的组合键 ” long getWhen() 取得 “ 产生此事件时的时间戳 ” 事件产生原因:点击按钮,在列表框中选择内容,在文本框中点回车, 计时器到期 。 1.CalendarPad 类 表 4
16、-1 主要成员变量 (属性 ) 成员变量描述 变量类型 名称 年、月、日 int Year,month,day 保存日志的散列表 Hashtable hashtable 存放散列表的文件 File file 显示日期 JTextField showDay 日历对象 Calendar 日历 记事本对象 NotePad notepad 月 Month 负责改变月 年 Year 负责改变年 表 4-2 主要方法 名称 功能 备注 CalendarPad 创建程序主窗口 构造方法 设置日历牌 设置日历的年份、月份 排列号码 排列月份中的号码 mousePressed 处理 MouseEvent 事件
17、接口方法 软件课程设计设计 (论文 )用纸 10 mian 程序开始运行 2.记事本 NotePad 表 4-3 主要成员变量 (属性 ) 描述 变量类型 名称 文本输入区 JTextArea text 保存、删除日志的按钮 Button 保存日志、删除日志 保存日志的散列表 Hashtable table 保存散列表的文件 File file 记录日志的年、月、日 int year, month, day 表 4-4 主要方法 名称 功能 备注 NotePad 创建记事本对象 构造方法 setYear 设置年份 getYear 获取年份 setMonth 设置月份 getMonth 获取月份
18、 setDay 设置日期 getDay 获取日期 获取日志内容 获取日志内容 保存日志 保存日志 删除日志 删除日志 actionPerformed 处理 ActionEvent 事件 接口方法 3.年 Year 表 4-5 主要成员变量 (属性 ) 描述 变量类型 名称 表 示年份的整数(负数表示公元前) int year 显示年份的文本条 JTextField showYear 负责增减年份的按钮 JButton 明年,去年 表 4-6 主要方法 名称 功能 备注 Year 创建“年”对象 构造方法 setYear 设置年份 getYear 获取年份 actionPerformed 处理 ActionEvent 事件 接口方法 4.月 Month