Java课程设计报告书模板.doc
呼伦贝尔学院计算机科学与技术学院软件工程报告书题 目: JAVA记事本 学生姓名: 高智 学 号: 201212104042 专业班级: 网络工程本四 指导教师: 耿卫江 完成时间: 2014年 6 月 16 日 摘要Java是一种纯面向对象的、网络编程首选的语言。Java技术作为软件开发的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。为此,我决定以“记事本”为题材,借此巩固加深对Java的了解。本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设计是非常有意义的,能为我今后学习面向过程的程序设计作一些铺垫。关键词编程;设计;对象目录摘要I第1章绪论11.1系统设计目的1第2章需求分析22.1 功能需求22.2 环境需求22.2.1开发环境需求22.2.1运行环境需求2第3章总体设计33.1 概要设计3第4章详细设计6 模块设计6第5章编码与测试7参考文献 8第1章绪论1.1系统设计目的1、设计一个简单的windows记事本,功能如下:<1>具有新建、打开、保存等功能。<2>对文件的编辑,如:全选、复制、粘贴等功能。<3>适用鼠标右键单击操作功能。2、通过这次设计可以学到:<1>提高对JAVA语言的掌握能力。<2>理论实践相结合,提高对软件工程的软件思路设计能力。第2章需求分析2.1 功能需求本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面: (1)、菜单中有“文件”、“编辑”、“格式”、“系统”三个主菜单; (2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。 (3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件。 (4)“格式”菜单中有“字体”、“颜色”,用于记事本程序的内容字体与颜色的设计。(5)“系统”菜单中有“关于”、“退出”。2.2程序流程图:开始输入文字?新建打开保存另存为剪切复制粘贴删除查找替换全选关于退出结束图2.2主流程图NY2.3环境需求2.3.1开发环境需求硬件环境: 处理器在酷睿i3以上的计算机。软件环境:装有windows7的系统,JAVA3.2以上的软件,并配置了虚拟机。第3章总体设计3.1 系统总体设计用例图:新建,保存,另存为等功能文件 剪切、复制、粘贴、删除、全选、查找、替换等功能。编辑颜色、字体功能用户 格式关于、退出功能系统3.2概要设计该软件分为三大模块:文件模块、文档编辑模块、格式模块,具体设计的层次方框图如下:记事本文件模块功能编辑模块功能格式模块功能图1总体机构文件模块层次方框图如下:文件模块功能 另存为功能打开功能新建功能保存功能退出功能 图2文件模块文档编辑模块层次方框图如下:文件编辑模块查找功能复制功能替换功能撤销功能粘贴功能剪切功能 图3文档编辑模块格式模块层次方框图如下:格式设置功能 颜色设置字体设置 图4格式模块 3.3模块设计 3.1.1打开模块的详细设计 : 用户选择打开后,先检测当前的文本内容是否修改过。如果未修改过,则打开选择的文本文件。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再打开文本文件。如果选择“否”,则直接打开文件。 第4章详细设计模块设计:4.1.1新建模块的详细设计: 用户选择新建后,先检测当前的文本内容是否修改过。如果未修改过,则新建一个空文本文档。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再新建一个空文本文档。如果选择“否”,则直接新建一个空文本文档。4.1.2保存、另存模块的详细设计 当用户选择保存或另存时,先检测文件内容是否修改过。如果修改过,保存对文档的修改。如所示:4.1.3退出模块的详细设计 当用户选择退出时,弹出提示保存对话框,询问用户是否保持。如果选择“是”,先保存文档,再退出程序。如果选择“否”,直接退出程序。如图所示:第5章编码与测试5.1编码与语言选择5.1.1程序设计语言:根据特定软件工程定义来选择,我选择了高级语言java,满足软件开发的可靠要求以及运行维护。5.2.1编码风格:内部文档包括:数据说明,输入输出等。import java.awt.CheckboxMenuItem;import java.awt.Color;import java.awt.Container;import java.awt.FileDialog;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.MenuShortcut;import java.awt.TextArea;import java.awt.Toolkit;import java.awt.Window;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.JButton;import javax.swing.JColorChooser;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class notebook / 记事本的具体实现类private static final long serialVersionUID = 1L;private TextArea content;private String filePath = ""/ 先让路径为空Color color = Color.red;Toolkit toolKit = Toolkit.getDefaultToolkit();Clipboard clipboard = toolKit.getSystemClipboard();public notebook() / 创建一个JFrame对象;并设置相关属性final JFrame jf = new JFrame("我的记事本");jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);jf.setBounds(100, 100, 500, 500);jf.setResizable(true);jf.setVisible(true);/ 创建菜单栏MenuBar menu = new MenuBar();jf.setMenuBar(menu);/ 创建并添加文本框content = new TextArea("", 50, 50, TextArea.SCROLLBARS_VERTICAL_ONLY);jf.add(content);content.setVisible(true);content.requestFocusInWindow();/ 菜单栏添加内容Menu filemenu = new Menu("文件(F)");Menu editmenu = new Menu("编辑(E)");Menu formatmenu = new Menu("格式(O)");Menu viewmenu = new Menu("查看(V)");Menu helpmenu = new Menu("帮助(H)");menu.add(filemenu);menu.add(editmenu);menu.add(formatmenu);menu.add(viewmenu);menu.add(helpmenu);/ 创建文件菜单上的各个菜单项并添加到菜单上MenuItem newitem = new MenuItem("新建(N)");newitem.setShortcut(new MenuShortcut(KeyEvent.VK_N, false);filemenu.add(newitem);MenuItem openitem = new MenuItem("打开(O)");openitem.setShortcut(new MenuShortcut(KeyEvent.VK_O, false);filemenu.add(openitem);MenuItem saveitem = new MenuItem("保存(S)");saveitem.setShortcut(new MenuShortcut(KeyEvent.VK_S, false);filemenu.add(saveitem);MenuItem saveasitem = new MenuItem("另存为(A)");saveasitem.setShortcut(new MenuShortcut(KeyEvent.VK_A, false);filemenu.add(saveasitem);MenuItem setitem = new MenuItem("页面设置(U)");setitem.setShortcut(new MenuShortcut(KeyEvent.VK_U, false);filemenu.add(setitem);setitem.setEnabled(false);MenuItem printitem = new MenuItem("打印(P)");printitem.setShortcut(new MenuShortcut(KeyEvent.VK_P, false);filemenu.add(printitem);printitem.setEnabled(false);filemenu.addSeparator();MenuItem exititem = new MenuItem("退出(X)");exititem.setShortcut(new MenuShortcut(KeyEvent.VK_X, false);filemenu.add(exititem);/ 添加监听器来实现文件菜单上的各个菜单项的功能/ 新建菜单项的功能实现newitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String con = content.getText();if (!con.equals("") / 文本域里文本不为空int result = JOptionPane.showConfirmDialog(null,("是否要保存?"), ("保存文件."),JOptionPane.YES_NO_CANCEL_OPTION);if (result = JOptionPane.NO_OPTION) / 不保存content.setText("");else if (result = JOptionPane.CANCEL_OPTION) / 取消新建else if (result = JOptionPane.YES_OPTION)/ 选择保存JFileChooser jfc = new JFileChooser();/ 用于选择保存路径的文件名int bcf = jfc.showSaveDialog(jf);if (bcf = JFileChooser.APPROVE_OPTION) try / 保存文件BufferedWriter bfw = new BufferedWriter(new FileWriter(new File(jfc.getSelectedFile().getAbsolutePath()+ ".txt");filePath = jfc.getSelectedFile().getAbsolutePath() + ".txt"/ 获取文件保存的路径bfw.write(con);/ 向文件写出数据bfw.flush();bfw.close();/ 关闭输出流 catch (IOException ex) Logger.getLogger(notebook.class.getName().log(Level.SEVERE, null, ex);new notebook();/ 新建文本文件/ 打开菜单项的功能实现openitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JFileChooser jfile = new JFileChooser(); FileNameExtensionFilter filter = newFileNameExtensionFilter("*.txt","txt");jfile.setFileFilter(filter);jfile.setVisible(true);int returnval = jfile.showOpenDialog(jfile);filePath =jfile.getDialogTitle()+jfile.getSelectedFile().getName();System.out.println(jfile.getSelectedFile();FileDialog dialog = new FileDialog(new JFrame(), "打开.",FileDialog.LOAD);dialog.setVisible(true);filePath = dialog.getDirectory() + dialog.getFile();System.out.println(filePath);File file = new File(filePath);BufferedReader br = null;StringBuilder sb = new StringBuilder();try br = new BufferedReader(new FileReader(file);String str = null;while (str = br.readLine() != null) sb.append(str).append("n");content.setText(sb.toString(); catch (FileNotFoundException e1) e1.printStackTrace(); catch (IOException e1) e1.printStackTrace(); finally if (br != null) try br.close(); catch (IOException e1) e1.printStackTrace();/ 保存菜单项的功能实现saveitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) FileDialog dialog = new FileDialog(new JFrame(),"保存.",FileDialog.SAVE); dialog.setVisible(true); filePath = dialog.getDirectory() + dialog.getFile(); File file = new File(filePath); BufferedWriter bw = null;try bw = new BufferedWriter(new FileWriter(file);bw.write(content.getText(); catch(FileNotFoundException e1)e1.printStackTrace();catch(IOException e1)e1.printStackTrace();finallyif(bw != null)trybw.close();catch(IOException e1)e1.printStackTrace();FileDialog dialog = new FileDialog(new JFrame(), "保存.",FileDialog.SAVE);dialog.setVisible(true);filePath = dialog.getDirectory() + dialog.getFile();if (filePath.equals("") / 没有路径时,就另存为JFileChooser jfc = new JFileChooser();/ 用于选择保存路径的文件名int bcf = jfc.showSaveDialog(jf);/ 弹出保存窗口if (bcf = JFileChooser.APPROVE_OPTION) try / 保存文件BufferedWriter bfw = new BufferedWriter(new FileWriter(new File(jfc.getSelectedFile().getAbsolutePath()+ ".txt");filePath = jfc.getSelectedFile().getAbsolutePath();bfw.write(content.getText();/ 向文件写出数据bfw.flush();bfw.close();/ 关闭输出流 catch (IOException ex) Logger.getLogger(notebook.class.getName().log(Level.SEVERE, null, ex); else / 路径不为空时,保存在原来的路径下try / 保存文件BufferedWriter bfw = new BufferedWriter(new FileWriter(new File(filePath);bfw.write(content.getText();/ 向文件写出数据bfw.flush();bfw.close();/ 关闭输出流 catch (IOException ex) Logger.getLogger(notebook.class.getName().log(Level.SEVERE, null, ex);/ 另存为菜单项的功能实现saveasitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JFileChooser jfc = new JFileChooser();/ 用于选择保存路径的文件名int bcf = jfc.showSaveDialog(jf);/ 弹出保存窗口if (bcf = JFileChooser.APPROVE_OPTION) try / 保存文件BufferedWriter bfw = new BufferedWriter(new FileWriter(new File(jfc.getSelectedFile().getAbsolutePath() + ".txt");filePath = jfc.getSelectedFile().getAbsolutePath();bfw.write(content.getText();/ 向文件写出数据bfw.flush();bfw.close();/ 关闭输出流 catch (IOException ex) Logger.getLogger(notebook.class.getName().log(Level.SEVERE, null, ex);/ 页面设置菜单项的功能实现setitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / 打印菜单项的功能实现printitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / 退出菜单项的功能实现exititem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Object options = "是的,我要退出", "不好意思,点错了" ;int option = JOptionPane.showOptionDialog(null, "您确定要退出吗?","退出提示.", JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE, null, options, options0);if (option = JOptionPane.OK_OPTION) System.exit(0);/ 创建编辑菜单上的各个菜单项并添加到菜单上MenuItem undoitem = new MenuItem("撤销(U)");undoitem.setShortcut(new MenuShortcut(KeyEvent.VK_Z, false);editmenu.add(undoitem);MenuItem cutitem = new MenuItem("剪切(T)");cutitem.setShortcut(new MenuShortcut(KeyEvent.VK_X, false);editmenu.add(cutitem);MenuItem copyitem = new MenuItem("复制(C)");copyitem.setShortcut(new MenuShortcut(KeyEvent.VK_C, false);editmenu.add(copyitem);MenuItem pasteitem = new MenuItem("粘贴(P)");pasteitem.setShortcut(new MenuShortcut(KeyEvent.VK_V, false);editmenu.add(pasteitem);MenuItem deleteitem = new MenuItem("删除(L)");deleteitem.setShortcut(new MenuShortcut(KeyEvent.VK_DELETE, false);editmenu.add(deleteitem);editmenu.addSeparator();MenuItem finditem = new MenuItem("查找(F)");finditem.setShortcut(new MenuShortcut(KeyEvent.VK_F, false);editmenu.add(finditem);MenuItem nextitem = new MenuItem("查找下一个(N)");nextitem.setShortcut(new MenuShortcut(KeyEvent.VK_3, false);editmenu.add(nextitem);MenuItem replaceitem = new MenuItem("替换(R)");replaceitem.setShortcut(new MenuShortcut(KeyEvent.VK_H, false);editmenu.add(replaceitem);MenuItem turntoitem = new MenuItem("转到(G)");turntoitem.setShortcut(new MenuShortcut(KeyEvent.VK_G, false);editmenu.add(turntoitem);editmenu.addSeparator();/ 复选菜单项Menu choicemenu = new Menu("选择(C)");MenuItem allitem = new MenuItem("全选(A)");allitem.setShortcut(new MenuShortcut(KeyEvent.VK_A, false);choicemenu.add(allitem);MenuItem fanxiangitem = new MenuItem("反向选择(B)");fanxiangitem.setShortcut(new MenuShortcut(KeyEvent.VK_B, false);choicemenu.add(fanxiangitem);MenuItem chieseitem = new MenuItem("选择汉字(C)");chieseitem.setShortcut(new MenuShortcut(KeyEvent.VK_C, false);choicemenu.add(chieseitem);editmenu.add(choicemenu);/ 编辑菜单项的时间/日期项MenuItem dateitem = new MenuItem("时间/日期(D)");dateitem.setShortcut(new MenuShortcut(KeyEvent.VK_5, false);editmenu.add(dateitem);/ 添加监听器来实现编辑菜单上的各个菜单项的功能/ 撤销菜单项的功能实现undoitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / 剪切菜单项的功能实现cutitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String text = content.getSelectedText();StringSelection selection = new StringSelection(text);clipboard.setContents(selection, null);if (text.length() = 0) return; else content.replaceRange("", content.getSelectionStart(),content.getSelectionEnd();/ 复制菜单项的功能实现copyitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String text = content.getSelectedText();StringSelection selection = new StringSelection(text);clipboard.setContents(selection, null);/ 粘贴菜单项的功能实现pasteitem.addActionListener(new ActionListener() public void actionPerformed(A