日历记事本-JAVA设计
课程设计说明书 NO.1
通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使
我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
,为今后从事实际工作打下坚实的基础。
本课程设计设计GUI界面的日历记事本,系统将日历和记事本结合在一起,可以方
便的保存、查看日志,即在任何日期记载下有关内容或查看某个日期记载的内容。
本系统界面的左侧是日历和一幅图像。该日历可以按年前后翻动,用鼠标左键单
击“上年”按钮,可将当前日历的年份减一;用鼠标左键单击“下年”按钮,可将当前
日历的年份加一。该日历还可以在某年内按月前后翻动,用鼠标单击“上月”按钮,可
将当前日历的月份减一;用鼠标单击“下月”按钮,可将当前日历的月份增一。
系统界面的右侧是记事本和一个时钟。用鼠标单击日历上的日期,就可以通过该
记事本编辑有关日志,并将日志保存到一个文件。该文件的名字是由当前日期组成的字
符序列。用户可以查看、删除某个日期的日志,也可以继续向某个日志添加新的内容。
当某个日期有日志时,显示该日期的外观上就会出现“有”标记,表明这个日期
有日志;当用户删除某个日期的日志后,该日期的外观上的“有” 标记就会消失。
在设计日历记事本时,需要编写6个Java源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java 、Clock.java和CalendarMessage.java。
日历记事本除了需要编写的上述6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JTextField、JTextArea和File类。
该类创建动态日历记事本的主窗口,该类含有main方法,是程序的入口
沈 阳 大 学
课程设计说明书 NO.2
程序,CalenderWindow类的成员变量中有5种重要类型的对象, CalendarPad、NotePad、CalendarImage、Clock、CalendarMessage对象。
该类用来刻画和“日期”有关的数据。
该类是JPanel类的子类,所创建的对象是CalendarWindow类的重要成员之一,用来表示”日历”,即负责显示和修改CalendarMessage对象中的日期数据。
该类是JPanel的一个子类,创建的对象表示“记事本”,提供编辑读取和保存阐述
日志的功能。
该类所创建的对象是CalendarWindow类的成员之一,负责绘制图像。
该类创建的对象是CalendarWindow类的成员之一,负责显示时钟。 日历记事本用到的一些重要的类以及之间的关系如图1所示。
CalendarWindow
Clock CalendarImage CalenderMessage CalenderPad Notepad File
JTextField JTextArea
图1 类之间的组合关系图
此设计共有以下几个功能模块。
点击一次“上年”按钮可增加一年,点击一次“下年”按钮可减少一年,多次连 续点击即可依次改变多个年份。
沈 阳 大 学
课程设计说明书 NO.3
点击一次“上月”按钮可以增加一月,点击一次“下年”按钮可以减少一月,多 次连续点击即可一次改变多个月份。
用于显示当前所选择的所在的年份月份的所有日期、星期,并在记载有日志的日期格中左上角显示“有”标记,而没有记载日志的日期则没有任何标记。
为了使本设计界面美观,设置了图片显示模块,使整个设计更加实用、美观、大方。
界面的右侧上半部的文本框中,可以选择某天记载日志,并且读取的日志在此部 分显示出来。
以传统时钟(有时针、分针、秒针)的模式显示当前的时间。
可以在没有记载日志的日期里记载日志并保存,可以对以保存的日志进行读取、修改或
者删除。
沈 阳 大 学
课程设计说明书 NO.4
开始
显示窗口界面
选择日期
保存日志 读取日志 删除日志
是 是 是
保存并标记“有” 显示日志 删除并去掉“有”
否 否 否
结束程序
图2 流程图
(1)成员变量
?year,month和day是int型数据,它们的值分别确定年份、月份和日期。 ?calendarMessage是CalendarMessage对象,该对象可以处理和日期有关的数据。 ?calendarPad是CalendarPad对象,该对象可以显示和日期有关的数据。 ?notePad是NotePad对象,具有编辑、读取、保存和删除日志的功能。 ?showYear和showMonth是JTextField类创建的文本框,用来显示年份和月份。 ?showDay数组的每个单元是JTextField类创建的用来显示日期的文本框。 ?calendarImage是CalendarImage创建的对象,用来显示图像。
沈 阳 大 学
课程设计说明书 NO.5
?clock是Clock创建的对象,用来显示时钟。
?nextYear等是JButton创建的按钮对象,名字依次为“下年”、“上年”、“下月”、“上
月”。这些按钮都将当前窗口注册为自己的ActionEvent事件监听者。 ?saveDauktRecord,deleteDailyRecord,readDailyRecord是JButton创建的按钮对象,
名字依次为“保存日志”、“删除日志”、“读取日志”。这些按钮都当前窗口注册为自
己的ActionEvent事件监听者。
(2)方法
?CalendarWindow()是构造方法,负责完成窗口的初始化。
?actionPerformed(AcrionEvent)方法是CalendarWindow类实现的ActionListner 接
口中的方法。
?mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中
的方法。
?doMark()方法负责对有日志的日期作出标记。
?main方法是程序运行的人口方法。
(1)成员变量
year、month和day是int型数据,它们的值分别确定年份、月份和日期。 (2)方法
?setYear(int)和getYear()方法分别用来设置year和获取year的值。 ?setMonth(int)和getMonth()方法分别用来设置month和获取month的值。 ?setDay(int)和getDay()方法分别用来设置day和获取day的值。 (1)成员变量
?year、month和day是int型数据,它们的值分别确定年份、月份和日期。 ?calenderMessage是CalenderMessage对象,该对象可以处理和日期有关的数据。 ?showDay数组的每个单元是JTextField类创建的用来显示日期的文本框。 (2)方法
?CalenderPad()是构造方法,用来创建calenderPad对象。
?setShowDayTextField(JTextField[])方法负责设置showDay数组。
沈 阳 大 学
课程设计说明书 NO.6
?showMonthCalendar()方法负责显示“日历”。
(1)成员变量
?text是JTextArea创建的文本区,可在text中编辑多行文本。 ?menu是JpopupMenu创建的弹出式菜单。
?showMessage是JTextField创建的文本条,用来显示和日期有关的数据。 (2)方法
?Notepad()是构造方法,用来创建notePad对象。
?setShowMessage(int,int,int)方法根据参数指定的日期数据显示有关日期信息。 ?save(File,int,int,int)方法根据参数指定的日期保存日志。 ?delete(File,int,int,int)方法删除参数日期指定的日志。 (1)成员变量
?imageFile是File对象,用来存放图像文件的引用。
?image是Image对象。
?tool是Toolkit对象,负责创建image对象。
(2)方法
?CalendarImage()是构造方法,负责创建calendarImage对象。 ?paintComponent(Graphics)方法负责绘制image。
(1) 成员变量
?date是Date对象,负责封装本地时间。
?secondTime是javax.swing包中Timer类中创建的计时器。 ?pointSX,pointSY是double型数组,其单元值用来表示秒针端点坐标。 (2) 方法
?Clock()是构造方法,用来创建clock对象。
?paintComonent(Graphics)负责完成绘制工作。
将6个Java源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、
沈 阳 大 学
课程设计说明书 NO.7
CalendarImage.java 、Clock.java和CalendarMessage.java,以及所需要的名为flower.jpg的图像文件保存到同一目录中。分别编译这6个Java源文件,或运行“javac *.java”命令,编译全部的源文件,然后运行主类,即运行CalendarWindow类。
运行结果图中可以看出记载日志的日期中会有“有”标记,而没有记载日志的日期
中没有“有”标记。右下侧是时钟,左下角显示图片。
图3 运行结果图
在此结果中,点击上方的“上年”或“下年”可以改变年份,点击“上月”或“下
月”可以改变月份。右下角显示当前的时间。可以在任意一天记日志,在有“有”标记
的日期查看日志或删除日志。
当想保存日志时,选中某一天,在右侧记下日志点击“保存”即可。
当想查看某天的日志是选中带“有”标记的当天,点击“读取日志”可出现图4所示的提示框,点击是即可读取日志就可以查看日志内容,如图5所示。
图4 提示显示页面图
图5 查看日志图
若想要删除已有的日志,则选中要删除的日期,点击“删除日志”,则出现提示框,
如图6所示,询问是否要删除,点击“是”,则删除了此篇日志,此时,原有的“有”
字标记就会消失,此篇日志也就随之消失,如图7所示。
图6 提示删除页面图
沈 阳 大 学
课程设计说明书 NO.8
图7 删除后页面图
经过几天的努力,参考了一些书和网上的资料,完成了一个日历记事本的设计。
由于只学过一学期的Java课程,知识掌握的有限,所以此程序不是特别复杂。在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多
不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己的编
程方式也不是太
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
,经常出现代码写错而调试很久的低级错误情况出现。通过这次课
程设计,我明白了编写程序,不仅
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的
运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。
本次课程设计不仅巩固了以前所学的知识,还有通过设计过程中大量地查阅网络文
章,对一些关键知识点逐个地了解并解决相关问题。所以网络这个强大的工具,确实是
我们学习之中可以借助的一个很好的帮手。网络是我们学习的最好的老师之一。有问题,
问网络,是一个很好的习惯。因此学到了不少书本上没有的知识;学到了很多java编程知识。可以说它给了我一次自我评估的机会。通过设计让我知道了那些方面我还是有
欠缺的,促使我花时间弥补。总之,本次课程设计收获颇丰。
[1]陈国君,陈磊,刘洋.Java2程序设计基础[M].北京:清华大学出版社;2008.6
沈 阳 大 学
课程设计说明书 NO.9
[2]耿祥义,张跃平.Java课程设计[M].北京:清华大学出版社;2008.11:228-251 [3]张思民,梁维娜.Java程序设计实践教程[M].北京:清华大学出版社;2006.8:1-21 [4] 叶核亚.JAVA2程序设计实用教程[M](第2版).北京:电子工业出版社;2008.4.
沈 阳 大 学
课程设计说明书 NO.10
(1)//CalendarWindow类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class CalendarWindow extends JFrame implements ActionListener,
MouseListener,FocusListener{
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,readDailyRecord;
File dir;
Color backColor=Color.white;
public CalendarWindow(){
dir=new File("./dailyRecord");
dir.mkdir();
showDay=new JTextField[42];
for(int i=0;i
12) month=1;
showMonth.setText(" "+month);
calendarMessage.setMonth(month);
calendarPad.setCalendarMessage(calendarMessage);
calendarPad.showMonthCalendar();
notePad.setShowMessage(year,month,day);
doMark();
} else if(e.getSource()==previousMonth){
month--;
if(month<1) month=12;
showMonth.setText(" "+month);
沈 阳 大 学
课程设计说明书 NO.13
calendarMessage.setMonth(month);
calendarPad.setCalendarMessage(calendarMessage);
calendarPad.showMonthCalendar();
notePad.setShowMessage(year,month,day);
doMark();
}
else if(e.getSource()==showYear){
String s=showYear.getText().trim();
char a[]=s.toCharArray();
boolean boo=false;
for(int i=0;i=1)
this.month=month;
else
this.month=1;
}
public int getMonth(){
return month;
}
public void setDay(int day){
this.day=day;
}
public int getDay(){
return day;
}
public String [] getMonthCalendar(){
String [] day=new String[42];
Calendar rili=Calendar.getInstance();
rili.set(year,month-1,1);//将日历翻到year年month月1日,注意0表示一月...11表示十二月
int 星期几=rili.get(Calendar.DAY_OF_WEEK)-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%4==0)&&(year%100!=0))||(year%400==0))
dayAmount=29;
else
dayAmount=28;
沈 阳 大 学
课程设计说明书 NO.16
for(int i=0;i<星期几;i++)
day[i]="";
for(int i=星期几,n=1;i<星期几+dayAmount;i++){
day[i]=String.valueOf(n) ;
n++;
}
for(int i=星期几+dayAmount;i<42;i++)
day[i]="";
return day;
} }
(3)//CalenderPad类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class CalendarPad extends JPanel{
int year,month,day;
CalendarMessage calendarMessage;
JTextField [] showDay;
JLabel title[];
String [] 星期={"SUN日","MON一","TUE二","WED三","THU四","FRI五","SAT六"};
JPanel north,center;
public CalendarPad(){
setLayout(new BorderLayout());
north=new JPanel();
north.setLayout(new GridLayout(1,7));
center=new JPanel();
center.setLayout(new GridLayout(6,7));
add(center,BorderLayout.CENTER);
add(north,BorderLayout.NORTH);
title=new JLabel[7];
for(int j=0;j<7;j++){
title[j]=new JLabel();
title[j].setFont(new Font("TimesRoman",Font.BOLD,12));
title[j].setText(星期[j]);
title[j].setHorizontalAlignment(JLabel.CENTER);
title[j].setBorder(BorderFactory.createRaisedBevelBorder());
north.add(title[j]);
}
title[0].setForeground(Color.red);
title[6].setForeground(Color.blue);
}
public void setShowDayTextField(JTextField [] text){
沈 阳 大 学
课程设计说明书 NO.17
showDay=text;
for(int i=0;i
本文档为【日历记事本-JAVA设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。