java课程设计.docx
《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
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();}
}
/*********查找及替换对话框**********