万年历记事本汇总
- 格式:doc
- 大小:401.00 KB
- 文档页数:22
2020年1月星期一星期二星期三星期四星期五星期六星期日12345元旦腊八节初九初十十一6789101112小寒十三十四十五十六十七十八13141516171819十九二十廿一廿二廿三廿四廿五20212223242526大寒廿七廿八廿九除夕春节初二2728293031初三初四初五初六初七2020年2月星期一星期二星期三星期四星期五星期六星期日12初八初九3456789初十立春十二十三十四元宵节十六10111213141516十七十八十九二十情人节廿二廿三17181920212223廿四廿五雨水廿七廿八廿九<二月>242526272829初二初三初四初五初六初七2020年3月星期一星期二星期三星期四星期五星期六星期日30311初七初八初八2345678初九初十十一惊蛰十三十四妇女节9101112131415十六十七十八植树节二十廿一廿二16171819202122廿三廿四廿五廿六春分廿八廿九23242526272829三十<三月>初二初三初四初五初六2020年4月星期一星期二星期三星期四星期五星期六星期日12345愚人节初十十一清明节十三6789101112十四十五十六十七十八十九二十13141516171819廿一廿二廿三廿四廿五廿六谷雨20212223242526廿八廿九三十<四月>初二初三初四27282930初五初六初七初八2020年5月星期一星期二星期三星期四星期五星期六星期日123劳动节初十十一45678910青年节立夏十四十五十六十七母亲节11121314151617十九护士节廿一廿二廿三廿四助残日18192021222324廿六廿七小满廿九三十<闰四月>初二25262728293031初三初四初五初六初七初八无烟日2020年6月星期一星期二星期三星期四星期五星期六星期日1234567儿童节十一十二十三芒种十五十六891011121314十七十八十九二十廿一廿二廿三15161718192021廿四廿五廿六廿七廿八廿九父亲节夏至22232425262728初二初三初四端午节初六初七初八2930初九初十2020年7月星期一星期二星期三星期四星期五星期六星期日12345建党节十二十三十四十五6789101112十六小暑十八十九二十廿一廿二13141516171819廿三廿四廿五廿六廿七廿八廿九20212223242526三十<六月>大暑初三初四初五初六2728293031初七初八初九初十十一2020年8月星期一星期二星期三星期四星期五星期六星期日3112十三建军节十三3456789十四十五十六十七立秋十九二十10111213141516廿一廿二廿三廿四廿五廿六廿七17181920212223廿八廿九<七月>初二初三初四处暑24252627282930初六七夕节初八初九初十十一十二2020年9月星期一星期二星期三星期四星期五星期六星期日123456十四十五十六十七十八十九78910111213白露廿一廿二教师节廿四廿五廿六14151617181920廿七廿八廿九<八月>初二初三初四21222324252627初五秋分初七初八初九初十十一282930十二十三十四2020年10月星期一星期二星期三星期四星期五星期六星期日1234国庆节中秋节十六十七十八567891011十九二十廿一寒露廿三廿四廿五12131415161718廿六廿七廿八廿九三十<九月>初二19202122232425初三初四初五初六霜降初八重阳节262728293031初十十一十二十三十四十五2020年11月星期一星期二星期三星期四星期五星期六星期日301十六十六2345678十七十八十九二十廿一立冬廿三9101112131415廿四廿五廿六廿七廿八廿九<十月>16171819202122初二初三初四初五初六初七小雪23242526272829初九初十十一感恩节十三十四十五2020年12月星期一星期二星期三星期四星期五星期六星期日123456十七十八十九二十廿一大雪78910111213廿三廿四廿五廿六廿七廿八廿九14151617181920三十<十一月>初二初三初四初五初六21222324252627冬至初八初九平安夜圣诞节十二十三28293031十四十五十六十七。
38887.612013 年 记 事 本请按住“ F9 ”不放看看会发生什么变化!从左往右
从右往左撞墙式摇摆
101010 ggggggggghhhhhhhhhhhhh 明天是:
4月25日星期五 您应做的事情如下:需办事项:
恭喜,您今天可以稍适休息一下了!后天是:
4月26日星期六 您应做的事情如下:需办事项:
恭喜,您今天可以稍适休息一下了!后三天是:
4月27日星期日 您应做的事情如下:需办事项:恭喜,您今天可以稍适休息一下了!
恭喜,您今天可以稍适休息一下了!
事 本 2013 年 今天是 星期四
恭喜,您今天可以稍适休息一备忘录今日提醒:
什么变化!今天是:
常用信息
通讯录
hhh 备忘录
常用网址
1月
理财2月
理财3月
理财4月
理财5月
理财6月
理财7月
理财8月
理财9月
理财10月
理财11月
理财12月理财请输入年份2014年4月24日
星期四个人理财
2013
13 年 记 星期四
休息一下了! 电话号。
《面向对象程序设计》课程设计报告题目: 万年历记事本专业: 计算机科学与技术班级: 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() {setSize(700, 450);// 设置窗口大小// 获取屏幕尺寸Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();// 设置窗口的位置为屏幕的正中央setLocation((int) (screenSize.getWidth() - getWidth()) / 2,(int) (screenSize.getHeight() - getHeight()) / 2);}5、定义布局策略private void onLayout() {setLayout(null);// 设置宽口的布局策略为绝对布局}初始化标题栏private void initTitleBar() {// 创建今天日期的显示条JPanel datePanel = new JPanel();// 创建容器String today = String.format("%4d年%2d月%2d日",currentDate.get(Calendar.YEAR),currentDate.get(Calendar.MONTH) + 1,currentDate.get(Calendar.DAY_OF_MONTH));// 获取今天的日期JLabel jlToday = new JLabel("今天时间:" + today);// 创建标签btnFind = new JButton("查看本月日程安排");datePanel.setSize(700, 40);datePanel.setLocation(0, 10);datePanel.add(jlToday);datePanel.add(btnFind);add(datePanel);// 创建输入信息标题栏JPanel InputPanel = new JPanel();JLabel jlYear = new JLabel("年份:");jtfYear = new JTextField(year + "", 4);// 创建年份的文本框JLabel jlMonth = new JLabel("月份:");jtfMonth = new JTextField(month + "", 4);// 创建月份的文本框btnQuery = new JButton("查询");// 查询按钮InputPanel.add(jlYear);InputPanel.add(jtfYear);InputPanel.add(jlMonth);InputPanel.add(jtfMonth);InputPanel.add(btnQuery);InputPanel.setSize(350, 40);InputPanel.setLocation(0, 45);add(InputPanel);// 创建当前显示的年月信息JPanel InfoPanel = new JPanel();InfoPanel.setSize(350, 60);InfoPanel.setLocation(0, 80);jlInfo = new JLabel();jlInfo.setText(year + "年" + month + "月");btnPrev = new JButton("上月");// 创建上月按钮btnNext = new JButton("下月");// 创建下月按钮InfoPanel.add(btnPrev);InfoPanel.add(jlInfo);InfoPanel.add(btnNext);add(InfoPanel);}6、初始化星期条private void initWeekBar() {JPanel panel = new JPanel();// 创建星期信息并添加到窗口中for (String weekName : week) {JLabel jlWeekName = new JLabel(weekName + " ");panel.add(jlWeekName);}panel.setSize(350, 20);panel.setLocation(0, 120);add(panel);}7、初始化日历网格private void initCalendarGrid() {int index = 1;calendarPanel.setLayout(new GridLayout(6, 7));calendarPanel.setSize(240, 200);calendarPanel.setLocation(50, 150);for (int i = 0; i < 42; i++) {final int day = index; // 获取遍历的是哪一天JTextField jtfDay = new JTextField();jtfDay.setEnabled(false);// 设置不可用jtfDay.setDisabledTextColor(Color.RED);// 设置字体颜色if (index == this.day && choose[0] == year && choose[1] == month) { jtfDay.setFont(new Font("微软雅黑", Font.BOLD, 16));jtfDay.setDisabledTextColor(Color.BLUE);// 设置字体颜色}jtfDay.setHorizontalAlignment(JTextField.CENTER);// 设置对齐方式// 添加鼠标监听事件jtfDay.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {super.mouseClicked(e);choose[0] = year;choose[1] = month;choose[2] = day;jlChooseDay.setText("您选择的日期是:" + choose[0] + "年"+ choose[1] + "月" + choose[2] + "日");showMessageDialog();readNoteInfo();}});calendarPanel.add(jtfDay);if (i < firstDayOfWeek - 1 || index > totalDays) {continue;}jtfDay.setText(String.valueOf(index++));}add(calendarPanel);}8、初始化记事本布局private void initTextAreaLayout() {// 文本器容器JPanel textAreaPanel = new JPanel();// 设置文本区容器的布局方式textAreaPanel.setLayout(new BorderLayout());jta = new JTextArea("", 10, 25);// 让文本区可以垂直滚动JScrollPane jScrollPane = new JScrollPane(jta);// 让文本区内容可以换行jta.setLineWrap(true);// 显示选择日期的标签控件jlChooseDay = new JLabel();jlChooseDay.setText("您选择的日期是:" + year + "年" + month + "月" + day + "日");jlChooseDay.setSize(300, 100);// 添加标签控件和滚动控件textAreaPanel.add(jlChooseDay, BorderLayout.NORTH);textAreaPanel.add(jScrollPane);textAreaPanel.setSize(300, 300);textAreaPanel.setLocation(350, 50);// 创建添加和删除的按钮btnDel = new JButton("删除");btnSave = new JButton("保存");JPanel panel = new JPanel();panel.add(btnSave);panel.add(btnDel);textAreaPanel.add(panel, BorderLayout.SOUTH);add(textAreaPanel);}9、绑定监听器private void initListener() {// 给查询按钮添加事件监听btnQuery.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String textYear = jtfYear.getText();String textMonth = jtfMonth.getText();try {// 重新初始化年份year = Integer.parseInt(textYear);if (Integer.parseInt(textMonth) > 12|| Integer.parseInt(textMonth) <= 0) {JOptionPane.showConfirmDialog(Main.this, "请输入正确的月份");return;}// 重新初始化月份month = Integer.parseInt(textMonth);initData();updateUI();} catch (Exception e2) {JOptionPane.showConfirmDialog(Main.this, "格式不正确");}}});// 给年份文本框添加事件监听jtfYear.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String textYear = jtfYear.getText();try {// 重新初始化年份year = Integer.parseInt(textYear);initData();updateUI();} catch (Exception e2) {JOptionPane.showConfirmDialog(Main.this, "请输入正确的年份");}}});// 月份文本框添加事件监听jtfMonth.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String textMonth = jtfMonth.getText();try {if (Integer.parseInt(textMonth) > 12|| Integer.parseInt(textMonth) <= 0) {JOptionPane.showConfirmDialog(Main.this, "请输入正确的月份");return;}// 重新初始化月份month = Integer.parseInt(textMonth);initData();updateUI();} catch (Exception e2) {JOptionPane.showConfirmDialog(Main.this, "请输入正确的月份");}}});// 给上一月按钮添加事件btnPrev.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // 重新初始化月份month--;if (month < 1) {year--;month = 12;}jtfYear.setText(year + "");jtfMonth.setText(month + "");initData();updateUI();}});// 给下一月按钮添加事件btnNext.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // 重新初始化月份month++;if (month > 12) {year++;month = 1;}jtfYear.setText(year + "");jtfMonth.setText(month + "");initData();updateUI();}});// 给保存按钮添加事件监听btnSave.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 获取文本区中的内容String text = jta.getText();if (text.trim().equals("") || text == null) {JOptionPane.showMessageDialog(Main.this, "没有内容,不能进行保存操作!");return;}// 进行保存操作boolean result = IOUtils.write(getFileName(), text);if (result) {JOptionPane.showMessageDialog(Main.this, "保存成功!");}}});// 给删除按钮添加监听事件btnDel.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if (IOUtils.findFileExists(getFileName())) {int item = JOptionPane.showConfirmDialog(Main.this, "确认删除?");if (item == 0) {jta.setText("");boolean result = IOUtils.deleteFile(getFileName());JOptionPane.showMessageDialog(Main.this,result ? "删除成功!" : "删除失败!");}} else {JOptionPane.showMessageDialog(Main.this, "没有内容,不能删除!");}}});// 设置查找按钮的监听器btnFind.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {StringBuffer sb = new StringBuffer();int index = 0;for (int i = 1; i <= 31; i++) {String tempFileName = choose[0] + "" + choose[1] + i;if (IOUtils.findFileExists(tempFileName)) {index++;String read = IOUtils.read(tempFileName);sb.append(choose[0] + "年" + choose[1] + "月" + i + "日安排:").append(read).append("\n");}}if (index != 0) {JOptionPane.showMessageDialog(Main.this, sb.toString());} else {JOptionPane.showMessageDialog(Main.this, "本月暂时没有安排");}}});}10、显示窗体private void showWindow() {setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);}11、判断今天是否有提醒private void todayHaveTip() {if (IOUtils.findFileExists(getFileName())) {String message = IOUtils.read(getFileName());JOptionPane.showMessageDialog(this, "今天的日程安排:" + message);}}4设计结果与分析1、启动软件界面图3 软件启动界面2、修改日程提醒图4 修改日程提醒界面3、保存修改界面图5 保存修改界面4、当今天有日程提醒时,弹出日程安排对话框界面图6 程序启动界面并提醒今天的日程5、删除日程安排内容界面图7 删除某天的日程安排6、查看本月所有日程提醒界面图8 查看本月所有日程安排5参考文献[1] Matt Zandstra.深入PHP:面向对象、模式与实践(第3版)[M] .北京:人民邮电出版社,2011[2] 高洛峰. 细说PHP [M] .北京:机械工业出版社,2007[3] 昊斯特曼. JAVA核心技术[M].北京:电子工业出版社,2011[4] Joshua Bloch. Effective Java中文版(第2版)[M] .北京:机械工业出版社,2011[5] 成富. 深入理解Java 7:核心技术与最佳实践[M] .北京:清华大学出版社,2012 6小结通过本次面向对象课程设计,我的收获就是学会了用流程图来表达自己的想法,并根据流程图来逐步实现程序的功能。