java课程设计.docx

上传人:b****9 文档编号:26035552 上传时间:2023-06-17 格式:DOCX 页数:27 大小:266.61KB
下载 相关 举报
java课程设计.docx_第1页
第1页 / 共27页
java课程设计.docx_第2页
第2页 / 共27页
java课程设计.docx_第3页
第3页 / 共27页
java课程设计.docx_第4页
第4页 / 共27页
java课程设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

java课程设计.docx

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

java课程设计.docx

java课程设计

 

课程设计(论文)

 

题目名称记事本程序

课程名称java程序设计课程设计

学生姓名

学号

系、专业

指导教师

 

2010年1月3日

摘要

本次课程设计的题目是用JAVA语言编写记事本程序,要求是:

用图形界面实现;含有简单的文字编辑功能,如:

剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。

本程序主要用到了Javaswing组件和事件监听器,还用到了文件的输入输出流。

记事本的界面参考了Windows中的记事本界面,并且根据课程设计要求做了适当的调整。

关键词:

记事本程序;Java语言;swing组件

 

目录

1问题描述3

2需求分析3

3概要设计3

3.1自定义类说明...3

3.2程序流程图4

4详细设计7

4.1jishiben类的实现7

4.2GUI程序界面设计7

4.3事件处理9

5测试分析12

6课程设计总结16

6.1设计体会16

6.2致谢16

参考文献17

附录(源程序清单)18

1问题描述

设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:

剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。

这次课程设计由卢炜、刘秀春、伍霜霜和我四个人合作完成。

卢炜负责概要设计,刘秀春负责4.1jishiben类的实现和4.2GUI程序界面设计,伍霜霜负责5测试分析。

由于4.3事件处理和撰写程序关系密切,这两项都由我负责。

并且根据伍霜霜的测试的结果重新调整程序。

2需求分析

本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:

(1)、菜单中有“文件”、“编辑”、“帮助”三个主菜单;

(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。

(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:

用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件。

(4)“帮助”菜单中有“关于”的子菜单,用于描述记事本程序的相关信息。

3概要设计

3.1自定义类说明

3.1.1类名:

jishiben

(1)作用:

主类

(2)继承的父类:

JFrame类

(3)实现的接口:

windowListener类与actionListener类

(4)成员变量说明:

Filefile=null;//定义一个空文件

privateJLabelstateBar;//定义一个标签

privateJTextAreatext;//定义编辑区

privateJMenuBarmb;//定义菜单栏

privateJMenufiles,edit,help;//定义菜单

privateJMenuItem

Open,New,Save,SaveAs,Exit,Cut,Copy,Paste,Delete,Find,Replace,SelectAll,About;//定义菜单项

(5)主要成员方法说明:

编辑区键盘事件:

KeyListener类如果记事本的编辑区内用键盘输入了字符,就能够被程序监听;

窗口的事件监听:

windowListener类;

菜单项的事件监听:

ActionListener类;

3.2程序流程图

3.2.1主流程图

 

3.2.2“文件”菜单操作流程图

 

3.2.3“编辑”菜单操作流程图

 

3.2.4“帮助”菜单操作流程图

 

4详细设计

4.1jishiben类的实现

Filefile=null;//定义一个空文件

privateJLabelstateBar;//定义一个标签

privateJTextAreatext;//定义编辑区

privateJMenuBarmb;//定义菜单栏

privateJMenufiles,edit,help;//定义菜单

privateJMenuItemOpen,New,Save,SaveAs,Exit,Cut,Copy,

Paste,Delete,Find,Replace,SelectAll,About;//定义菜单项

4.2GUI程序界面设计

publicjishiben(){//构造函数

super("记事本");//菜单栏

mb=newJMenuBar();

/*****菜单栏的各个菜单项*****/

files=newJMenu("文件");

edit=newJMenu("编辑");

help=newJMenu("帮助");

/*****“帮助”菜单项的下拉菜单******/

About=newJMenuItem("关于记事本");

/*****“文件”菜单项的下拉菜单*****/

Open=newJMenuItem("打开");

New=newJMenuItem("新建");

Save=newJMenuItem("保存");

SaveAs=newJMenuItem("另存为");

Exit=newJMenuItem("退出");

/******编辑菜单的四个下拉菜单*****/

Cut=newJMenuItem("剪切");

Copy=newJMenuItem("复制");

Paste=newJMenuItem("粘贴");

Delete=newJMenuItem("删除");

Find=newJMenuItem("查找");

Replace=newJMenuItem("替换");

SelectAll=newJMenuItem("全选");

stateBar=newJLabel("未修改");//添加标签

stateBar.setHorizontalAlignment(SwingConstants.LEFT);

stateBar.setBorder(BorderFactory.createEtchedBorder());

mb.add(files);//添加控键

mb.add(edit);

mb.add(help);

files.add(New);

files.add(Open);

files.add(Save);

files.add(SaveAs);

files.addSeparator();//分隔线

files.add(Exit);

edit.add(Cut);

edit.add(Copy);

edit.add(Paste);

edit.add(Delete);

edit.addSeparator();//分隔线

edit.add(Find);

edit.add(Replace);

edit.addSeparator();//分隔线

edit.add(SelectAll);

help.add(About);

setJMenuBar(mb);

text=newJTextArea();

add(newJScrollPane(text));//滚动面板

setSize(600,500);//设置窗口大小

setVisible(true);//使窗口显示

4.3事件处理

4.3.1编辑区键盘事件处理

text.addKeyListener(

newKeyAdapter(){

publicvoidkeyTyped(KeyEvente){

processTextArea();

}

}

);

4.3.2窗口事件处理

ClasswindowListenerextendsWindowAdapter{publicvoidwindowClosing(WindowEvente){

close();

}

}

4.3.3菜单项事件处理

classactionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){

JMenuItemmi=(JMenuItem)e.getSource();

if(mi==New){//新建文件

text.setText("");

file=null;

}

elseif(mi==Exit){//退出

close();

}

elseif(mi==Cut){//剪切

stateBar.setText("已修改");

text.cut();

}

elseif(mi==Copy)//复制

text.copy();

elseif(mi==Paste){//粘贴

stateBar.setText("已修改");

text.paste();

}

elseif(mi==SelectAll)//全选

text.selectAll();

elseif(mi==Delete){//删除

stateBar.setText("已修改");

intstart;

intend;

start=text.getSelectionStart();

end=text.getSelectionEnd();

text.replaceRange("",start,end);

}

elseif(mi==Open){//打开

JFileChooserjf=newJFileChooser();//创建打开文件对话框

if(file!

=null)

jf.setSelectedFile(file);

intreturnVal=jf.showOpenDialog(jishiben.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=jf.getSelectedFile();

unfold();

}

}

elseif(mi==About){//关于

Stringmessage="----记事本----"

+"作者:

刘尊志\n感谢您的使用!

";

JOptionPane.showMessageDialog(jishiben.this,message,"关于...",JOptionPane.PLAIN_MESSAGE);

}

elseif(mi==Save)//保存

save();

elseif(mi==SaveAs){//另存为

JFileChooserjf=newJFileChooser();

if(file!

=null)

jf.setSelectedFile(file);

intreturnVal=jf.showSaveDialog(jishiben.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=jf.getSelectedFile();

save();

}

}

elseif(mi==Find){//查找

FindAndReplacefr=newFindAndReplace();

fr.setVisible(true);

fr.setLocation(getLocation());

}

elseif(mi==Replace){//替换

FindAndReplacefr=newFindAndReplace();

fr.setVisible(true);

fr.setLocation(getLocation());

}

}

}

5测试分析

(1)程序运行界面如下:

(2)“文件”菜单的菜单项:

(3)“编辑”菜单的菜单项:

 

(4)打开文件及另存文件时的界面:

由于打开文件和另存文件都要寻找路径,所以开始时界面相同。

(5)打开了某一个文本文件是的截图:

(6)使用查找替换时的截图:

在“查找内容”的框内输入查找的内容,再按“查找下一个”这个按钮就可以查找。

如果要替换所查找的内容,就在“替换字串”的框内输入要替换成的内容。

如图中就是把“风水”替换“风”。

(7)记事本关闭或退出时的截图:

当文件发生了剪切、删除、粘贴等操作,或者在编辑区中输入了字符,即文件进行了修改,当点击“文件”菜单中的“退出”项或者点击了窗口的关闭按钮时,就会弹出一个“保存文件?

”的对话框。

如果文件没有发生修改,关闭或者退出时,直接关闭了记事本程序。

由于其他的操作在截图里很难发现什么变化,所以只展示了上面的截图。

6课程设计总结

6.1设计体会

在经过了将近八周的Java课程的学习之后,对于Java这门优秀的编程语言有了更深层次的认识。

在学习的过程中,通过老师的教学指导、课外对相关知识的阅读和上机实际操作,对于它所具有的面向对象、与平台无关、安全、稳定和多线程等特点,有了更深刻更直观的认识和理解。

这次课程设计我主要负责4.3事件处理和撰写程序,但因为学习时间不长,对相关知识理解得还不是很透彻。

致使在这次课程设计的过程中,遇到了很多问题。

诸如,监控的定义:

是否可以在一个监控器里再次添加一个监控器。

还有menubar中不可以添加button按钮以及也不可以添加scrollpane按钮。

可以说,这次写论文的过程是个很艰辛的过程。

不过在设计的过程中,我收获了很多。

从选择课程设计的题目开始,到需求分析,开发工具的选择,最终到系统的设计思路,关键代码的设计,每一步都认真思考分析完成。

有点遗憾的是,起初在设计时原本打算能更加完善一些功能的设计,但因为确实有难度就此作罢。

在以后的学习中,我会进一步加深对于JAVA的理解和使用,通过阅读相关知识拓宽自己对于JAVA的了解。

6.2致谢

在这次课程设计中,很感谢梁老师的指导,将我从对于JAVA肤浅的认识引入到深层次的分析理解。

还感谢我们的任课老师顾老师,由于她的悉心教导,我能用Java这一种语言进行比较熟练的编程。

还感谢和我一起做这次课程设计的组员卢炜、刘秀春、伍霜霜,由于我们的通力合作,这次课程设计得以顺利的完成。

 

参考文献

[1]孙全党,王吴迪,赵枫朝.Java程序设计应用教程[M].北京:

电子工业出版社,2006

[2]雷之宇.Java项目开发实践——网络篇[M].北京:

中国铁道出版社,2005

[3]赵玉阳.Java从入门到精通[M].北京:

清华大学出版社,2006

[4]李龙怡.Java编程实例讲解[M].北京:

高等教育出版社,2005

[5]李尊朝,苏军.Java语言程序设计[M].北京:

中国铁道出版社,2009

附录(源程序清单)

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

publicclassjishibenextendsJFrame{

Filefile=null;

privateJLabelstateBar;

privateJTextAreatext;

privateJMenuBarmb;

privateJMenufiles,edit,help;

privateJMenuItemOpen,New,Save,SaveAs,Exit,Cut,Copy,

Paste,Delete,Find,Replace,SelectAll,About;

publicjishiben(){//构造函数

super("记事本");//菜单栏

mb=newJMenuBar();

files=newJMenu("文件");//菜单栏的各个菜单项

edit=newJMenu("编辑");

help=newJMenu("帮助");

/*****“帮助”菜单项的下拉菜单******/

About=newJMenuItem("关于记事本");

/*****“文件”菜单项的下拉菜单*****/

Open=newJMenuItem("打开");

New=newJMenuItem("新建");

Save=newJMenuItem("保存");

SaveAs=newJMenuItem("另存为");

Exit=newJMenuItem("退出");

/******编辑菜单的四个下拉菜单*****/

Cut=newJMenuItem("剪切");

Copy=newJMenuItem("复制");

Paste=newJMenuItem("粘贴");

Delete=newJMenuItem("删除");

Find=newJMenuItem("查找");

Replace=newJMenuItem("替换");

SelectAll=newJMenuItem("全选");

stateBar=newJLabel("未修改");//添加标签

stateBar.setHorizontalAlignment(SwingConstants.LEFT);

stateBar.setBorder(BorderFactory.createEtchedBorder());

mb.add(files);//添加控键

mb.add(edit);

mb.add(help);

files.add(New);

files.add(Open);

files.add(Save);

files.add(SaveAs);

files.addSeparator();//分隔线

files.add(Exit);

edit.add(Cut);

edit.add(Copy);

edit.add(Paste);

edit.add(Delete);

edit.addSeparator();//分隔线

edit.add(Find);

edit.add(Replace);

edit.addSeparator();//分隔线

edit.add(SelectAll);

help.add(About);

setJMenuBar(mb);

text=newJTextArea();

add(newJScrollPane(text));//滚动面板

setSize(600,500);//设置窗口大小

setVisible(true);//使窗口显示

/*****************监听器接口*************************/

New.addActionListener(newactionListener());Open.addActionListener(newactionListener());

Save.addActionListener(newactionListener());

SaveAs.addActionListener(newactionListener());

Exit.addActionListener(newactionListener());

Cut.addActionListener(newactionListener());

Copy.addActionListener(newactionListener());

Paste.addActionListener(newactionListener());

Delete.addActionListener(newactionListener());

Find.addActionListener(newactionListener());

Replace.addActionListener(newactionListener());

SelectAll.addActionListener(newactionListener());

About.addActionListener(newactionListener());

addWindowListener(newwindowListener());

/***************编辑区键盘事件******************/

text.addKeyListener(

newKeyAdapter(){

publicvoidkeyTyped(KeyEvente){

processTextArea();

}

}

);

}

voidprocessTextArea(){

stateBar.setText("已修改");

}

/**********将文件读入到编辑区***********/

voidunfold(){

try{//抛出异常

FileReaderReadf=newFileReader(file);

intlen=(int)file.length();

char[]buffer=newchar[len];

Readf.read(buffer,0,len);

Readf.close();

text.setText(newString(buffer));

}

catch(Exceptione){e.printStackTrace();}

}

/***********创建文件写入器*************/

Voidsave(){try{

FileWriterWritef=newFileWriter(file);

Writef.write(text.getText());

Writef.close();

}

catch(Exceptione){e.printStackTrace();}

}

/*********查找及替换对话框**********

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

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1