文档库 最新最全的文档下载
当前位置:文档库 › 万年历记事本汇总

万年历记事本汇总

《面向对象程序设计》

课程设计报告

题目: 万年历记事本

专业: 计算机科学与技术

班级: 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() {

@Override

public 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() {

@Override

public 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() {

@Override

public 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() {

@Override

public 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() {

@Override

public void actionPerformed(ActionEvent e) { // 重新初始化月份

month--;

if (month < 1) {

year--;

month = 12;

}

jtfYear.setText(year + "");

jtfMonth.setText(month + "");

initData();

updateUI();

}

});

// 给下一月按钮添加事件

btnNext.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) { // 重新初始化月份

month++;

if (month > 12) {

year++;

month = 1;

}

jtfYear.setText(year + "");

jtfMonth.setText(month + "");

initData();

updateUI();

}

});

// 给保存按钮添加事件监听

btnSave.addActionListener(new ActionListener() {

@Override

public 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() {

@Override

public 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() {

@Override

public 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 程序启动界面并提醒今天的日程

用EXCEL制作新年万年历

用EXCEL制作新年万年历 新年伊始,制作一个新年万年历送给别人新年的祝福,这份心意是非常重要的。制作新年万年历有很多办法,但用Office的Excel表格制作你又试过没?下面给大家介绍用Excel 制作万年历。 今天我们介绍用Excel制作万年历的方法。这个新年万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DATE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。 注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。

2020记事日历 (可直接打印word版)

星期一星期二星期三星期四星期五星期六星期日 30 初五31 初六 1 元旦 2 腊八月 3 初九 4 初十 5 十一 6 小寒7 十三 8 十四 9 十五 10 十六 11 十七 12 十八 13 十九14 二十 15 廿一 16 廿二 17 小年 18 廿四 19 廿五 20 大寒21 廿七 22 廿八 23 廿九 24 除夕 25 春节 26 初二 27 初三28 初四 29 初五 30 初六 31 初七 1 初八 2 湿地日01

星期一星期二星期三星期四星期五星期六星期日 27 初三28 初四 29 初五 30 初六 31 初七 1 初八 2 湿地日 3 初十4 立春 5 十二 6 十三 7 十四 8 元宵节 9 十六 10 十七11 十八 12 十九 13 二十 14 情人节 15 廿二 16 廿三 17 廿四18 廿五 19 雨水 20 廿七 21 廿八 22 廿九 23 二月大 24 龙抬头25 初三 26 初四 27 初五 28 初六 29 初七 1 初八

星期一星期二星期三星期四星期五星期六星期日 24 龙抬头25 初三 26 初四 27 初五 28 初六 29 初七 1 初八 2 初九3 初十 4 十一 5 惊蛰 6 十三 7 十四 8 妇女节 9 十六10 十七 11 十八 12 植树节 13 二十 14 廿一 15 消费者权益日 16 廿三17 廿四 18 廿五 19 廿六 20 春分 21 廿八 22 廿九 23 三十24 三月大 25 初二 26 初三 27 初四 28 初五 29 初六 30 初七31 初八 1 初九 2 初十 3 十一 4 清明 5 十三

用EXCEL制作新年万年历

用EXCEL制作新年万年历(修正版) 新年伊始,制作一个新年万年历送给别人新年的祝福,这份心意是非常重要的。制作新年万年历有很多办法,但用Office的Excel表格制作你又试过没?下面给大家介绍用Excel制作万年历。 今天我们介绍用Excel制作万年历的方法。这个新年万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DA TE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。 2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。 选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。 注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。 ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。 4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。 同样的方法,在J1至J12单元格中输入1—12月份序列。 5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。 同样的操作,将F15单元格数据有效性设置为“=$J$1:$J$12”序列。 注意:经过这样的设置以后,当我们选中D15(或F15)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。 6、选中A2单元格(不一定非得是A2哟),输入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100=INT(D13/100))),29,28),IF(OR(F13=4,F13=6,F13=9,F13=11),30,31)),用于获取查询“月份”所对应的天数(28、29、30、31)。 注意:上述函数的含义是:如果查询“月份”为“2月”(F13=2)时,并且“年份”数能被400整除[D13/400=INT(D13/400)],或者(OR)“年份”能被4整除,但不能被100整除[AND(D13/4=INT(D13/4),D13/100 INT(D13/100))],则该月为29天(也就是我们通常所说的“闰年”),否则为28天。如果“月份”不是2月,但是“4、6、9、11”月,则该月为30天。其他月份天数为31天。 7、选中B2单元格,输入公式:=IF(WEEKDAY(DATE($D$13,$F$13,1),2)=B3,1,0)。再次选中B2单元格,用“填充柄”将上述公式复制到C2—H2单元格中。 注意:①上述B2公式的含义是:如果“查询年月”的第1天是星期“7”(WEEKDAY(DATE)($D$13,$F$13,1),2)=B3)时,在该单元格显示“1”,反之显示“0”),为“查询年月”获取一个对

用Excel怎样制作万年历

可以把Excel表格内容设置为桌面背景么? 悬赏分:10 - 解决时间:2007-2-15 08:32 由于经常要查一个Excel表,就想如果把它设置为桌面背景就会很方便了,求教高手,怎么做才能办到? 提问者:firtre - 三级 最佳答案 文件-另存为网页-在桌面上点右键-属性-桌面-自定义桌面-web-钩上就搞定了 用Excel怎样制作万年历 Excel 2010-02-07 15:18:53 阅读578 评论29 字号:大中小 准备工作,制作如下电子表格:

第一步:在C2中输入=TODAY()回车。TODAY()函数用于提取当前系统日期。 第二步:在F2中输入=IF(WEEKDAY(C2,2)=7,"日",WEEKDAY(C2,2)) 回车。 第三步:在H2中输入 =NOW() 回车。NOW()用于提取当前系统时间。 第四步:在D14中设置下拉菜单,数值为1900—2029。参见“怎样制作下拉菜单”

第五步:在F14中设置下拉菜单,数值为1—12。

将查询日期调为当前日期,如下图:

第六步:在A3中输入: =IF(F14=2,IF(OR(D14/400=INT(D14/400),AND(D14/4=INT(D14/4),D14/100<>INT(D14/100))),29, 28),IF(OR(F14=4,F14=6,F14=9,F14=11),30,31))回车。 第七步:B3中输入=IF(WEEKDAY(DATE($D$14,$F$14,1),2)=B4,1,0)回车。选中B3向右复制公式 至H3。 第八步:B6中输入=IF(B3=1,1,0)回车。 第九步:在B7中输入=H6+1回车,选中B7,向下复制公式至B9。 第十步:在B10中输入=IF(H9>=A3,0,H9+1)回车。 第十一步:在B11中输入=IF(H10>=A3,0,IF(H10>0,H10+1,0))回车。 第十二步:在C6中输入=IF(B6>0,B6+1,IF(C3=1,1,0))回车。 第十三步:在C7中输入=B7+1回车。 第十四步:选中C7向下复制公式至C9。 第十五步:在C10中输入=IF(B10>=$A$3,0,IF(B10>0,B10+1,IF(C6=1,1,0)))回车。 第十六步:选中C6,向右复制公式至H6。 选中C7,向右复制公式至H7。 选中C8,向右复制公式至H8。

万年历设计项目设计方案

万年历设计项目设计方案 第一章绪论 1.1课题研究的意义 万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。而随着微电子技术的高速发展,人类用于计时的工具也在不断发展更新,单片机技术的出现使得万年历有了新的发展方向。单片机以其体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5倍以上。用最少的芯片就能实现最强大的功能,这是将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。 以基于单片机的万年历作为设计的课题,因为它有很好的开放性和可发挥性,对作者的要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多种功能。所以,电子万年历作为设计课题很有价值。 1.2本课题主要的研究工作 本论文主要研究基于单片机的万年历设计。当程序执行后,LCD显示即时时间、年月日、星期、温度。设置3个操作键:K1:设置键;K2:上调键;K3:下调键。本设计的主要内容:1、了解单片机技术的发展现状,熟悉万年历各模块的工作原理;2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各接口电路;3、熟悉单片机使用方法和C语言的编程规则,编写出相应模块的应用程序;4、分别在各自的模块中调试

Excel 2003制作万年历的步骤

Excel 2003制作万年历的步骤 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。 2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODA Y()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

注意:TODAY()函数用于提取当前系统日期,请一定要将系统日期调整准确哟。 3、在F1单元格中输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));在H1单元格中输入公式:=NOW()。 选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。 注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。 ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。 4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。 同样的方法,在J1至J12单元格中输入1—12月份序列。 5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。 同样的操作,将F13单元格数据有效性设置为“=$J$1:$J$12”序列。 注意:经过这样的设置以后,当我们选中D13(或F13)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。 6、选中A2单元格(不一定非得是A2哟),输入公式:=IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100<>INT(D13/100))),29,28),IF(O

Excel制作万年历方法(一看就会)

按CTRL,点击我 我们将一步一步教您怎么制作EXCEL万年历! Office 2007是微软Office产品史上最具创新与革命性的一个版本。全新设计的用户界面、稳定安全的文件格式、无缝高效的沟通协作。 Excel是Office套件中的一个重要组件之一。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的微机数据处理软件。 日历分为阴历和阳历。阳历的历年为一个回归年,现时国际通用的公历(格里高历)即为太阳历的一种,亦简称为阳历;阴历亦称月亮历,或称太阴历,其历月是一个朔望月,历年为1 2个朔望月,其大月30天,小月29 天;中国的农历就是阴阳历的一种。 如何在Excel实现万年历是对Office能力的综合运用,又是分析问题并进行求解的一系列过程。 2. 分析 2.1 整体构思 在进行整体构思之前,不妨我们先看看多数日历是怎样的情形,其中: 1、上面居中为当前年份。 2、然后为当年的12个月份,至于每行为3个月还是4个月取决于可见界面的大小和美观。 3、总所周知,一周则为7天,每个月最大31天,最小28天;如果1号为周六或周日的话,则该月可能要跨越6周;因此每个月最大的跨越为六周,事实上我们找一下其它日历的模板,就会发现一般都是六周。所以我们可以把每个月视为一个7 *6的单元格集合。

我们将一步一步教您怎么制作EXCEL万年历! 2.2 算法问题 当我们确定了每个月事实上为7*6的单元格集合后,我们接下来要做以下几件事情: 1、如何定位和填充相应的每月的7*6单元格在单纯的Excel表中,我们很难采用逻辑判断和循环的方式获取在7*6单元格集合中的第一个星期一应该是哪一天;但我们知道这个7*6单元格所在月的第一天即1号却是固定的,同样当日期固定后,该日期所在的星期几也是固定的,假设2010-01-01为星期五,那星期一是几号呢?很显然,为2010年1月1号向前推4天即2009年12月28号,星期二则为1月1号向前推3天,以此类推,可以推到整个42个单元格中,只不过超过当月第一天的日期则向后推了。 如果我们换个思路可能更好些,在第一个7*6单元格集合中的首个星期一为2010年1月1号向前推5天即星期五,然后加1天,这也是理所当然的求法,那么星期二则为1月1号向前推5天,然后加2天,以此类推,推倒第42个单元格中则为1月1号向前推5天,然后加42天了,从1到42则为一个整数的序列;这样就变成Excel更擅长的计算方式了。

万年历设计方案

万年历设计方案 第一章绪论 1.1课题研究的意义 万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间围(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。而随着微电子技术的高速发展,人类用于计时的工具也在不断发展更新,单片机技术的出现使得万年历有了新的发展方向。单片机以其体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5倍以上。用最少的芯片就能实现最强大的功能,这是将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。 以基于单片机的万年历作为设计的课题,因为它有很好的开放性和可发挥性,对作者的要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多种功能。所以,电子万年历作为设计课题很有价值。 1.2本课题主要的研究工作 本论文主要研究基于单片机的万年历设计。当程序执行后,LCD显示即时时间、年月日、星期、温度。设置3个操作键:K1:设置键;K2:上调键;K3:下调键。本设计的主要容:1、了解单片机技术的发展现状,熟悉万年历各模块的工作原理;2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各接口电路;3、熟悉单片机使用

制作新年万年历excel

制作新年万年历有很多办法,但用Office的excel表格制作你又试过没?新年伊始,制作一个新年万年历送给别人新年的祝福,这份心意是非常重要的。下面给大家介绍用Excel 制作万年历。今天我们介绍用Excel制作万年历的方法。 新年伊始,制作一个新年万年历送给别人新年的祝福,这份心意是非常重要的。制作新年万年历有很多办法,但用Office的Excel表格制作你又试过没?下面给大家介绍用Excel制作万年历。 今天我们介绍用Excel制作万年历的方法。这个新年万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DATE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。 2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。

选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。 注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。 4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。同样的方法,在J1至J12单元格中输入1—12月份序列。 5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。

2020年日历记事可打印完美版(每月一张横版)

2020年1月农历庚子鼠年 一二三四五六日 1休2初八3初九4初十5十一 6十二7十三8十四9十五10十六11十七12十八 13十九14二十15廿一16廿二17廿三18廿四19班 20廿六21廿七22廿八23廿九24除夕休25春节休26初二休27初三休28初四休29初五休30初六休31初七

2020年2月农历庚子鼠年 一二三四五六日 1班2初九 3初十4立春5十二6十三7十四8元宵节9十六 10十七11十八12十九13二十14情人节15廿二16廿三 17廿四18廿五19廿六20廿七21廿八22廿九23二月 24初二25初三26初四27初五28初六29初七

2020年3月农历庚子鼠年 一二三四五六日3.30初七 3.31初八1初八 2初九3初十4十一5十二6十三7十四8十五 9十六10十七11十八12十九13二十14廿一15廿二16廿三17廿四18廿五19廿六20廿七21廿八22廿九23三十24三月25初二26初三27初四28初五29初六

2020年4月农历庚子鼠年 一二三四五六日 1初九2初十3十一4清明节休5休 6休7十五8十六9十七10十八11十九12二十 13廿一14廿二15廿三16廿四17廿五18廿六19廿七 20廿八21廿九22三十23四月24初二25初三26班 27初五28初六29初七30初八

2020年5月农历庚子鼠年 一二三四五六日 1劳动节休2休3休 4休5休6十四7十五8十六9班10母亲节11十九12二十13廿一14廿二15廿三16廿四17廿五 18廿六19廿七20廿八21廿九22三十23闰四月24初二 25初三26初四27初五28初六29初七30初八31初九

手把手教你用EXCEL制作日历

今天我们介绍用Excel制作万年历的方法。这个万年历可以显示当月的月历,还可以随意查阅任何日期所属的月历,非常方便。如果你愿意,还可以让它在特殊的日子里显示不同的提醒文字,一起来试试吧! 本文所涉及到的函数有: 1、AND (logical1,logical2, ...) 2、DATE (year,month,day) 3、DAY (serial_number) 4、IF (Logical,Value_if_true,Value_if_false) 5、INT (number) 6、MONTH (serial_number) 7、NOW () 8、OR (logical1,logical2, ...) 1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。

2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“二○○一年三月十四日”选项,“确定”退出,将日期设置成中文形式。

注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。 选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。 注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。 ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。 4、在I1、I2单元格分别输入1900、1901,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I151单元格,输入1900—2050年份序列。 同样的方法,在J1至J12单元格中输入1—12月份序列。 5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$151,“确定”退出。

万年历报告

基于MSP430的万年历实时系统 专业班级电子一班 姓名 学号

一.设计内容 1.设计目的 万年历是日常生活中必不可少的工具,但是每个人都知道如何使用,却很少人知道如何实现它。本次设计是利用所学的单片机知识,将其具体化,做成实物展现出来。 2.设计思路 A.利用G2系列和DS1302模块实现万年历。DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高。 B.利用5529系列,通过定时器编程直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本。 方案B编程虽然麻烦,但是很锻炼逻辑思路和编程的能力,由于时间较紧,对于1302模块了解不够深入,最终确定利用定时器来编写万年历。 A方案器件关系 B方案器件关系

3.软件编程

B部分源程序 void main(void) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗定时器 TA0CTL = TASSEL_1 + MC_1 + TACLR + TAIE; // 选择aclk为时钟,增计数模式, TA0CCR0 = 32767; //原数32767 // 计数设置 //-----配合机械按键,启用内部上拉电阻----- P1REN |= BIT7; P1OUT |= BIT7; //-----配置P1.7中断参数----- P1DIR &= ~BIT7; P1IES |= BIT7; P1IE |= BIT7 ; //-----配合机械按键,启用内部上拉电阻----- P2REN |= BIT2; P2OUT |= BIT2; //-----配置P2.2中断参数----- P2DIR &= ~BIT2; P2IES |= BIT2; P2IE |= BIT2 ; P1DIR |= BIT0; //蜂鸣器输出端口 Dogs102x6_init(); Dogs102x6_backlightInit(); Dogs102x6_setBacklight(10); Dogs102x6_setContrast(10); Dogs102x6_clearScreen(); Dogs102x6_imageDraw(tubiao,0,25); _delay_cycles(5000000); Dogs102x6_clearScreen(); _EINT(); // 打开全局中断 while(1) { //年,月,日,时,分,秒十位,各位分离 sec1=(sec/10)+48;//十位 sec2=(sec%10)+48;//个位 min1=(min/10)+48;//十位 min2=(min%10)+48;//个位 hour1=(hour/10)+48;//十位 hour2=(hour%10)+48;//个位 year1=(year/1000)+48; year2=((year-1000*(year1-48))/100)+48; t=year-1000*(year1-48)-100*(year2-48);

2018年日历记事打印(正确版)

2018年1月 星期一星期二星期三星期四星期五星期六星期日1元旦2十六3十七4十八5小寒6二十7廿一 8廿二9廿三10廿四11廿五12廿六13廿七14廿八 15廿九16三十17初一18初二19初三20大寒21初五 22初六23初七24腊八节25初九26初十27十一28十二 29十三30十四31十五

2018年2月 星期一星期二星期三星期四星期五星期六星期日 1十六2湿地日3十八4立春 5二十6廿一7廿二8小年9廿四10廿五11廿六 12廿七13廿八14情人节15除夕16春节17初二18初三 19雨水20初五21初六22初七23初八24初九25初十 26十一27十二28十三

2018年3月 星期一星期二星期三星期四星期五星期六星期日 1十四2元宵节3十六4十七 5惊蛰6十九7二十8妇女节9廿二10廿三11廿四 12植树节13廿六14廿七15消费者... 16廿九17初一18龙头节 19初三20初四21春分22初六23初七24初八25初九 26初十27十一28十二29十三30十四31十五

2018年4月 星期一星期二星期三星期四星期五星期六星期日 1愚人节 2十七3十八4十九5清明6廿一7廿二8廿三 9廿四10廿五11廿六12廿七13廿八14廿九15三十 16初一17初二18初三19初四20谷雨21初六22地球日 23初八24初九25初十26十一27十二28十三29十四 30十五

2018年5月 星期一星期二星期三星期四星期五星期六星期日1劳动节2十七3十八4五四青... 5立夏6廿一 7廿二8廿三9廿四10廿五11廿六12护士节13母亲节 14廿九15初一16初二17初三18博物馆日19初五20初六 21小满22初八23初九24初十25十一26十二27十三 28十四29十五30十六31十七

万年历

万年历 --------------------------------------------------------------------------作者: _____________

软件基础实践报告( 2013 / 2014 学年第二学期) 题目:万年历 专业软件工程 学生姓名 班级学号 指导教师陈云芳 指导单位计算机学院软件工程系 日期 2014.5

指导教师成绩评定表 万年历

一、课题概述 【问题描述】 该系统要求实现一个简单、实用的日历打印程序。主要功能为在屏幕上显示任意年月的月历,且要按指定的格式输出。通过此课题,熟练掌握数组、格式输出、文件的各种操作,以及基本的日期算法思想的应用。 【功能要求】 (2)月历输出重要节假日要在该日期后用*号标注出来 (3)需要实现的功能 1)输入日期,显示该日期所在月的月历。 2)可选择显示下一月、上一月的日历。 3)可选择显示下一年、上一年的日历。 4)重要节假日需用一个文本文件进行设置,文件格式自定。程序应通 过读取节假日文件的信息来对日历上的节假日日期进行标注。 (4)界面功能要求: 1)采用友好的字符界面,实现一个功能控制菜单。 2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行 多次操作。 二、软件设计 程序模块: 本程序主要由各种功能的函数来实现所要求的功能,具体函数名称及

流程图: 错误

程序代码: #include #include//包含各种时间相关函数的头文件 #include //包含数学运算函数的头文件 #include //包含清屏函数的头文件 #include //包含getch()的头文件 #define KEYNUMUp 0x48 //定义键盘输入#define KEYNUMDown 0x50 #define KEYNUMLeft 0x4b #define KEYNUMRight 0x4d #define KEYNUMPageUp 0x49 #define KEYNUMPageDown 0x51 int year,month,day; //全局变量记录时间 void checkFestvals(int month,int nowDay)//检查是否节日{ switch(month) { case 1: case 5: case 6: case 7: case 8:

如何用EXCEL表格制作万年历

1、启动EXCEL2003,新建一个工作表,取名保存(如万年历.xls),并在相应的单元格中,输入如图1所示的文本。 ① 2、同时选中B1、C1、D1单元格,按“格式”工具栏上的“合并及居中”按钮,将其合并成一个单元格,并输入公式:=TODAY()。 选中B1(合并后的)单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图2),在“数字”标签中的“分类”下面选中“日期”选项,再在右侧“类型”下面选中“2001-3-14”选项,“确定”退出,将日期设置成中文形式。

② 注意:TODAY()函数用于提取当前系统日期,请将系统日期一定要调整准确哟。 3、选中F1单元格,输入公式:=IF(WEEKDAY(B1,2)=7,"日",WEEKDAY(B1,2));选中H1单元格,输入公式:=NOW()。 选中F1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“特殊”选项,再在右侧“类型”下面选中“中文小写数字”选项,“确定”退出,将“星期数”设置成中文小写形式;选中H1单元格,打开“单元格格式”对话框,在“数字”标签中的“分类”下面选中“时间”选项,再在右侧“类型”下面选中一款时间格式,“确定”退出。 注意:①上述前面一个公式的含义是:如果(IF)当前日期(B1)是星期“7”(WEEKDAY(B1,2)=7),则在F1单元格中显示“日”,否则,直接显示出星期的数值(WEEKDAY(B1,2))。 ②上述第二个函数(NOW())用于提取当前系统日期和时间,也请将系统日期和时间调整准确。

4、在I1、I2单元格分别输入1800、1801,然后同时选中I1、I2单元格,用“填充柄”向下拖拉至I301单元格,输入1800—2100年份序列。 同样的方法,在J1至J12单元格中输入1—12月份序列。 5、选中D13单元格,执行“数据→有效性”命令,打开“数据有效性”对话框(如图3),按“允许”右侧的下拉按钮,选中“序列”选项,在“来源”下面的方框输入:=$I$1:$I$301,“确定”退出。 ③ 同样的操作,将F15单元格数据有效性设置为“=$J$1:$J$12”序列。 注意:经过这样的设置以后,当我们选中D15(或F15)单元格时,在单元格右侧出现一个下拉按钮,按此下拉按钮,即可选择年份(或月份)数值,快速输入需要查询的年、月值。 6、选中A2单元格,输入公式: =IF(F13=2,IF(OR(D13/400=INT(D13/400),AND(D13/4=INT(D13/4),D13/100<>INT(D13/100)))

用Excel制作万年历的一种方法

用Excel制作万年历的一种方法 1.概述 Office 2007是微软Office产品史上最具创新与革命性的一个版本。全新设计的用户界面、稳定安全的文件格式、无缝高效的沟通协作。 Excel是Office套件中的一个重要组件之一。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的微机数据处理软件。 日历分为阴历和阳历。阳历的历年为一个回归年,现时国际通用的公历(格里高历)即为太阳历的一种,亦简称为阳历;阴历亦称月亮历,或称太阴历,其历月是一个朔望月,历年为1 2个朔望月,其大月30天,小月29 天;中国的农历就是阴阳历的一种。 如何在Excel实现万年历是对Office能力的综合运用,又是分析问题并进行求解的一系列过程。 2.分析 2.1整体构思 在进行整体构思之前,不妨我们先看看多数日历是怎样的情形,其中: 1、上面居中为当前年份。 2.然后为当年的12个月份,至于每行为3个月还是4个月取决于可见界面的大小和美观。 3.总所周知,一周则为7天,每个月最大31天,最小28天;如果1号为周六或周日的话,则该月 可能要跨越6周;因此每个月最大的跨越为六周,事实上我们找一下其它日历的模板,就会发现一般都是六周。所以我们可以把每个月视为一个7*6的单元格集合。

2.2算法问题 当我们确定了每个月事实上为7*6的单元格集合后,我们接下来要做以下几件事情: 1.如何定位和填充相应的每月的7*6单元格 在单纯的Excel表中,我们很难采用逻辑判断和循环的方式获取在7*6单元格集合中的第一个星期一应该是哪一天;但我们知道这个7*6单元格所在月的第一天即1号却是固定的,同样当日期固定后,该日期所在的星期几也是固定的,假设2010-01-01为星期五,那星期一是几号呢?很显然,为2010年1月1号向前推4天即2009年12月28号,星期二则为1月1号向前推3天,以此类推,可以推到整个42个单元格中,只不过超过当月第一天的日期则向后推了。 如果我们换个思路可能更好些,在第一个7*6单元格集合中的首个星期一为2010年1月1号向前推5天即星期五,然后加1天,这也是理所当然的求法,那么星期二则为1月1号向前推5天,然后加2天,以此类推,推倒第42个单元格中则为1月1号向前推5天,然后加42天了,从1到42则为一个整数的序列;这样就变成Excel更擅长的计算方式了。 2.如何屏蔽非当月的日期 大家也许会注意到在这个7*6的单元格集合中,一定会混入不属于这个月的日期,怎么把这些不属于本月的日期去除呢?如果我们用函数来实现的话,也不是不可能,只不过过于复杂。 幸好Excel提供了条件格式,条件格式的目的就是为符合或不符合相应条件的单元格提供该单元格的格式化需求,如果我们将小于当月第一天,或者大于等于下个月第一天值的单元格字符设置为白色字体,同时将这些单元格的背景色也置为白色,岂不是看不到了嘛。 3.农历问题 农历问题是属于典型的算法问题,我还从未见到在单纯的Excel表格中使用函数和表达式就能实现农历算法的。很幸运的是,Office提供了强大的编程语言VBA,再加上强大的互联网搜索引擎,我们很容易就能找到并实现农历的功能。 关于如何对不在当月的农历日期进行屏蔽,详情见步骤。

2020年日历(记事可打印完美版)

2020年1月January 星期一星期二星期三星期四星期五星期六星期日 1 元旦节2 腊八节 3 初九 4 初十 5 十一 6 小寒7 十三 8 十四 9 十五 10 尾牙 11 十七 12 十八 13 十九14 二十 15 廿一 16 廿二 17 北方小年 18 南方小年 19 廿五 20 大寒21 廿七 22 廿八 23 廿九 24 除夕夜 25 春节 26 初二 27 五九28 初四 29 初五 30 初六 31 初七

2020年2月February 星期一星期二星期三星期四星期五星期六星期日 1 初八 2 湿地日 3 初十4 立春 5 六九 6 十三 7 十四 8 元宵节 9 十六 10 十七11 十八 12 十九 13 二十 14 情人节 15 廿二 16 廿三 17 廿四18 廿五 19 雨水 20 廿七 21 廿八 22 廿九 23 八九 24 龙抬头25 初三 26 初四 27 初五 28 初六 29 初七

2020年3月March 星期一星期二星期三星期四星期五星期六星期日 30 初七31 初八 1 初八 2 初九3 九九 4 十一 5 惊蛰 6 十三 7 十四 8 妇女节 9 十六10 十七 11 十八 12 植树节 13 二十 14 廿一 15 消费者日 16 廿三17 廿四 18 廿五 19 廿六 20 春分 21 廿八 22 廿九 23 三十24 三月 25 初二 26 上巳节 27 初四 28 初五 29 初六

2020年4月April 星期一星期二星期三星期四星期五星期六星期日 1 愚人节2 初十 3 十一 4 清明 5 十三 6 十四7 十五 8 十六 9 十七 10 十八 11 十九 12 复活节 13 廿一14 廿二 15 廿三 16 廿四 17 廿五 18 廿六 19 谷雨 20 廿八21 廿九 22 地球日 23 四月 24 初二 25 初三 26 初四 27 初五28 初六 29 初七 30 初八

相关文档
相关文档 最新文档