1、功能模块 此设计共有以下几个功能模块。 年份改变点击一次“上年”按钮可增加一年,点击一次“下年”按钮可减少一年,多次连续点击即可依次改变多个年份。 月份改变点击一次“上月”按钮可以增加一月,点击一次“下年”按钮可以减少一月,多次连续点击即可一次改变多个月份。 日期显示用于显示当前所选择的所在的年份月份的所有日期、星期,并在记载有日志的日期格中左上角显示“有”标记,而没有记载日志的日期则没有任何标记。 图片显示为了使本设计界面美观,设置了图片显示模块,使整个设计更加实用、美观、大方。 日志显示界面的右侧上半部的文本框中,可以选择某天记载日志,并且读取的日志在此部分显示出来。 时钟显示以传统时钟(
2、有时针、分针、秒针)的模式显示当前的时间。 保存、删除、读取日志。可以在没有记载日志的日期里记载日志并保存,可以对以保存的日志进行读取、修改或者删除。流程图如下 图2 流程图类、方法、属性说明类(1)成员变量year,month和day是int型数据,它们的值分别确定年份、月份和日期。calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。calendarPad是CalendarPad对象,该对象可以显示和日期有关的数据。notePad是NotePad对象,具有编辑、读取、保存和删除日志的功能。showYear和showMonth是JTextFiel
3、d类创建的文本框,用来显示年份和月份。showDay数组的每个单元是JTextField类创建的用来显示日期的文本框。calendarImage是CalendarImage创建的对象,用来显示图像。clock是Clock创建的对象,用来显示时钟。nextYear等是JButton创建的按钮对象,名字依次为“下年”、“上年”、“下月”、“上 月”。这些按钮都将当前窗口注册为自己的ActionEvent事件监听者。saveDauktRecord,deleteDailyRecord,readDailyRecord是JButton创建的按钮对象, 名字依次为“保存日志”、“删除日志”、“读取日志”。这
4、些按钮都当前窗口注册为自 己的ActionEvent事件监听者。(2)方法CalendarWindow()是构造方法,负责完成窗口的初始化。actionPerformed(AcrionEvent)方法是CalendarWindow类实现的ActionListner 接 口中的方法。mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中 的方法。doMark()方法负责对有日志的日期作出标记。main方法是程序运行的人口方法。year、month和day是int型数据,它们的值分别确定年份、月份和日期。setYear(int)和
5、getYear()方法分别用来设置year和获取year的值。setMonth(int)和getMonth()方法分别用来设置month和获取month的值。setDay(int)和getDay()方法分别用来设置day和获取day的值。2类calenderMessage是CalenderMessage对象,该对象可以处理和日期有关的数据。CalenderPad()是构造方法,用来创建calenderPad对象。setShowDayTextField(JTextField)方法负责设置showDay数组。showMonthCalendar()方法负责显示“日历”。text是JTextArea创
6、建的文本区,可在text中编辑多行文本。menu是JpopupMenu创建的弹出式菜单。showMessage是JTextField创建的文本条,用来显示和日期有关的数据。Notepad()是构造方法,用来创建notePad对象。setShowMessage(int,int,int)方法根据参数指定的日期数据显示有关日期信息。save(File,int,int,int)方法根据参数指定的日期保存日志。delete(File,int,int,int)方法删除参数日期指定的日志。imageFile是File对象,用来存放图像文件的引用。image是Image对象。tool是Toolkit对象,负责
7、创建image对象。CalendarImage()是构造方法,负责创建calendarImage对象。paintComponent(Graphics)方法负责绘制image。date是Date对象,负责封装本地时间。secondTime是包中Timer类中创建的计时器。pointSX,pointSY是double型数组,其单元值用来表示秒针端点坐标。Clock()是构造方法,用来创建clock对象。paintComonent(Graphics)负责完成绘制工作。3.设计结果与分析将6个Java源文件:、 、和,以及所需要的名为的图像文件保存到同一目录中。分别编译这6个Java源文件,或运行“j
8、avac *.java”命令,编译全部的源文件,然后运行主类,即运行CalendarWindow类。 运行结果图中可以看出记载日志的日期中会有“有”标记,而没有记载日志的日期中没有“有”标记。右下侧是时钟,左下角显示图片。 图3 运行结果图 在此结果中,点击上方的“上年”或“下年”可以改变年份,点击“上月”或“下月”可以改变月份。右下角显示当前的时间。可以在任意一天记日志,在有“有”标记的日期查看日志或删除日志。当想保存日志时,选中某一天,在右侧记下日志点击“保存”即可。当想查看某天的日志是选中带“有”标记的当天,点击“读取日志”可出现图4所示的提示框,点击是即可读取日志就可以查看日志内容,如
9、图5所示。 图4 提示显示页面图 图5 查看日志图 若想要删除已有的日志,则选中要删除的日期,点击“删除日志”,则出现提示框,如图6所示,询问是否要删除,点击“是”,则删除了此篇日志,此时,原有的“有”字标记就会消失,此篇日志也就随之消失,如图7所示。 图6 提示删除页面图 图7 删除后页面图4.设计体会经过几天的努力,参考了一些书和网上的资料,完成了一个日历记事本的设计。由于只学过一学期的Java课程,知识掌握的有限,所以此程序不是特别复杂。在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己
10、的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。本次课程设计不仅巩固了以前所学的知识,还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。所以网络这个强大的工具,确实是我们学习之中可以借助的一个很好的帮手。网络是我们学习的最好的老师之一。有问题,问网络,是一个很好的习惯。因此学到了不少书本上没有的知识;学到了很多java编程知识
11、。可以说它给了我一次自我评估的机会。通过设计让我知道了那些方面我还是有欠缺的,促使我花时间弥补。总之,本次课程设计收获颇丰。5.参考文献1陈国君,陈磊,刘洋Java2程序设计基础M北京:清华大学出版社;2耿祥义,张跃平Java课程设计M北京::228-2513张思民,梁维娜Java程序设计实践教程M北京:1-214 叶核亚JAVA2程序设计实用教程M(第2版)北京:电子工业出版社;.6. 附录:(1);import .*;public class CalendarWindow extends JFrame implements ActionListener,MouseListener,Focu
12、sListener int year,month,day; CalendarMessage calendarMessage; CalendarPad calendarPad; NotePad notePad; JTextField showYear,showMonth; JTextField showDay; CalendarImage calendarImage; Clock clock; JButton nextYear,previousYear,nextMonth,previousMonth; JButton saveDailyRecord,deleteDailyRecord,readD
13、ailyRecord; File dir; Color backColor=; public CalendarWindow() dir=new File(./dailyRecord); (); showDay=new JTextField42; for(int i=0;i;i+) showDayi=new JTextField(); showDayi.setBackground(backColor); showDayi.setLayout(new GridLayout(3,3); showDayi.addMouseListener(this); showDayi.addFocusListene
14、r(this); calendarMessage=new CalendarMessage(); calendarPad=new CalendarPad(); notePad=new NotePad(); Calendar calendar=(); (new Date(); year=; month=+1; day=; (year); (month); (day); (calendarMessage); (showDay); (year,month,day); doMark(); rim(); char a=(); boolean boo=false;i+) if(!(ai) boo=true;
15、 if(boo=true) rim(); try day=(str); catch(NumberFormatException exp) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseClicked(MouseEvent e) public void focusGained(FocusEvent e) Component com=(Component)(); ; public
16、 void focusLost(FocusEvent e) (backColor); public void doMark() showDayi.removeAll(); String str=showDayi.getText().trim(); try int n=(str); if(isHaveDailyRecord(n)=true) dd(mess); catch(Exception exp)();public boolean isHaveDailyRecord(int n) String key=+year+month+n; String dayFile=(); for(int k=0
17、;kk+) if(dayFilek.equals(key+.txt) break; return boo; public static void main(String args) new CalendarWindow(); (2).11表示十二月 int 星期几=-1; int dayAmount=0; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) dayAmount=31; if(month=4|month=6|month=9|month=11) dayAmount=30; if(month=2) if(year
18、%4=0)&(year%100!=0)|(year%400=0) dayAmount=29; else dayAmount=28;星期几; dayi= for(int i=星期几,n=1;星期几+dayAmount; dayi=(n) ; n+; for(int i=星期几+dayAmount;42; return day;(3);public class CalendarPad extends JPanel JLabel title; String 星期=SUN日,MON一TUE二WED三THU四FRI五SAT六; JPanel north,center; public CalendarPa
19、d() setLayout(new BorderLayout(); north=new JPanel();(new GridLayout(1,7); center=new JPanel(); (new GridLayout(6,7); add(center,; add(north,; title=new JLabel7; for(int j=0;j7;j+) titlej=new JLabel(); titlej.setFont(new Font(TimesRoman,12); titlej.setText(星期j); titlej.setHorizontalAlignment; titlej
20、.setBorder(); (titlej); title0.setForeground; title6.setForeground; public void setShowDayTextField(JTextField text) showDay=text;i+) showDayi.setFont(new Font(,15); showDayi.setHorizontalAlignment; showDayi.setEditable(false); (showDayi); public void setCalendarMessage(CalendarMessage calendarMessa
21、ge) =calendarMessage; public void showMonthCalendar() String a=();i+) showDayi.setText(ai); validate();(4);import class NotePad extends JPanel implements ActionListener JTextArea text; JTextField showMessage; JPopupMenu menu; JMenuItem itemCopy,itemCut,itemPaste,itemClear; public NotePad() showMessa
22、ge=new JTextField(); (new Font(,16); (); (false); menu=new JPopupMenu(); itemCopy=new JMenuItem(复制 itemCut=new JMenuItem(剪切 itemPaste=new JMenuItem(粘贴 itemClear=new JMenuItem(清空 (this); (itemCopy); (itemCut); (itemPaste); (itemClear); text=new JTextArea(10,10); (new MouseAdapter() public void mouseP
23、ressed(MouseEvent e) if()= (text,(),(); );setLayout(new BorderLayout(); add(showMessage,; add(new JScrollPane(text),;public void setShowMessage(int year,int month,int day) (年月+day+日 public void save(File dir,int year,int month,int day) String dailyContent=(); String fileName=+day; if(dayFilek.startsWith(key) if(boo) String m=已有日志,将新的内容添加到日志吗 int o
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1