完整word版Java日历记事本

完整word版Java日历记事本
完整word版Java日历记事本

NIIT —2综合训练

日历记事本

专业

计算机科学与技术

学生姓名

班级学号指导教师完成日期

信息工程学院

一、综合训练的目的 ...

二、综合训练的内容 ...

三、综合训练的具体实现

四、综合训练的总结 ... 附录:源程序清单 ..... .

1 .

.2. .. 3

NIIT -2 综合训练

、综合训练的目的

(1)进一步巩固所学的 Java 语言基础知识,达到熟练编写、运用的程度;

(2)锻炼自己的面向对象的程序设计思想,能够深刻认识面向过程与面向对象两种设计方法之间的区别;

(3)熟练掌握具体软件开发平台下 (NetBeans) 的动手能力,掌握 Java 应用程序设计的方法与技巧,实现从传统面向过程程序设计思维到面向对象程序设计思维的转型;

(4)初步了解MIS的概念与相关知识,具备独立设计、实现小型 MIS系统的应用开发能力。

二、综合训练的内容

题目:日历记事本

三、综合训练的具体实现

1.设计内容

设计GUI 界面的日历记事本。系统将日历,记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。

2.设计要求

1.系统界面的左侧是日历。该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。

2.该日历也可以在某年内按月前后翻动。鼠标单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮,当前日历表的月份加一。

3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日历已有记录内容,并询问用户是否用记事本显示该内容。

4.用户选择具体日期后,可以将记事本的当前内容保存起来,形成日志。

3.总体设计本日历记事本程序共有 4 个 java 源文件。CalendarPad.java 该 java 文件生成的类负责创建本日历记事本程序主窗口。该类含有 main 方法,程序从该类开始执行。

Year.java 该文件负责创建管理年份的对象。

Momth.java 该文件负责创建管理月份的类对象。

NotePad.java

该文件负责创建记事本。

4 ?具体设计

运行效果与程序发布

1. 将4个java 文件保存到一个文件夹中。将 4个文件分别编译生成相应的 字节码文

件。然后,用java 解释器运行主类,效果如图:

2.可以使用jar.exe 把一些文件压缩成JAR 文件,来发布我们的应用程序。可以 把本

java 应用程序中涉及到的类文件压缩成一个

JAR 文件,例如CalendarPad.jar.

首先,用文本编辑器编写一个清单文件,然后,如下生成 JAR 文件:

C:\notep ad\jar cfm Cale ndarP ad.jar moon.mf *.class

其中,参数c 表示要生成一个新的JAR 文件;f 表示要生成的JAR 文件的名 字;m 表示

清单文件的名字。现在皆就可以将 Calendar.Jar 拷贝到任何一个安装了 java 运行环境的计算机上,只要用鼠标双击文件就可以运行本 java 应用程序了。

另外创建一个帮助文件hel p. txt,内容如下:

您可以用鼠标双击CalendarPad.ja 或CalendarPad.ba 来运行本软件,但是,如果您 的计算机上安装了中文版 Win RAR 解压缩软件,并将.jar 文件与该解压缩软件做了关联, 那么,用鼠标双击Cale ndarPar.jar 文件时,Win RAR 解压缩软件会自动运行进行解压缩 操作,这时您可以双击 Cale ndar. Pad.ba 来运行我们的软件。

最后,将.bat 文件,.jar 文件,帮助文件一同发布。

四、综合训练的总结

经过一个学期的JAVA 学习,我对JAVA 编程有了一定的认识,在做这个课程设计 的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。最终利用网络资源和 查阅图书馆的书籍,在傅老师和同学的指导和讨论下,经过一段时间终于完成了这个设 计。当程序运行结束看到弹出的日历记事本的界面时,感到很欣慰,虽然只是一个小小 的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对 JAVA 的学习有了一定的兴趣 。也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏, 把书本上的知识真正的掌握牢固。以后要多动手做才会有收获。

屋期日

屋期一 星期二 星期三 星期四 星期五

1星期A

I

1

2 3 4

5 6 7 a 9 10 11 12 I

I

13 14

15

16

17

18 19

20 21

22

亠』

24

25

26

27

2?

29

30

!

下年

请在年份输入框输入所查年份■涣数表示公元前),并回车确定

上年12010

________ i _

上月

6 下月

2010年6月23日

保存日志

I 删除日志

没有

附录:源程序清单

CalendarPad.java

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 日历 ;

int 星期几 ;

NotePad notepad=null;

Month 负责改变月 ;

Year 负责改变年 ;

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;

负责改变年 =new Year(this); 负责改变年 .setYear(year); 负责改变月 =new

Month(this); 负责改变月 .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(); showDay[i].addMouseListener(this);

showDay[i].setEditable(false); leftCenter.add(showDay[i]);

}

日历 =Calendar.getInstance();

Box box=Box.createHorizontalBox();

box.add(负责改变年);

box.add(负责改变月);

leftNorth.add(box);

leftPanel.setLayout(new BorderLayout());

leftPanel.add(leftNorth,BorderLayout.NORTH);

leftPanel.add(leftCenter,BorderLayout.CENTER);

leftPanel.add(new Label("请在年份输入框输入所查年份(负数表示公元前),并回车确定"),

BorderLayout.SOUTH) ;

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);

设置日历牌 (year,month);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

System.exit(0);

}

});

setVisible(true);

setBounds(100,50,524,285);

validate();

}

public void 设置日历牌 (int year,int month)

{

日历.set(year,m on th-1,1);

星期几二日历.get(Calendar.DAY_0F_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=星期几 + 月天数;iv42;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);

}

Year.java

Month.java

Note.java

Year.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Year extends Box implements ActionListener

{

int year;

int month;

JTextField showYear=null;

JButton 明年,去年;

CalendarPad 日历;

public Year(CalendarPad 日历)

{

super(BoxLayout.X_AXIS);

showYear=new JTextField(4);

showYear.setForeground(Color.blue);

showYear.setFont(new Font("TimesRomn",Font.BOLD,14)); this.日历=日历;

year=日历.getYear();

明年=new JButton("下年");

去年=new JButton(" 上年");

add(去年);

add(showYear);

add(明年);

showYear.addActionListener(this);

去年.addActionListener(this);

明年.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()== 去年)

{ year=year-1; showYear.setText(""+year); 日历.setYear(year);

日历?设置日历牌(year,日历.getMonth());

}

else if(e.getSource()==明年)

{

year=year+1; showYear.setText(""+year); 日历.setYear(year);

日历.设置日历牌(year,日历.getMonth());

}

else if(e.getSource()==showYear)

{ try

year=Integer.parseInt(showYear.getText()); showYear.setText(""+year);

日历.setYear(year);

日历.设置日历牌(year,日历.getMonth());

}

catch(NumberFormatException ee)

{

showYear.setText(""+year);

日历.setYear(year);

日历?设置日历牌(year,日历.getMonth());

Month.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Month extends Box implements ActionListener

{

int month;

JTextField showMonth=null;

JButton 下月,上月;

CalendarPad 日历;

public Month(CalendarPad 日历)

{

super(BoxLayout.X_AXIS);

this.日历=日历; showMonth=new JTextField(2);

month=日历.getMonth(); showMonth.setEditable(false); showMonth.setForeground(Color.blue);

showMonth.setFont(new Font("TimesRomn",Font.BOLD,16)); 下月=new JButton("下月");

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

add(上月);

add(showMonth);

add(下月);

上月.addActionListener(this);

下月.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()== 上月)

{

if(month>=2)

{ month=month-1; 日历.setMonth(month); 日历.设置日历牌(日历.getYear(),month);

}

else if(month==1)

{ month=12; 日历.setMonth(month); 日历.设置日历牌(日历.getYear(),month);

}

showMonth.setText(""+month);

}

else if(e.getSource()==下月)

{

if(month<12)

{ month=month+1; 日历.setMonth(month); 日历.设置日历牌(日历.getYear(),month);

}

else if(month==12)

{ month=1; 日历.setMonth(month); 日历.设置日历牌(日历.getYear(),month);

} showMonth.setText(""+month);

NotePad.java

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

import javax.swing.event.*;

import java.io.*;

public class NotePad extends JPanel implements ActionListener {

JTextArea text;

JButton 保存日志,删除日志;

Hashtable table;

JLabel 信息条;

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); 信息条 .setFont(new

Font("TimesRoman",Font.BOLD,16));

信息条 .setForeground(Color.blue); text=new JTextArea(10,10);

保存日志

删除日志 保存日志 删除日志 setLayout(new BorderLayout()); JPanel pSouth=new JPanel(); add(信息条,BorderLayout.NORTH); pSouth.add(保存日志); pSouth.add(删除日志); add(pSouth ,BorderLayout.SOUTH); add(new JScrollPane(text),BorderLayout.CENTER);

}

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;

=new JButton(" 保存日志 ") ; =new JButton(" 删除日志

") ; .addActionListener(this

}

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)

{

}

删除日志 (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); }

} public

void

{

相关主题
相关文档
最新文档