java课程设计英汉电子词典编程.docx
《java课程设计英汉电子词典编程.docx》由会员分享,可在线阅读,更多相关《java课程设计英汉电子词典编程.docx(45页珍藏版)》请在冰豆网上搜索。
java课程设计英汉电子词典编程
Java课程设计英汉电子词典
一、需求分析
二十世纪后半叶,以电子计算机为代表的现代科学获得了突飞猛进的发展并迅速和人们的日常生活结合在一起。
计算机技术的发展和进步也使电子语言词典的诞生成为可能。
我们日常的学习生活中,常会遇到这样的问题:
在工作时或在网上冲浪,或者电子邮箱中收到一封外国朋友发的英文E-mail,遇到某些陌生的单词,可又
疲于去翻查厚重的英文字典时,电脑中所安装的英汉电子词典便成为了最为方便、快捷的选择。
电子词典是一种多功能的词典类工具软件,它可以即时翻译,快速、准确、详细地查阅英文单词,或将中文单词进行英文翻译,使自己的知识面拓展得更宽、更广。
尽管电子词典只有十来年的历史,但它却已经发展壮大,成为词典家族中具有旺盛生命力的一员。
虽然目前它尚不足以取代传统词典,但在英语学习和教学中,由于它实用、快捷、准确、经济等特点,已经成为传统英汉词典的有力竞争者,并对传统的词典提出了挑战。
本系统是一个采用MicrosoftAccess作为数据库,用JAVA作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。
它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。
其功能结构图如图1.1所示:
英语小词典
图1.1功能结构图
功能模块说明:
1、英译汉功能模块说明:
可以实现对英文单词对中文单词的查询功能。
用
户文本框中输入要查询的英语单词。
若该单词存在于词库中,则会在文件对话框中显示其词性及中文翻译;若该单词没有存在于词库中,则会弹出“警告”,说明“查无此词”;若没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”。
2、汉译英功能模块说明:
可以实现对中文单词对英文单词的查询功能。
用户可在文本框中输入要查询的中文单词。
若该单词存在于词库中,则会在文件对话框中显示一个或多个对应的英文;若该单词没有存在于词库中,则会弹出“警告”,说明“查无此词”;若没有输入直接点击“查询”,则会弹出“警告”,说明
“查询对象不能为空”。
3、备份词库功能模块说明:
可以实现对现有词库的备份,可将当前词库存入用户所设置的任一位位置。
4、添加词汇功能模块说明:
可以实现对词库的添加。
用户可自行输入所添加的单词及其解释,若添加的是词库中没有的单词,系统在添加成功后有提示“添加成功”;若添加的是词库中已有的单词,系统会弹出“警告”,说明“此词汇已存在”。
5、修改词汇功能模块说明:
可以实现对词库中已有单词的修改。
用户可自
行修改词库中的单词的解释,若输入单词不存在于词库中,系统会弹出“警告”,说明“不存在此单词”。
6删除词汇功能模块说明:
可以删除词库中已有的单词。
用户可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,若输入单词不存在于词库中,系统会弹出“警告”,说明“不存在此单词”。
7、其它功能模块说明:
在帮助中有“帮助”与“关于”两项,“帮助”中有
关于词典的功能说明,“关于”可显示版本信息。
、概要设计
1、英语词典设计要求
分析词典的主要功能,设计实现如下功能:
(1)实现程序GUI图形界面;
(2)实现与词典数据库的访问;
(3)实现文件的输入、输出;
(4)实现鼠标或键盘事件响应模块。
2、自定义类说明
(1)publicclassDie{}
自定义主体main函数的类,用来调用各种类
(2)classDataWindowextendsJFrameimplementsActionListener{}
自定义一个主窗体类,用来显示整个窗体。
继承的父类:
JFrame类
实现的接口:
ActionListener
(3)classAddWinextendsJFrameimplementsActionListener{}
自定义一个添加窗口类,用于添加新的单词及其解释
(4)DelWinextendsJFrameimplementsActionListener{}
自定义一个删除窗口类,用于删除词库中所存在的单词及其解释
(5)ModifyWinextendsJFrameimplementsActionListener{}
自定义一个修改窗口类,用于修改词库中所存在的单词及其解释
(6)classHelpFrameextendsJFrame{}
自定义一个帮助窗口类,用不可编辑的文本域的窗体对该词典的功能
做简要的说明
3、界面设计思想
创建窗体,设计菜单。
定义菜单条JMenumfile(文件)、medit(编辑)、mhelp(帮助),菜单子项JMenuItemedic(英汉词典)、cdic(汉英词典)、back_data
(备份词库)、quit(退出)、addedit(添加词汇)、modedi(修改词汇)、deledit
(删除词汇)、hhelp(帮助)、about(关于)。
通过add()方法将菜单子项添加到菜单中,并注册监听者。
定义一个文件对话框filedialog_save,并为之增加适配器。
自定义一个面板,实现GUI元素的布局。
4、方法定义说明
(1)定义方法actionPerformed(),内用if语句实现按钮监听:
publicvoidactionPerformed(ActionEvente)
(2)定义方法Listwords(),实现查询功能
publicvoidListwords()throwsSQLException
(3)定义方法删除(),实现删除功能
publicvoid删除()throwsSQLException
(4)定义方法添加(),实现添加功能
publicvoid添力卩()throwsSQLException
(5)定义方法修改(),实现修改功能
publicvoid修改()throwsSQLException
5、数据库说明
Java数据库连接(JDBC由一组用Java编程语言编写的类和接口组成。
JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。
然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。
本系统采用的是Access数据库的连接方式,Access数据库使用ODB(直连方式如下:
加载驱动程序:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
与数据库建立连接:
Stringurl="jdbc:
odbc:
Driver={MicroSoftAccessDriver
(*mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connectionconn=DriverManager.getConnection(url,"","");
创建JDBCStatement对象:
StatementstmtNew=conn.createStatement();
注意:
首先要配置数据源:
控制面版->管理工具->数据源->系统DSN-:
添加->选择MicrosortAccess
Drive(*mdb)->完成->写个数据源名(随意)->选择->找到你的access文件->确
定,接下来再进行你的操作。
三、详细设计
本系统是通过对类对象的引用,以及函数的调用实现类之间的连接的。
仓U建窗体,GUI(标签,文本框,按钮),用add()方法加入容器,进而进行布局,用addActionListener()方法为按钮或者菜单条按钮注册事件监听者,通过监
听者方法调用(事件源,处理代码)对按钮触发。
1、添加功能的实现:
publicvoid添加()throwsSQLException{
Stringcname,ename;
try
{class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){}
Con=DriverManager.getConnection("jdbc:
odbc:
Driver=
{MicroSoftAccessDriver(*.mdb)};
DBQ=englishWenglish.mdb","","");
Stmt=Con.createStatement();
ResultSetrs=Stmt.executeQuery("SELECT*FROM表1");booleanboo=false;
while((boo=rs.next())==true)
{
ename=rs.getString(”单词");
cname=rs.getString(”解释");
if(ename.equals(添加英语单词_文本条.getText()))
{
JOptionPane.showMessageDialog(this,
"此词汇已存在!
","警告",
JOptionPane.WARNING_MESSAGE);
break;
}
}
if(boo==false)
{
Strings仁""+添加英语单词—文本
条.getText().trim()+"”',s2="”'+添加汉语解释—文本
条.getText().trim()+"”';
Stringtemp="INSERTINTO表1VALUES("+s1+","+s2+")";
Stmt.executeUpdate(temp);
JOptionPane.showMessageDialog(this,"添加成功!
","恭喜",
JOptionPane.WARNING_MESSAGE);
dispose();
}
Con.close();}
2、删除功能的实现:
publicvoid删除()throwsSQLException{
Stringcname,ename;
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){}
Con=DriverManager.getConnection
("jdbc:
odbc:
Driver={MicroSoftAccessDriver
(*.mdb)};DBQ=englishWenglish.mdb","","");
Stmt=Con.createStatement();
ResultSetrs=Stmt.executeQuery("SELECT*FROM表1");
booleanboo=false;
while((boo=rs.next())==true)
{
ename=rs.getString("单词");
cname=rs.getString(”解释");
if(ename.equals(删除单词_文本条.getText()))
{
Strings仁"”'+删除单词—文本
条.getText().trim()+"”'
Stringtemp="DELETEFROM表1WHERE单词="+s1;
Stmt.executeUpdate(temp);
JOptionPane.showMessageDialog(this,
"成功删除记录!
","恭喜",
JOptionPane.WARNING_MESSAGE);
dispose();
break;
}
}
Con.close();
if(boo==false)
{
JOptionPane.showMessageDialog(this,
"不存在此单词!
","警告",
JOptionPane.WARNING_MESSAGE);
}
}
3、修改功能的实现:
publicvoid修改()throwsSQLException{
Stringcname,ename;
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){}
Con=DriverManager.getConnection
("jdbc:
odbc:
Driver={MicroSoftAccessDriver
(*.mdb)};DBQ=englishWenglish.mdb","","");
Stmt=Con.createStatement();
ResultSetrs=Stmt.executeQuery("SELECT*FROM表1");
booleanboo=false;
while((boo=rs.next())==true)
{
ename=rs.getString("单词");
cname=rs.getString(”解释");
if(ename.equals(修改英语单词_文本条.getText()))
{
Strings1="^+修改英语单词—文本
条.getText().trim()+"”',s2="”'+修改汉语解释_
文本条.getText().trim()+"”';
Stringtemp="UPDATE表1SET解释="+s2+"
WHER单词="+s1;
Stmt.executeUpdate(temp);
JOptionPane.showMessageDialog(this,
"记录修改成功!
","恭喜",
JOptionPane.WARNING_MESSAGE);
dispose();
break;
}
}
Con.close();
if(boo==false)
{
JOptionPane.showMessageDialog(this,
"不存在此单词!
","警告",
JOptionPane.WARNING_MESSAGE);
}}
4、实现按钮监听的实现:
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1||e.getSource()==englishtext)
{
chinesetext.setText("");
if(englishtext.getText().equals(""))
{
JOptionPane.showMessageDialog(this,
"查询对象不能为空!
","警告",
JOptionPane.WARNING_MESSAGE);
}
else{
try{Listwords();}
catch(SQLExceptionee){}
}
}
elseif(e.getSource()==b2||e.getSource()==addedit)
{AddWinadd=newAddWin();}//AddWin是添加窗口的类
elseif(e.getSource()==b3||e.getSource()==modedit)
{ModifyWinmodi=newModifyWin();}
//ModifyWin是修改窗口的类
elseif(e.getSource()==b4||e.getSource()==deledit)
{DelWindel=newDelWin();}//DelWin是删除窗口的类
elseif(e.getSource()==edic)//英汉
{
label.setText("输入要查询的英语单词:
");
b1.setVisible(true);
}
elseif(e.getSource()==cdic)//汉英
{
label.setText(”输入要查询的汉语意思:
");
b1.setVisible(true);
}
elseif(e.getSource()==back_data)//备份
{
Filefromfile=newFile("englishWenglish.mdb");
FileInputStreamfis=nuII;
filedialog_save.setVisible(true);
try{
fis=newFileInputStream(fromfile);
intbytesRead;
//定义变量来存储输入流中读取出来的文件
byte[]buf=newbyte[4*1024];〃4Kbuffer
Filetofile=new
File(filedialog_save.getDirectory(),filedialog_save.getFile());
FileOutputStreamfos=newFileOutputStream(tofile);
while((bytesRead=fis.read(buf))!
=-1)
{fos.write(buf,0,bytesRead);}fos.flush();fos.close();fis.close();
}catch(IOExceptione2){}
}
elseif(e.getSource()==quit)//退出
{System.exit(0);}
elseif(e.getSource()==about)//关于
{
finalStringAboutMsg="AElectricalDictionary\n\n"
+"Anapplicationwrittentoshowoffthefunctionof
dictionary.\n\n"
+"JAVA课程设计杨汝洁\n\n"
+"Copyright(c)2008byEdith.AllrightsReserved.";
JOptionPane.showMessageDialog(topFrame,AboutMsg);
}
elseif(e.getSource()==hhelp)//帮助
{
HelpFramehelp=newHelpFrame();
help.setVisible(true);
}}
5、实现查询功能的实现
publicvoidListwords()throwsSQLException//
{
Stringcname,ename;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){}
Stringurl="jdbc:
odbc:
English";//建立桥接器
ConnectionEx1Con=DriverManager.getConnection
("jdbc:
odbc:
Driver={MicroSoftAccessDriver
(*.mdb)};DBQ=englishWenglish.mdb","","");
StatementExIStmt=Ex1Con.createStatement();
if(label.getText().equals(”输入要查询的英语单词:
"))
{
ResultSetrs=Ex1Stmt.executeQuery("SELECT*FROM表1");
while(rs.next())
{
ename=rs.getString("单词");
cname=rs.getString(”解释");
if(ename.equals(englishtext.getText()))
{
chinesetext.append(cname+'\n');
}
}
Ex1Con.close();//关闭数据库
if(chinesetext.getText().equals(""))
{
JOptionPane.showMessageDialog(this,
"查无此单词!
","警告",
JOptionPane.WARNING_MESSAGE);
}
}
elseif(label.getText().equals("输入要查询的汉语意思:
"))
{
ResultSetrs=Ex1Stmt.executeQuery("SELECT*FROM表1WHERE军释LIKE'%"+englishtext.getText()+"%”‘);while(rs.next())
{
ename=rs.getString("单词");
cname=rs.getString(”解释");
chinesetext.append(ename+'\n');
}
ExICon.close();//关闭数据库
if(chinesetext.getText().equals(""))
{
JOptionPane.showMessageDialog(this,
"查无此单词!
","警告",
JOptionPane.WARNING_MESSAGE);}}
}
四、软件测试
经过编译、执行后可看到运行界面如图4.1所示
图4.1
此时有三全菜单选择:
文件、编辑、帮助
1、文件菜单:
它包含四个子菜单:
英汉词典、汉英词典、备份词库及退出
打开该词典时默认进入的是英汉词典。
如图4.2所示:
(1)英汉词典:
在文本框中输入要查询的英文单词,单击“查询”,英文单
词对应的中文解释及其词性便会出现在文件对话框中,如图4.3所示:
J英帜小词典
孑Ef冈
立件塢輯裁助
输入要去询的英语单词:
abound|
査询
gF富,盛产,富足
图4.3
(2)
汉英词典:
在在文本框中输入要查询的汉语意思,单击“查询”,对应的
英文单词便会出现在文件对话框中,如图4.6所示:
是没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”演示与英汉词典类似。
(3)点击备份词库时,会弹出保存文件对话框,此时可将词库拷贝到机算机里的任一位置。
2、编辑菜单:
它包含三个子菜单:
添加词汇、修改词汇和删除词汇。
如图
4.7所示
图4.9
(1)添加词汇:
用户可自行输入所添加的单词及其解释,如图4.8所示
|鬥玉加单讦蓬觀逐塗豫暮口"0凶
輸入要忝加的单词:
输入添加的单词的解釋: