java课程设计报告.docx
- 文档编号:14353092
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:25
- 大小:241.83KB
java课程设计报告.docx
《java课程设计报告.docx》由会员分享,可在线阅读,更多相关《java课程设计报告.docx(25页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告