记事本课程设计.doc_第1页
记事本课程设计.doc_第2页
记事本课程设计.doc_第3页
记事本课程设计.doc_第4页
记事本课程设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

学生课程设计(论文)题 目: 记事本 学生姓名: 学 号: 所在院(系): 专 业: 班 级: 指 导 教 师: 职称: 年 月 日XXX学院教务处制 本科学生课程设计任务书题目记事本1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)模拟Windows的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能,界面美观。3、主要参考文献1朱福喜.Java语言程序设计(第二版).科学出版社2陈国君等.Java程序设计基础(第二版).清华大学出版社3 Deitel.Java大学基础教程(第六版).电子工业出版社 4 MaryCampione.Java语言导学(第四版).机械工业出版社5 Y.Daniel Liang.Java语言程序设计基础篇(第六版). 机械工业出版社6 Kathy Sierra.Head First Java(第二版).东南大学出版社4、课程设计工作进度计划序号时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。摘 要随着科学技术的快速发展,计算机程序设计早已成为了趋势,JAVA是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。JAV是实践性很强的课程。课程设计师加强实践能力的一个强有力的手段。要求掌握JAVA的应用、编写、上机调试的基本方法。本次课程设计的题目是用模拟Windows的记事本程序,编写一个记事本。要求具备基本的编辑、复制、粘贴、剪切、保存文件等功能。本程序主要用到了Java swing组件和事件监听器,还用到了文件的输入输出流。记事本的界面参考了Windows中的记事本界面,并且根据课程设计要求做了适当的调整。关键词:记事本程序;Java语言;swing组件目 录1 问题描述32 需求分析33 概要设计331自定义类说明.332 程序流程图44 详细设计741 jishiben类的实现742 GUI程序界面设计743 事件处理95 测试分析126 课程设计总结1661设计体会1662致谢16参考文献17附录(源程序清单)18251 问题描述设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。这次课程设计由卢炜、刘秀春、伍霜霜和我四个人合作完成。卢炜负责概要设计,刘秀春负责4.1 jishiben类的实现和4.2 GUI程序界面设计,伍霜霜负责5测试分析。由于4.3事件处理和撰写程序关系密切,这两项都由我负责。并且根据伍霜霜的测试的结果重新调整程序。2 需求分析本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“帮助”三个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件。(4)“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。3 概要设计31自定义类说明3.1.1 类名: jishiben (1)作用: 主类(2)继承的父类: JFrame类 (3)实现的接口: windowListener类与actionListener类(4)成员变量说明:File file=null; /定义一个空文件private JLabel stateBar; /定义一个标签private JTextArea text; /定义编辑区private JMenuBar mb; /定义菜单栏private JMenu files,edit,help; /定义菜单private JMenuItem Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About; /定义菜单项(5)主要成员方法说明:编辑区键盘事件:KeyListener类 如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;窗口的事件监听:windowListener类;菜单项的事件监听:ActionListener类;32 程序流程图3.2.1主流程图开始输入文字?新建打开保存另存为剪切复制粘贴删除查找替换全选关于退出结束图3.1主流程图NY3.2.2 “文件”菜单操作流程图开始“文件”菜单新建另存为File=null打开用JFileChooser()选择所有打开文件路径用unfold()读取所选的文件内容到记事本保存用sava()保存文件用JFileChooser()选择文件另存的路径用sava()保存文件退出或关闭文件是否修改用sava()保存文件Y结束N图3.2 “文件”菜单操作流程图用close()关闭文件3.2.3 “编辑”菜单操作流程图开始“编辑”菜单剪切全选设置修改标签,text.cut()复制用text.copy()实现粘贴设置修改标签,text.paste()删除设置修改标签,text.replaceRange(, start, end);查找替换用FindAndReplace方法实现用text.selectAll()实现退出或关闭文件是否修改用sava()保存文件并结束用close()关闭文件YN图3.3 “编辑”菜单操作流程图3.2.4 “帮助”菜单操作流程图开始“帮助”菜单关于记事本显示记事本的有关信息结束图3.4 “帮助”菜单操作流程图4 详细设计41 jishiben类的实现File file=null; /定义一个空文件private JLabel stateBar; /定义一个标签private JTextArea text; /定义编辑区private JMenuBar mb; /定义菜单栏private JMenu files,edit,help; /定义菜单private JMenuItem Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About; /定义菜单项42 GUI程序界面设计 public jishiben() /构造函数super(记事本); / 菜单栏 mb=new JMenuBar();/*菜单栏的各个菜单项*/files=new JMenu(文件); edit=new JMenu(编辑);help=new JMenu(帮助);/*“帮助”菜单项的下拉菜单*/About=new JMenuItem(关于记事本); /*“文件”菜单项的下拉菜单*/Open=new JMenuItem(打开); New=new JMenuItem(新建);Save=new JMenuItem(保存);SaveAs=new JMenuItem(另存为);Exit=new JMenuItem(退出); /*编辑菜单的四个下拉菜单*/Cut=new JMenuItem(剪切); Copy=new JMenuItem(复制);Paste=new JMenuItem(粘贴);Delete=new JMenuItem(删除);Find=new JMenuItem(查找);Replace=new JMenuItem(替换);SelectAll=new JMenuItem(全选);stateBar=new JLabel(未修改); /添加标签stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder();mb.add(files); /添加控键mb.add(edit);mb.add(help);files.add(New);files.add(Open);files.add(Save);files.add(SaveAs);files.addSeparator(); / 分隔线 files.add(Exit); edit.add(Cut);edit.add(Copy);edit.add(Paste);edit.add(Delete);edit.addSeparator(); / 分隔线 edit.add(Find);edit.add(Replace);edit.addSeparator(); / 分隔线 edit.add(SelectAll);help.add(About);setJMenuBar(mb);text=new JTextArea();add(new JScrollPane(text); /滚动面板setSize(600,500); /设置窗口大小setVisible(true); /使窗口显示43 事件处理4.3.1 编辑区键盘事件处理text.addKeyListener( new KeyAdapter()public void keyTyped(KeyEvent e)processTextArea(););4.3.2 窗口事件处理ClasswindowListenerextendsWindowAdapter public void windowClosing(WindowEvent e) close(); 4.3.3 菜单项事件处理class actionListener implements ActionListener public void actionPerformed(ActionEvent e)JMenuItem mi=(JMenuItem) e.getSource();if(mi=New) /新建文件text.setText();file=null;else if(mi=Exit) /退出 close(); else if(mi=Cut) /剪切 stateBar.setText(已修改); text.cut();else if(mi=Copy) /复制 text.copy();else if(mi=Paste) /粘贴 stateBar.setText(已修改); text.paste();else if(mi=SelectAll) /全选 text.selectAll();else if(mi=Delete) /删除stateBar.setText(已修改);int start;int end;start = text.getSelectionStart();end = text.getSelectionEnd();text.replaceRange(, start, end); else if(mi=Open) /打开 JFileChooser jf=new JFileChooser(); /创建打开文件对话框if(file!=null) jf.setSelectedFile(file); int returnVal=jf.showOpenDialog(jishiben.this); if(returnVal=JFileChooser.APPROVE_OPTION) file=jf.getSelectedFile(); unfold(); else if(mi=About) /关于String message = -记事本-+ 作者:刘尊志n感谢您的使用!;JOptionPane.showMessageDialog(jishiben.this, message, 关于.,JOptionPane.PLAIN_MESSAGE);else if(mi=Save) /保存save();else if(mi=SaveAs) /另存为JFileChooser jf=new JFileChooser();if(file!=null)jf.setSelectedFile(file);int returnVal=jf.showSaveDialog(jishiben.this);if(returnVal=JFileChooser.APPROVE_OPTION)file=jf.getSelectedFile();save();else if(mi=Find) /查找 FindAndReplace fr=new FindAndReplace();fr.setVisible(true);fr.setLocation(getLocation();else if(mi=Replace) /替换 FindAndReplace fr=new FindAndReplace();fr.setVisible(true);fr.setLocation(getLocation();5 测试分析(1)程序运行界面如下:(2)“文件”菜单的菜单项:(3)“编辑”菜单的菜单项:(4)打开文件及另存文件时的界面:由于打开文件和另存文件都要寻找路径,所以开始时界面相同。(5)打开了某一个文本文件是的截图:(6)使用查找替换时的截图:在“查找内容”的框内输入查找的内容,再按“查找下一个”这个按钮就可以查找。如果要替换所查找的内容,就在“替换字串”的框内输入要替换成的内容。如图中就是把“风水”替换“风”。(7)记事本关闭或退出时的截图:当文件发生了剪切、删除、粘贴等操作,或者在编辑区中输入了字符,即文件进行了修改,当点击“文件”菜单中的“退出”项或者点击了窗口的关闭按钮时,就会弹出一个“保存文件?”的对话框。如果文件没有发生修改,关闭或者退出时,直接关闭了记事本程序。由于其他的操作在截图里很难发现什么变化,所以只展示了上面的截图。6 课程设计总结6.1 设计体会在经过了将近八周的Java课程的学习之后,对于Java这门优秀的编程语言有了更深层次的认识。在学习的过程中,通过老师的教学指导、课外对相关知识的阅读和上机实际操作,对于它所具有的面向对象、与平台无关、安全、稳定和多线程等特点,有了更深刻更直观的认识和理解。这次课程设计我主要负责4.3事件处理和撰写程序,但因为学习时间不长,对相关知识理解得还不是很透彻。致使在这次课程设计的过程中,遇到了很多问题。诸如,监控的定义:是否可以在一个监控器里再次添加一个监控器。还有menubar中不可以添加button按钮以及也不可以添加scrollpane按钮。可以说,这次写论文的过程是个很艰辛的过程。不过在设计的过程中,我收获了很多。从选择课程设计的题目开始,到需求分析,开发工具的选择,最终到系统的设计思路,关键代码的设计,每一步都认真思考分析完成。有点遗憾的是,起初在设计时原本打算能更加完善一些功能的设计,但因为确实有难度就此作罢。在以后的学习中,我会进一步加深对于JAVA的理解和使用,通过阅读相关知识拓宽自己对于JAVA的了解。6.2 致谢在这次课程设计中,很感谢梁老师的指导,将我从对于JAVA肤浅的认识引入到深层次的分析理解。还感谢我们的任课老师顾老师,由于她的悉心教导,我能用Java这一种语言进行比较熟练的编程。还感谢和我一起做这次课程设计的组员卢炜、刘秀春、伍霜霜,由于我们的通力合作,这次课程设计得以顺利的完成。参考文献1 孙全党,王吴迪,赵枫朝Java程序设计应用教程M北京:电子工业出版社,20062 雷之宇Java项目开发实践网络篇M北京:中国铁道出版社,20053 赵玉阳Java从入门到精通M北京:清华大学出版社,2006 4 李龙怡Java编程实例讲解M北京:高等教育出版社,20055 李尊朝,苏军Java语言程序设计M北京:中国铁道出版社,2009附录(源程序清单)import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*; public class jishiben extends JFrameFile file=null;private JLabel stateBar;private JTextArea text;private JMenuBar mb;private JMenu files,edit,help;private JMenuItem Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About;public jishiben() /构造函数super(记事本); / 菜单栏 mb=new JMenuBar();files=new JMenu(文件); /菜单栏的各个菜单项edit=new JMenu(编辑);help=new JMenu(帮助);About=new JMenuItem(关于记事本); /“帮助”菜单项的下拉菜单Open=new JMenuItem(打开); /“文件”菜单项的下拉菜单New=new JMenuItem(新建);Save=new JMenuItem(保存);SaveAs=new JMenuItem(另存为);Exit=new JMenuItem(退出);Cut=new JMenuItem(剪切); /编辑菜单的四个下拉菜单Copy=new JMenuItem(复制);Paste=new JMenuItem(粘贴);Delete=new JMenuItem(删除);Find=new JMenuItem(查找);Replace=new JMenuItem(替换);SelectAll=new JMenuItem(全选);stateBar=new JLabel(未修改);stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder();mb.add(files); /添加控键mb.add(edit);mb.add(help);files.add(New);files.add(Open);files.add(Save);files.add(SaveAs);files.addSeparator(); / 分隔线 files.add(Exit); edit.add(Cut);edit.add(Copy);edit.add(Paste);edit.add(Delete);edit.addSeparator(); / 分隔线 edit.add(Find);edit.add(Replace);edit.addSeparator(); / 分隔线 edit.add(SelectAll);help.add(About);setJMenuBar(mb);text=new JTextArea();add(new JScrollPane(text);/滚动面板setSize(600,500);setVisible(true);New.addActionListener(new actionListener(); /监听器接口Open.addActionListener(new actionListener();Save.addActionListener(new actionListener();SaveAs.addActionListener(new actionListener();Exit.addActionListener(new actionListener(); Cut.addActionListener(new actionListener();Copy.addActionListener(new actionListener();Paste.addActionListener(new actionListener();Delete.addActionListener(new actionListener();Find.addActionListener(new actionListener(); Replace.addActionListener(new actionListener();SelectAll.addActionListener(new actionListener();About.addActionListener(new actionListener(); addWindowListener(new windowListener();text.addKeyListener( / 编辑区键盘事件 new KeyAdapter()public void keyTyped(KeyEvent e)processTextArea();); void processTextArea()stateBar.setText(已修改);void unfold() try FileReader Readf=new FileReader(file); /文件读入 int len=(int)file.length(); char buffer=new charlen; Readf.read(buffer,0,len); Readf.close(); text.setText(new String(buffer); catch(Exception e)e.printStackTrace(); void save() /创建文件写入器; try FileWriter Writef=new FileWriter(file); Writef.write(text.getText(); Writef.close(); catch(Exception e)e.printStackTrace(); /* *查找及替换对话框 */private class FindAndReplace extends JFrame implements ActionListener private JButton findB=new JButton(查找下一个),replaceB=new JButton(查找并替换);private JLabel findL=new JLabel(查找内容:),replaceL=new JLabel(替换字串:);private JTextField findText=new JTextField(),replaceText=new JTextField();GridLayout gl=new GridLayout(2,3,5,5);public FindAndReplace() super(查找、替换对话框);init();private void init() getContentPane().setLayout(gl);this.add(findL);this.add(findText);this.add(findB);this.add(replaceL);this.add(replaceText);this.add(replaceB);this.setDefaultCloseOperation(this.HIDE_ON_CLOSE);this.setSize(400,80);findB.addActionListener(this);replaceB.addActionListener(this);this.setAlwaysOnTop(true);public void actionPerformed(ActionEvent e) tryString findStr=findText.getText(),replaceStr=replaceText.getText();String str=text.getText();/* *从当前位置开始检索 *找不到再从头开始找 */int index=str.indexOf(findStr,text.getCaretPosition();index=index=0 ? index:str.indexOf(findStr);if(e.getSource()=findB) if(index=0) text.select(index,index+findStr.length();else if(e.getSource()=replaceB) str=str.replaceFirst(findStr,replaceStr);text.setText(str);if(index=0) text.select(index,index+1);catch(Exception ex)void close() /文件的关闭tryif(stateBar.getText()=已修改)int option = JOptionPane.showConfirmDialog( null, 文件已修改,是否保存?, 保存文件?, JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE, null); switch(option) case JOptionPane.YES_OPTION:save();break;case JOptionPane.NO_OPTION:System.exit(0);break;case JOptionPane.CANCEL_OPTION:return ; System.exit(0); catch(Exception e)e.printStackTrace(); class windowListener extends WindowAdapter /windows监听类 public void windowClosing(WindowEvent e) close(); class actionListener implements ActionListener /创建活动监听类public void actionPerformed(ActionEvent e)JMenuItem mi=(JMenuItem) e.getSource();if(mi=New) /新建文件text.setText();file=null;else if(mi=Exit) /退出 close(); else i

温馨提示

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

评论

0/150

提交评论