




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程课程设计报告题目: 模拟记事本程序 专业班级: 计科10102班 姓名: 傅湘黔 学号: 201017010220 同组姓名:蔡双、刘再科、李明、朱林成绩评定指导教师:年月日目录1.前言42.需求分析42.1功能需求42.2其他需求43.概要设计44.详细设计74.1文件模块的详细设计74.1.1新建模块的详细设计:74.1.2打开模块的详细设计74.1.3保存、另存为模块的详细设计74.1.4退出模块的详细设计74.2编辑模块的详细设计74.2.1撤销模块的详细设计74.2.2剪切模块的详细设计84.2.3复制模块的详细设计84.2.4粘贴模块的详细设计84.2.5删除模块的详细设计84.3设计图94.3.1用例图94.3.2类图94.3.3时序图104.3.4活动图125.程序代码126.运行界面287.心得体会298.参考文献301.前言Java是一种纯面向对象的、网络编程首选的语言。Java技术作为软件开 的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设 题材,借此巩固加深我们对Java的了解。本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。2.需求分析2.1功能需求 新建、打开、保存、另存为、剪切、复制、粘贴、删除等记事本常规操作2.2其他需求 除了常规操作以外,我们还有些东西需要添加进去,这里面我们包括字体颜色,还有查找方面的操作,对于整个记事本,我们还会添加我们记事本的作者,和相关信息。2.3分析类图3.概要设计图1图2 图3 图44.详细设计4.1文件模块的详细设计 4.1.1新建模块的详细设计: 用户选择新建后,先检测当前的文本内容是否修改过。如果未修改过,则新建一个空文本文档。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再新建一个空文本文档。如果选择“否”,则直接新建一个空文本文档。 4.1.2打开模块的详细设计 用户选择打开后,先检测当前的文本内容是否修改过。如果未修改过,则打开选择的文本文件。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再打开文本文件。如果选择“否”,则直接打开文件。 4.1.3保存、另存为模块的详细设计 当用户选择保存或另存时,先检测文件内容是否修改过。如果修改过,保存对文档的修改。 4.1.4退出模块的详细设计 当用户选择退出时,弹出提示保存对话框,询问用户是否保持。如果选择“是”,先保存文档,再退出程序。如果选择“否”,直接退出程序。4.2编辑模块的详细设计 4.2.1撤销模块的详细设计 打开一个文本文档,当用户选择编辑或右键弹出菜单中的撤消操作后,判断一个文本是否已被修改,若已修改,撤消上一步的操作,否则不进行任何操作。 4.2.2剪切模块的详细设计 打开一个文本文档,当用户选择编辑菜单或右键弹出菜单中的剪切操作后,判断一个文本是否被选中,若已选中,删除选中的文字,并将选中的文字传输到系统剪切板中,否则不进行任何操作。 4.2.3复制模块的详细设计 打开一个文本文档,当用户选择编辑菜单或右键弹出菜单中的复制操作后,判断一个文本是否被选中,若已选中,将选中的文字传输到系统剪切板中,否则不进行任何操作。 4.2.4粘贴模块的详细设计 运行程序,打开一个文本文档,在菜单栏上选中编辑菜单或者在文档中右键鼠标菜单,选中“粘贴”,判断文本文档是否进行了复制和剪切操作(即判断系统剪切板是否有内容),如果有就将剪切板的内容粘贴到光标处,没有就继续执行其他操作步骤。 4.2.5删除模块的详细设计运行程序,打开一个文本文档,在菜单栏上选中编辑菜单或者在文档中右键鼠标菜单选中“删除”,程序判断文本文档是否有已选中的内容,如果有就将选中的内容删除掉,没有就执行其他操作。4.3设计图4.3.1用例图 图54.3.2类图 图64.3.3时序图 图7 图84.3.4活动图 图95.程序代码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 = new/ FileNameExtensionFilter(*.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();/ / 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 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(ActionEvent e) Transferable contents = clipboard.getContents(this);String str = null;try str = (String) contents.getTransferData(DataFlavor.stringFlavor); catch (UnsupportedFlavorException e1) e1.printStackTrace(); catch (IOException e1) e1.printStackTrace();if (str = null)return;try content.replaceRange(str, content.getSelectionStart(),content.getSelectionEnd(); catch (Exception e1) e1.printStackTrace(););/ 删除菜单项的功能实现deleteitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) content.replaceRange(, content.getSelectionStart(),content.getSelectionEnd(););/ 查找菜单项的功能实现finditem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) final JDialog dialog = new JDialog(jf, 查找字符串., true);dialog.setBounds(560, 250, 310, 130);JLabel find = new JLabel(请输入字符串 :);final JTextField findtext = new JTextField(1);JButton jbu = new JButton(查找);dialog.setLayout(null);find.setBounds(10, 30, 90, 20);findtext.setBounds(100, 30, 90, 20);jbu.setBounds(200, 30, 80, 20);dialog.add(find);dialog.add(findtext);dialog.add(jbu);jbu.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String text = content.getText();String str = findtext.getText();int end = text.length();int len = str.length();int start = content.getSelectionEnd();if (start = end) start = 0;for (; start = end - len; start+) if (text.substring(start, start + len).equals(str) content.setSelectionStart(start);content.setSelectionEnd(start + len);return;/ 若找不到待查字符串,则将光标置于末尾content.setSelectionStart(end);content.setSelectionEnd(end););dialog.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dialog.dispose(););dialog.setResizable(false);dialog.setVisible(true););/ 查找下一个菜单项的功能实现nextitem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) );/ 替换菜单项的功能实现replaceitem.addActionListener(new ActionListener() public void ac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装修公司物业费营销方案
- 施工现场环境管理实施方案及措施
- 2025年康复工程学院康复辅助器具的选用与配置及答案解析
- 2024-2025学年邮政行业职业技能鉴定试题【历年真题】附答案详解
- 2025隧道专项试题及答案
- 2024-2025学年度计算机二级题库及完整答案详解(全优)
- 2025公务员(省考)常考点试卷完整答案详解
- 2025美容化妆人员考前冲刺测试卷(夺冠)附答案详解
- 2024全国统考教师资格考试《教育教学知识与能力(小学)》高分题库含答案详解【突破训练】
- 药店相关技能鉴定自我提分评估附答案详解【B卷】
- 医院培训课件:《环境卫生学监测的方法》
- 中队辅导员培训材料
- (高清版)DB12∕T 934-2020 公路工程资料管理技术规程
- 深度解析Palantir介绍
- 木方回收合同6篇
- 《探寻抗日战争历史》课件
- 2025年第三届药膳大赛(选拔赛)理论知识考试题(附答案)
- 玻璃幕墙维修保养施工方案
- 亲子关系断绝协议书范文模板
- 包装行业安全防范总结
- 临床骨筋膜室综合征护理业务学习
评论
0/150
提交评论