Java课程设计-智能万年历

 

在生活中,时间已经成了人们生活中决策某些事情的主要原因,人们会随着时间去安排自己的生活,按照一定的节奏去过自己的精彩人生。

万年历最初是以在日历的方式呈现。

公历,公元,即公历纪年法,是一种源自于西方社会的纪年方法。原称基督纪元,又称西历或西元,是由意大利医生兼哲学家Aloysius Lilius对儒略历加以改革而制成的一种历法——《格里历》。辛亥革命爆发后次年(1912年),当时的中华民国政府采用公历作为国历,纪年方面,公元纪年法与民国纪年法并行。1949年9月27日,经过中国人民政治协商会议第一届全体会议通过,新成立的中华人民共和国使用国际社会上大多数国家通用的公历和公元作为历法与纪年。

农历,中国传统历法。它根据月相的变化周期,每一次月相朔望变化为一个月;并把一个太阳回归年划分为24段,形成二十四节气。通过参考太阳回归年,设置闰月使其平均历年与回归年相适应。农历融合阴历与阳历形成为一种阴阳合历历法。农历又有夏历、阴历、旧历、华历、中历等称。因使用“夏正”,旧时多称为夏历,1970年以后“夏历”改称为“农历”。农历属于阴阳合历,其年份分为平年和闰年。平年为十二个月;闰年为十三个月。月份分为大月和小月,大月三十天,小月二十九天,其平均历月等于一个朔望月。

程序使用JAVA语言,通过一些算法,将万年历以简易的方式呈现。

关键词:JAVA语言,阴历算法,阳历算法

一章 概述

1.1 引言 

万年历,一种日常使用的出版物,记载着日期等相关信息。

每一页显示一日信息的叫日历,每一页显示一个月信息的叫月历,每页显示全年信息的叫年历。有多种形式,如挂历、座台历、年历卡等,如今又有电子日历。

中国始有历法大约在四千多年以前。根据甲骨文中的一页甲骨历,证明殷代的历法已具有相当的水平,这一页甲骨历是全天下最古老的历书实物,这页甲骨历也就叫日历。现在万年历已经十分常见,所以通过计算机Java语言实现万年历的编程已经不是难事,我打算在结合万年历的最基本功能上添加年份查询,月份查询,记事本等功能万年历有很多作用,顾名思义它是一种很方便得计时计年工具,随着科技得发展,我们已经可以通过计算机制作出精美的万年历,通过计算机制作得万年历不但外观美观,而且功能强大。通过万年历,我们可以实现很多功能,随意看某年得年份,某年得月份,随意调整某年得某天,并将其显示出来,而且有判断闰年闰月得功能,十分方便。除此之外,万年历还具有记事本功能,通过记事本功能可以备忘一些事情,备忘得事情可以随意添加在万年历得任意年月日里,如果记录得内容已经不再需要,还可以任意的将记录得内容进行删除,在删除得时候还会提示,是否确定删除,如果是,则程序会将它删除,如果不是,则系统不会将它删除。 

1.2 系统目标

程序设计目的是实现对年月日的准确判断,公历与星期的对应,主要实现对公历闰年的准确判断,给万年历增加查询功能让万年历更加人性化,同时加上记事本的功能为用户提供一个记录日程,日志的小工具,让程序更加丰富,为以后人们的生活提供一些方便。

1.3 系统的设计思路

    第一部分计算公历,以1900年为公元元年,前后推知索要查找的年份,将对应的星期与每一天对应上。在每天的按钮中添加一个记事本,打到记录和保存日志的目的。上月下月的关键是隔年,一月与前一年的十二月,十二月与下一年的一月,通过判断语句实现准确的判断。

第二章 万年历程序的要求与分析

2.1 系统功能需求

2.1.1 记事本

2.1.2 查询某年某月对某日对应的公历农历

2.1.3 上下月份可循环翻阅

2.1.4 上下年份可循环翻阅

2.2系统的性能要求

2.3统配置

2.3.1软件配置

服务器端:安装Java虚拟机

客户端:  安装Java虚拟机

开发环境:INTelliJ IDEA

开发语言:Java

数据库: 无

2.3.2硬件配置

服务器端:Centos6.5,有网络接口卡(NIC),内存应在4GB以上,硬盘在160GB以上。

电脑配置:CPU: Core i5 2.30GHz 内存:DDR3 8GB 硬盘:500GB

操作系统:Microsoft Windows10专业版

客户端:Core i5以上配置的PC机,有网络接口卡(NIC),内存应在4GB以上,硬盘在500GB以上。 

电脑配置:CPU: Core i5 2.30GHz 内存:DDR3 8GB 硬盘:500GB

操作系统:Microsoft Windows 10专业版

2.3.3络配置

网络:有无均可

2.4系统的未来可能提出的要求

2.5可行性分析

2.5.1经济可行性

2.5.2技术可行性

2.5.2 社会可行性

如今的社会是一个信息的时代,随着电脑等科技产品在人们生活中占据着越来越重要的地位,人们就会越加的善加利用,这为我们的生活带来了极大的效率,同时计算机的普及更可以看出它所占的地位。万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便,是一种比较实用的小工具。未来由于人们对周易等风水学说的钻研,可能要添加关于随即计算某日的宜忌等涉及人们利弊的功能

第三章 万年历程序总体设计

3.1系统的总体功能

系统所实现的功能强弱是衡量一个软件好坏的最直接也是最根本的标准。经过对系统的可行性分析、需求分析、数据分析以及数据库设计后,结合情况,万年历程序的功能模块如图,

3.2 系统功能设计

3.2.1 查询功能

主要包括年月份在输入框内的查询

3.2.2 上下月翻阅功能

主要是对近期月份的相关查询

3.2.3上下年搜翻阅功能

主要是对近期年份的相关查询

3.2.4年份的查询功能

主要是对较远年份的方便查询

3.2.5记事本功能

主要是为用户提供记录删除日志的功能

     

第四章 详细设计

4.1 开发语言的选用及其介绍

4.1.1 java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程,

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

4.2 详细模块设计

4.2.1 查询功能:

主要是为了方便用户查询那一年那一月那一天

4.2.2上下月翻页功能:

主要方便用户对近期月分的查询,例如查询了1900年12月的日历

4.2.3记事本功能:主要帮助用户记录,保存,删除一些日志

表1 方法表

方法名

功能

备注(须输入的参数)

calendar

初始化各种数据

int year,int month,int day

SwitchMonth

选择月份

int month

PrintMonth

显示月份

int year,int month,int day

PrintMonthBody

月份体

int startday,int dayinmonth

IsLeapYear

GetStartDay

GetTotalNumOfDays

GetNumOfDaysInMonth

WriteRecord

ReadRecord

DeleteFile

AboutActionListenerWay

actionPerformed(ActionEvent)

mousePressed

mouseClicked

mouseReleased

mouseEntered

mouseExited

SaveLog

Main

判断是否为闰年

得到开始的天

得到总天数

得到当月的天数

日志

日志

删除日志

监听路径

时间表现

鼠标点击

鼠标点击生

点击释放

鼠标进入

鼠标推出

保存日期

主函数

int year

int year,int month

int year,int month

int year,int month

唯一的主函数

变量表

成员变量描述

变量类型

名称

年、月、日

int

Year、month、day

下一年,下一月

Int

Yearafterquery,monthafterquey

开始的时间

Int

startday

选择月,天

String

SwitchMonth,key,day

改变年

改变月

前一月,前一年

判断是否改变

左、又面板

年、月

左上角信息标签

显示月、年标签

空格标签

右上部时间标签

星期标签数组

月份下拉列表

时间确定按钮

保存、删除按钮

前、下一月按钮

文本区

星期字符串数组

显示天的文本区

输入年的文本区

Int

Int

Int

boolean

JPanel

JLabel

JLabel

JLabel

JLabel

JLabel

JLabel[]

JComboBox

JButton

JButton

JButton

JTextArea

String

JTextField

JTextField

Changeyearmessage

changemonthmessage

priormonth,prioryear

ischange,ischange_priornext

LeftPane,RightPane

YearLabel,MonthLabel

Ask

ShowDate

Blank

NorthMonthDayYear

TopBarTitle[]

MonthCombobox

Query

SouthSave,SouthDelete

PriorMonth,NextMonth

CenterText

week[]

ShowDays[]

YearText

第五章 系统实现与测试

5.1 系统实现

5.1.1 查看功能

5.1.2 记事设置功能

用户录入当天的日程

用户删除当天日程

保存当天日程

 

程序代码


import java.util.Calendar;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
public class CalendarPad extends JFrame implements MouseListener
{
   int year,month,day;
   Hashtable hashtable;             
   File file;                       
   JTextField showDay[];             
   JLabel title[];                   
   Calendar rili;
   int 星期几; 
   NotePad notepad=null;             
   Month a ;//负责改变月
   Year  b;//负责改变年;

   String 星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
   JPanel leftPanel,rightPanel;    
 public  CalendarPad(int year,int month,int day)
   { 
     leftPanel=new JPanel();
     JPanel leftCenter=new JPanel();
     JPanel leftNorth=new JPanel();
     leftCenter.setLayout(new GridLayout(7,7));   //显示日历;
                                                  
     rightPanel=new JPanel();
     this.year=year;
     this.month=month;
     this.day=day;
     b=new Year(this);
     b.setYear(year);
     a=new Month(this);
     a.setMonth(month); 
     
  
     title=new JLabel[7];                         
     showDay=new JTextField[42];                   
     for(int j=0;j<7;j++)                         
       {
         title[j]=new JLabel();
         title[j].setText(星期[j]);
         title[j].setBorder(BorderFactory.createRaisedBevelBorder());
         leftCenter.add(title[j]);
       } 
     title[0].setForeground(Color.red);
     title[6].setForeground(Color.blue);

     for(int i=0;i<42;i++)                        
       {
         showDay[i]=new JTextField(); //JTextField showDay[]; 
         showDay[i].addMouseListener(this);
         showDay[i].setEditable(false);
         leftCenter.add(showDay[i]);
       }
         
     rili=Calendar.getInstance();
     Box box=Box.createHorizontalBox();          
     box.add(b);
     box.add(a);
     leftNorth.add(box);
     leftPanel.setLayout(new BorderLayout());
     leftPanel.add(leftNorth,BorderLayout.CENTER);
     leftPanel.add(leftCenter,BorderLayout.SOUTH);
     leftPanel.add(new Label("请在年份输入框输入所查年份(负数表示公元前),并回车确定"),
                  BorderLayout.NORTH) ;
     leftPanel.validate();
     Container con=getContentPane();
     JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                                     leftPanel,rightPanel);
     
     con.add(split,BorderLayout.CENTER);
     con.validate();
    
     hashtable=new Hashtable();
     file=new File("日历记事本.txt");
      if(!file.exists())
      {
       try{
           FileOutputStream out=new FileOutputStream(file);
           ObjectOutputStream objectOut=new ObjectOutputStream(out);
           objectOut.writeObject(hashtable);
           objectOut.close();
           out.close();
          }
       catch(IOException e)
          {
          }
      } 
    
     notepad=new NotePad(this);                                      
     rightPanel.add(notepad);
     
     setCalendar(year,month);
     addWindowListener(new WindowAdapter()
                    { public void windowClosing(WindowEvent e)
                       {
                         System.exit(0);
                       }
                    });
    setVisible(true);
    setBounds(100,100,524,285);
    validate();
   }
 public void setCalendar(int year,int month)//设置日历牌
   {
     rili.set(year,month-1,1);              
     
     星期几=rili.get(Calendar.DAY_OF_WEEK)-1;
     if(month==1||month==2||month==3||month==5||month==7
                        ||month==8||month==10||month==12)
        {
            排列号码(星期几,31);         
        }
     else if(month==4||month==6||month==9||month==11)
        {
            排列号码(星期几,30);
        }
     else if(month==2)
        {
         if((year%4==0&&year%100!=0)||(year%400==0))  
           {
             排列号码(星期几,29);
           }
         else
           {
             排列号码(星期几,28);
           }
       }
   } 
 public void 排列号码(int 星期几,int 月天数)
   {
      for(int i=星期几,n=1;i<星期几+月天数;i++)
             {
               showDay[i].setText(""+n);
               if(n==day)
                 {
                   showDay[i].setForeground(Color.green); 
                   showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));
                 }
               else
                 { 
                  showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));
                  showDay[i].setForeground(Color.black);
                 }
               if(i%7==6)
                 {
                  showDay[i].setForeground(Color.blue);  
                 }
               if(i%7==0)
                 {
                  showDay[i].setForeground(Color.red);  
                 }
               n++; 
             }
       for(int i=0;i<星期几;i++)
             {
                showDay[i].setText("");
             }
       for(int i=星期几+月天数;i<42;i++)
             {
                showDay[i].setText("");
             }
   }
 public int getYear()
   {
    return year;
   } 
 public void setYear(int y)
   {
     year=y;
     notepad.setYear(year);
   }
 public int getMonth()
   {
    return month;
   }
 public void setMonth(int m)
   {
     month=m;
     notepad.setMonth(month); 
   }
 public int getDay()
   {
    return day;
   }
 public void setDay(int d)
   {
    day=d;
    notepad.setDay(day);
   }
 public Hashtable getHashtable()
   {
     return hashtable;
   }
 public File getFile()
   {
     return file;
   }
 public void mousePressed(MouseEvent e)             
   {
     JTextField source=(JTextField)e.getSource();
     try{
         day=Integer.parseInt(source.getText());
         notepad.setDay(day);
         notepad.设置信息条(year,month,day);
         notepad.设置文本区(null);
         notepad.获取日志内容(year,month,day);
        } 
      catch(Exception ee)
        {
        }
   }
 public void mouseClicked(MouseEvent e)
   {
   }
 public void mouseReleased(MouseEvent e)
   {
   }
 public void mouseEntered(MouseEvent e)
   {
   }
 public void mouseExited(MouseEvent e)
   {
   }
 
 public static void main(String args[])
   {
       Calendar calendar=Calendar.getInstance();    
       int y=calendar.get(Calendar.YEAR);           
       int m=calendar.get(Calendar.MONTH)+1;        
       int d=calendar.get(Calendar.DAY_OF_MONTH);
       new CalendarPad(y,m,d);
   }
}  

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Month extends Box implements ActionListener
{
  int month;                           
  JTextField showMonth=null;           
  JButton nextMonth, laterMonth;
  CalendarPad cal1;
  public Month(CalendarPad cal1)
  {  
     super(BoxLayout.X_AXIS);        
     this.cal1=cal1;
     showMonth=new JTextField(2);
     month=cal1.getMonth();
     showMonth.setEditable(false);
     showMonth.setForeground(Color.blue);
     showMonth.setFont(new Font("TimesRomn",Font.BOLD,16)); 
     nextMonth=new JButton("下一月");
     laterMonth=new JButton("上一月");
     add(laterMonth);
     add(showMonth);
     add(nextMonth);
     laterMonth.addActionListener(this);
     nextMonth.addActionListener(this);
     showMonth.setText(""+month);
  }
 public void setMonth(int month)
  {
    if(month<=12&&month>=1)
      {
       this.month=month;
      }
    else
      {
        this.month=1;
      }
    showMonth.setText(""+month);
  }
 public int getMonth()
  {
    return month;
  } 
 public void actionPerformed(ActionEvent e)
  {
    if(e.getSource()==laterMonth)
      {
        if(month>=2)
         {
            month=month-1;
            cal1.setMonth(month);
            cal1.setCalendar(cal1.getYear(),month);
         }
        else if(month==1)
         {
            month=12;
            cal1.setMonth(month);
            cal1.setCalendar(cal1.getYear(),month);
         }
       showMonth.setText(""+month);
      }
    else if(e.getSource()==nextMonth)
      {
        if(month<12)
          {
            month=month+1;
            cal1.setMonth(month);
            cal1.setCalendar(cal1.getYear(),month);
          }
        else if(month==12)
          {
            month=1;
            cal1.setMonth(month);
            cal1.setCalendar(cal1.getYear(),month);
          }
        showMonth.setText(""+month);
      }
  }   
}

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.JTextArea.*;
import javax.swing.event.*;
import java.io.*;

public class NotePad extends JPanel implements ActionListener,ItemListener
{
  
  Font f;
  TextArea text=new TextArea(15,25);
  JButton nu,color;
  JButton 保存日志,删除日志;
  Hashtable table;             
  JLabel 信息条; 
  Choice o,c;
  int year,month,day;          
  File file;                   
  CalendarPad calendar;
 
  public  NotePad(CalendarPad calendar)
   {
   
	  this.calendar=calendar;
     year=calendar.getYear();
     month=calendar.getMonth();
     day=calendar.getDay();
     table=calendar.getHashtable();
     file=calendar.getFile();
     信息条=new JLabel(""+year+"年"+month+"月"+day+"日",JLabel.CENTER);
     o=new Choice();
     c=new Choice();
     信息条.setFont(new Font("TimesRoman",Font.BOLD,16));
     o.setFont(new Font("TimesRoman",Font.BOLD,16));
     c.setFont(new Font("TimesRoman",Font.BOLD,16));
     信息条.setForeground(Color.cyan);
     o.setForeground(Color.cyan);
     c.setForeground(Color.cyan);
     //字体.add("宋体");
     //字体.add("黑体");
      c.add("红");
      c.add("蓝");
      c.add("绿");
      c.add("黄");
      
     保存日志=new JButton("保存日志") ;
     删除日志=new JButton("删除日志") ;
     保存日志.addActionListener(this);
     删除日志.addActionListener(this);
     setLayout(new BorderLayout());
     JPanel pSouth=new JPanel();     
     JPanel pNorth=new JPanel();
     JPanel pCenter=new JPanel();
     
     pCenter.setLayout(new BorderLayout());
     JPanel p1=new JPanel();
     JPanel p2=new JPanel();
     pNorth.add(信息条);
     p1.add(o);
     p1.add(c);
     pCenter.add(p1,BorderLayout.NORTH);
     pCenter.add(text,BorderLayout.SOUTH);
     pSouth.add(保存日志);
     pSouth.add(删除日志);
     add( pNorth,BorderLayout.NORTH);
     add(pSouth,BorderLayout.SOUTH);
     add(pCenter,BorderLayout.CENTER);
     GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
     String fontName[]=ge.getAvailableFontFamilyNames();
     o.addItemListener(this);
     c.addItemListener(this);
     for(int i=0;i<fontName.length;i++)
     {
     o.add(fontName[i]);
     }
     setVisible(true);
       }
  public void itemStateChanged(ItemEvent e) {
 	  if(e.getItemSelectable()==o||e.getItemSelectable()==c)
 	  {		  
	  String name=o.getSelectedItem();
 	  Font f=new Font(name,Font.BOLD,15);
 	  text.setText("请在这里输入内容");
 	  text.setFont(f);
 	  }  
  }
  
  
 public void actionPerformed(ActionEvent e)
   {
     if(e.getSource()==保存日志)
      {
        保存日志(year,month,day);
      }
     else if(e.getSource()==删除日志)
      {
       删除日志(year,month,day);
      }
    
   }
  public void setYear(int year)
  {
    this.year=year;
  }
 public int getYear()
  {
    return year;
  }
 public void setMonth(int month)
  {
    this.month=month;
  } 
  public int getMonth()
  {
    return month;
  } 
  public void setDay(int day)
  {
    this.day=day;
  }
  public int getDay()
   {
    return day;
   }
 public void 设置信息条(int year,int month,int day)
   {
     信息条.setText(""+year+"年"+month+"月"+day+"日");
   }
  public void 设置文本区(String s)
   {
     text.setText(s);
   }
  public void 获取日志内容(int year,int month,int day)
   {
       String key=""+year+""+month+""+day;
       try
             {
              FileInputStream   inOne=new FileInputStream(file);
              ObjectInputStream inTwo=new ObjectInputStream(inOne);
              table=(Hashtable)inTwo.readObject();         
              inOne.close();
              inTwo.close();
             }
       catch(Exception ee)
             {
             }
       if(table.containsKey(key))
          {
            String m=""+year+"年"+month+"月"+day+"这一天有日志记载,想看吗?";
            int ok=JOptionPane.showConfirmDialog(this,m,"询问",JOptionPane.YES_NO_OPTION,
                                               JOptionPane.QUESTION_MESSAGE);
                if(ok==JOptionPane.YES_OPTION)
                  {
                    text.setText((String)table.get(key));
                  }
                else
                  {
                   text.setText(""); 
                  }
          } 
       else
          {
            text.setText("无记录");
          } 
   }
  public void 保存日志(int year,int month,int day)
   {
     String 日志内容=text.getText();
        String key=""+year+""+month+""+day;
        
        String m=""+year+"年"+month+"月"+day+"保存日志吗?";
        int ok=JOptionPane.showConfirmDialog(this,m,"询问",JOptionPane.YES_NO_OPTION,
                                               JOptionPane.QUESTION_MESSAGE);
        if(ok==JOptionPane.YES_OPTION)
          {
           try
             {
              FileInputStream   inOne=new FileInputStream(file);
              ObjectInputStream inTwo=new ObjectInputStream(inOne);
              table=(Hashtable)inTwo.readObject();
              inOne.close();
              inTwo.close();
              table.put(key,日志内容);                                  
              FileOutputStream out=new FileOutputStream(file);
              ObjectOutputStream objectOut=new ObjectOutputStream(out);
              objectOut.writeObject(table);
              objectOut.close();
              out.close();
             }
           catch(Exception ee)
             {
             }
         }
   }
  public void 删除日志(int year,int month,int day)
   {
      String key=""+year+""+month+""+day;
         if(table.containsKey(key))
          {  
            String m="删除"+year+"年"+month+"月"+day+"日的日志吗?";
            int ok=JOptionPane.showConfirmDialog(this,m,"询问",JOptionPane.YES_NO_OPTION,
                                               JOptionPane.QUESTION_MESSAGE);
            if(ok==JOptionPane.YES_OPTION)
              { 
              try
                {
                 FileInputStream   inOne=new FileInputStream(file);
                 ObjectInputStream inTwo=new ObjectInputStream(inOne);
                 table=(Hashtable)inTwo.readObject();
                 inOne.close();
                 inTwo.close();
                 table.remove(key);                                        
                 FileOutputStream out=new FileOutputStream(file);
                 ObjectOutputStream objectOut=new ObjectOutputStream(out);
                 objectOut.writeObject(table);
                 objectOut.close();
                 out.close();
                 text.setText(null);
                }
               catch(Exception ee)
                {
                }
              }
          }
        else
          {
            
            String m=""+year+"年"+month+"月"+day+"无日志记录";
            JOptionPane.showMessageDialog(this,m,"提示",JOptionPane.WARNING_MESSAGE);
          }
   }

}


  
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Year extends Box implements ActionListener
{
  int year;                           
  JTextField showYear=null;           
  JButton nextYear,laterYear;
  CalendarPad cal;
  public Year(CalendarPad cal)
  {  
     super(BoxLayout.X_AXIS);        
     showYear=new JTextField(4);
     showYear.setForeground(Color.blue);
     showYear.setFont(new Font("TimesRomn",Font.BOLD,14)); 
     this.cal=cal;
     year=cal.getYear();
     nextYear=new JButton("nextyear");
     laterYear=new JButton("lateryear");
     add(laterYear);
     add(showYear);
     add(nextYear);
     showYear.addActionListener(this);
     laterYear.addActionListener(this);
     nextYear.addActionListener(this);
  }
 public void setYear(int year)
  {
    this.year=year;
    showYear.setText(""+year);
  }
 public int getYear()
  {
    return year;
  } 
 public void actionPerformed(ActionEvent e)
  {
    if(e.getSource()==laterYear)
      {
        year=year-1;
        showYear.setText(""+year);
        cal.setYear(year);
        cal.setCalendar(year,cal.getMonth());//setCalendar设置日历牌
      }
    else if(e.getSource()==nextYear)
      {
        year=year+1;
        showYear.setText(""+year);
        cal.setYear(year);
        cal.setCalendar(year,cal.getMonth());
      }
    else if(e.getSource()==showYear)
      {
         try
            {
              year=Integer.parseInt(showYear.getText());
              showYear.setText(""+year);
              cal.setYear(year);
              cal.setCalendar(year,cal.getMonth());
            }
         catch(NumberFormatException ee)
            {
              showYear.setText(""+year);
              cal.setYear(year);
              cal.setCalendar(year,cal.getMonth());
            }
      }
  }   
}

  • 13
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
计算机科学与技术本科专业 Java课程设计任务书 题目: 日历记事本 学生姓名: 学号: 班级: 题目类型:软件工程(R) 指导教师: 一. 题目简介 该设计要求设计一个带有日程提醒功能的日历。 通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。 二. 主要任务 1、查阅文献资料,一般在5篇以上; 2、应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; 3、分析系统中的各个实体及它们之间的关系包括属性和方法; 4、根据问题描述,设计系统的类层次; 5、完成类层次中各个类的描述(包括属性和方法); 6、完成类中各个成员函数的定义; 7、完成系统的应用模块; 8、完成系统的软件开发和测试工作; 9、撰写设计说明书; 10、做好答辩工作。 三. 主要内容、功能及技术指标 (一) 基本要求: 编写一个Applet小应用程序能够显示时间,当用户最小化Applet时,程序会 被挂起,当还原Applet时,程序又会恢复执行,同时Applet中应显示挂起和恢复的时间。 (二)系统要求: 1、要求利用面向对象的方法以及Java的编程思想来完成系统的设计; 2、要求在设计的过程中,建立清晰的类层次; 3、在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法; 4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 5、该系统的要求: (1)显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。 (2)定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框; (3)查询信息:用户可以查询到某个月的所有提示信息。 四. 提交的成果 1. 设计说明书一份,内容包括: 1) 中文摘要100字;关键词3-5个; 2) 序言; 3) 基本要求实现(包括程序流程图;部分代码;) 4) 系统要求实现 系统分析与设计(包括设计系统的类层次,各个实体及它们之间的关系) 详细设计(包括各个类的详细设计,如数据成员及成员函数的设计); 系统测试(包含测试方案、测试用例、测试结果及软件可靠性分析); 软件使用说明书(核心界面说明); 5)设计总结、参考文献、致谢等。 五. 主要参考文献 [1]曲朝阳,杨杰明等.Java程序设计. 北京: 清华大学出版社,2008.10 [2]耿祥以,张跃平.Java大学生实用教程. 北京: 电子工业出版社,2012.6 [3]明日科技.Java经典编程.北京:清华大学出版社,2012.10 [4]李尊朝,苏军.Java语言程序设计.北京:中国铁道出版社,2004.2 [5]王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990. 六. 各阶段时间安排(共2周): 周次 日期 内容 地点 第1周 星期一 教师讲解设计要求,准备参考资料 教室 星期二 分析系统,方案设计 实验室 星期三~五 编程 实验室 第2周 星期一~三 编程、调试程序 实验室 星期四 写设计书 实验室 星期五 答辩 实验室

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-MTing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值