1、java课程设计日记本1 需求分析 日记本是很平常的东西,很多人都有记日记的习惯,有人记账,有人记事、有人记下心情。随着计算机技术的发展,很多家庭都买了电脑,开始上网,开始使用电脑来办公、打字等。所写现在也有很多的人在使用电脑写小说,写博客等,受此启发我就萌生了编写一个日记本,用电脑来写日记的想法。很多事我们不想忘记,于是写进日记本里,多年后翻出来再看看,很是惬意。大多数人都使用的是纸质的日记本,这中日记很难保存,容易丢失,也容易遭到水浸等物理破坏,这样我们的日记就丢了。同纸质的日记本相比较,用软件日记本不仅环保,而且安全方便,不怕被别人偷看。软件日记本可以很方便的携带只要存在电脑硬盘或者U盘
2、中就可以了。1.1用户分析 这个软件面向的用户是拥有个人电脑,而其具有写日记的习惯的人。用户使用的软件必须简单容易使用,在此基础上尽可能多的提供人性化功能,丰富软件的内涵。同时软件必须尽量保证不会因用户的不当操作而使用户受到严重的经济、财产、精神损失。软件必须具有很强的可靠性,不会无故终止运行、死机、退出等。1.1.1用户要求具备以下基本功能: a 编辑日记:包括改变字体大小 、改变字体颜色等。 b 管理日记:包括保存及删除日记、按日期分组日记等。1.1.2除以上功能外,可另曾特色功能: a 音乐播放的功能。 b 编辑背景变换的功能。 c 身份验证的功能。 d 日记文件加密存储的功能。1.2软
3、件界面与接口需求1.2.1界面需求界面的原则要求:方便、简洁、美观、一致等。整个界面要保持友好、简易的风格。a输入设备:键盘、鼠标。b输出设备:显示器。c显示风格:应用程序窗口界面。1.2.2接口需求软件功能比较简单,暂时不需要接口方面的需求。1.3目标软件其他需求a.运行环境需求:要求安装Java Development Kit(JDK) v1.5或以上版本环境。 b.进度要求:2009年6月底必须完成开发,并通过测试。2 概要设计 本课程设计是一个实用的日记本程序,主要实现日记撰写、按月份、日期分类日记、字体设置、身份认证、音乐播放、背景随机变化等。一个普通的日记本无需使用数据库,如果要使
4、用数据库则没有适合的数据库可以使用,桌面数据库太小不能满足需求,而其他大型数据库则又昂贵而不合算,所写我要开发的日记将以文本文件(windows下的.txt文件格式)来存储,这样做的好处是显而易见的。21登陆验证日记是个人的隐私,通常日记的拥有者不希望他人看到自己所写的日记,为了实现基本的保密,程序进行了用户身份认证,来确认是否有权使用。认证流程如下:图 2-1 身份验证功能流程2.2 日记本各部分功能 日记本的基本功能就是撰写日记,对写好的日记要能够进行保存、修改、删除等操作。这些都是一个日记本所具有的最基本的功能,除此之外本日记本还增加了其他功能。具体模块功能有:a 编辑日记:包括改变字体
5、大小 、改变字体颜色等。 b 管理日记:包括保存及删除日记、按日期分组日记等。 c 音乐播放的功能。 d 编辑背景变换的功能。 e 身份验证的功能。 f 日记文件加密存储的功能。具体功能层出图如下所示:图 2-2 日记本层次功能3 详细设计 下面是程序的全部代码与详细注释。/* 程序文件名称:Diary.java* 功能: 日历本*/package diary;import javax.swing.*;import javax.swing.tree.*;import java.awt.*;import java.awt.event.*;import javax.swing.event.*;im
6、port java.io.*;import sun.audio.*;import java.util.*;/ 日记本类class Remember extends JFrame implements TreeSelectionListener,ActionListener JTree tree=null; int i=0,r=255,g=255,b=255; JTextArea text=new JTextArea( ,20,30); DefaultMutableTreeNode root; DefaultMutableTreeNode month=new DefaultMutableTree
7、Node13; /对象数组 JButton b_save=new JButton(保存), b_del=new JButton(删除), b_fontCommen=new JButton(普通), b_fontBig=new JButton(大字), b_fontRed=new JButton(红色), b_fontBlue=new JButton(蓝色), b_music_on = new JButton(音乐ON/OFF), b_music_n = new JButton(上首), b_music_p = new JButton(下首),b_bg=new JButton(背景); Stri
8、ng DiaryRoot=diaries; int music_on = 0, m_now=0; String musics= Alone.wav, Dreaming.wav, dying in the sun.wav, End Credits.wav, lolita.wav, Numb.wav, The Pary.wav, 小茉莉.wav; InputStream is=null; /构造方法,完成界面及树结点初始化 ,音乐文件列表初始化 Remember() Container con=getContentPane(); DefaultMutableTreeNode root=new De
9、faultMutableTreeNode(日记本); /设置以月份为节点的树,不考虑闰年的影响。 for(i=1;i=12;i+) monthi=new DefaultMutableTreeNode(+i+月); root.add(monthi); /设置不同月份的节点 for(i=1;i=12;i+) /处理有31天的月份 if(i=1|i=3|i=5|i=7|i=8|i=10|i=12) for(int j=1;j=31;j+) String s1=monthi.toString(); String s2=j+日.txt; File file=new File(DiaryRoot+s1+s
10、2); /如果这一天写了日记则相应节点后面添加一个“*”来标志 if(file.exists()=true) monthi.add(new DefaultMutableTreeNode(j+日*); else monthi.add(new DefaultMutableTreeNode(j+日); /处理有30天的月份 else if(i=4|i=6|i=9|i=11) for(int j=1;j=30;j+) String s1=monthi.toString(); String s2=j+日.txt; File file=new File(DiaryRoot+s1+s2); /如果这一天写了
11、日记则相应节点后面添加一个“*”来标志 if(file.exists()=true) monthi.add(new DefaultMutableTreeNode(j+日*); else monthi.add(new DefaultMutableTreeNode(j+日); /处理有28天的月份 else for(int j=1;j=28;j+) String s1=monthi.toString(); String s2=j+日.txt; File file=new File(DiaryRoot+s1+s2); /如果这一天写了日记则相应节点后面添加一个“*”来标志 if(file.exist
12、s()=true) monthi.add(new DefaultMutableTreeNode(j+日*); else monthi.add(new DefaultMutableTreeNode(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.addActionLi
13、stener(this); b_fontCommen.addActionListener(this); b_fontBig.addActionListener(this); b_fontBlue.addActionListener(this); b_bg.addActionListener(this); /创建树及其面板 tree =new JTree(root); JPanel p=new JPanel(); /设置边界布局 p.setLayout(new BorderLayout(); JScrollPane scrollpane_1=new JScrollPane(text); /带滚动
14、条的面板放置到中间,可以占据最大空间位置 p.add(scrollpane_1,BorderLayout.CENTER); /设置面板,放置保存和删除按钮等按钮,面板放在上部 JPanel p_1=new JPanel(); 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
15、_bg); /设置布局 p.add(p_1,BorderLayout.NORTH); JScrollPane scrollpane_2=new JScrollPane(tree); JSplitPane splitpane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scrollpane_2,p); tree.addTreeSelectionListener(this); con.add(splitpane); /设置窗体适配器,关闭功能 addWindowListener(new WindowAdapter() public void wi
16、ndowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,150,500,600); /处理树节点事件 public void valueChanged(TreeSelectionEvent e) /清空文本区中的内容 text.setText( ); if(e.getSource()=tree) /定义被选中的节点 DefaultMutableTreeNode node= (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); /
17、如果是叶节点,则可以对文件进行操作 if(node.isLeaf() /日记以“-月-日.txt”的形式存储,所以要消除“*”号的影响 String str=node.toString(); str=str.substring(0,str.length()-1); for(int i=0;i0.5时做减法负责做加法, double op = Math.random(); double c = Math.random()*10; if(op0.5) / 使r,g,b三个标志RGB的变量减小一个随机的大小小在0-50之间的数 if(c4 & c7) b-=Math.random()*50; if(op=0.5) / 使r,g,b三个标志RGB的变量增加一个随机的大小小在0-50之间的数 if(c4 & c7) b-=Math.random()*50; text.setBackground(new Color(r,g,b); /删除文件 void del() /
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1