Java时钟日立记事本.docx
《Java时钟日立记事本.docx》由会员分享,可在线阅读,更多相关《Java时钟日立记事本.docx(40页珍藏版)》请在冰豆网上搜索。
Java时钟日立记事本
枣庄学院
信息科学与工程学院
课程设计任务书
题目
时钟日历记事本
学号:
姓名:
专业:
计算机科学与技术
课程:
Java程序设计
指导教师:
职称:
讲师
完成时间:
2015年11月----2015年12月
枣庄学院信息科学与工程学院制
2015年11月27日
课程设计任务书及成绩评定
课程设计的任务和具体要求
使用Java语言开发一款功能完整、界面美观、运行良好的软件,软件题目自拟。
写
字板、计算器类似简单的小软件1人1组。
信息管理系统软件最多3人1组。
游戏软件最多2
人1组。
以通用的软件工程制设计规范撰写一个相应的书面文档,在该文档中要包括需求分析、系统设计(软件用例图、系统流程图、数据库设计)、系统详细设计(每个功能模
块关键代码和运行截图)。
指导教师签字:
日期:
2015年11月
指导教师评语
成绩:
指导教师签字:
日期:
课程设计所需软件、硬件等
硬件环境
处理器:
PentiumIV以上,主频至少2.0G;内存:
512M以上;
显卡:
TNT2显示适配器;
硬盘:
80G以上。
软件环境
给出本系统开发和运行所需软件环境。
案例如下:
操作系统:
Windows8.1操作系统;
开发工具:
Eclipse应用软件开发工具;
课程设计进度计划
起至日期
工作内容
备注
10月26日-10月31日
11月01日-11月04日
该软件将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或者查看某个日期的记录内容。
XXXX
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
[1].肖磊、李钟尉,Java实用教程,人民邮电出版社,2008.5
[2].孙全党王吴迪赵枫朝,Java程序设计应用教程,电子工业出版社,2006.2
[3].赵玉阳,Java从入门到精通,清华大学出版社,2006.8
[4].耿祥义,《Java课程设计》,清华大学出版社,2004.1,第一版
1、引言.4
1.1项目的名称.4
1.2项目背景和目标4
2、需求分析
2.1系统概况4
2.2功能需求描述...5
3、总体设计
3.1开发与设计的总体思想5
3.2关系图....5
3.3Java源文件及其功能...5
3.4系统详细设计.6
4、运行结果8
5、程序代码
5.1CalendarPad..11
5.2Clock20
5.3Month23
5.4Year..25
5.5Notepad.....26
&总结31
1、引言
1.1项目的名称
时钟日历记事本
1.2项目背景和目标
目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等
重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。
按照教学培养计划要求,学生在学习完课本中指定课时的知识后,应安排一定课时的课程设计。
其主要目的是使学生深入理解并实践
在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等。
故此日历记事本”应运而生。
本课程设计是为了配合Java程序设计课程,帮助学生深入学习掌握Java语言,熟练运用这个工具而设
立的课程。
通过课程设计各个项目的综合训练,加强学生对JAVA语言的理解,检验学生对专业理论知识理
解与掌握的程度,锻炼学生综合运用JAVA程序设计处理所学的知识实际分析问题、解决问题的能力,使课
堂上的理论在实践中得到运用,提高学生的综合素质,为学生毕业后的实际工作打好基础。
同时也满足了大
多数同学对于一款简单易用的日记本软件的需求。
2、需求分析
2.1系统概述
用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期;用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,显示系统时间;用户可以查询到某个月的所有的提示信息。
是个平时写日记、备忘录的好工具。
2.2功能需求描述
时钟日历记事本的总体目标是为使用者记录、管理个人日记以及每日心里路程,其中主要实现以下功能
1、显示信息:
用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
2、查询信息:
用户可以查询到某个月的所有的提示信息。
3、删除信息:
用户可以删除添加的信息。
4、显示时钟
3、总体设计
3.1开发与设计的总体思想
创建主类CalendarPad控制整个程序的调控与连接,该类负责创建本时钟日历记事本程序
的主窗口,含有main方法,程序从该类开始执行。
并创建Year、Month、NotePad、Clock四
个类分别负责年份、月份、记事本以及时钟的创建及管理。
3.2系统模块结构图
3.3Java源文件及其功能
表1-1java源文件及其功能
序号
文件名
主要功能
备注
1
CalendarPad.java
创建实用万年历记事本程序的主窗口
含有main方法
2
NotePad.java
该文件负责创建记事本
3
Year.java
该文件负责创建管理年份的对象
4
Month.java
该文件负责创建管理月份的类对象
5
Clock.java
该文件负责创建管理时钟的类对象
3.4系统详细设计
主类CalendarPad
1成员变量
成员变量描述
变量类型
名称
年、月、日
int
Year,month,day
保存日志的散列表
Hashtable
hashtable
存放散列表的文件
File
file
显示日期
JTextField[]
showDay
日历对象
Calendar
日历
记事本对象
NotePad
notepad
月
Month
负责改变月
年
Year
负责改变年
2•方法
名称
功能
备注
CalendarPad
创建程序主窗口
构造方法
设置日历牌
设置日历的年份、月份
排列号码
排列月份中的号码
mousePressed
处理MouseEvent事件
接口方法
mian
程序开始运行
记事本NotePad
「•成员变量.
描述变量类型名称
文本输入区
保存、删除日志的按钮
保存日志的散列表
保存散列表的文件
JTextAreaButtonHashtableFile
text
保存日志、删除日志
table
file
记录日志的年、月、日
int
year,month,day
2•方法
名称
功能
备注
NotePad
创建记事本对象
构造方法
setYear
设置年份
getYear
获取年份
setMonth
设置月份
getMonth
获取月份
setDay
设置日期
getDay
获取日期
获取日志内容
获取日志内容
保存日志
保存日志
删除日志
删除日志
actionPeformed
处理ActionEvent事件
接口方法
年Year
1•成员变量
描述
变量类型
名称
表示年份的整数(负数表示
int
year
公兀前)
显示年份的文本条
JTextField
showYear
负责增减年份的按钮
JButton
明年,去年
2•方法
名称
功能
备注
Year
创建“年”对象
构造方法
setYear
设置年份
getYear
获取年份
actionPeformed
处理ActionEvent事件
接口方法
月Month
1•成员变量
描述
变量类型
名称
表示月份的整数(负数表示
int
month
公元前)
显示月份的文本条
JTextField
ShowMonth
负责增减月份的按钮
JButton
上月,下月
2•方法
名称
功能
备注
Month
创建“月”对象
构造方法
setMonth
设置月份
getMonth
获取月份
actionPeformed
处理ActionEvent事件
接口方法
时钟Clock
1•成员变量
描述
变量类型
名称
表示时钟
JFrame
Clock
显示时间
Jlabel
ShowMonth
2•方法
名称
功能
备注
Clock
创建“时钟”对象”
构造方法
Linsterwindows
设置监听
calendar
获取时间,时分秒
Calendar
gregrion
画笔,设置秒针等
actionPeformed
处理ActionEvent事件
接口方法
4、运行结果
」年
2015T年|上R
11下阡
5MH
见■三
星期阿
ana
1
2
3
4
5
E
7
S
0
10
11
12
13
H
15
1€
17
1fi
19
料
?
1
22
23
24
25
26
27
2£
鶴
谄左年filfiXlESU靳直年询却乘示处稠语回车确镒
月窗日
18^1LL冊】隐曰西血帝时钟
上琳
2D15
“年
上月
11
f月
2015SF11月2丁日
年期C1
年?
1-
広!
M二
51*=.
年FflES
T*1/i
^TilA
1
2
3
4
5
5
r
«
0
10
11
12
13
14
151«17IS10
12
2J
24
2S
2b
30
iSN纶住i辐扎fli碱扎師去注松血數占k公匸苛人匸回牟追矩
询问
E(N)
53示则讪
Cack
2016SFl1tl27LJ
上4加馆
11
hri
E.Rflii
BAtn
星MA
1
2
3
4
5
T
B
9
IP
11
1J
17
14
15
IS
17
ie
艸
20
2i
24
27
2ft
U4
靑亡牛ffl切JWJk前靈期I棗廠直示沙Wlh腼车毗
5、程序代码
5.1CalendarPad
packagechll.demo;
importjava.util.Calendar;
importjavax.swing.*;
importch11.demo.Month;
importch11.demo.NotePad;
importch11.demo.Year;
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)//CalendarPad构造方法
{
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;j<7;j++)
{
title[j]=newJLabel();〃星期一至星期五
title[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;i<42;i++)
{
showDay[i]=newJTextField();
showDay[i].addMouseListener(this);
showDay[i].setEditable(false);
leftCenter.add(showDay[i]);〃天数
}
日历=Calendar.getlnstance();
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)
{
}
}
notepad=newNotePad(this);
rightPanel.add(notepad);
设置日历牌(year,month);
addWindowListener(newWindowAdapter()〃添加适配器,和电脑系统时间匹配
{publicvoidwindowClosing(WindowEvente)
{
System.exit(O);
}
});
setVisible(true);
setBounds(100,50,720,300);〃窗口大小
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);//31天的月份
}
elseif(month==4||month==6||month==9||month==11)
{
排列号码(星期几,30);//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));〃
天数的字体,显示今天是第几天
}
else
{
showDay[i].setFont(newFont("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(inti=0;i<星期几;i++)
{
showDay[i].setText("");〃遍历出星期
}
for(inti=星期几+月天数;i<42;i++)
{
showDay[i].setText("");〃对应星期显示出天数
}
}
publicintgetYear()//get,set方法
{
returnyear;
}
publicvoidsetYear(inty)
{
year=y;
notepad.setYear(year);
}
publicintgetMonth()
{
returnmonth;
}
publicvoidsetMonth(intm)
{
month=m;
notepad.setMonth(month);
}
publicintgetDay()
{
returnday;
}
publicvoidsetDay(intd)
{
day=d;
notepad.setDay(day);
}
publicHashtablegetHashtable()
{
returnhashtable;
}
publicFilegetFile()
{
returnfile;
}
publicvoidmousePressed(MouseEvente)//接受鼠标的事件,获取日志的内容,
{
JTextFieldsource=(JTextField)e.getSource();
try{
day=Integer.parselnt(source.getText());
notepad.setDay(day);
notepad.设置信息条(year,month,day);
notepad.设置文本区(null);
notepad.获取日志内容(year,month,day);
}
catch(Exceptionee)
{
}
}
publicvoidmouseClicked(MouseEvente)
{
}
publicvoidmouseReleased(MouseEvente)
{
}
publicvoidmouseEntered(MouseEvente)
{
}
publicvoidmouseExited(MouseEvente)
{
}
publicstaticvoidmain(Stringargs[])
{
Calendarcalendar=Calendar.getlnstance();
inty=calendar.get(Calendar.YEAR);
intm=calendar.get(Calendar.MONTH)+1;
intd=calendar.get(Calendar.DAY_OF_MONTH);newCalendarPad(y,m,d);
}
}
5.2Clock
packagechll.demo;
//packagecom.clock;
importjava.awt.BasicStroke;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.Insets;
importjava.awt