java课程设计报告.docx

上传人:b****1 文档编号:14353092 上传时间:2023-06-22 格式:DOCX 页数:25 大小:241.83KB
下载 相关 举报
java课程设计报告.docx_第1页
第1页 / 共25页
java课程设计报告.docx_第2页
第2页 / 共25页
java课程设计报告.docx_第3页
第3页 / 共25页
java课程设计报告.docx_第4页
第4页 / 共25页
java课程设计报告.docx_第5页
第5页 / 共25页
java课程设计报告.docx_第6页
第6页 / 共25页
java课程设计报告.docx_第7页
第7页 / 共25页
java课程设计报告.docx_第8页
第8页 / 共25页
java课程设计报告.docx_第9页
第9页 / 共25页
java课程设计报告.docx_第10页
第10页 / 共25页
java课程设计报告.docx_第11页
第11页 / 共25页
java课程设计报告.docx_第12页
第12页 / 共25页
java课程设计报告.docx_第13页
第13页 / 共25页
java课程设计报告.docx_第14页
第14页 / 共25页
java课程设计报告.docx_第15页
第15页 / 共25页
java课程设计报告.docx_第16页
第16页 / 共25页
java课程设计报告.docx_第17页
第17页 / 共25页
java课程设计报告.docx_第18页
第18页 / 共25页
java课程设计报告.docx_第19页
第19页 / 共25页
java课程设计报告.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java课程设计报告.docx

《java课程设计报告.docx》由会员分享,可在线阅读,更多相关《java课程设计报告.docx(25页珍藏版)》请在冰点文库上搜索。

java课程设计报告.docx

java课程设计报告

 

软件学院

课程设计报告书

 

课程名称面向对象程序设计课程设计

设计题目记事本程序

专业班级计HR08-8班

学号0820010832

姓名赵婷婷

指导教师王永贵徐珊珊

 

2010年12月

1设计时间

2010年12月20日-2011年1月2日

2设计目的

《面向对象程序设计课程设计》的教学目的是培养学生软件系统开发方案综合设计能力和创新精神。

在教师的启发和引导下,学生能自主地进行科技文献检索,进行方案设计、编写代码、调试程序,对方案进行综合分析与评述等。

3设计任务

根据课程设计2周的时间安排选择适当大小的设计课题,课程设计任务书提供了设计题目供学生选择,在验收教师同意的情况下,学生也可以自己选择感兴趣的设计题目,以调动学生参加创新设计的积极性和创造性。

基本要求:

(1)课程设计工作量为完成一个中小型规模的软件和一份软件设计报告;

(2)课程设计必须根据进度计划按期完成。

4设计内容

4.1概要设计

4.1.1设计内容及要求

记事本程序。

要求如下:

(1)使用图形用户界面实现。

(2)必须有菜单、弹出式对话框组件的实现。

(3)能实现文字编辑、保存、另存为、查找、替换功能,其它功能可自行丰富。

(4)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。

提示:

使用文件输入输出流。

4.1.2系统实现思路

设计一个MyText类,继承JFrame,具有程序的要求和功能,在主类中创建一个MyText类的构造方法,就可以直接在编译器中运行程序。

1:

界面设计

在主界面中设计一个Frame容器,并在其中加入一个下拉菜单和一个文本域控件,把该容器设置为GridLayout(1,1)布局。

2:

功能设计

在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。

点击不同菜单项时,显示不同界面。

并在TextArea中加入一个鼠标事件并进行监听,用于实现快捷的操作功能。

3:

代码设计

编写每个控件的相关代码,并进行调试

4.2自定义类及接口说明

4.2.1界面设计

在本单元中,设计了一个菜单栏和文本内容区和状态栏。

设计过程中用到了JScollPane,JLable,JMenu,JTextArea,JFileChooser,UndoManager等。

JMenu用来制作菜单,菜单包括“文件”“编辑”“帮助”。

JTextArea主要用来输入文本,JLable主要用来创建状态栏。

图4.1.1

4.2.2功能设计

整个记事本分为2快:

菜单栏和文本输入区和状态栏。

本程序中首先定义一个JNotePadUI类继承JFrame作为最底层容器。

textarea为程序文本输入区;MenuBar为菜单栏;要想记事本完成需求分析中相应的功能,还必须添加事件监听器。

事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。

本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。

1、在文件目录中添加新建、打开、保存、另存为和退出选项;在编辑目录中添加剪切、复制、粘贴、删除、查找和替换功能选项;在帮助中添加关于选项。

2、添加鼠标事件监听器,是文本区域中单击右键时会出现一个目录菜单,分别有剪切、复制、张贴、删除和退出选项。

3、分别为各个选项创建一个事件处理器,是再单击各项后,产生相关事件处理,实现其具体功能。

4.2.2系统说明

本记事本的窗体的加载是通过创建Frame的子类来实现的,在新的窗体上用相关的方法添加各种菜单项。

通过对窗口事件进行监听,来做出各种反应。

使用到了AWT组件中窗口、文本框、内部类实例作监视、按钮与标签、菜单项、文本区、布局、选择性组件、窗口事件、鼠标事件、键盘事件、使用剪切板、对话框。

使用AWT组件构成“记事本”的基本框架。

通过对窗口事件的监听,使用actionPerformed()处理事件。

使用getSource()方法获取事件源,不同事件源通过不同的语句进行不同操作,从而实现对应功能。

4.3程序源代码

importjava.awt.*;

importjava.awt.datatransfer.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

publicclassMyTextextendsJFrame{

JTextAreajta;

Containercontent;

JPopupMenujpm;

JMenuBarjmb;

Stringfilename;

Clipboardclip=getToolkit().getSystemClipboard();

publicMyText(){

setLayout(newGridLayout(1,1));

content=getContentPane();

jta=newJTextArea();

add(jta);

jpm=newJPopupMenu();

JMenuItemitem1=newJMenuItem("剪切");

JMenuItemitem2=newJMenuItem("复制");

JMenuItemitem3=newJMenuItem("粘贴");

JMenuItemitem4=newJMenuItem("删除");

JMenuItemitem5=newJMenuItem("退出");

jpm.add(item1);

jpm.add(item2);

jpm.add(item3);

jpm.add(item4);

jpm.add(item5);

jta.add(jpm);

jmb=newJMenuBar();

JMenufilemenu=newJMenu("文件(F)");

JMenueditmenu=newJMenu("编辑(E)");

JMenuhelpmenu=newJMenu("帮助(H)");

filemenu.setMnemonic(KeyEvent.VK_F);

editmenu.setMnemonic(KeyEvent.VK_E);

helpmenu.setMnemonic(KeyEvent.VK_H);

JMenuItemn=newJMenuItem("新建(N)",KeyEvent.VK_N);

JMenuItemo=newJMenuItem("打开(O)...",KeyEvent.VK_O);

JMenuItems=newJMenuItem("保存(S)...",KeyEvent.VK_S);

JMenuItema=newJMenuItem("另存为(A)...",KeyEvent.VK_A);

JMenuIteme=newJMenuItem("退出(E)",KeyEvent.VK_E);

JMenuItemx=newJMenuItem("剪切(X)",KeyEvent.VK_X);

JMenuItemc=newJMenuItem("复制(C)",KeyEvent.VK_C);

JMenuItemv=newJMenuItem("粘贴(V)",KeyEvent.VK_V);

JMenuItemd=newJMenuItem("删除(D)",KeyEvent.VK_D);

JMenuItemf=newJMenuItem("查找(F)",KeyEvent.VK_F);

JMenuItemr=newJMenuItem("替换(R)",KeyEvent.VK_R);

JMenuIteml=newJMenuItem("关于");

n.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));

o.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));

s.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));a.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,ActionEvent.CTRL_MASK));

e.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK)x.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,ActionEvent.CTRL_MASK))

c.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK));v.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK));

d.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,ActionEvent.CTRL_MASK));f.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,ActionEvent.CTRL_MASK));

r.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,ActionEvent.CTRL_MASK));

filemenu.add(n);

filemenu.add(o);

filemenu.add(s);

filemenu.add(a);

filemenu.add(e);

editmenu.add(x);

editmenu.add(c);

editmenu.add(v);

editmenu.add(d);

editmenu.add(f);

editmenu.add(r);

helpmenu.add(l);

jmb.add(filemenu);

jmb.add(editmenu);

jmb.add(helpmenu);

setJMenuBar(jmb);

item1.addActionListener(newCut());

item2.addActionListener(newCopy());

item3.addActionListener(newPaste());

item4.addActionListener(newDelete());

item5.addActionListener(newExit());

n.addActionListener(newNew());

o.addActionListener(newOpen());

s.addActionListener(newSave());

a.addActionListener(newSaves());

e.addActionListener(newExit());

x.addActionListener(newCut());

c.addActionListener(newCopy());

v.addActionListener(newPaste());

d.addActionListener(newDelete());

f.addActionListener(newFind());

r.addActionListener(newReplace());

l.addActionListener(newAbout());

jta.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEventevent){

if(event.isPopupTrigger())

jpm.show(event.getComponent(),event.getX(),event.getY());

}

publicvoidmouseReleased(MouseEventevent){

if(event.isPopupTrigger())

jpm.show(event.getComponent(),event.getX(),event.getY());

}

});

setTitle("记事本");

setSize(500,400);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

publicstaticvoidmain(String[]args){

newMyText();

}

publicbooleanisCurrentFileSaved(){

if(getTitle().equals("已保存")||getTitle().equals("新文档")){

returntrue;

}

else{

returnfalse;

}

}

classNewimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

if(isCurrentFileSaved()){

jta.setText("");

setTitle("新文档");

}

else{

inti=JOptionPane.showConfirmDialog(null,"文件未保存,是否要保存?

","提示",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);

if(i==JOptionPane.YES_OPTION)

newSave();

elseif(i==JOptionPane.NO_OPTION){

jta.setText("");

setTitle("新文档");

}

else

return;

}

}

}

classOpenimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

FileDialogfd=newFileDialog(MyText.this,"selectFile",FileDialog.LOAD);

fd.show();

if(fd.getFile()!

=null){

filename=fd.getDirectory()+fd.getFile();

setTitle(filename);

ReadFile();

}

jta.requestFocus();

}

}

classSaveimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

FileDialogfd=newFileDialog(MyText.this,"SaveFile",FileDialog.SAVE);

fd.show();

if(fd.getFile()!

=null){

filename=fd.getDirectory()+fd.getFile();

setTitle(filename);

try{

DataOutputStreamd=newDataOutputStream(newFileOutputStream(filename));

Stringline=jta.getText();

BufferedReaderbr=newBufferedReader(newStringReader(line));

while((line=br.readLine())!

=null){

d.writeBytes(line+"\r\n");

d.close();

}

}

catch(Exceptionex){

System.out.println("Filenotfound");

}

jta.requestFocus();

}

}

}

classSavesimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

FileDialogfd=newFileDialog(MyText.this,"SaveFile",FileDialog.SAVE);

fd.show();

if(fd.getFile()!

=null){

filename=fd.getDirectory()+fd.getFile();

setTitle(filename);

try{

DataOutputStreamd=newDataOutputStream(newFileOutputStream(filename));

Stringline=jta.getText();

BufferedReaderbr=newBufferedReader(newStringReader(line));

while((line=br.readLine())!

=null){

d.writeBytes(line+"\r\n");

d.close();

}

}

catch(Exceptionex){

System.out.println("Filenotfound");

}

jta.requestFocus();

}

}

}

classExitimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

if(isCurrentFileSaved()){

dispose();

System.exit(0);

}

else{

inti=JOptionPane.showConfirmDialog(null,"文件未保存,是否要保存?

","提示",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);

if(i==JOptionPane.YES_OPTION)

newSave();

elseif(i==JOptionPane.NO_OPTION){

dispose();

System.exit(0);

}

else

return;

}

}

}

voidReadFile(){

BufferedReaderr;

StringBuffersb=newStringBuffer();

try{

r=newBufferedReader(newFileReader(filename));

Stringline;

while((line=r.readLine())!

=null)

sb.append(line+"\n");

jta.setText(sb.toString());

r.close();

}

catch(FileNotFoundExceptionfe){

System.out.println("FilenotFound");

}

catch(IOExceptionioe){}

}

classCutimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

Stringsel=jta.getSelectedText();

StringSelectionss=newStringSelection(sel);

clip.setContents(ss,ss);

jta.replaceRange("",jta.getSelectionStart(),jta.getSelectionEnd());

}

}

classCopyimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

Stringsel=jta.getSelectedText();

StringSelectionclipString=newStringSelection(sel);

clip.setContents(clipString,clipString);

}

}

classPasteimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

Transferablecliptran=clip.getContents(MyText.this);

try{

Stringsel=(String)cliptran.getTransferData(DataFlavor.stringFlavor);

jta.replaceRange(sel,jta.getSelectionStart(),jta.getSelectionEnd());

}

catch(Exceptionexc){

System.out.println("notstringflavour");

}

}

}

classDeleteimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

jta.replaceRange("",jta.getSelectionStart(),jta.getSelecti

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2