Java时钟日立记事本.docx

上传人:b****8 文档编号:11357937 上传时间:2023-02-28 格式:DOCX 页数:40 大小:40.29KB
下载 相关 举报
Java时钟日立记事本.docx_第1页
第1页 / 共40页
Java时钟日立记事本.docx_第2页
第2页 / 共40页
Java时钟日立记事本.docx_第3页
第3页 / 共40页
Java时钟日立记事本.docx_第4页
第4页 / 共40页
Java时钟日立记事本.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

Java时钟日立记事本.docx

《Java时钟日立记事本.docx》由会员分享,可在线阅读,更多相关《Java时钟日立记事本.docx(40页珍藏版)》请在冰豆网上搜索。

Java时钟日立记事本.docx

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

谄左年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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1