太原学院计算机工程系课程设计报告李东峻剖析_第1页
太原学院计算机工程系课程设计报告李东峻剖析_第2页
太原学院计算机工程系课程设计报告李东峻剖析_第3页
太原学院计算机工程系课程设计报告李东峻剖析_第4页
太原学院计算机工程系课程设计报告李东峻剖析_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原学院计算机工程系课程设计报告课程名称简单的记事本姓名李东峻学号20140902410专业班级14科学与技术4班指导教师赵钦2016年12月28日太原学院计算机工程系课程设计报告计算机工程系课程设计报告课程名称:java程序设计报告课程设计题目:简单的记事本成绩:指导教师(签名):班级:14科学与技术4班姓名:李东峻学号:20140902410目录一、设计目的与要求...........................................................................................................................................-3-1.1题目与设计要求....................................................................................................................................-3-1.2本程序涉及的知识点............................................................................................................................-3-二、功能设计.......................................................................................................................................................-3-2.1总体设计.................................................................................................................................................-3-2.2详细设计.................................................................................................................................................-3-三、程序实现.......................................................................................................................................................-5-3.1程序实现时应考虑的问题.....................................................................................................................-5-3.2简单记事本模块核心代码....................................................................................................................-5-四、测试分析.....................................................................................................................................................-15-五、总结.............................................................................................................................................................-21-参考文献.............................................................................................................................................................-21-太原学院计算机工程系课程设计报告一、设计目的与要求1.1题目与设计要求1.1.1实验目的:学习使用树组件1.1.2实验要求:程序中有一个树组件,该树根结点有12个子节点,分别用来表示一年的12个月份。这12个子节点分别有若干个用来代表月份号码的子节点。程序中还有一个文本区,用户可以在文本区中输入信息,然后用鼠标选中一个代表月份号码的子节点,程序将根据子节点和它的父节点计算出日期,然后保存文本区中的内容到一个特定的文件中。每当用户鼠标选中一个代表月份号码的子节点时,如果该日有记载,就将记载的内容显示到文本区中。1.2本程序涉及的知识点1.2.1 重点知识:(1)简单类的封装(2)IO流的操作1.2.2 了解知识:1)JDOM解析xml文档2)GUI界面布局3)鼠标和键盘事件二、功能设计2.1总体设计2.1.1设计GUI界面GUI:图形用户界面,GUI本身即一个界面,这个界面包含一个顶层容器Container,容器内包含menu、button、label等组件2.2详细设计2.2.1登陆验证日记是个人的隐私,通常日记的拥有者不希望他人看到自己所写的日记,为了实现基本的保密,程序进行了用户身份认证,来确认是否有权使用。认证流程如下:太原学院计算机工程系课程设计报告登陆窗口登陆者身份验证登陆失败:重新登陆/取消登陆 登陆成功:进入日记本编辑日记图2-1 身份验证功能流程2.2.2 日记本各部分功能日记本的基本功能就是撰写日记,对写好的日记要能够进行保存、修改、删除等操作。这些都是一个日记本所具有的最基本的功能,除此之外本日记本还增加了其他功能。具体模块功能有:a编辑日记:包括改变字体大小 、改变字体颜色等。管理日记:包括保存及删除日记、按日期分组日记等。音乐播放的功能。编辑背景变换的功能。身份验证的功能。日记文件加密存储的功能。2.2.3 具体功能层出图如下所示:太原学院计算机工程系课程设计报告日记本日记编写 字体大小 字体颜色 音乐播放 背景变化保删编大普红蓝播上下随存除辑字通色色放一一机字字字音曲曲变乐换图2-2 日记本层次功能三、程序实现3.1程序实现时应考虑的问题出这个软件面向的用户是拥有个人电脑,而其具有写日记的习惯的人。用户使用的软件必须简单容易使用,在此基础上尽可能多的提供人性化功能,丰富软件的内涵。同时软件必须尽量保证不会因用户的不当操作而使用户受到严重的经济、财产、精神损失。软件必须具有很强的可靠性,不会无故终止运行、死机、退出等。3.2简单记事本模块核心代码packagediary;importjavax.swing.*;importjavax.swing.tree.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.event.*;importjava.io.*;importsun.audio.*;importjava.util.*;太原学院计算机工程系课程设计报告日记本类classRememberextendsJFrameimplementsTreeSelectionListener,ActionListener{JTree

tree=null;int

i=0,r=255,g=255,b=255;JTextArea

text=newJTextArea("",20,30);DefaultMutableTreeNode

root;DefaultMutableTreeNode

month[]=newDefaultMutableTreeNode[13];

//

对象数组JButton b_save=newJButton("b_del=newJButton(" 删除"),b_fontCommen=newJButton("普通"),b_fontBig=newJButton("

保存"),大字"),b_fontRed=newJButton(" 红色"),b_fontBlue=newJButton(" 蓝色"),b_music_on=newJButton("b_music_n=newJButton(" 上首"),b_music_p=newJButton("

音乐ON/OFF"),下首"),b_bg=newJButton("

背景");StringintString[]

DiaryRoot="diaries\\";music_on=0, m_now=0;;musics={ "Alone.wav","Dreaming.wav","dyinginthesun.wav","EndCredits.wav","lolita.wav","Numb.wav","ThePary.wav","小茉莉.wav"};InputStream

is=null;构造方法,完成界面及树结点初始化,音乐文件列表初始化Remember(){Containercon=getContentPane();DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("

日记本");// 设置以月份为节点的树,不考虑闰年的影响。for(i=1;i<=12;i++){month[i]=newDefaultMutableTreeNode(""+i+"

月");root.add(month[i]);}//设置不同月份的节点for(i=1;i<=12;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+" 日*"));elsemonth[i].add(newDefaultMutableTreeNode(j+" 日"));}}处理有30天的月份elseif(i==4||i==6||i==9||i==11){for(intj=1;j<=30;j++){Strings1=month[i].toString();Strings2=j+" 日.txt";Filefile=newFile(DiaryRoot+s1+s2);如果这一天写了日记则相应节点后面添加一个“*”来标志if(file.exists()==true)month[i].add(newDefaultMutableTreeNode(j+" 日*"));elsemonth[i].add(newDefaultMutableTreeNode(j+" 日"));}}处理有28天的月份else{for(intj=1;j<=28;j++){Strings1=month[i].toString();Strings2=j+" 日.txt";Filefile=newFile(DiaryRoot+s1+s2);如果这一天写了日记则相应节点后面添加一个“*”来标志if(file.exists()==true)month[i].add(newDefaultMutableTreeNode(j+" 日*"));elsemonth[i].add(newDefaultMutableTreeNode(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;i<=12;i++){if(node.getParent()==month[i]){try{Stringtemp=null;// 打开以节点(“*”号影响已经消除)所定义的文本为文件名的文件File f=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){DefaultMutableTreeNodenode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();Stringstr=node.toString();保存文件时去除“*”号str=str.replace("*","");如果是叶节点,则可以对文件进行操作if(node.isLeaf()){保存文件try{//建立以节点所定义的文本为文件名的文件Filef=newFile(DiaryRoot+node.getParent().toString()+str+".txt");// 建立文本文件输出流FileWritertofile=newFileWriter(f);BufferedWriterout=newBufferedWriter(tofile);// 将文本区中的内容写到文件缓冲区out.write(text.getText(),0,(text.getText()).length());// 将缓冲区中的内容写到文件out.flush();tofile.close();out.close();}catch(FileNotFoundExceptione1){}catch(IOExceptione1){}}}处理点出"删除"按钮的事件elseif(e.getSource()==b_del){DefaultMutableTreeNodenode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();Stringstr=node.toString();删除文件时消除“*”好影响str=str.replace("*","");if(node.isLeaf()){try{// 把删除命令写到一个批处理文件中Filef=newFile(DiaryRoot+node.getParent().toString()+str+".txt");FileWritertofile=newFileWriter("del.bat");太原学院计算机工程系课程设计报告BufferedWriterout=newBufferedWriter(tofile);Stringtemp1="del"+f.getAbsoluteFile().toString();out.write(temp1,0,temp1.length());out.newLine();out.flush();tofile.close();out.close();}catch(IOExceptione1){}}调用执行删除文件的方法,del()执行上面创建的批处理文件del.batdel();}处理"大字"按钮事件elseif(e.getSource()==b_fontBig){text.setFont(newFont("Serif",1,18));}处理"普通"按钮事件elseif(e.getSource()==b_fontCommen){text.setFont(newFont("Serif",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_onif(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;try{关闭正在播放的音乐,重新创建并播放新的音乐AudioPlayer.player.stop(is);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_p){m_now=(m_now-1)%6;try{关闭正在播放的音乐,重新创建并播放新的音乐AudioPlayer.player.stop(is);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){ }}处理"背景"按钮事件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;if(c>7)b-=Math.random()*50;}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;if(c>7)b-=Math.random()*50;}text.setBackground(newColor(r,g,b));}}删除文件voiddel(){调用外部命令执行批处理程序try{Runtimece=Runtime.getRuntime();ce.exec("gxy.bat");}catch(IOExceptione1){}}}登陆窗口类classLoginWindowextendsJDialogimplementsActionListener{JPanelp1=newJPanel();// 定义并建立面板JPanelp2=newJPanel();太原学院计算机工程系课程设计报告JPanelp3=newJPanel();JPanelp4=newJPanel();JPanelp5=newJPanel();JTextFieldtxtUserName=newJTextField(15);//JPasswordFieldtxtPwd=newJPasswordField(15);//JButtonok=newJButton(" 确定");JButtoncancel=newJButton(" 取消");publicLoginWindow(){

用户名文本框密码框setModal(true);// 设置模态setBackground(Color.LIGHT_GRAY);// 设置背景色ContainercontentPane=this.getContentPane();// 取出内容面板contentPane.setLayout(newGridLayout(5,1));// 设置布局为5行1列p2.add(newJLabel(" 用户名:"));p2.add(txtUserName);// 将组件添加到中间容器p3.add(newJLabel(" 密 码:"));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类封装单个对象中组件的宽度和高度Dimensionscreen=Toolkit.getDefaultToolkit().getScreenSize();setLocation((screen.width-300)/2,(screen.height-220)/2);setTitle(" 登录窗口");setResizable(false);// 设置窗口大小固定setVisible(true);}添加事件监听器publicvoidactionPerformed(ActionEvente){处理”确定”按钮事件if(e.getSource()==ok||e.getSource()==txtPwd){if(txtUserName.getText().trim().equals("shenbaise")

&&txtPwd.getText().trim().equals("123456"))//

如果用户名为

shenbaise

密码为

123456则正确{太原学院计算机工程系课程设计报告}else{JOptionPane.showMessageDialog(null," 用户名或密码错误!");txtUserName.requestFocus();// 设置焦点txtUserName.setSelectionStart(0);// 设置选中文本开始位置txtUserName.setSelectionEnd(txtUserName.getText().length());}}处理”取消”按钮事件elseif(e.getSource()==cancel){dispose();System.exit(0);//

退出程序}else if(e.getSou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论