当前位置:文档之家› Java万年历源代码

Java万年历源代码

Java万年历源代码
Java万年历源代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.table.DefaultTableModel; import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Locale;

import java.util.TimeZone;

publicclass wannianli extends Jframe//窗体类implements ActionListener,//事件处理接口MouseListener {

private Calendar cld =

Calendar.getInstance();//获取一个Calendar类的实例对象

private String[] astr = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; //JPanel是Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing包中,是一种轻量级容器,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField等private DefaultTableModel dtm =

new DefaultTableModel(null, astr);//创建了一个表格模型

private JTable table = new JTable(dtm);

private JScrollPane sp =

new JScrollPane(table);

private JButton bLastYear = new JButton("上一年

");

private JButton bNextYear = new JButton("下一年");

private JButton bLastMonth = new JButton("上月");

private JButton bNextMonth = new JButton("下月");

private JPanel p1 = new JPanel(); // 设立八个中间容器,装入布局控制日期的按钮模块

private JPanel p2 =

new JPanel(new GridLayout(3,2));//网格布局private JPanel p3 =

new JPanel(new BorderLayout());//边界布局private JPanel p4 =

new JPanel(new GridLayout(2,1));

private JPanel p5 =

new JPanel(new BorderLayout());

private JPanel p6 =

new JPanel(new GridLayout(2,2));

private JPanel p7 =

new JPanel(new GridLayout(2,1));

private JPanel p8 =

new JPanel(new BorderLayout());

private JComboBox timeBox =

new JComboBox(TimeZone.getAvailableIDs());//对所有支持时区进行迭代,获取所有的id;

private JTextField jtfYear =

new JTextField(5);// jtfYeaar年份显示输入框private JTextField jtfMonth =

new JTextField(2);// jtfMouth月份显示输入框private JTextField timeField=new JTextField() ;//各城市时间显示框

privatestatic JTextArea jta =

new JTextArea(10,5);//农历显示区

private JScrollPane jsp =

new JScrollPane(jta);

private JLabel l = new JLabel("花江小精灵:亲!你可以直接输入年月查询.");

private JLabel lt = new JLabel();

private JLabel ld = new JLabel();

private JLabel lu = new JLabel("农历和节气");

private JLabel null1=new JLabel();

privateint lastTime;

//private String localTime = null;

private String s = null;

private SimpleDateFormat dateFormat=new Simpl eDateFormat("yyyy年MM月dd日hh时mm分ss秒");

public wannianli() {

super("花江日历过去仅留追忆,未来刚生憧憬,唯有坚守本心,把握今天 ");// 框架命名

this.setDefaultCloseOperation(JFrame.EXIT_ ON_CLOSE);// 窗口关闭函数

this.getContentPane().setLayout(new BorderL ayout(9, 10));

jta.setLineWrap(true);// 长度大于分配长度时候则换行

jta.setFont(new Font("黑体", Font.BOLD, 16));

table.setBackground(Color.white);

table.setGridColor(Color.pink);// 星期之间的网格线是灰色的

table.setBackground(Color.white);

table.setColumnSelectionAllowed(true);// 将table中的列设置为可选择的

table.setSelectionBackground(Color.pink);/ / 当选定某一天时背景颜色为黑色

table.setSelectionForeground(Color.GREEN);

table.setBackground(new Color(184,207, 229));// 日期显示表格为浅蓝色

table.setFont(new Font("黑体", Font.BOLD, 24));// 日期数字字体格式

table.setRowHeight(26);// 表格的高度

table.addMouseListener(this); // 鼠标监听器、

lu.setFont(new Font("黑体", Font.BOLD, 22));//农历标签格氏

jtfYear.addActionListener(this);// 可输入年份的文本框

// 为各个按钮添加监听函数

bLastYear.addActionListener(this);

bNextYear.addActionListener(this);

bLastMonth.addActionListener(this);

bNextMonth.addActionListener(this);

timeBox.addItemListener(new TimeSelectedCha

ngedListener());

// 将按钮添加到Jpane上

p1.add(bLastYear);

p1.add(jtfYear);// 年份输入文本框

p1.add(bNextYear);

p1.add(bLastMonth);

p1.add(jtfMonth);

p1.add(bNextMonth);

p3.add(jsp, BorderLayout.SOUTH);

p3.add(lu,BorderLayout.CENTER);

p3.add(ld, BorderLayout.NORTH);

p4.add(lt);

p4.add(l);

p5.add(p4, BorderLayout.SOUTH);

p5.add(sp, BorderLayout.CENTER);

p5.add(p1, BorderLayout.NORTH);

p6.add(timeBox);

p6.add(null1);

p6.add(timeField);

p8.add(p2,BorderLayout.CENTER);

p8.add(p7,BorderLayout.SOUTH);

this.getContentPane().add(p3, BorderLayout.EAST);

this.getContentPane().add(p5, BorderLayout.CENTER);

this.getContentPane().add(p6,BorderLayout. SOUTH);

this.getContentPane().add(p8,BorderLayout. WEST);

String[] strDate =

DateFormat.getDateInstance().format(new

Date())

.split("-");// 获取日期

cld.set(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1]) - 1,0);

showCalendar(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1]), cld);

jtfMonth.setEditable(false);// 设置月份文

本框为不可编辑

jtfYear.setText(strDate[0]);

jtfMonth.setText(strDate[1]);

this.showTextArea(strDate[2]);

ld.setFont(new Font("新宋体", Font.BOLD, 24));

new Timer(lt).start();

new TimeThread().start();

this.setBounds(200, 200, 700, 350);

this.setResizable(false);

this.setVisible(true);

}

publicvoid showCalendar(int localYear,

int localMonth, Calendar cld)

{

int Days = getDaysOfMonth(localYear, localMonth) + cld.get(Calendar.DAY_OF_WEEK)

-2;

Object [] ai = new Object[7];

lastTime = 0;

for(int i = cld.get(Calendar.DAY_OF_WEEK)-1;

i<= Days; i++)

{

ai[i%7] =

String.valueOf(i-(cld.get(Calendar.DAY_OF_WE EK)-2));

if (i%7 == 6)

{

dtm.addRow(ai);

ai = new Object[7];

lastTime++;

}

}

dtm.addRow(ai);

}

publicint getDaysOfMonth(int Year, int Month) {//计算各月的天数

if(Month==1||Month==3||Month==5||Month==7| |Month==8||Month==10||Month==12)

{

return 31;

}

if(Month==4||Month==6||Month==9||Month==11 )

{

return 30;

}

if(Year%4==0&&Year%100!=0||Year%400==0)//闰年

{

return 29;

}

else {

return 28;

}

}

publicvoid actionPerformed(ActionEvent e)//从界面上获取年月数据

{

if(e.getSource() == jtfYear|| e.getSource() == bLastYear || e.getSource() == bNextYear ||

e.getSource() == bLastMonth|| e.getSource() == bNextMonth)

{

int m, y;

try//控制输入的年份正确,异常控制

{

if (jtfYear.getText().length() != 4)

{

thrownew NumberFormatException();

}

y =

Integer.parseInt(jtfYear.getText());

m =

Integer.parseInt(jtfMonth.getText());

}

catch (NumberFormatException ex)

{

JOptionPane.showMessageDialog(this, "请输入4位0-9的数字!", "年份有误",

JOptionPane.ERROR_MESSAGE);

return;

}

ld.setText("没有选择日期");

for (int i = 0; i

i++){dtm.removeRow(0);}

if(e.getSource() ==

bLastYear){ jtfYear.setText(String.valueOf(--y)); }

if(e.getSource() ==

bNextYear){jtfYear.setText(String.valueOf(++ y)); }

if(e.getSource() == bLastMonth)

{

if(m == 1)

{

jtfYear.setText(String.valueOf(--y));

m = 12;

jtfMonth.setText(String.valueOf(m));

}

else

{

jtfMonth.setText(String.valueOf(--m));

}

}

if(e.getSource() == bNextMonth)

{

if(m == 12)

{

jtfYear.setText(String.valueOf(++y));

m = 1;

jtfMonth.setText(String.valueOf(m));

}

else

{

jtfMonth.setText(String.valueOf(++m));

}

}

cld.set(y, m-1, 0);

showCalendar(y, m, cld);

}

}

publicvoid mouseClicked(MouseEvent e)

{

jta.setText(null);

int r = table.getSelectedRow();

int c = table.getSelectedColumn();

if (table.getValueAt(r,c) == null)

{

ld.setText("没有选择日期");

}

else

{

this.showTextArea(table.getValueAt(r,c));

}

}

privatevoid showTextArea(Object selected)

{

ld.setText(jtfYear.getText()+"年

"+jtfMonth.getText()+"月"+selected+"日");

}

publicstaticvoid main(String[] args)

{

JFrame.setDefaultLookAndFeelDecorated(true

);

JDialog.setDefaultLookAndFeelDecorated(tru

e);

new wannianli();

jta.setText(today());

}

privatevoid updateTimeText(String timeZoneId) {

if(timeZoneId != null){

TimeZonetimeZone =

TimeZone.getTimeZone(timeZoneId);

dateFormat.setTimeZone(timeZone);

Calendar calendar =

Calendar.getInstance();

calendar.setTimeZone(timeZone);

timeField.setText(dateFormat.format(calend ar.getTime()));

}else{

timeField.setText(null);

}

}

privateclass TimeSelectedChangedListener imp lements ItemListener {

publicvoid itemStateChanged(ItemEvent e) { if (e.getStateChange()==ItemEvent.SELECTED) {

if (e.getItem() instanceof String) {

s = e.getItem().toString();

}

}

}

}

privateclass TimeThread extends Thread{ publicvoid run(){

while(true){

updateTimeText(s);

try{

Thread.sleep(100);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}

}

class Timer extends Thread //显示系统时间

{

private JLabel lt;

private SimpleDateFormat fy =

new SimpleDateFormat(" G yyyy.MM.dd HH:mm:ss ");

public Timer(JLabellt)

{

this.lt=lt;

}

publicvoid run()

{

while(true){

try{

lt.setText(fy.format(new Date()));

this.sleep(500);

}

catch(InterruptedException ex)

{

ex.printStackTrace();

}

}

}

}

finalprivatestaticlong[] lunarInfo =

newlong[] { 0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554,

0x056a0, 0x09ad0, 0x055d2, 0x04ae0,

0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0,

0x14977, 0x04970, 0x0a4b0, 0x0b4b5,

0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566,

0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0,

0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550,

0x056a0, 0x1a5b4, 0x025d0, 0x092d0,

0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0,

0x14573, 0x052d0, 0x0a9a8, 0x0e950,

0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263,

0x0d950, 0x05b57, 0x056a0, 0x096d0,

0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0,

0x195a6, 0x095b0, 0x049b0, 0x0a974,

0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5,

0x04970, 0x064b0, 0x074a3, 0x0ea50,

0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0,

0x0da50, 0x07552, 0x056a0, 0x0abb7,

0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9,

0x04ba0, 0x0a5b0, 0x15176, 0x052b0,

0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0,

0x0d260, 0x0ea65, 0x0d530, 0x05aa0,

0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520,

0x0dd45, 0x0b5a0, 0x056d0, 0x055b2,

0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0 };

finalprivatestaticint[] year20 = newint[] { 1, 4, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1 };

finalprivatestaticint[] year19 = newint[] { 0, 3, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 };

finalprivatestaticint[] year2000= newint[] { 0, 3, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1 };

publicfinalstatic String[] nStr1 = new String[] { "", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一",

"十二" };

privatefinalstatic String[] Gan =

new String[] { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };

privatefinalstatic String[] Zhi = new String[] { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };

privatefinalstatic String[] Animals = new String[] { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };

// 传回农历 y年的总天数

finalprivatestaticint lYearDays(int y) {

int i, sum = 348;

for (i = 0x8000; i> 0x8; i>>= 1) {

if ((lunarInfo[y - 1900] &i) != 0)

sum += 1;

}

return (sum + leapDays(y));

}

// 传回农历 y年闰月的天数

finalprivatestaticint leapDays(int y) {

if (leapMonth(y) != 0) {

if ((lunarInfo[y - 1900] & 0x10000) != 0) return 30;

else

return 29;

} else

return 0;

}

// 传回农历 y年闰哪个月 1-12 , 没闰传回 0

finalprivatestaticint leapMonth(int y) {

return (int) (lunarInfo[y - 1900] & 0xf);

}

//传回农历 y年m月的总天数

finalprivatestaticint monthDays(int y, int m) {

if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0)

return 29;

else

return 30;

}

// 传回农历 y年的生肖

finalpublicstatic String AnimalsYear(int y) {

return Animals[(y - 4) % 12];

}

//传入月日的offset 传回干支,0=甲子

finalprivatestatic String

cyclicalm(int num) {

return (Gan[num % 10] + Zhi[num % 12]);

}

// 传入 offset 传回干支, 0=甲子

finalpublicstatic String cyclical(int y) { int num = y - 1900 + 36;

return (cyclicalm(num));

}

// 传出农

历.year0 .month1 .day2 .yearCyl3 .monCyl4 .da yCyl5 .isLeap6

finalprivatelong[] Lunar(int y, int m) {

long[] nongDate = newlong[7];

int i = 0, temp = 0, leap = 0;

Date baseDate =

new GregorianCalendar(1900 + 1900, 1,

31).getTime();

Date objDate = new GregorianCalendar(y + 1900, m, 1).getTime();

long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;

if (y < 2000)

offset += year19[m - 1];

if (y > 2000)

offset += year20[m - 1];

if (y == 2000)

offset += year2000[m - 1];

nongDate[5] = offset + 40;

nongDate[4] = 14;

for (i = 1900; i< 2050 && offset > 0; i++) {

temp = lYearDays(i);

offset -= temp;

nongDate[4] += 12;

}

if (offset < 0) {

offset += temp;

i--;

nongDate[4] -= 12;

}

nongDate[0] = i;

nongDate[3] = i - 1864;

leap = leapMonth(i); // 闰哪个月

nongDate[6] = 0;

for (i = 1; i< 13 && offset > 0; i++) {

// 闰月

if(leap > 0 &&i == (leap + 1) &&nongDate[6] == 0) {

--i;

nongDate[6] = 1;

temp = leapDays((int) nongDate[0]);

} else {

temp = monthDays((int) nongDate[0], i);

}

// 解除闰月

if (nongDate[6] == 1 &&i == (leap + 1))

nongDate[6] = 0;

offset -= temp;

if (nongDate[6] == 0)

nongDate[4]++;

}

if (offset == 0 && leap > 0 &&i == leap + 1) {

if (nongDate[6] == 1) {

nongDate[6] = 0;

} else {

nongDate[6] = 1;

--i;

--nongDate[4];

}

}

if (offset < 0) {

offset += temp;

--i;

--nongDate[4];

}

nongDate[1] = i;

nongDate[2] = offset + 1;

return nongDate;

}

// 传出y年m月d日对应的农

历.year0 .month1 .day2 .yearCyl3 .monCyl4 .da yCyl5 .isLeap6

finalpublicstaticlong[] calElement(int y, int m, int d) {

long[] nongDate = newlong[7];

int i = 0, temp = 0, leap = 0;

Date baseDate = new GregorianCalendar(0 + 1900, 0, 31).getTime();

Date objDate = new GregorianCalendar(y, m - 1, d).getTime();

long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;

nongDate[5] = offset + 40;

nongDate[4] = 14;

for (i = 1900; i< 2050 && offset > 0; i++) {

temp = lYearDays(i);

offset -= temp;

nongDate[4] += 12;

}

if (offset < 0) {

offset += temp;

i--;

nongDate[4] -= 12;

}

nongDate[0] = i;

nongDate[3] = i - 1864;

leap = leapMonth(i); // 闰哪个月

nongDate[6] = 0;

for (i = 1; i< 13 && offset > 0; i++) {

// 闰月

if(leap > 0 &&i == (leap + 1) &&nongDate[6] == 0) {

--i;

nongDate[6] = 1;

temp = leapDays((int) nongDate[0]);

} else {

temp = monthDays((int) nongDate[0], i);

}

// 解除闰月

if (nongDate[6] == 1 &&i == (leap + 1))

nongDate[6] = 0;

offset -= temp;

if (nongDate[6] == 0)

nongDate[4]++;

}

if (offset == 0 && leap > 0 &&i == leap + 1) {

if (nongDate[6] == 1) {

nongDate[6] = 0;

} else {

nongDate[6] = 1;

--i;

--nongDate[4];

}

}

if (offset < 0) {

offset += temp;

--i;

--nongDate[4];

}

nongDate[1] = i;

nongDate[2] = offset + 1;

return nongDate;

JAVA《万年历系统》课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》 课程设计报告 题目:万年历系统 专业:计算机科学与技术 班级: : 学号: 指导教师: 成绩:

计算机与信息工程系2014年6月6日

目录 1 设计容及要求 (1) 1.1设计容 (1) 1.2设计任务及具体要求 (1) 2 概要设计 (2) 2.1程序设计思路 (2) 2.2 总体程序框图 (3) 3 设计过程或程序代码 (4) 3.1各个模块的程序流程图及运行界面 (4) 3.2对关键代码加以分析说明 (7) 4 设计结果与分析 (13) 4.1程序调试的结果 (13) 4.2程序设计分析 (13) 5 小结 (14) 致 (15) 参考文献 (16) 源程序 (17)

1 设计容及要求 1.1设计容 万年历,实际上就是记录一定时间围(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规。 (2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。 (3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。 (4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 1.2设计任务及具体要求 利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。 要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。当用户随意改动年份或月份时系统自动显示与星期对应的日期。用户点击日

用java实现简单的万年历输出的代码

package clock; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Lunar { private int year; private int month; private int day; private boolean leap; final static String chineseNumber[] = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"}; static SimpleDateFormat chineseDateFormat = new SimpleDateFormat("yyyy年MM月dd 日"); final static long[] lunarInfo = new long[] {0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520,

C语言实训--万年历源代码

# include #include #include #include #include # define YEAR 365 int numday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int leap(int year); int calday(int y,int m); int counterdays(int year,int month,int day); int week(int year,int month,int day); int eachyeartotal(int year,int month,int day); int maxDay(int y,int month); void print(int y,int m,int w); void festival (int year,int month,int day); int IsLeap(int y); int guanli(int i); void rili(int year,int month); int rili1(); void rili2(); void rili3(); void rili4(); void rili5(); void fan(); void show(int year,int month,int date,int sec,int mini,int hour); int main() { int i; printf("***************************************\n"); printf("1.查询日历,输入年份:\n"); printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n"); printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n"); scanf("%d",&i); guanli(i); return 0; } int guanli(int i) { switch(i) { case 1:rili1();return main();

Java万年历课程设计报告

杭州师范大学钱江学院课程设计 题目万年历 学院钱江学院 专业信电分院计算机科学与技术 班级计算机1101 姓名崔伊平 指导教师王李冬 2013 年9 月20 日

目录 一.概述 (1) 二.总体方案设计 (2) 三.详细设计 (3) 四.最终输出 (7) 五.课程设计总结 (8) 参考文献 (9)

一、概述 1.课程设计的目的 通过显示年日历程序的设计,培养学生综合利用java语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力。 通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《java语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了java语言的好处和其可用性! 2.课程设计的要求 2.1 输入查询的年份与月份,单击“更新”按扭,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用。要掌握APPLET容器中添加组件的方法,理解JAVA 的事件处理机制,编写独立的运行窗口。 2.2 输出形式 使用独立的运行窗口进行显示。界面主要由两部分组成——查询输入部分和结果显示部分。查询输入部分包括两个文本域,一个用于输入年份:一个用于选择月份:一个更新按扭,用来触发查询事件。

二总体方案设计 1.程序开发环境 a.开发环境:eclipse b.系统环境:windows xp/7 c.设计工具:Microsoft office 2003 2.整体流程图 图1 流程图 3.功能模块图

万年历系统源代码

#include #include #include #include #include #define KEYNUMUp 0x48 #define KEYNUMDown 0x50 #define KEYNUMLeft 0x4b #define KEYNUMRight 0x4d #define KEYNUMPageUp 0x49 #define KEYNUMPageDown 0x51 int year,month,day; //全局变量记录时间 int daysOfMonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31, 31,30,31, 30,31}}; int runYear(int year) //判断是否是闰年 { int flag=0; if(year%400==0||(year%4==0&&year%100!=0)) flag=1; return flag; } struct tm* getDay()//从系统取得当前时间 { time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer); return gmt; } int dayExame(int year,int month,int day)//检查日期是否正确 { if(year<0||month<1||month>12||day<1||day>31) return 0; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10:

C语言编写的万年历代码

该代码在VC++6.0编译器下运行,只要按照编译器给出的说明操作,就能将万年历显示在调试窗口中了……………………………………由于制作时间匆忙,很多注释都来不及写了,对于出学者可以慢慢看,代码很简单的,都放在了主函数里,如果有兴趣的话,可以把这些代码放在几个文件里,这样会好看点,加油了! #include #include void main() { int m,i,j,n=0,y=2010,wo,w,a; printf("input the form of: year-month:\t"); scanf("%d-%d",&y,&m); //输入格式的决定 if(y%4==0&&y%100!=0||y%400==0) a=29; else a=28; //闰年的判断及2月日数的确定 if(m<1||m>12){ printf("month is not exit,please input later!\n"); exit(0); } wo=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; //1月1日的算法wo表示 for(i=0;i<55;i++) printf("*"); //*的输入 printf("\n"); for(j=1;j<=7;j++) printf("星期%d\t",j); //星期的输入 printf("\n"); //表前的建造 switch(m){ case 1:for(i=1;i

printf("\t"); n++; } for(j=1;j<=31;j++){ if(n%7==0) printf("\n"); printf("%d\t",j); n++; } break; // 1 month case 2:w=(wo+31)%7; for(i=1;i

java控制台输出万年历

import java.util.Scanner; //蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形): w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 //公式中的符号含义如下: c:世纪(年的高两位数); y:年(年的低两位数); //m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算, //比如2005年1月1日要看作2004年的13月1日来计算); d:日; []代表取整,即只要整数部分。 //w:星期;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四, 5-星期五,6-星期六 //以2005年2月14日为例:c=20,y=4,m=14,d=14 //w = 4 + [4/4] + [20/4] - 2*20 + [26*(14+1)/10] + 14 - 1 = 4 + 1 + 5 - 40 + 39 + 14 - 1 = 22 //(除以7余1) 所以2005年2月14日是星期一。 public class PerpetualCalendarII { public static void main(String[] args) { // declare variable month,year int month, monthDays = 0, year; int firstDayOfMonth, a, b, w; int count = 0; // declare flag boolean flag; Scanner sc = new Scanner(System.in); System.out.println("请输入年份:"); year = sc.nextInt(); System.out.println("请输入月份:"); month = sc.nextInt(); // judge year is leap year or not if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { flag = true; } else { flag = false; } // get days of the month switch (month) { case 4: case 6: case 9: case 11: monthDays = 30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: monthDays = 31; break; case 2: if (flag == true) { monthDays = 29;

java课程设计 万年历 源代码

华北科技学院 课程设计报告 面向对象程序设计(Java) 班级: 电商B09-3 姓名: 周婷玉 设计题目:__________万年历________________ 设计时间: 2011-12-28 至2012-01-06 指导教师:_______ 郭慧____________ _____ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________

课程设计说明书 1、课程设计的目的 a)掌握面向对象程序设计基本要素(封装、继承、多态) b)掌握JA VA语言常用类包及其常用方法和JA VA语言基本语法 c)掌握基于AWT的图形用户界面设计 i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、 滚动条等。 ii.事件处理机制 d)掌握布局、对话框的使用 e)掌握发布JA VA应用程序 2、功能模块简介和系统结构图 需求分析:本程序的要求为: 1.使用图形用户界面 2.能够实现日期与星期的查询 3.实现当日的时间备忘 功能设计: 1.能以月历形式显示日期与星期 2.支持用户自己输入年份,并提供月份的下拉形式来选择查询 3.添加当日行事历,储存与清除功能

Java课程设计-万年历

河北科技大学课程设计报告 号:学生姓名:学 专业班级:程序设计课程设计Java课程名称:学期学年第 2 2 015 学年学期: 2 014 — 指导教师:刘伟月年 2 0

的?.................................................................. ................................1?? 2.需求分................................................................... .........析................................1? 3.总体设计................................................................... ........................................1? 4.详细设计................................................................... ........................................1?

5.软件测试................................................................... . (10) 6.课程设计总结................................................................... ................................11. 一、课程设计目的(1)熟练使用java语言编写程序,解决实际问题。? (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;? (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析本程序的要求为: 1.使用图形用户界面;? 2.本程序能够实现日期与星期的查询。 ?三、总体设计(1)可以通过图形界面显示日历。? (2)能以月历形式显示日期与星期。? (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。? ?四、详细设计1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 ,0若是取余得几既为星期几,7使总天数除以输出月份第一天为星期几的算法:2. 则为星期日。? 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。? 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import import import import import import; import import import ; import ; import import import java.awt.*; import import java.text.*; import ;

数字万年历简易C语言程序源代码

#include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; // lcd 控制端 sbit en=P2^2; // lcd 控制端 sbit all=P2^1; // lcd 控制端 sbit s0=P1^5; //时间调节 sbit s1=P1^6; sbit s2=P1^7; sbit voice=P2^7; int nt; sbit DQ=P2^6; sbit DS1302_CLK = P2^3; //实时时钟时钟线引脚sbit DS1302_IO = P2^4; //实时时钟数据线引脚sbit DS1302_RST = P2^5; //实时时钟复位线引脚sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; unsigned char time; #define ads_y 0 #define ads_mo 3 #define ads_d 6 #define ads_w 9 #define ads_h 65 #define ads_m 68 #define ads_s 71 #define DS1302_SECOND 0x80 //写入ds地址宏定义 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C

用C语言编写万年历,详细代码

/* welcome to use the WanNianLi system! */ #include #include #include char* month_str[]={"January","February","March","April","May","June","July","August ","September","October","November","December"}; char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Sat urday"}; int leap (int year)//判断闰年 { if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; } int month_day(int year,int month) //判断这一个月有多少天 { int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; //初始化每个月的天数if(leap(year)&&month==2 ) return 29; else return(mon_day[month-1]); } int firstday(int year,int month,int day)//判断这一个月的第一天是星期几 { int c=0; float s; int m; for(m=1;m

Java课程设计-万年历

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称:Java程序设计课程设计 学年学期:2 014 —2 015 学年第2 学期指导教师:刘伟 2 0 年月

课程设计成绩评定表 学生姓名学号成绩专业班级起止时间 设计题目 指导教师评语学习态度:端正□较端正□一般□较差□ 学习纪律:好□较好□一般□较差□ 出勤情况:好□较好□一般□较差□ 程序设计:好□较好□一般□较差□ 动手能力:强□较强□一般□较差□ 团队精神:好□较好□一般□较差□ 创新意识:强□较强□一般□较差□ 课程设计完成情况:优秀□好□一般□较差□ 课程设计报告完成情况:优秀□好□一般□较差□ 指导教师: 年月日

目录 1.课程设计目的 (1) 2.需求分析 (1) 3.总体设计 (1) 4.详细设计 (1) 5.软件测试 (10) 6.课程设计总结 (11)

一、课程设计目的 (1)熟练使用java语言编写程序,解决实际问题。 (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析 本程序的要求为: 1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 三、总体设计 (1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。 四、详细设计 1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 2.输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是0,则为星期日。 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import java.awt.BorderLayout; import java.awt.Color;

51单片机实现万年历程序文件

51单片机实现万年历 利用AT89S52单片机的P0口来和另外几个口来控制1602液晶的显示和P1口还有其它口来控制ds12887时钟芯片。设置四个按键,1个定义为时间设置功能键,一个定义为闹钟设置功能键,另外两个用来调节时间的增减。 原理图: pcb图:

源程序: #include #define uint unsigned int #define uchar unsigned char sbit beep=P2^0;//蜂鸣器控制口 sbit timeadd=P2^1;//调节时间加 sbit timesub=P2^2;//调节时间减 sbit timeclk=P2^3;//闹钟设定键 sbit timefun=P2^4;//时间设定键 sbit lcdrs=P2^5;//液晶的命令和数据控制口 sbit ledrw=P2^6;//液晶的写数据口 sbit lcden=P2^7;//液晶显示模块的使能端 sbit timeds=P3^3;//时钟芯片地址闸 sbit timerw=P3^4;//时钟芯片读写 sbit timeas=P3^5;//时钟芯片地址闸 sbit timeen=P3^6;//时钟芯片片选 uchar code table[]="20 - - week "; uchar code table1[]=" : : ";//要显示的字符串 char num,shi,fen,miao,nian=2000,yue,ri,week,numfun,anumfun,flag,flag1; uchar leap;

void delay(uint x){ uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void didi() { beep=0; delay(1000); beep=1; delay(1000); } void write_(uchar ){ lcdrs=0; P0=; delay(5); lcden=1; delay(20); lcden=0; } void write_date(uchar date){ lcdrs=1; P0=date; delay(5); lcden=1; delay(20); lcden=0; } void write_sfm(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void write_nyr(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10;

Java万年历课程设计报告

Java课程设计 设计题目:万年历 系别:计算机科学与工程学院 专业:信息管理与信息系统 学号: 1100340116 姓名:岑少兵 指导教师:汪华澄 时间: 2013-6-29

目录 摘要 (3) 系统功能结构图 (3) 1 系统模块设计 (4) 1.1 需求设计 (4) 1.2 开发和运行环境 (4) 1.3 功能设计 (4) 2 万年历详细设计思路 (4) 2.1 程序设计思路 (5) 2.2 程序运行主界面 (5) 2.3 流程图 (6) 3 各模块功能实现及代码说明 (6) 3.1 MainFramel类 (6) 3.2 Lunar类 (14) 3.3 national类 (22) 3.4 SetClock类 (26) 4 小结 (34) 5 参考文献 (34)

基于Myeclipse的万年历 摘要:万年历是日常生活中不可或缺的小工具,用万年历我们可以准确地查到当前,以后或是过去的日期,极大地方便了我们的生活。在万年历上添加了显示本地时间以后会更加准确地显示时间。无论是对于我们学生还是上班族或是自由职业者需要经常查看和查找万年历来规划自己将要做得一些事情,或是回忆在过去的时间里已经做过的事情,使之更加有利于提升我们的学习或是工作进度。 系统功能结构图:主要描述系统要实现的各个模块的功能。

1系统模块设计 1.1需求分析 本程序的要求为:1.使用图形用户界面 2.能够实现日期与星期的查询 3.能够显示农历 4.能够查看世界时间 5.能够添加闹钟 1.2 开发和运行环境 开发工具:Myeclipse 运行环境: windows 7 1.3功能设计 本程序要构建的万年历程序,其功能有以下几个方面: (1)通过 (2)提供年份、月份的下拉形式菜单来选择年份和月份。 (3)通过Lunar类实现农历日期。 (4)通过national类实现世界时间。 (5)能以月历形式显示日期与星期。 (6)通过SetClock类来实现闹钟功能。 (7)通过点击世界时间按钮查询世界时间 (8)通过点击闹钟按钮设置闹钟 (9)显示系统当前时间和日期。 (10)显示作者信息。 2万年历详细设计思路 2.1程序设计思路 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,

java万年历制作

一、设计内容和要求 1、简单万年历的基本要求 本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查 询。 2、需要实现的主要功能 (1). 能够显示实现1800-2100年的日期,包括公历、农历、星期、二十四节气。 (2). 能够按照月份格式显示,或按照星期格式显示。 (3). 能够显示系统时间。 (4). 能够设置闹钟。 (5). 能够查询若干国际大城市(分布在不同时区)的时间。 二、系统分析与概要设计 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否 为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为 星期几,若是7,则为星期日。 3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几 后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4. 如果年份小于1900年则程序不予判断 5.公历与农历的换算。公历年对应的农历数据,每年三字节,格式第一字 节BIT7-4 位表示闰月月份,值为0 为无闰月,算法:日期+年份+所过闰年数+月较正数之和除7 的余数就是星期但如果是在闰年又不到3 月份上述之和要减一天再除7星期数为0。 6、系统时间的设置。直接从系统得到时间,设置字体,背景,显示框架

万年历系统——C语言完整版

实验十九:编写一个万年历系统 1.设计目的: 从实验的角度来看,这次课程设计一方面可以让自己巩固并加深对C语言程序设计知识的理解,掌握和提高C语言编程和程序的基本调试的基本技能,进一步理解和运用结构化程序的思想和方法;另一方面,可以让自己在面对一个全新的问题时,学会如何思考,如何寻找问题的关键,从而提升自己的能力。 2.总体设计: 1.、当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几); 2、当系统日期变到下一个月时,系统自动翻页到下一月。 3.调试与测试: 4.源程序清单和执行结果:

#include #include #include #include int leap(int year ) { if ((year %4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { return 1; } return 0; } void show(int year,int month,int date,int sec,int mini,int hour) { const char month_str[][4]={"","Jan","Feb","Mar","Apl", "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i,j,wdays,mdays,days; for(i=1,days=0;i

万年历时钟芯片代码

万年历时钟芯片代码 /******************************************************************** * 文件名: 时钟DS1302LCD.c * 描述: 该程序实现了用单片机来控制时钟芯片DS1302进行时钟的显示。时钟会在1602上显示. * 创建人:东流,2012年2月7日 * 版本号:1.0 * 杜邦线接法:P3.5接J18的1端;J3.6接J18的2端;J3.7接J18的3端。1602接到J17的排座上。 ********************************************************************* **/ #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; sbit T_CLK = P3^5; /*实时时钟时钟线引脚*/ sbit T_IO = P3^6; /*实时时钟数据线引脚*/ sbit T_RST = P3^7; /*实时时钟复位线引脚*/ //这三个引脚参考资料 sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚 /******************************************************************** * 名称: delay() * 功能: 延时,延时时间大概为5US。 * 输入: 无 * 输出: 无 ********************************************************************* **/ void delay() { _nop_();

java万年历设计报告

JAVA大作业

目录 作业要求 (3) 项目概述 (3) 具体功能介绍 (4) 设计与实现 (4)

作业要求: 编写一个万年历程序,要求能够查询历史时间,能够添加、查看、删除备忘录。 项目概述 这个项目是一个简单的Java万年历,可以实现所有年份的公历日期的查询,并且在相应的日期做备忘录,以及可以显示当前的日期以及时间。 使用的是Oracle数据库进行连接。

具体功能介绍: (1)万年历查询:点击图形界面中的上年、下年键用来调整要查询的年份,或者可以直接在上年下年按钮直接的文本框中输入年份(负数表示公元前),以回车结束;点击上月或者下月来调整要查询的月份,然后可以看到这个月的每一天所对应的星期。 (2)Clock功能:在万年历下面显示当前的年月日时分秒,相当于一个时钟的功能。 (3)记事本功能:可以任选某年某月的某一天,单击,在右侧会出现这一天的备忘录,如果存在,则显示某年某月某日有日志记载,是否想看,否则,则在文本框中显示无记录;然后可以编辑这一天的备忘录,编辑好了之后,点击保存日志,弹出对话框某年某月某日保存日志吗,点击保存,则日志被保存,反之未被保存;若想删除某日的日志,则单击这一天,然后点击右侧的删除日志,显示删除某年某月某日的日志吗,点击是,则日志被删除。从文件中读取备忘录的内容,用数据库进行存储和删除操作。 设计与实现(需要附全部代码,GUI自动生成代码除外): 1 类的设计(继承、多态、数据结构):核心类是Month,Y ear,NotePad,Clock,DBAccess,CalendarPad.(其中继承用粗体,接口用粗斜体,数据结构是哈希表,用粗下划线,多态用斜体+点点短线式下划线) 2 Java IO (文件访问):用的是粗体+浪线 3 JDBC (数据库访问):使用Oracle数据库连接,是直连(双下划线) 数据库是:create table mynotes( mydate varchar2(50) primary key, note varchar2(100) not null ); 4 Socket + Multi-Thread:斜体(定义在Clock中的Thread t) 5 GUI (用户界面):点下划线来表示GUI用户界面 6 其他功能:(无) 以下是全部代码(共六个.Java文件) //对月份的选择 package javaapplication13;

万年历C语言代码

万年历C语言代码 #include main() { for(;;) { int year,month,a,b,c,m,n=28;/*定义变量*/ long e; printf("请输入年份"); scanf("%d",&year); e=year; e--; /*前一年*/ e=(e*365+e/4)%7; /*计算这一年的第一天是星期几*/ m=e; /*把第一天的日期赋给m*/ if((year%4==0)||(year%100!=0)&&(year%400!=0))/*如果是闰年*/ n++; printf("%d的日历:",year); for(month=1;month<=12;month++) { if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)/*这几个月每个月都是31天*/ { c=0; printf("\n"); printf(" %d月\n",month); printf(" 日一二三四五六\n"); for(b=1;b<=m;b++) { c++; printf(" ");/*从星期日开始到这个月开始的那天前都是空的*/ } for(a=1;a<=31;a++) { c++; if(c%7-1==0&&c!=1)/*判断一行是否已排满,满了就要换行*/ printf("\n"); if(a<10) /*如果是小于10,空一格,大于10,前后空*/ printf(" "); printf(" %d ",a); m++; if(m==7)/*一行排满,开始换行。(指的是这个月的最后一行)*/ m=0;

相关主题
文本预览
相关文档 最新文档