NIIT-2综合训练日历记事本专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院目录一、综合训练的目的..........................................................................................................................1二、综合训练的内容..........................................................................................................................1三、综合训练的具体实现..................................................................................................................1四、综合训练的总结..........................................................................................................................2附录:源程序清单..............................................................................................................................31NIIT-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该文件负责创建管理月份的类对象。2NotePad.java该文件负责创建记事本。4.具体设计运行效果与程序发布1.将4个java文件保存到一个文件夹中。将4个文件分别编译生成相应的字节码文件。然后,用java解释器运行主类,效果如图:2.可以使用jar.exe把一些文件压缩成JAR文件,来发布我们的应用程序。可以把本java应用程序中涉及到的类文件压缩成一个JAR文件,例如CalendarPad.jar.首先,用文本编辑器编写一个清单文件,然后,如下生成JAR文件:C:\notepad\jarcfmCalendarPad.jarmoon.mf*.class其中,参数c表示要生成一个新的JAR文件;f表示要生成的JAR文件的名字;m表示清单文件的名字。现在皆就可以将Calendar.Jar拷贝到任何一个安装了java运行环境的计算机上,只要用鼠标双击文件就可以运行本java应用程序了。另外创建一个帮助文件help.txt,内容如下:您可以用鼠标双击CalendarPad.jar或CalendarPad.bat来运行本软件,但是,如果您的计算机上安装了中文版WinRAR解压缩软件,并将.jar文件与该解压缩软件做了关联,那么,用鼠标双击CalendarPar.jar文件时,WinRAR解压缩软件会自动运行进行解压缩操作,这时您可以双击Calendar.Pad.bat来运行我们的软件。最后,将.bat文件,.jar文件,帮助文件一同发布。四、综合训练的总结经过一个学期的JAVA学习,我对JAVA编程有了一定的认识,在做这个课程设计的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。最终利用网络资源和查阅图书馆的书籍,在傅老师和同学的指导和讨论下,经过一段时间终于完成了这个设计。当程序运行结束看到弹出的日历记事本的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对JAVA3的学习有了一定的兴趣。也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏,没有把书本上的知识真正的掌握牢固。以后要多动手做才会有收获。附录:源程序清单CalendarPad.javaimportjava.util.Calendar;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.Hashtable;publicclassCalendarPadextendsJFrameimplementsMouseListener{intyear,month,day;Hashtablehashtable;Filefile;JTextFieldshowDay[];JLabeltitle[];Calendar日历;int星期几;NotePadnotepad=null;Month负责改变月;Year负责改变年;String星期[]={星期日,星期一,星期二,星期三,星期四,星期五,星期六};JPanelleftPanel,rightPanel;publicCalendarPad(intyear,intmonth,intday){leftPanel=newJPanel();JPanelleftCenter=newJPanel();JPanelleftNorth=newJPanel();leftCenter.setLayout(newGridLayout(7,7));rightPanel=newJPanel();this.year=year;this.month=month;this.day=day;负责改变年=newYear(this);负责改变年.setYear(year);负责改变月=newMonth(this);负责改变月.setMonth(month);title=newJLabel[7];showDay=newJTextField[42];for(intj=0;j7;j++){title[j]=newJLabel();4title[j].setText(星期[j]);title[j].setBorder(BorderFactory.createRaisedBevelBorder());leftCenter.add(title[j]);}title[0].setForeground(Color.red);title[6].setForeground(Color.blue);for(inti=0;i42;i++){showDay[i]=newJTextField();showDay[i].addMouseListener(this);showDay[i].setEditable(false);leftCenter.add(showDay[i]);}日历=Calendar.getInstance();Boxbox=Box.createHorizontalBox();box.add(负责改变年);box.add(负责改变月);leftNorth.add(box);leftPanel.setLayout(newBorderLayout());leftPanel.add(leftNorth,BorderLayout.NORTH);leftPanel.add(leftCenter,BorderLayout.CENTER);leftPanel.add(newLabel(请在年份输入框输入所查年份(负数表示公元前),并回车确定),BorderLayout.SOUTH);leftPanel.validate();Containercon=getContentPane();JSplitPanesplit=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightPanel);con.add(split,BorderLayout.CENTER);con.validate();hashtable=newHashtable();file=newFile(日历记事本.txt);if(!file.exists()){try{FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(hashtable);objectOut.close();out.close();}catch(IOExceptione){}}5notepad=newNotePad(this);rightPanel.add(notepad);设置日历牌(year,month);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setVisible(true);setBounds(100,50,524,285);validate();}publicvoid设置日历牌(intyear,intmonth){日历.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);}elseif(month==4||month==6||month==9||month==11){排列号码(星期几,30);}elseif(month==2){if((year%4==0&&year%100!=0)||(year%400==0)){排列号码(星期几,29);}else{排列号码(星期几,28);}}}publicvoid排列号码(int星期几,int月天数){for(inti=星期几,n=1;i星期几+月天数;i++){showDay[i].setText(+n);if(n==day){showDay[i].setForeground(Color.green);showDay[i].setFont(newFont(TimesRoman,Font.BOLD,20));}6else{showDay[i].setFont(newFont(TimesRoman,Font.BOLD,12));showDay[i].s