《软件工程课程设计记事本课程设计.doc》由会员分享,可在线阅读,更多相关《软件工程课程设计记事本课程设计.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 软件工程课程设计报告题目: 模拟记事本程序 专业班级: 计科10102班 姓名: 傅湘黔 学号: 201017010220 同组姓名:蔡双、刘再科、李明、朱林成绩评定指导教师:年月日目录1.前言42.需求分析4功能需求4其他需求43.概要设计44.详细设计7文件模块的详细设计7新建模块的详细设计:7打开模块的详细设计7保存、另存为模块的详细设计7退出模块的详细设计7编辑模块的详细设计7撤销模块的详细设计7剪切模块的详细设计8复制模块的详细设计8粘贴模块的详细设计8删除模块的详细设计8设计图9用例图9类图9时序图10活动图125.程序代码126.运行界面287.心得体会298.参考文献30Ja
2、va是一种纯面向对象的、网络编程首选的语言。Java技术作为软件开 的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设 题材,借此巩固加深我们对Java的了解。本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。 新建、打开、保存、另存为、剪切、复制、粘贴、删除等记
3、事本常规操作 除了常规操作以外,我们还有些东西需要添加进去,这里面我们包括字体颜色,还有查找方面的操作,对于整个记事本,我们还会添加我们记事本的作者,和相关信息。图1图2 图3 图4 4.1.1新建模块的详细设计: 用户选择新建后,先检测当前的文本内容是否修改过。如果未修改过,则新建一个空文本文档。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再新建一个空文本文档。如果选择“否”,则直接新建一个空文本文档。 用户选择打开后,先检测当前的文本内容是否修改过。如果未修改过,则打开选择的文本文件。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“
4、是”,先保存当前文本内容,再打开文本文件。如果选择“否”,则直接打开文件。 4.1.3保存、另存为模块的详细设计 当用户选择保存或另存时,先检测文件内容是否修改过。如果修改过,保存对文档的修改。 当用户选择退出时,弹出提示保存对话框,询问用户是否保持。如果选择“是”,先保存文档,再退出程序。如果选择“否”,直接退出程序。 打开一个文本文档,当用户选择编辑或右键弹出菜单中的撤消操作后,判断一个文本是否已被修改,若已修改,撤消上一步的操作,否则不进行任何操作。 打开一个文本文档,当用户选择编辑菜单或右键弹出菜单中的剪切操作后,判断一个文本是否被选中,若已选中,删除选中的文字,并将选中的文字传输到系
5、统剪切板中,否则不进行任何操作。 打开一个文本文档,当用户选择编辑菜单或右键弹出菜单中的复制操作后,判断一个文本是否被选中,若已选中,将选中的文字传输到系统剪切板中,否则不进行任何操作。 运行程序,打开一个文本文档,在菜单栏上选中编辑菜单或者在文档中右键鼠标菜单,选中“粘贴”,判断文本文档是否进行了复制和剪切操作(即判断系统剪切板是否有内容),如果有就将剪切板的内容粘贴到光标处,没有就继续执行其他操作步骤。 运行程序,打开一个文本文档,在菜单栏上选中编辑菜单或者在文档中右键鼠标菜单选中“删除”,程序判断文本文档是否有已选中的内容,如果有就将选中的内容删除掉,没有就执行其他操作。 图5 图6 图
6、7 图8 图9import java.awt.CheckboxMenuItem;import java.awt.Color;import java.awt.Container;import java.awt.FileDialog;import java.awt.FlowLayout;import.Font;import java.awt.GraphicsEnvironment;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.MenuShortcut;import java
7、.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.e
8、vent.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;im
9、port 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
10、.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.getDefau
11、ltToolkit();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 Menu
12、Bar();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 = n
13、ew 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 openi
14、tem = 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(ne
15、w 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.V
16、K_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
17、 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)
18、 / 取消新建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);f
19、ilePath = 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(
20、) public void actionPerformed(ActionEvent e) / JFileChooser jfile = new JFileChooser();/ FileNameExtensionFilter filter = new/ FileNameExtensionFilter(*.txt,txt);/ jfile.setFileFilter(filter);/ jfile.setVisible(true);/ int returnval = jfile.showOpenDialog(jfile);/ filePath =/ jfile.getDialogTitle()+
21、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
22、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.printStackT
23、race(); 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);/ fil
24、ePath = 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();/ /
25、finally/ if(bw != null)/ try/ bw.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 JF
26、ileChooser();/ 用于选择保存路径的文件名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.get
27、Text();/ 向文件写出数据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();bf
28、w.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(
29、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 (
30、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) );
31、/ 退出菜单项的功能实现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 = J
32、OptionPane.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(cutit
33、em);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));delet
34、eitem.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(ne
35、w 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);edit
36、menu.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(KeyEve
37、nt.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(Ke
38、yEvent.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.getS
39、electedText();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);
限制150内