已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 需求分析日记本是很平常的东西,很多人都有记日记的习惯,有人记账,有人记事、有人记下心情。随着计算机技术的发展,很多家庭都买了电脑,开始上网,开始使用电脑来办公、打字等。所写现在也有很多的人在使用电脑写小说,写博客等,受此启发我就萌生了编写一个日记本,用电脑来写日记的想法。很多事我们不想忘记,于是写进日记本里,多年后翻出来再看看,很是惬意。大多数人都使用的是纸质的日记本,这中日记很难保存,容易丢失,也容易遭到水浸等物理破坏,这样我们的日记就丢了。同纸质的日记本相比较,用软件日记本不仅环保,而且安全方便,不怕被别人偷看。软件日记本可以很方便的携带只要存在电脑硬盘或者U盘中就可以了。1.1用户分析这个软件面向的用户是拥有个人电脑,而其具有写日记的习惯的人。用户使用的软件必须简单容易使用,在此基础上尽可能多的提供人性化功能,丰富软件的内涵。同时软件必须尽量保证不会因用户的不当操作而使用户受到严重的经济、财产、精神损失。软件必须具有很强的可靠性,不会无故终止运行、死机、退出等。1.1.1用户要求具备以下基本功能:a 编辑日记:包括改变字体大小、改变字体颜色等。b 管理日记:包括保存及删除日记、按日期分组日记等。1.1.2除以上功能外,可另曾特色功能:a 音乐播放的功能。b 编辑背景变换的功能。c 身份验证的功能。d 日记文件加密存储的功能。1.2软件界面与接口需求1.2.1界面需求界面的原则要求:方便、简洁、美观、一致等。整个界面要保持友好、简易的风格。a输入设备:键盘、鼠标。b输出设备:显示器。c显示风格:应用程序窗口界面。1.2.2接口需求软件功能比较简单,暂时不需要接口方面的需求。1.3目标软件其他需求a.运行环境需求:要求安装Java Development Kit(JDK) v1.5或以上版本环境。 b.进度要求:2009年6月底必须完成开发,并通过测试。2 概要设计本课程设计是一个实用的日记本程序,主要实现日记撰写、按月份、日期分类日记、字体设置、身份认证、音乐播放、背景随机变化等。一个普通的日记本无需使用数据库,如果要使用数据库则没有适合的数据库可以使用,桌面数据库太小不能满足需求,而其他大型数据库则又昂贵而不合算,所写我要开发的日记将以文本文件(windows下的.txt文件格式)来存储,这样做的好处是显而易见的。21登陆验证日记是个人的隐私,通常日记的拥有者不希望他人看到自己所写的日记,为了实现基本的保密,程序进行了用户身份认证,来确认是否有权使用。认证流程如下:登陆窗口登陆者身份验证登陆失败:重新登陆/取消登陆登陆成功:进入日记本编辑日记图 2-1 身份验证功能流程2.2 日记本各部分功能日记本的基本功能就是撰写日记,对写好的日记要能够进行保存、修改、删除等操作。这些都是一个日记本所具有的最基本的功能,除此之外本日记本还增加了其他功能。具体模块功能有:a 编辑日记:包括改变字体大小、改变字体颜色等。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.*;import java.io.*;import sun.audio.*;import java.util.*;/ 日记本类class Remember extends JFrame implements TreeSelectionListener,ActionListener JTree tree=null; inti=0,r=255,g=255,b=255; JTextArea text=new JTextArea( ,20,30); DefaultMutableTreeNode root; DefaultMutableTreeNode month=new DefaultMutableTreeNode13; /对象数组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(背景);StringDiaryRoot=diaries;intmusic_on = 0,m_now=0;Stringmusics=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 DefaultMutableTreeNode(日记本); /设置以月份为节点的树,不考虑闰年的影响。 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+s2); /如果这一天写了日记则相应节点后面添加一个“*”来标志 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); /如果这一天写了日记则相应节点后面添加一个“*”来标志 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.exists()=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.addActionListener(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); /带滚动条的面板放置到中间,可以占据最大空间位置 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_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 windowClosing(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(); /如果是叶节点,则可以对文件进行操作 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() / 调用外部命令执行批处理程序 try Runtime ce=Runtime.getRuntime(); ce.exec(gxy.bat); catch(IOException e1) /登陆窗口类class LoginWindow extends JDialog implements ActionListener JPanel p1=new JPanel(); /定义并建立面板 JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JPanel p5=new JPanel();JTextField txtUserName=new JTextField(15); /用户名文本框JPasswordField txtPwd=new JPasswordField(15);/密码框JButton ok=new JButton(确定);JButton cancel=new JButton(取消);public LoginWindow() setModal(true); /设置模态 setBackground(Color.LIGHT_GRAY);/设置背景色 Container contentPane=this.getContentPane();/取出内容面板 contentPane.setLayout(new GridLayout(5,1); /设置布局为5行1列 p2.add(new JLabel(用户名:);p2.add(txtUserName); /将组件添加到中间容器 p3.add(new JLabel(密 码:);p3.add(txtPwd); p4.add(ok);p4.add(cancel); ok.addActionListener(this); cancel.addActionListener(this); txtUserName.addActionListener(this); txtPwd.addActionListener(this); contentPane.add(p1); /将面板添加到内容面板 contentPane.add(p2); contentPane.add(p3); contentPane.add(p4); contentPane.add(p5); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);/设置自动关闭窗口setSize(300,220);/ Dimension 类封装单个对象中组件的宽度和高度 Dimension screen=Toolkit.getDefaultToolkit().getScreenSize(); setLocation(screen.width-300)/2,(screen.height-220)/2); setTitle(登录窗口); setResizable(false); /设置窗口大小固定 setVisible(true);/添加事件监听器public void actionPerformed(ActionEvent e)/处理”确定”按钮事件 if(e.getSource()=ok|e.getSource()=txtPwd) if(txtUserName.getText().trim().equals(shenbaise) & txtPwd.getText().trim().equals(123456)/如果用户名为shenbaise密码为123456 则正确 dispose(); /关闭登录窗口 else JOptionPane.showMessageDialog(null,用户名或密码错误!); txtUserName.requestFocus(); /设置焦点 txtUserName.setSelectionStart(0); /设置选中文本开始位置 txtUserName.setSelectionEnd(txtUserName.getText().length(); /处理”取消”按钮事件 else if(e.getSource()=cancel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东珠海高新技术产业开发区投资促进中心招聘事业单位考试题及答案
- 2025年下半年嘉兴市海洋气象台招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年商洛市事业单位招考工作人员(190名)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年商丘市睢县事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年唐山迁安市机构编制委员会办公室卫生局招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林长春大学招聘高级人才8人(4号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省长春工业大学马克思主义理论专业教师招聘5人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉安水务集团招聘1名易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉安安福县数字化城管指挥中心招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年台州市黄岩区委党校招考教师易考易错模拟试题(共500题)试卷后附参考答案
- 河南省永城市实验中学2023-2024学年七年级上学期期中语文试题(解析版)
- 中国融通集团招聘笔试题
- 《土木工程新材料》PPT课件-2024鲜版
- 机械制图-第二章投影基础
- 血液科护士与患者沟通技巧
- 窒息中毒事故专项应急预案
- 国家能源集团笔试企业文化知识
- Axure基础培训课件
- HAF101核动力厂厂址评价安全规定
- 口腔器械消毒灭菌技术操作规范
- 纺织品常规整理课件 第十章 防缩整理
评论
0/150
提交评论