java课程设计日记本Word文档下载推荐.docx

上传人:b****6 文档编号:19570767 上传时间:2023-01-07 格式:DOCX 页数:18 大小:58.90KB
下载 相关 举报
java课程设计日记本Word文档下载推荐.docx_第1页
第1页 / 共18页
java课程设计日记本Word文档下载推荐.docx_第2页
第2页 / 共18页
java课程设计日记本Word文档下载推荐.docx_第3页
第3页 / 共18页
java课程设计日记本Word文档下载推荐.docx_第4页
第4页 / 共18页
java课程设计日记本Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

java课程设计日记本Word文档下载推荐.docx

《java课程设计日记本Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java课程设计日记本Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

java课程设计日记本Word文档下载推荐.docx

1.2.2接口需求

软件功能比较简单,暂时不需要接口方面的需求。

1.3目标软件其他需求

a.运行环境需求:

要求安装JavaDevelopmentKit(JDK)v1.5或以上版本环境。

b.进度要求:

2009年6月底必须完成开发,并通过测试。

2概要设计

本课程设计是一个实用的日记本程序,主要实现日记撰写、按月份、日期分类日记、字体设置、身份认证、音乐播放、背景随机变化等。

一个普通的日记本无需使用数据库,如果要使用数据库则没有适合的数据库可以使用,桌面数据库太小不能满足需求,而其他大型数据库则又昂贵而不合算,所写我要开发的日记将以文本文件(windows下的.txt文件格式)来存储,这样做的好处是显而易见的。

2.1登陆验证

日记是个人的隐私,通常日记的拥有者不希望他人看到自己所写的日记,为了实现基本的保密,程序进行了用户身份认证,来确认是否有权使用。

认证流程如下:

图2-1身份验证功能流程

2.2日记本各部分功能

日记本的基本功能就是撰写日记,对写好的日记要能够进行保存、修改、删除等操作。

这些都是一个日记本所具有的最基本的功能,除此之外本日记本还增加了其他功能。

具体模块功能有:

a编辑日记:

c音乐播放的功能。

d编辑背景变换的功能。

e身份验证的功能。

f日记文件加密存储的功能。

具体功能层出图如下所示:

图2-2日记本层次功能

3详细设计

下面是程序的全部代码与详细注释。

/***************************************

*程序文件名称:

Diary.java

*功能:

日历本

***************************************/

packagediary;

importjavax.swing.*;

importjavax.swing.tree.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.event.*;

importjava.io.*;

importsun.audio.*;

importjava.util.*;

//日记本类

classRememberextendsJFrameimplementsTreeSelectionListener,ActionListener

{

JTreetree=null;

inti=0,r=255,g=255,b=255;

JTextAreatext=newJTextArea("

"

20,30);

DefaultMutableTreeNoderoot;

DefaultMutableTreeNodemonth[]=newDefaultMutableTreeNode[13];

//对象数组

JButtonb_save=newJButton("

保存"

),

b_del=newJButton("

删除"

b_fontCommen=newJButton("

普通"

b_fontBig=newJButton("

大字"

b_fontRed=newJButton("

红色"

b_fontBlue=newJButton("

蓝色"

b_music_on=newJButton("

音乐ON/OFF"

b_music_n=newJButton("

上首"

b_music_p=newJButton("

下首"

b_bg=newJButton("

背景"

);

StringDiaryRoot="

diaries\\"

;

intmusic_on=0,m_now=0;

String[]musics={"

Alone.wav"

"

Dreaming.wav"

dyinginthesun.wav"

EndCredits.wav"

lolita.wav"

Numb.wav"

ThePary.wav"

小茉莉.wav"

};

InputStreamis=null;

//构造方法,完成界面及树结点初始化,音乐文件列表初始化

Remember()

{

Containercon=getContentPane();

DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("

日记本"

//设置以月份为节点的树,不考虑闰年的影响。

for(i=1;

i<

=12;

i++)

month[i]=newDefaultMutableTreeNode("

"

+i+"

月"

root.add(month[i]);

}

//设置不同月份的节点

//处理有31天的月份

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)

for(intj=1;

j<

=31;

j++){

Strings1=month[i].toString();

Strings2=j+"

日.txt"

Filefile=newFile(DiaryRoot+s1+s2);

//如果这一天写了日记则相应节点后面添加一个“*”来标志

if(file.exists()==true)

month[i].add(newDefaultMutableTreeNode(j+"

日*"

));

else

日"

//处理有30天的月份

elseif(i==4||i==6||i==9||i==11)

=30;

//处理有28天的月份

else

{

=28;

j++){

//设置监听

b_save.addActionListener(this);

b_del.addActionListener(this);

b_music_on.addActionListener(this);

b_music_n.addActionListener(this);

b_music_p.addActionListener(this);

b_fontRed.addActionListener(this);

b_fontCommen.addActionListener(this);

b_fontBig.addActionListener(this);

b_fontBlue.addActionListener(this);

b_bg.addActionListener(this);

//创建树及其面板

tree=newJTree(root);

JPanelp=newJPanel();

//设置边界布局

p.setLayout(newBorderLayout());

JScrollPanescrollpane_1=newJScrollPane(text);

//带滚动条的面板放置到中间,可以占据最大空间位置

p.add(scrollpane_1,BorderLayout.CENTER);

//设置面板,放置"

和"

按钮等按钮,面板放在上部

JPanelp_1=newJPanel();

p_1.add(b_save);

p_1.add(b_del);

p_1.add(b_fontCommen);

p_1.add(b_fontBig);

p_1.add(b_fontRed);

p_1.add(b_fontBlue);

p_1.add(b_music_on);

p_1.add(b_music_n);

p_1.add(b_music_p);

p_1.add(b_bg);

//设置布局

p.add(p_1,BorderLayout.NORTH);

JScrollPanescrollpane_2=newJScrollPane(tree);

JSplitPanesplitpane=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scrollpane_2,p);

tree.addTreeSelectionListener(this);

con.add(splitpane);

//设置窗体适配器,关闭功能

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}});

setVisible(true);

setBounds(100,150,500,600);

//处理树节点事件

publicvoidvalueChanged(TreeSelectionEvente)

//清空文本区中的内容

text.setText("

if(e.getSource()==tree)

//定义被选中的节点

DefaultMutableTreeNodenode=

(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();

//如果是叶节点,则可以对文件进行操作

if(node.isLeaf())

//日记以“-月-日.txt”的形式存储,所以要消除“*”号的影响

Stringstr=node.toString();

str=str.substring(0,str.length()-1);

for(inti=0;

if(node.getParent()==month[i])

try{

Stringtemp=null;

//打开以节点(“*”号影响已经消除)所定义的文本为文件名的文件

Filef=newFile(DiaryRoot+node.getParent().toString()+str+"

.txt"

//建立文本文件输入流,读取文件

FileReaderfile=newFileReader(f);

BufferedReaderin=newBufferedReader(file);

//将读到的文件内容添加到文本区中,按行读入

while((temp=in.readLine())!

=null)

text.append(temp+'

\n'

file.close();

in.close();

catch(FileNotFoundExceptione1){}

catch(IOExceptione1){}

}

//处理按钮事件

publicvoidactionPerformed(ActionEvente)

//处理"

按钮的事件

if(e.getSource()==b_save)

//保存文件时去除“*”号

str=str.replace("

*"

"

//保存文件

try{

//建立以节点所定义的文本为文件名的文件

//建立文本文件输出流

FileWritertofile=newFileWriter(f);

BufferedWriterout=newBufferedWriter(tofile);

//将文本区中的内容写到文件缓冲区

out.write(text.getText(),0,(text.getText()).length());

//将缓冲区中的内容写到文件

out.flush();

tofile.close();

out.close();

//处理点出"

elseif(e.getSource()==b_del)

//删除文件时消除“*”好影响

//把删除命令写到一个批处理文件中

FileWritertofile=newFileWriter("

del.bat"

Stringtemp1="

del"

+f.getAbsoluteFile().toString();

out.write(temp1,0,temp1.length());

out.newLine();

catch(IOExceptione1){}

//调用执行删除文件的方法,del()执行上面创建的批处理文件del.bat

del();

//处理"

按钮事件

elseif(e.getSource()==b_fontBig)

text.setFont(newFont("

Serif"

1,18));

elseif(e.getSource()==b_fontCommen)

0,12));

text.setForeground(Color.black);

elseif(e.getSource()==b_fontRed)

text.setForeground(Color.red);

elseif(e.getSource()==b_fontBlue)

text.setForeground(Color.blue);

音乐ON"

elseif(e.getSource()==b_music_on)

//判断音乐开关变量music_on

if(music_on==0)music_on=1;

elseif(music_on==1)music_on=0;

try

{

//如果正在播放时被按下,就停止当前正在播放的音乐

AudioPlayer.player.stop(is);

//用输入流创建一个AudioStream对象,并打开给对象

is=getClass().getResource("

sounds\\"

+musics[m_now]).openStream();

if(music_on==1)

{

//播放音乐,播放完毕后关闭

AudioPlayer.player.start(is);

while(is==null)

AudioPlayer.player.stop(is);

}

}

catch(IOExceptione1){}

、"

if(e.getSource()==b_music_n)

//实现循环,当到达最后时可以返回到第一个音乐

m_now=(m_now+1)%6;

//关闭正在播放的音乐,重新创建并播放新的音乐

AudioPlayer.player.stop(is);

if(e.getSource()==b_music_p)

m_now=(m_now-1)%6;

is=getClass().getResource("

elseif(e.getSource()==b_bg)

//随机变化背景颜色

//随机+-操作,当op>

0.5时做减法负责做加法,

doubleop=Math.random();

doublec=Math.random()*10;

if(op>

0.5)

//使r,g,b三个标志RGB的变量减小一个随机的大小小在0-50之间的数

if(c<

4)r-=Math.random()*50;

if(c>

4&

&

c<

7)g-=Math.random()*50;

7)b-=Math.random()*50;

if(op<

=0.5)

//使r,g,b三个标志RGB的变量增加一个随机的大小小在0-50之间的数

if(c<

text.setBackground(newColor(r,g,b));

//删除文件

voiddel()

//

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

当前位置:首页 > 求职职场 > 面试

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

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