万年历记事本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》
课程设计报告
题目: 万年历记事本
专业: 计算机科学与技术
班级: 13计科2班
姓名: 鲍超
指导教师: 江涛
成绩:
计算机学院
2016年4月12日
2015-2016学年 第二学期
目录
1设计内容及要求 (1)
1.1概述 (1)
1.2主要功能 (1)
1.3目的和要求 (2)
2概要设计 (2)
2.1软件结构 (2)
2.2主要功能模块 (3)
2.3程序流程框图 (4)
3设计过程或程序代码 (5)
4设计结果与分析 (17)
5参考文献 (20)
6小结 (20)
1设计内容及要求
1.1概述
上学期我们学习了Java语言,Java语言是面向对象的开发方法是当今世界最流行的开发方法,是当今流行的网络编程语言。它具有面向对象、跨平台、分布应用等特点。它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。很多程序开发人员得第一选择。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。让学生自己动手动脑,将书本上得知识运用到实践当中去,使知识能更好得融会贯通。
为了达到这个目的,我们需要自己动手做一个Java的课程设计,在这个课程设计里我们需要根据我们手中现有得软件与知识基础,独立得将它完成,只有这样,我们才能把理论变成实践,将知识真正得做到学以致用。
这次课程设计我主要研究了利用已学的Java知识编写一个万年历记事本。通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK等开发工具的运用,拓宽常用类库的应用。并通过自己动手,自主得学习,对Java这门课程有更深得了解与认识。
1.2主要功能
1、显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
2、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。
3、查询信息:用户可以查询到某个月的所有·的提示信息。
1.3目的和要求
目的:利用Java语言中图形用户界面编程思想和其提供的丰富的API来编写一个带有日程提醒功能的日历。该日历具有显示日历信息、定时给用户提醒和查询信息的功能。
要求:万年历有很多作用,顾名思义它是一种很方便得计时计年工具,随着科技得发展,我们已经可以通过计算机制作出精美的万年历,通过计算机制作得万年历不但外观美观,而且功能强大。
通过万年历,我们可以实现很多功能,随意看某年得年份,某年得月份,随意调整某年得某天,并将其显示出来,而且有判断闰年闰月得功能,十分方便。
除此之外,万年历还具有记事本功能,通过记事本功能可以备忘一些事情,备忘得事情可以随意添加在万年历得任意年月日里,如果记录得内容已经不再需要,还可以任意的将记录得内容进行删除,在删除得时候还会提示,是否确定删除,如果是,则程序会将它删除,如果不是,则系统不会将它删除。
2概要设计
2.1软件结构
本软件定义了两个包,其中一个包是cn.webbc.wnl,这个包放置的类是窗口Main类,还有一个包就是cn.webbc.wnl.utils,这个包放置的都是工具类,这个包中有两个类,其中CalendarUtils是关于日历操作的工具类,IOUtils类是关于操作文件的工具类。下图是包的结构图。
图1 包结构图
2.2主要功能模块
1、Main方法:创建窗口对象,并调用窗口对象的初始化方法
2、窗口初始化方法:包括初始化数据、对当前窗口进行测量、设置窗口布局策略、初始化标题栏、初始化星期条、初始化显示日历的网格条、初始化记事本布局、绑定监听器、显示窗口、判断今天是否要显示提醒等小模块
3、初始化数据方法:通过之前定义的工具包下的CalendarUtils类来获取指定月份的天数、指定年份和月份获取本月的第一天的星期几
4、对当前窗口进行测量:设置窗口的大小为700x450像素,并且设置窗口在屏幕中居中显示。
5、定义窗口的布局策略:设置窗口的布局方式为绝对布局
6、初始化标题栏:初始化标题栏,用于显示当前时间、提供用户输入年份信息等
7、初始化星期条:初始化星期栏,用于显示星期条
8、初始化显示日历的网格条:初始化显示日历区域,用于显示日历
9、初始化记事本布局:初始化记事本布局,用于提供给用户输入代办事项
10、绑定监听器:给控件绑定事件监听器
11、显示窗口:将当前窗口显示出来
12、判断今天是否要显示提醒:根据当前的时间,从保存的代办事项文件中查找有没有今天的事项,如果有,就弹出对话框显示出来
2.3程序流程框图
图2 软件执行流程图
3设计过程或程序代码
1、Main方法
public static void main(String[] args) {
Main main = new Main();// 创建一个窗口对象
main.init();// 调用窗口对象的初始化方法
}
2、窗口初始化方法
public void init() {
initData();// 初始化数据
onMeasure();// 对当前窗口进行测量
onLayout();// 对窗口设置布局策略
initTitleBar();// 初始化标题栏
initWeekBar();// 初始化星期条
initCalendarGrid();// 初始化显示日历的网格条
initTextAreaLayout();// 初始化记事本布局
initListener();// 绑定监听器
showWindow();// 显示窗口
todayHaveTip();// 判断今天是否有提醒
}
3、初始化数据方法
private void initData() {
// 根据年份和月份判断本月的第一天是星期几
firstDayOfWeek = CalendarUtils.getDayOfWeek(year, month);
// 根据年份和月份判断这个月多少天
totalDays = CalendarUtils.getTotalDays(year, month);
}
4、测量窗口
private void onMeasure() {