Java日历记事本_第1页
Java日历记事本_第2页
Java日历记事本_第3页
Java日历记事本_第4页
Java日历记事本_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上NIIT2综合训练日历记事本专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院专心-专注-专业目 录NIIT2综合训练一、综合训练的目的(1) 进一步巩固所学的Java语言基础知识,达到熟练编写、运用的程度;(2) 锻炼自己的面向对象的程序设计思想,能够深刻认识面向过程与面向对象两种设计方法之间的区别;(3) 熟练掌握具体软件开发平台下(NetBeans)的动手能力,掌握Java应用程序设计的方法与技巧,实现从传统面向过程程序设计思维到面向对象程序设计思维的转型;(4) 初步了解MIS的概念与相关知识,具备独立设计、实现小型MIS系统的应用开发能力。二、

2、综合训练的内容题目:日历记事本三、综合训练的具体实现1设计内容 设计GUI界面的日历记事本。系统将日历,记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。2设计要求 1.系统界面的左侧是日历。该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。 2.该日历也可以在某年内按月前后翻动。鼠标单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮,当前日历表的月份加一。 3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日历已有记录内容,并询问用户是否用记事本显示该内

3、容。 4.用户选择具体日期后,可以将记事本的当前内容保存起来,形成日志。3总体设计 本日历记事本程序共有4个java源文件。CalendarPad.java该java文件生成的类负责创建本日历记事本程序主窗口。该类含有main方法,程序从该类开始执行。Year.java该文件负责创建管理年份的对象。Momth.java该文件负责创建管理月份的类对象。NotePad.java该文件负责创建记事本。4具体设计运行效果与程序发布1. 将4个java文件保存到一个文件夹中。将4个文件分别编译生成相应的字节码文件。然后,用java解释器运行主类,效果如图: 2.可以使用jar.exe把一些文件压缩成JA

4、R文件,来发布我们的应用程序。可以把本java应用程序中涉及到的类文件压缩成一个JAR文件,例如CalendarPad.jar. 首先,用文本编辑器编写一个清单文件,然后,如下生成JAR文件: C:notepadjar cfm CalendarPad.jar moon.mf *.class 其中,参数c表示要生成一个新的JAR文件;f表示要生成的JAR文件的名字;m表示清单文件的名字。现在皆就可以将Calendar.Jar拷贝到任何一个安装了java运行环境的计算机上,只要用鼠标双击文件就可以运行本java应用程序了。 另外创建一个帮助文件help.txt,内容如下:您可以用鼠标双击Calen

5、darPad.jar或CalendarPad.bat来运行本软件,但是,如果您的计算机上安装了中文版WinRAR解压缩软件,并将.jar文件与该解压缩软件做了关联,那么,用鼠标双击CalendarPar.jar文件时,WinRAR解压缩软件会自动运行进行解压缩操作,这时您可以双击Calendar.Pad.bat来运行我们的软件。 最后,将.bat文件,.jar文件,帮助文件一同发布。四、综合训练的总结经过一个学期的JAVA学习,我对JAVA编程有了一定的认识,在做这个课程设计的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。最终利用网络资源和查阅图书馆的书籍,在傅老师和同学的指导和讨论

6、下,经过一段时间终于完成了这个设计。当程序运行结束看到弹出的日历记事本的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对JAVA的学习有了一定的兴趣。也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏,没有把书本上的知识真正的掌握牢固。以后要多动手做才会有收获。附录:源程序清单CalendarPad.javaimport java.util.Calendar;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import

7、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 星期="星期日","星期一","星期二",&q

8、uot;星期三","星期四","星期五","星期六" 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.yea

9、r=year; this.month=month; this.day=day; 负责改变年=new Year(this); 负责改变年.setYear(year); 负责改变月=new Month(this); 负责改变月.setMonth(month); title=new JLabel7; showDay=new JTextField42; for(int j=0;j<7;j+) titlej=new JLabel(); titlej.setText(星期j); titlej.setBorder(BorderFactory.createRaisedBevelBorder(); lef

10、tCenter.add(titlej); title0.setForeground(Color.red); title6.setForeground(Color.blue); for(int i=0;i<42;i+) showDayi=new JTextField(); showDayi.addMouseListener(this); showDayi.setEditable(false); leftCenter.add(showDayi); 日历=Calendar.getInstance(); Box box=Box.createHorizontalBox(); box.add(负责改

11、变年); 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=ge

12、tContentPane(); 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); ObjectOutput

13、Stream 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); )

14、; setVisible(true); setBounds(100,50,524,285); validate(); public void 设置日历牌(int year,int month) 日历.set(year,month-1,1); 星期几=日历.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); el

15、se 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+) showDayi.setText(""+n); if(n=day) showDayi.setForeground(Color.green); showDayi.setFont(new Font("TimesRoman",Font.B

16、OLD,20); else showDayi.setFont(new Font("TimesRoman",Font.BOLD,12); showDayi.setForeground(Color.black); if(i%7=6) showDayi.setForeground(Color.blue); if(i%7=0) showDayi.setForeground(Color.red); n+; for(int i=0;i<星期几;i+) showDayi.setText(""); for(int i=星期几+月天数;i<42;i+) sho

17、wDayi.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(d

18、ay); 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.获取

19、日志内容(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(Cale

20、ndar.YEAR); int m=calendar.get(Calendar.MONTH)+1; int d=calendar.get(Calendar.DAY_OF_MONTH); new CalendarPad(y,m,d); Year.javaMonth.javaNote.javaYear.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Year extends Box implements ActionListener int year; int month; JTextF

21、ield 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

22、 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(Action

23、Event 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.p

24、arseInt(showYear.getText(); showYear.setText(""+year); 日历.setYear(year); 日历.设置日历牌(year,日历.getMonth(); catch(NumberFormatException ee) showYear.setText(""+year); 日历.setYear(year); 日历.设置日历牌(year,日历.getMonth(); Month.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*

25、;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(Col

26、or.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) i

27、f(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 i

28、f(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); showMo

29、nth.setText(""+month); NotePad.javaimport 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

30、 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+"

31、;月"+day+"日",JLabel.CENTER); 信息条.setFont(new Font("TimesRoman",Font.BOLD,16); 信息条.setForeground(Color.blue); text=new JTextArea(10,10); 保存日志=new JButton("保存日志") ; 删除日志=new JButton("删除日志") ; 保存日志.addActionListener(this); 删除日志.addActionListener(this); setLay

32、out(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.getSo

33、urce()=删除日志) 删除日志(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 yea

34、r,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 FileInp

35、utStream(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.showCon

36、firmDialog(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(); S

37、tring 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 Obj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论