软件工程课程设计记事本课程设计
更新时间:2024-04-15 12:26:01 阅读量: 综合文库 文档下载
- 软件工程课程设计报告推荐度:
- 相关推荐
软件工程课程设计报告
题 目: 模拟记事本程序
专业班级: 计科10102班
姓 名: 傅湘黔 学 号: 201017010220 同组姓名:_蔡双、刘再科、李明、朱林_
成绩评定
指导教师: 年 月 日
1
目录
1.前言 .................................................................................................................................... 4 2.需求分析 ............................................................................................................................ 4 2.1功能需求 ................................................................................................................... 4 2.2其他需求 ................................................................................................................... 4 3.概要设计 ............................................................................................................................ 4 4.详细设计 ............................................................................................................................ 7 4.1文件模块的详细设计 ................................................................................................ 7 4.1.1新建模块的详细设计: ...................................................................................... 7 4.1.2打开模块的详细设计 ....................................................................................... 7 4.1.3保存、另存为模块的详细设计 ....................................................................... 7 4.1.4退出模块的详细设计 ....................................................................................... 7 4.2编辑模块的详细设计 ................................................................................................ 7 4.2.1撤销模块的详细设计 ....................................................................................... 7 4.2.2剪切模块的详细设计 ....................................................................................... 8 4.2.3复制模块的详细设计 ....................................................................................... 8 4.2.4粘贴模块的详细设计 ....................................................................................... 8 4.2.5删除模块的详细设计 ....................................................................................... 8 4.3设计图 ....................................................................................................................... 9 4.3.1用例图 .............................................................................................................. 9 4.3.2类图 .................................................................................................................. 9 4.3.3时序图 ............................................................................................................ 10 4.3.4活动图 ............................................................................................................ 12
2
5.程序代码 .......................................................................................................................... 12 6.运行界面 .......................................................................................................................... 28 7.心得体会 .......................................................................................................................... 29 8.参考文献 .......................................................................................................................... 30
3
1.前言
Java是一种纯面向对象的、网络编程首选的语言。Java技术作为软件开 的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设 题材,借此巩固加深我们对Java的了解。
本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。
2.需求分析
2.1功能需求
新建、打开、保存、另存为、剪切、复制、粘贴、删除等记事本常规操作
2.2其他需求
除了常规操作以外,我们还有些东西需要添加进去,这里面我们包括字体颜色,还有查找方面的操作,对于整个记事本,我们还会添加我们记事本的作者,和相关信息。
2.3分析类图
4
3.概要设计
图1
图2
图3
5
图4
6
4.详细设计
4.1文件模块的详细设计 4.1.1新建模块的详细设计:
用户选择新建后,先检测当前的文本内容是否修改过。如果未修改过,则新建一个空文本文档。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再新建一个空文本文档。如果选择“否”,则直接新建一个空文本文档。
4.1.2打开模块的详细设计
用户选择打开后,先检测当前的文本内容是否修改过。如果未修改过,则打开选择的文本文件。如果修改过,先弹出提示保存对话框,提示用户是否保存,如果选择“是”,先保存当前文本内容,再打开文本文件。如果选择“否”,则直接打开文件。
4.1.3保存、另存为模块的详细设计
当用户选择保存或另存时,先检测文件内容是否修改过。如果修改过,保存对文档的修改。
4.1.4退出模块的详细设计
当用户选择退出时,弹出提示保存对话框,询问用户是否保持。如果选择“是”,先保存文档,再退出程序。如果选择“否”,直接退出程序。
4.2编辑模块的详细设计 4.2.1撤销模块的详细设计
打开一个文本文档,当用户选择编辑或右键弹出菜单中的撤消操作后,判断一个文本是否已被修改,若已修改,撤消上一步的操作,否则不进行任何操作。
7
4.2.2剪切模块的详细设计
打开一个文本文档,当用户选择编辑菜单或右键弹出菜单中的剪切操作后,判断一个文本是否被选中,若已选中,删除选中的文字,并将选中的文字传输到系统剪切板中,否则不进行任何操作。
4.2.3复制模块的详细设计
打开一个文本文档,当用户选择编辑菜单或右键弹出菜单中的复制操作后,判断一个文本是否被选中,若已选中,将选中的文字传输到系统剪切板中,否则不进行任何操作。
4.2.4粘贴模块的详细设计
运行程序,打开一个文本文档,在菜单栏上选中编辑菜单或者在文档中右键鼠标菜单,选中“粘贴”,判断文本文档是否进行了复制和剪切操作(即判断系统剪切板是否有内容),如果有就将剪切板的内容粘贴到光标处,没有就继续执行其他操作步骤。
4.2.5删除模块的详细设计
运行程序,打开一个文本文档,在菜单栏上选中编辑菜单或者在文档中右键鼠标菜单选中“删除”,程序判断文本文档是否有已选中的内容,如果有就将选中的内容删除掉,没有就执行其他操作。
8
4.3设计图 4.3.1用例图
图5
4.3.2类图
图6
9
4.3.3时序图
图7
10
图8
11
4.3.4活动图
图9
5.程序代码
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;
12
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对象;并设置相关属性
13
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)\);
14
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()
+ \)));
filePath = jfc.getSelectedFile()
.getAbsolutePath() + \;// 获取文件保存的路径
bfw.write(con);// 向文件写出数据
bfw.flush();
bfw.close();// 关闭输出流 } catch (IOException ex) { Logger.getLogger(notebook.class.getName()).log(
Level.SEVERE, null, ex);
}
new notebook();// 新建文本文件 }
}
15
// 打开菜单项的功能实现
openitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
// JFileChooser jfile = new JFileChooser(); // FileNameExtensionFilter filter = new // FileNameExtensionFilter(\ // 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) { }
content.setText(sb.toString()); e1.printStackTrace(); e1.printStackTrace(); if (br != null) { }
try { }
br.close();
e1.printStackTrace(); } catch (IOException e1) { sb.append(str).append(\);
} catch (FileNotFoundException e1) { } catch (IOException e1) { } finally {
});
// 保存菜单项的功能实现
saveitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// FileDialog dialog = new FileDialog(new // JFrame(),\保存....\
16
// 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() + \)));
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);
17
}
}
}
} 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() + \)));
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) { }
18
});
// 打印菜单项的功能实现
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, options[0]);
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));
19
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;
content.replaceRange(\, content.getSelectionStart(),
content.getSelectionEnd());
} else {
});
// 复制菜单项的功能实现
copyitem.addActionListener(new ActionListener() {
20
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 { }
if (str == null) }
return;
content.replaceRange(str, content.getSelectionStart(),
content.getSelectionEnd());
try {
str = (String) contents
.getTransferData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException e1) {
e1.printStackTrace(); e1.printStackTrace(); } catch (IOException e1) {
} 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(\查找\);
21
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) {
}
});
22
// 替换菜单项的功能实现
replaceitem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final JDialog dialog = new JDialog(jf, \字符串替换...\, true); dialog.setBounds(560, 250, 310, 180);
final JLabel tihuan = new JLabel(\请输入要替换的字符串 :\); JLabel mubiao = new JLabel(\请输入替换后的字符串 :\); JTextField jtf1 = new JTextField(10); JTextField jtf2 = new JTextField(10); JButton jb = new JButton(\替换\); dialog.setLayout(null);
tihuan.setBounds(10, 30, 150, 20); mubiao.setBounds(10, 70, 150, 20); jtf1.setBounds(160, 30, 110, 20); jtf2.setBounds(160, 70, 110, 20); jb.setBounds(100, 110, 80, 20); dialog.add(tihuan); dialog.add(mubiao); dialog.add(jtf1); dialog.add(jtf2); dialog.add(jb);
final String text = content.getText(); final String str1 = tihuan.getText(); final String str2 = mubiao.getText(); jb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (content.getSelectedText().equals(tihuan.getText())) { content.replaceRange(str2, content.getSelectionStart(),
content.getSelectionEnd());
} else {
int end = text.length(); int len = str1.length();
int start = content.getSelectionEnd(); if (start == end) start = 0;
for (; start <= end - len; start++) {
if (text.substring(start, start + len).equals(
str1)) {
content.setSelectionStart(start); content.setSelectionEnd(start + len); return;
}
}
// 若找不到待查字符串,则将光标置于末尾 content.setSelectionStart(end);
content.setSelectionEnd(end);
23
}
}
}
});
dialog.setResizable(false); dialog.setVisible(true);
});
// 转到菜单项的功能实现
turntoitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 全选菜单项的功能实现
allitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
content.selectAll();
});
// 反向选择菜单项的功能实现
fanxiangitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 选择汉字菜单项的功能实现
chieseitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 时间菜单项的功能实现
dateitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 创建格式菜单上的各个菜单项并添加到菜单上
CheckboxMenuItem lineturnitem = new CheckboxMenuItem(\自动换行(W)\);
24
formatmenu.add(lineturnitem); formatmenu.addSeparator();
MenuItem worditem = new MenuItem(\字体(F)\); formatmenu.add(worditem); worditem.setEnabled(true); formatmenu.addSeparator();
MenuItem coloritem = new MenuItem(\字体颜色(C)\); formatmenu.add(coloritem);
// 添加监听器来实现格式菜单上的各个菜单项的功能
// 自动换行菜单项的功能实现
lineturnitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 字体菜单项的功能实现
worditem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final JFrame ztsz = new JFrame(\字体设置...\);// 字体设置窗口 // 字体
ztsz.setLocation(150, 200);
jf.setEnabled(false);// 文本编辑窗体不可用!
final JComboBox jc = new JComboBox(GraphicsEnvironment
.getLocalGraphicsEnvironment() .getAvailableFontFamilyNames());
jc.setLocation(30, 80);
Container c = ztsz.getContentPane(); JPanel jp = new JPanel(); jp.add(jc, new FlowLayout()); // 字形
String[] faceString = { \正常\, \粗体\, \斜体\, \粗斜体\ };
String[] sizeString = { \初号\, \小初\, \一号\, \小一\, \二号\, \小二\,
\三号\, \小三\, \四号\, \小四\, \五号\, \小五\, \六号\, \小六\, \七号\, \八号\, \, \, \, \, \, \, \, \,
\, \, \, \, \, \, \, \, \ };
final JComboBox zx = new JComboBox(faceString); final JComboBox dx = new JComboBox(sizeString); final JButton sure = new JButton(\确定\); final JButton cancel = new JButton(\取消\); jp.add(zx); jp.add(dx); jp.add(sure); jp.add(cancel);
25
c.add(jp);
// 确定
sure.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {// 将文本设置成所选的字体 if (!content.getText().equals(\)) { content.setFont(new Font(jc.getActionCommand(), zx
.getSelectedIndex(), dx.getSelectedIndex()));
jf.setEnabled(true);// 文本编辑窗体可用 ztsz.dispose();
} else {
JOptionPane.showMessageDialog(null, \您的文本中还没有内容,请输入内容后重新设置!\,
JOptionPane.INFORMATION_MESSAGE);
jf.setEnabled(true); ztsz.dispose();
}
}
});
cancel.addActionListener(new ActionListener() {// 取消 public void actionPerformed(ActionEvent e) {
jf.setEnabled(true);// 文本编辑窗体可用 ztsz.dispose();// 关闭字体设置窗体
}
});
ztsz.setSize(360, 100);// 设置窗体长度100和宽度360
ztsz.setVisible(true);// 窗体可见
ztsz.setResizable(false);// 禁止放大窗体
}
});
// 字体颜色菜单项的功能实现
coloritem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { color = JColorChooser.showDialog(jf, \, color); content.setForeground(color);
}
});
// 添加监听器来实现查看菜单上的各个菜单项的功能 // 字数统计菜单项的功能实现
MenuItem countitem = new MenuItem(\字数统计(C)\); viewmenu.add(countitem); countitem.setEnabled(true);
countitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
26
消息...\,
\
}
});
// 状态栏菜单项的功能实现
MenuItem stateitem = new MenuItem(\状态栏(S)\); viewmenu.add(stateitem); stateitem.setEnabled(false);
stateitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 创建帮助菜单上的各个菜单项并添加到菜单上
MenuItem findhelpitem = new MenuItem(\查看帮助(H)\); helpmenu.add(findhelpitem); findhelpitem.setEnabled(false); helpmenu.addSeparator();
MenuItem aboutboxitem = new MenuItem(\关于记事本(A)\); helpmenu.add(aboutboxitem); helpmenu.addSeparator();
MenuItem writeritem = new MenuItem(\关于作者(S)\); helpmenu.add(writeritem);
// 添加监听器来实现帮助菜单上的各个菜单项的功能
// 查看帮助菜单项的功能实现
findhelpitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
// 关于记事本菜单项的功能实现
aboutboxitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
JOptionPane.showMessageDialog(jf, \本软件仅用于学习\\n\
+ \邮箱:798407248@qq.com\\nQQ号:798407248\\n\, \关于记事本...\, JOptionPane.INFORMATION_MESSAGE);
});
// 关于作者菜单项的功能实现
writeritem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(jf, \作者:蔡双、朱林、李伟、傅湘黔、李明\\n\,
\关于作者...\, JOptionPane.INFORMATION_MESSAGE);
}
});
// 关闭程序事件
27
}
}
jf.addWindowListener(new WindowAdapter() {
// 程序关闭时的方法
public void windowClosing(WindowEvent e) { }
int option = JOptionPane.showConfirmDialog(null, \您确定关闭吗?\, }
\关闭提示....\, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
if (option == JOptionPane.OK_OPTION) {
((Window) e.getComponent()).dispose(); System.exit(0);
});
public static void main(String[] args) { }
new notebook();
6.运行界面
28
7.心得体会
这次的课程设计和以往的有很大的区别,这次的课程设计不像以前的课程设计主要是代码的设计,这是软件工程的课程设计,这次课程设计更注重的是需求分析之类的前期准备,这编写代码之前我们也做了很多准备,不是一开始就写代码,我们拿到课程设计题目之后先仔细考虑课程设计应该涉及到的问题。
在前期,我们现在网络上查找了资料,然后进行了一系列的组间讨论,我们讨论了这个课程设计到底要做什么,怎么做,确定了问题,对问题进行了可行性分析,之后又进行需求分析。这些工作在以前看来不是很重要,参加了软件工程的课程设计我才深深的体会到这些看似不起眼的小步骤其实是至关重要的,不可缺少的,这样有利于我们对整个系统的整体把握,这样做,我们有了很强的目的性,以前做程序都是一股气的做下去,感觉很茫然,很累,做的时候也会在想这个程序到底能不能做下去,但是这次的课程设计让我感觉到目的性很强,做了前面一系列的工作之后感觉这个思路都清晰了,顺着这个做下去感觉程序也做得很快,感觉也没以前写程序那么吃力,当然,我们这个程序也是很简单的,但是我们前面的准备也是应该的,在这些准备中我们觉得需求比较重要,所以把需求分析写入了课程设计报告中,或许我们还是做得不够好,但是我们一定会更加努力,以后不断的学习来扎实我们的基础和培养我们的实践能力。这次课程设计真的是让我受益良多,学到了很多东西,可以说也是很新的东西,以前很少接触到的。这里当然要感谢我们的老师细心的指导,如果没有老师的指导,我们也不知道这些东西到底要怎么做,老师一次次的给我们讲述一些分析的重要性,开始我们还不以为然,试着去做,感觉真的很有用。最后,谢谢老师!!
29
!
8.参考文献
[1]李伟波 . 软件工程 . 武汉:武汉大学出版社,2006 [2]郑人杰 . 实用软件工程 . 北京:清华大学出版社,2003 [3]张海藩 . 软件工程导论 . 北京:清华大学出版社,2008
30
正在阅读:
软件工程课程设计记事本课程设计04-15
第九章时间序列分析04-01
2017-2018学年人教版七年级数学上册单元检测题:第一章03-15
中国人民解放军各集团军编制战斗序列大全05-02
企业网站策划书精选11-21
2017年中级经济师经济基础知识-大师整理(全部都是精华)08-21
2022男生学什么中专专业吃香03-30
部编版八年级上册古诗默写专题复习12-30
安徽省煤矿建设项目安全管理规定03-08
高考小说阅读答题知识点、模板大全04-06
- XXX液化气站安全评价报告 - 图文
- 阅读、诵读兴趣小组教案 - 图文
- 小学六年级语文综合知识竞赛试卷(附答案)
- remain的用法
- 结构优化设计大作业(北航)
- 电气控制柜技术协议书
- 鄂教版四下语文第三单元测试卷
- 九年级英语Unit 14 I remember meeting all of you in Grade 7
- 英文儿歌 Bingo宾狗 歌词 适合小学教学
- 涉县“救助困难职工一日捐”活动实施细则
- 2016年北京市燕山区中考数学二模试卷及解析答案word版
- 基于Labview的员工管理系统
- 2018年市政协主席在区政协进行调研工作时的讲话
- 纺织行业研究资料
- 人事管理系统项目简介及功能描述
- 耿恩广:全身最重要的74个穴位讲解(附图)
- 2010年会计资格从业证考试重点复习习题
- 网络环境下教与学的问题与应对心得体会
- OptiSystem仿真实例 - 图文
- 语文教师素养大赛主持词