最新版黄金辉0401125课程设计报告Word文档格式.docx
《最新版黄金辉0401125课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《最新版黄金辉0401125课程设计报告Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
现在网络上各种文档编辑器数不胜数,功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:
有的字体体积相对于一般文字编辑来说太大;
有的功能太复杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能说足够了;
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
该课程设计报告里的简易记事本程序是使用Java程序设计语言编写的,要求实现记事本的基本功能,参考了windows中记事本的一些功能。
要求打开文件,读取文件中的文本信息;
显示、编辑修改文本信息;
实现新建、打开、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能。
1.1功能设计
本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
(1)菜单中有“文件”,“编辑”,“关于”三个主菜单。
(2)“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:
分别用于新建文件,打开文件,保存文件,另外保存文件,退出记事本。
(3)“编辑”中有“剪切”“复制”“粘贴”“全选”“查找”“替换”六个字菜单:
用于剪切文字,复制文字,粘贴文字,全部选中。
增加了“查找”“替换”子菜单来对文字进行查找和替换。
(4)“关于”菜单中有关于记事本程序的制作日期,作者等信息
2.概要设计
2.1系统主要功能
本程序是利用java程序设计语言编写的一个简单的记事本程序。
可以通过菜单栏和工具栏实现以下功能:
如文件的新建,打开,保存和退出;
对文件的编辑,如复制,剪切,粘贴;
以及帮助菜单;
执行完操作后,能够顺利关闭记事本。
2.2运行环境要求
(1)实现设计的系统硬件需求
硬件配置的基本要求:
*586以上的计算机
*32MB以上的内存
*彩色显示器
*3.5寸高密软盘驱动器
*光盘驱动器
*4G以上硬盘空间
*鼠标
(2)实现设计的系统软件
*WINDOWSXP
*JcreatorPro全套软件
3.程序详细设计与分析
设计一个EditorDemo类,继承自JFrame类,并在EditorDemo类利用JtextPane创建面板窗口textPane,利用Jlabel创建状态栏statusBar,利用JFileChooser创建文件选择器filechooser,利用JMenuBar创建并实例化菜单栏,利用JToolBar创建工具栏,再通过一些具体方法实现各功能键的功能。
建立构造函数publicEditorDemo();
通过该构造函数实现记事本程序的主要功能,运行时在主类中通过调用该构造函数来实现对记事本程序的基本操作。
3.1窗口设计
在主接口中设计一个EditorDemo容器继承自JFrame,并在其中加入菜单栏、工具栏和一个文本域控件。
publicclassEditorDemoextendsJFrame
JTextPanetextPane=newJTextPane();
//创建文本窗格,编辑窗口
JFileChooserfilechooser=newJFileChooser();
//文件选择器
setJMenuBar(createJMenuBar(actions));
//设置菜单栏
Containercontainer=getContentPane();
//得到容器
container.add(createJToolBar(actions),BorderLayout.NORTH);
//工具栏
container.add(textPane,BorderLayout.CENTER);
//增加文本窗格
3.2功能设计
(1)在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。
点击不同菜单项时,显示不同接口。
如下图:
(2)加入工具栏的功能键,通过工具栏实现对文本的基本操作。
(3)对每个菜单项进行注册监听。
点击不同功能键时,实现不同的操作,显示不同的窗口。
主要实现方法代码如下:
实现新建文件命令功能如下图:
实现保存文本命令如下图:
4.调试分析
4.1窗口调试
确定主窗体,设置主窗体的属性,对窗体进行布局,加入所需控件并对控件进行初始化。
在完成所有方法的源代码编辑后,对程序进行编译、运行!
会出现窗体如下图:
4.2功能调试
对所有菜单项进行注册监听。
在编写触发事件时执行各项操作,包括了一些常用部分的事件处理,实现各功能键的操作。
例如当点击“文件“按钮是显示如下窗口:
当需要打开已存在的文件时,点击“打开文本”按钮会出现如下窗口:
当输入完文本是要保存的话,点击“保存文本”会出现下面的窗口:
依次调试其他功能键及窗口,直至达到符合要求的能实现简易的记事本的功能!
5.课程设计总结
在为期一周的JAVA课程设计过程中,我深深地感受到了自己对JAVA这门优秀的编程语言的掌握的不足。
虽然在老师的帮助与指导、同组人员的研究与探讨下最终完成了该课程设计,但我知道我还有很多东西要学。
在整个课程设计过程中,我感受最深的就是只要自己认真努力,没有过不去的坎。
有了问题,就一定要弄清楚,放在一边永远都无法完成。
同时,我也认识到了团结互助的重要性,一个人解决不了的问题,一定要多问多与别人讨论,在讨论的过程中完善自己的想法,并能碰撞出更为新颖的火花。
课程设计让我们综合了我们所学的JAVA知识,给了我们一个提升自己编程能力的平台,让我们明白JAVA在现代高科技社会中所起的重大作用。
6.参考文献
[1]耿详义,张跃平.Java2实用教程.北京:
清华大学出版社,2004.2
[2]张利国.Java实用教程案例.北京:
清华大学出版社,2003.10
[3]周晓聪,等.面向对象程序设计与Java语言.北京:
机械工业出版社,2004.3
[4]李尊朝.Java语言程序设计.北京:
中国铁道出版社,2004.2
[5](美)PhilipHeller.ComplateJava2CertificationStudyGuideFourthEdition(Java2证学习指南)(第四版英文版).北京:
电子工业出版社,2004.1
附录
源程序
importjava.awt.CheckboxMenuItem;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.FileDialog;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.GraphicsEnvironment;
importjava.awt.Menu;
importjava.awt.MenuBar;
importjava.awt.MenuItem;
importjava.awt.MenuShortcut;
importjava.awt.TextArea;
importjava.awt.Toolkit;
importjava.awt.Window;
importjava.awt.datatransfer.Clipboard;
importjava.awt.datatransfer.DataFlavor;
importjava.awt.datatransfer.StringSelection;
importjava.awt.datatransfer.Transferable;
importjava.awt.datatransfer.UnsupportedFlavorException;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.logging.Level;
importjava.util.logging.Logger;
importjavax.swing.JButton;
importjavax.swing.JColorChooser;
importjavax.swing.JComboBox;
importjavax.swing.JDialog;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
publicclassnotebook{
//记事本的具体实现类
privateTextAreacontent;
privateStringfilePath="
"
;
//先让路径为空
Colorcolor=Color.red;
ToolkittoolKit=Toolkit.getDefaultToolkit();
Clipboardclipboard=toolKit.getSystemClipboard();
publicnotebook(){
//创建一个JFrame对象;
并设置相关属性
finalJFramejf=newJFrame("
我的记事本"
);
jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
jf.setBounds(500);
jf.setResizable(true);
jf.setVisible(true);
//创建菜单栏
MenuBarmenu=newMenuBar();
jf.setMenuBar(menu);
//创建并添加文本框
content=newTextArea("
TextArea.SCROLLBARS_VERTICAL_ONLY);
jf.add(content);
content.setVisible(true);
content.requestFocusInWindow();
//菜单栏添加内容
Menufilemenu=newMenu("
文件(F)"
Menueditmenu=newMenu("
编辑(E)"
Menuformatmenu=newMenu("
格式(O)"
Menuviewmenu=newMenu("
查看(V)"
Menuhelpmenu=newMenu("
帮助(H)"
menu.add(filemenu);
menu.add(editmenu);
menu.add(formatmenu);
menu.add(viewmenu);
menu.add(helpmenu);
//创建文件菜单上的各个菜单项并添加到菜单上
MenuItemnewitem=newMenuItem("
新建(N)"
newitem.setShortcut(newMenuShortcut(KeyEvent.VK_N,false));
filemenu.add(newitem);
MenuItemopenitem=newMenuItem("
打开(O)"
openitem.setShortcut(newMenuShortcut(KeyEvent.VK_O,false));
filemenu.add(openitem);
MenuItemsaveitem=newMenuItem("
保存(S)"
saveitem.setShortcut(newMenuShortcut(KeyEvent.VK_S,false));
filemenu.add(saveitem);
MenuItemsaveasitem=newMenuItem("
另存为(A)"
saveasitem.setShortcut(newMenuShortcut(KeyEvent.VK_A,false));
filemenu.add(saveasitem);
MenuItemsetitem=newMenuItem("
页面设置(U)"
setitem.setShortcut(newMenuShortcut(KeyEvent.VK_U,false));
filemenu.add(setitem);
setitem.setEnabled(false);
MenuItemprintitem=newMenuItem("
打印(P)"
printitem.setShortcut(newMenuShortcut(KeyEvent.VK_P,false));
filemenu.add(printitem);
printitem.setEnabled(false);
filemenu.addSeparator();
MenuItemexititem=newMenuItem("
退出(X)"
exititem.setShortcut(newMenuShortcut(KeyEvent.VK_X,false));
filemenu.add(exititem);
//添加监听器来实现文件菜单上的各个菜单项的功能
//新建菜单项的功能实现
newitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringcon=content.getText();
if(!
con.equals("
)){//文本域里文本不为空
intresult=JOptionPane.showConfirmDialog(
null,("
是否要保存?
),("
保存文件..."
),JOptionPane.YES_NO_CANCEL_OPTION);
if(result==JOptionPane.NO_OPTION){//不保存
content.setText("
}
elseif(result==JOptionPane.CANCEL_OPTION){//取消新建
elseif(result==JOptionPane.YES_OPTION)//选择保存
{
JFileChooserjfc=newJFileChooser();
//用于选择保存路径的文件名
intbcf=jfc.showSaveDialog(jf);
if(bcf==JFileChooser.APPROVE_OPTION){
try{
//保存文件
BufferedWriterbfw=newBufferedWriter(
newFileWriter(newFile(jfc.getSelectedFile().getAbsolutePath()+"
.txt"
)));
filePath=jfc.getSelectedFile().getAbsolutePath()+"
//获取文件保存的路径
bfw.write(con);
//向文件写出数据
bfw.flush();
bfw.close();
//关闭输出流
}catch(IOExceptionex){
Logger.getLogger(notebook.class.getName()).log(Level.SEVERE,null,ex);
newnotebook();
//新建文本文件
});
//打开菜单项的功能实现
openitem.addActionListener(newActionListener(){
//JFileChooserjfile=newJFileChooser();
//FileNameExtensionFilterfilter=newFileNameExtensionFilter("
*.txt"
"
txt"
//jfile.setFileFilter(filter);
//jfile.setVisible(true);
//intreturnval=jfile.showOpenDialog(jfile);
//filePath=jfile.getDialogTitle()+jfile.getSelectedFile().getName();
//System.out.println(jfile.getSelectedFile());
FileDialogdialog=newFileDialog(newJFrame(),"
打开...."
FileDialog.LOAD);
dialog.setVisible(true);
filePath=dialog.getDirectory()+dialog.getFile();
System.out.println(filePath);
Filefile=newFile(filePath);
BufferedReaderbr=null;
StringBuildersb=newStringBuilder();
try{
br=newBufferedReader(newFileReader(file));
Stringstr=null;
while((str=br.readLine())!
=null){
sb.append(str).append("
\n"
}
content.setText(sb.toString());
}
catch(FileNotFoundExceptione1){
e1.printStackTrace();
catch(IOExceptione1){
finally{
if(br!
try{
br.close();
catch(IOExceptione1){
e1.printStackTrace();
}
}
//保存菜单项的功能实现
saveitem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
//FileDialogdialog=newFileDialog(newJFrame(),"
保存...."
FileDialog.SAVE);
//dialog.setVisible(true);
//filePath=dialog.getDirectory()+dialog.getFile();
//Filefile=newFile(filePath);
//BufferedWriterbw=null;
//try{
//bw=newBufferedWriter(newFileWriter(file));
//bw.write(content.getText());
//}
//catch(FileNotFoundExceptione1){
//e1.printStackTrace();