java电子词典.docx
- 文档编号:8781612
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:21
- 大小:180.95KB
java电子词典.docx
《java电子词典.docx》由会员分享,可在线阅读,更多相关《java电子词典.docx(21页珍藏版)》请在冰豆网上搜索。
java电子词典
一、设计任务与要求
1.1设计任务与要求
本次设计的选题是电子词典互译,要求是能够完成课程设计的分析、设计和编码,写出课程设计报告,并能够通过这次课程设计实践掌握Java的语言规范,面向对象的核心概念和特性,Java的编程技术,Java应用软件的开发环境和开发过程和面向对象的思想和程序设计方法。
1.2选题目的与意义
本次实验我选的题目是电子词典互译,因为目前的电子词典的应用十分广泛其体积小、价格低、实用性强,作为学习工具,有着很广泛的市场。
在以前,同学们学习英语时都要用人工的方法去查阅生词,不仅浪费了大量的学习时间,学习效率无法提高。
可以说,查阅英语生词成为了很多学习英语同学在学习方面的瓶径。
所以电子词典的出现,就是针对这一问题。
它能够实现英汉互译、单词发音,为了体现它的可扩展性,使用者也可以自己添加、删除或修改其单词库,为我们的学习带来了很多方便。
二、需求分析
2.1用户需求分析
使电子词典成为一种多功能的词典类工具软件,它可以即时翻译,快速、准确、详细地查阅英文单词,或将中文单词进行英文翻译,使自己的知识面拓展得更宽、更广。
并能够方便人们的学习与生活,使人们省去再翻查厚重英文字典的时间。
1.界面功能需求
要求该模块可以使用户在同一个界面下调用组内多个成员方法的功能模块,而且不仅可以通过菜单栏调用各功能模块,还可以通过点击按钮键实现各个功能模块之间的连接。
2.英译汉功能需求
要求该模块可以使用户在遇到陌生的单词或记不清解释的单词时,可以通过本功能进行查找。
3.汉译英功能需求
要求该模块可以使用户在进行汉译英翻译时遇到不会的词或记不请的词。
可以通过本功能实现词汇的查找而且要求它不但可以查到想要查的词还可以找到和该词相关的单词。
4.添加词汇功能需求
要求该模块可以使用户在想实现对词库的添加时,可自行输入所添加的单词及其解释,这时若添加的词汇已存在时,系统会显示出“已存在”的提示信息。
5.修改词汇功能需求
要求该模块可以使用户想实现对词库中已有的单词进行修改时,可自行修改词库中的单词的解释,这时若输入单词不存在于词库中,系统会显示出“不存在”的提示信息。
6.删除词汇功能需求
要求该模块可以使用户想在词库中删除已有单词时,可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,这时若输入单词不存在于词库中,系统会显示出“不存在”的提示信息。
7.备份词库功能需求
要求该模块可以使用户在想实现对现有词库的备份时,可将当前词库存入用户所设置的任一位位置。
8.其它功能需求
要求该模块拥有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。
2.2开发环境分析
本系统是一个采用MicrosoftAccess作为数据库,用JAVA作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。
它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。
其中硬件的开发环境为内存:
2G,硬盘空间:
160G。
软件环境为32位XP操作系统,JDK和JDBC软件环境。
三、系统设计
3.1系统总体设计
系统的总体设计通过其所需功能分为三大项,分别是:
文件模块,编辑模块和其它模块。
1.文件模块:
文件模块分为4小项:
汉译英模块,汉译英模块,备份词库模块,退出系统模块。
2.编辑模块:
编辑模块分为3小项:
添加词汇模块,添加词汇模块,删除词汇模块。
3.其它模块:
其它模块分为2小项,分别是:
帮助模块,关于模块。
图1是系统的功能模块图:
图1电子词典系统功能模块图
3.2功能模块设计
3.2.1主界面功能
该模块的主要功能为:
由于将组员所做的各模块组合在一起。
使用户可以在一个界面下调用组内成员的功能模块。
即方便用户使用又方便用户的学习。
而且不但可以通过菜单栏调用各功能模块,还可以通过按钮调用。
3.2.2英译汉功能
该模块的主要功能为:
当用户遇到陌生的单词或记不清解释的单词时,用户可以通过本功能进行查找,还可以通过本模块完成单词的再一次记忆。
3.2.3汉译英功能
该模块的主要功能为:
当用户进行汉译英翻译时难难免遇到不会的词或记不请的记。
这时用户就可以通过本功能实现词汇的查找。
它不但可以查到想要查的词还可以找到和该词相关的单词。
3.2.4添加词汇功能
该模块说明:
当用户想实现对词库的添加时。
用户可自行输入所添加的单词及其解释。
这时若添加的词汇已存在时,系统会显示出“已存在”的提示信息。
3.2.5修改词汇功能
该模块说明:
当用户想实现对词库中已有的单词进行修改时。
用户可自行修改词库中的单词的解释,这时若输入单词不存在于词库中,系统会显示出“不存在”的提示信息。
3.2.6删除词汇功能
该模块说明:
当用户想在词库中删除已有单词时。
用户可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,这时若输入单词不存在于词库中,系统会显示出“不存在”的提示信息。
3.2.7备份词库功能
该模块说明:
当用户想实现对现有词库的备份时,可将当前词库存入用户所设置的任一位位置。
3.2.8其它功能
该模块说明:
在帮助中有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。
3.3类的设计
1.电子词典系统共涉及有4个类,他们分别为,系统运行主类,窗口主界面类,
单词类,帮助类。
单词类又可以涉及到添加、修改、删除。
另外,每个单词均录制一个语音文件,保存到sound目录下。
2.系统运行主类Dic的方法见表1。
表1类Dic的方法
方法名
功能说明
Main();
执行程序入口。
建立主界面类DataWindow的对象。
3.窗口主界面类DataWindow的方法见表2。
表2类DataWindow的方法
方法名
功能说明
DataWindow();
构造函数,安排主界面布局,设置菜单项和工具按钮。
actionPerformed();
执行按钮动作事件。
Listwords();
实现数据查询功能。
4.单词类中添加单词类AddWin的方法见表3。
表3类AddWin的方法
方法名
功能说明
AddWin();
构造函数,安排界面布局,设置监听按钮。
actionPerformed();
执行按钮动作事件,调用添加()方法。
添加();
实现添加数据功能。
5.单词类中修改单词类ModifyWin的方法见表4。
表4类ModifyWin的方法
方法名
功能说明
ModifyWin();
构造函数,安排界面布局,设置监听按钮。
actionPerformed();
执行按钮动作事件,调用修改()方法。
修改();
实现修改数据功能。
6.单词类中删除单词类DelWin的方法见表5。
表5类DelWin的方法
方法名
功能说明
DelWin();
构造函数,安排界面布局,设置监听按钮。
actionPerformed();
执行按钮动作事件,调用删除()方法。
删除();
实现删除数据功能。
7.帮助类HelpFrame的方法见表6。
表6类HelpFrame的方法
方法名
功能说明
HelpFrame()
构造函数,安排界面布局,设置监听按钮。
JInternalFrame
执行按钮动作事件,调用帮助()方法。
3.4数据库设计
3.4.1数据库设计
Java数据库连接(JDBC)由一组用Java编程语言编写的类和接口组成。
JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。
然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。
其中电子词典的设计就是要实现英汉互译,为了体现它的可扩展性,使用者也可以自己添加、删除或修改其单词库,从而真正实现信息化。
本系统采用的是Access数据库的连接方式,Access数据库使用ODBC直连方式如下:
加载驱动程序:
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->添加->选择MicrosortAccessDrive(*.mdb)->完成->写个数据源名(随意)->选择->找到你的access文件->确定,接下来再进行你的操作。
3.4.2数据库表设计
数据库表的设计要在Access数据库中建立数据库,在里面设计表。
字段有单词和解释,字段类型均为文本,其中设单词为主键。
表7数据库表设计
字段名
字段类型
备注
单词
文本
主键
解释
文本
3.4.3下面是各模块的E-R图:
1.文件模块子E-R图
文件模块中主要目的就是要完成英汉互译功能。
当用户遇到陌生的单词或记不清解释的英语单词时,用户可以通过本功能进行查找,还可以通过本模块完成单词的再一次记忆。
或者当用户进行汉译英翻译时难免遇到不会的词或记不请的记。
这时用户就可以通过本功能实现词汇的查找,它不但可以查到想要查的词还可以找到和该词相关的单词。
图2文件模块子E-R图
2.编辑模块子E-R图
编辑模块的主要目的就是要进行单词的添加修改与删除功能。
当用户想实现对词库的添加时,用户可自行输入所添加的单词及其解释。
若当用户想实现对词库中已有的单词进行修改时也可自行修改词库中的单词的解释,或者当用户想在词库中删除已有单词时,也可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除。
图3编辑模块子E-R图
3.其他模块子E-R图
其它模块的主要目的就是在用户遇到问题时,在其它中有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。
图4其它模块子E-R图
四、程序实现
4.1程序流程图
本次程序是电子词典互译程序,其功能流程为开始后进入主界面输入要查找的单词,可以为中文或英文,然后根据数据库进行查询,若在数据库内存在则单词则成功显示。
本电子词典还可以进行单词的添加,删除,修改功能,输入单词后也可进入单词的添加,删除,修改界面,输入单词后进入功能界面判断数据库内是否存在单词,若不存在成功添加后退出,若存在则返回窗口界面。
图5程序流程图
4.2关键算法与技术实现
1.异常处理代码
我设计的英汉电子词典中有多个异常处理,用try---catch语句实现抛出异常功能。
Java语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。
所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。
导致异常的原因很多,比如文件找不到、数组越界、除以零等。
当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”(runtimesystem),就是抛出一个异常。
异常对象包含了异常类型、程序运行状态等信息。
“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门处理该异常的代码块来解决问题。
这样的代码块称作异常句柄(ExceptionHandler)。
你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。
如果“运行时环境”找不到异常句柄,Java程序便会自行中断。
具体代码如下所示:
try{
//如果此模块发生异常,则抛出
}
catch(Exceptione){
e.printStackTrace();
}
try语句括起来的语句可能抛出异常。
因为try语句至少要搭配一个catch语句或finally语句,不能单独使用,所以我使用trycatch搭配的语句。
不选用finally语句是因为无论try语句块中是否抛出异常,finally所包括的语句块都会被执行,这样不符合我的程序需求。
catch必须和一个try语句配套使用,根据异常类型(exceptiontype)分别处理不同的异常。
Java有许多预先定义的异常,可以通过多个catch语句对它们分门别类地处理。
还可以自己定义异常类型。
在catch(Exceptione)中e是对象引用名称,e.printStackTrace()语句中,e调用Exception类中指定的方法,在命令行打印异常信息在程序中出错的位置及原因。
2.实现数据库与java的连接代码:
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundExceptione){}
Con=DriverManager.getConnection("jdbc:
odbc:
Driver={MicroSoftAccessDriver(*.mdb)};DBQ=english\\english.mdb","","");
Stmt=Con.createStatement();
ResultSetrs=Stmt.executeQuery("SELECT*FROM表1");
booleanboo=false;
3.实现监听的部分代码:
classDataWindowextendsJFrameimplementsActionListener
实现监听的代码:
publicvoidactionPerformed(ActionEvente)//实现按钮监听
以下代码为部分添加监听代码:
edic.addActionListener(this);
cdic.addActionListener(this);
quit.addActionListener(this);
addedit.addActionListener(this);
modedit.addActionListener(this);
deledit.addActionListener(this);
hhelp.addActionListener(this);
about.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
englishtext.addActionListener(this);
back_data.addActionListener(this);
4.窗口部分代码:
DataWindow()
{
super("电子词典互译");//super继承父类JFrame的方法
this.setBounds(0,0,800,300);//this为当前类,前两个是坐标位置,后两个是宽高
this.setVisible(true);
getContentPane().add(newJScrollPane(chinesetext));//初始化容器,添加一个新的组件
super代表父类,说明在子类中显示的调用父类方法。
首先设置窗口为绝对布局,用到setLayout()函数,括号中null表示默认值。
它的好处就是可以精确的设置组件的位置。
首先新建一个jLabel1的实例对象,初始化容器后,添加一个控件,用getContentPane().add(jLabel1)实现该功能。
然后清空控件内容。
设置标签位置用jLabel1.setBounds()实现,在()中输入四个数值,前两个是组件左上角在容器中的坐标,后两个是组件的宽度和高度。
5.英译汉功能实现
此功能模块主要是针对已经存在于单词库中的单词,通过编辑菜单中的英汉词典功能,在主界面的文本框中输入要查询的单词,单击查询按钮进行查询。
结果显示在主界面的文本区中。
elseif(e.getSource()==edic)//英汉
{
label.setText("输入要查询的英语单词:
");
b1.setVisible(true);
b5.setVisible(true);
}
elseif(e.getSource()==back_data)//备份
{saveWins=newsaveWin();
}
elseif(e.getSource()==quit)//退出
{
System.exit(0);
}
6.汉译英功能实现:
此功能模块主要是针对已经存在于单词库中的单词,通过编辑菜单中的汉英词典功能,在主界面的文本框中输入要查询的单词,单击查询按钮进行查询。
结果显示在主界面的文本区中。
elseif(e.getSource()==edic)//汉英
{
label.setText("输入要查询的汉语意思:
");
b1.setVisible(true);
b5.setVisible(true);}
elseif(e.getSource()==back_data)//备份
{saveWins=newsaveWin();
}
elseif(e.getSource()==quit)//退出
{
System.exit(0);
}
本系统是通过对类对象的引用,以及函数的调用实现类之间的连接的。
创建窗体,GUI(标签,文本框,按钮),用add()方法加入容器,进而进行布局,用addActionListener()方法为按钮或者菜单条按钮注册事件监听者,通过监听者方法调用(事件源,处理代码)对按钮触发。
7.添加功能的实现:
当用户想实现对词库的添加时。
用户可自行输入所添加的单词及其解释。
这时若添加的词汇已存在时,系统会显示出“已存在”的提示信息。
publicvoid添加()throwsSQLException{
Stringcname,ename;
try
{class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){}
Con=DriverManager.getConnection("jdbc:
odbc:
Driver=
{MicroSoftAccessDriver(*.mdb)};
DBQ=english\\english.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)
{
Strings1="'"+添加英语单词_文本条.getText().trim()+"'",s2="'"+添加汉语解释_文本条.getText().trim()+"'";
Stringtemp="INSERTINTO表1VALUES("+s1+","+s2+")";
Stmt.executeUpdate(temp);
JOptionPane.showMessageDialog(this,"添加成功!
","恭喜",
JOptionPane.WARNING_MESSAGE);
dispose();
}
Con.close();}
8.删除功能的实现:
当用户想在词库中删除已有单词时。
用户可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,这时若输入单词不存在于词库中,系统会显示出“不存在”的提示信息。
publicvoid删除()throwsSQLException{
Stringcname,ename;
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){}
Con=DriverManager.getConnection
("jdbc:
odbc:
Driver={MicroSoftAccessDriver(*.mdb)};DBQ=english\\english.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()+"'"
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);
}
}
9.修改功能的实现:
当用户想实现对词库中已有的单词进行修改时。
用户可自行修改词
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 电子词典