1、备份词库功能:我们可以将现有的词库做一份备份文件存入另一空间,以备文件丢失时使用。词汇的添加功能:用户可以添加词库内没有的单词及其解释。添加成功后该单词将在次库内保存,以便下次查询。词汇的修改功能;用户可以实现对词库中已有单词及其解释的修改。修改后的结果将保存在词库中。词汇的删除功能;用户可自行删除词库中已有的单词,同时次单词的解释也将被一同删除。其他功能:此外,系统还具有帮助和关于等功能,用来辅助用户更方便简洁的使用电子词典。2.2 开发环境分析系统需求分析:本系统是一个采用Microsoft Access作为数据库,用JAVA作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。它
2、不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。(1)硬件环境Cpu: Intel (R) Core(TM)2 Duo Cpu 内存:2G 硬盘空间:250G(2)软件环境32位XP操作系统。JDK和Jcreator软件环境。三、系统设计3.1 系统总体设计电子英汉词典系统包括三个大方面:文件,编辑,其他。文件菜单中包括英译汉,汉译英备份词库。这也是电子词典的最主要功能。编辑菜单中包括添加词汇,修改词汇,删除词汇功能。其他菜单中包括帮助和关于。系统总体设计图如下:程序共有五个子函数和一个主函数。(1)search是查找函数,用户通过系统提
3、示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文或英文解释,这个查找函数使用的是从头到尾的线性查找法,虽然查找效率在数据很大时候是无法容忍的,但因为这里涉及的数据量很小,使用线性查找对系统性能上没有很大影响。(2)add是增加函数,用户可以通过此函数来增加单词库单词的数量(3)modify是修改函数,程序提示用户输入要修改的单词,使用线性查找的方法找到相应的单词。如果找到,则提示输入新的单词及其解释。(4)delete是删除函数,程序提示用户输入要删除的单词,使用线性查找的方法找到相应的单词,如果找到,提示用户确认删除,在得到确认后即删除这个单词的记录。(5)主程序通过无限循环来接
4、收输入的命令,并且根据命令调用相应的函数处理。3.2 功能模块设计(1)英译汉功能模块说明:可以实现对英文单词的查询功能。用户文本框中输入要查询的英文单词。若该单词存在于词库中,则会在文件对话框中显示其词性及中文翻译;若该单词没有存在于词库中,则会弹出警告,说明查无此词。(2)汉译英功能模块说明:可以实现对中文单词的查询功能。用户文本框中输入要查询的中文单词。若该单词存在于词库中,则会在文件对话框中显示其一个或多个对应的英文单词;(3)备份词库功能模块说明:可以实现对现有词库的备份,可将当前词库存入用户所设置的任意位置。(4)添加词汇功能模块说明:可以实现对词库的添加。用户可自行输入所添加的单
5、词及其解释,若添加的是词库中没有的单词,系统在添加成功后提示添加成功。若添加的是词库中已有的单词,系统会弹出警告,说明此词汇已存在。(5)修改词汇功能模块:可以实现对词库中已有单词的修改。用户可自行修改词库中的单词及其解释。若输入的单词不存在于词库中,系统会弹出警告,说明不存在此单词。(6)删除词汇功能模块:可以删除词库中已有的单词。用户可自行删除词库中已有的单词,再删除此单词的同时,其解释也会随之被删除,如输入的单词不存在于词库中,系统用会弹出警告,说明不存在此单词。(7)其他功能模块:在其他中有帮助和关于两项。帮助中是有关于词典的功能说明,关于中可显示版本信息。3.3 类的设计主要类设计:
6、1.Loading类Loading类主要是要实现登陆界面和按钮监视器执行动作的事件,和数据库的连接。方法功能Loading()安排登陆界面布局LianJie()连接数据库Chaxun()执行登陆按钮的动作事件DengLiPan()判断文本框是否为空2.Register类Register类主要是实现注册界面和按钮监视器执行动作的事件,和数据库的连接。Register()安排注册界面布局执行确定按钮的动作事件3.Kellu类Kellu类为窗口主界面类,包括菜单栏,工具栏,显示栏,添加监视器执行动作的事件。Kehu()安排界面布局,设置菜单项和工具按钮action Performed()执行按钮的动
7、作事件valueChanged()下拉列表的监听事件4.ChaXun类ChaXun类细腻那两个构造方法,分别是实现英汉,汉英查询功能。JingQunEnglishCha()英译汉的查询JingQunChineseCha()汉译英的查询5Add类 Add类实现单词的添加功能Add()设置“添加”窗口界面AddCha()实现和数据库的连接6. Update类Update类,功能通过单击主窗口界面的更新按钮弹出更新小窗口,输入更新的单词,对相应的解释进行更新。7.delect类delect类,功能通过单击主窗口界面的删除按钮弹出删除小窗口,输入删除的单词进行删除。delect()设置“删除”窗口界面
8、delectcha()8.help类hele类,功能通过单击主窗口界面的帮助菜单下的帮助选项又弹出帮助窗口,通过网页显示单词的想过说明,通过单击页面上的超链接来显示另一网页。方法 Help()设置帮助窗口界面Hyperlinkupdate()显示新的URL资源9.Guanyu类 Guanyu类功能通过单击主窗口界面的帮助菜单下的关于弹出关于窗口,显示词典的使用说明。 方法 功能Guanyu()设置关于窗口界面界面设计思想创建窗体,设计菜单。定义菜单条JMenu mfile(文件)、medit(编辑)、mhelp(帮助),菜单子项JMenuItem edic(英汉词典)、cdic(汉英词典)、b
9、ack_data(备份词库)、quit(退出)、addedit(添加词汇)、modedi(修改词汇)、deledit(删除词汇)、hhelp(帮助)、about(关于)。通过add( )方法将菜单子项添加到菜单中,并注册监听者。定义一个文件对话框filedialog_save,并为之增加适配器。自定义一个面板,实现GUI元素的布局。3.4 数据库设计 Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来
10、一定的配置变化。本系统采用的是Access数据库的连接方式。英译汉词汇表字段名字段类型长度备注yingwudancichar30可为空yinbiao10cixingjieshi50各功能模块E-R图如下:(1)文件模块子E-R图文件模块中主要目的就是要完成英汉互译功能。其中包括英译汉功能模块,汉译英模块功能,备份词库模块功能(2)编辑模块子E-R图编辑模块的主要目的就是要进行单词的添加修改与删除功能。(3)其他模块子E-R图其它模块的主要目的就是在用户遇到问题时,在其它中有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。 四、程序实现4.1 程序流程图分析电子词
11、典的总体情况,划分系统边界,识别系统的数据来源和去处,确定外部实体,得出系统的顶层数据流程图;然后划分出几个主要的信息管理功能,本系统的主要数据的工作流包括以下几个方面:英汉词典,汉英词典,备份词库,添加词汇,修改词汇,帮助。明确各功能之间的联系,绘制出数据流程图,如下图所示:4.2 关键算法与技术实现菜单窗口class DataWindow extends JFrame implements ActionListener try fis = new FileInputStream(fromfile); int bytesRead; /定义变量来存储输入流中读取出来的文件 byte buf =
12、 new byte4*1024; /4K buffer File tofile = new File(filedialog_save.getDirectory(),filedialog_save.getFile(); FileOutputStream fos = new FileOutputStream(tofile); while(bytesRead = fis.read(buf)!=-1) fos.write(buf,0,bytesRead); fos.flush(); fos.close(); fis.close(); catch(IOException e2) public void
13、Listwords() throws SQLException /实现查询功能 String cname,ename; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) /建立桥接器 Connection Ex1Con = DriverManager.getConnection(jdbc:odbc:03, Statement Ex1Stmt = Ex1Con.createStatement(); if(label.getText().equals(输入要查询的英语单词:) Resul
14、tSet rs = Ex1Stmt.executeQuery(SELECT * FROM 表1 while( rs.next() ename = rs.getString(单词 cname = rs.getString(解释 if(ename.equals(englishtext.getText() chinesetext.append(cname+n public class Dic public static void main(String args) JFrame.setDefaultLookAndFeelDecorated(true); DataWindow window = new
15、 DataWindow(); window.validate(); / AddWin add = new AddWin(); public void add()单词的添加public class AddWin extends JFrame implements ActionListener JTextField 添加汉语解释_文本条,添加英语单词_文本条; JButton addbtn,cancelbtn; Connection Con=null; Statement Stmt=null; public void actionPerformed(ActionEvent e) if(e.getS
16、ource()=addbtn) if(添加英语单词_文本条.getText().equals()| 添加汉语解释_文本条.getText().equals( JOptionPane.showMessageDialog(this,添加的单词或解释不能为空!警告, JOptionPane.WARNING_MESSAGE); / 判断输入框不能为空 else 添加(); catch(SQLException ee) else if(e.getSource()=cancelbtn) dispose(); while(boo=rs.next()=true) ename=rs.getString( cna
17、me=rs.getString( if(ename.equals(添加英语单词_文本条.getText()此词汇已存在! JOptionPane.WARNING_MESSAGE); break; if(boo=false) String s1=+添加英语单词_文本条.getText().trim()+,s2=+添加汉语解释_文本条.getText().trim()+; String temp=INSERT INTO 表1 VALUES (+s1+s2+) Stmt.executeUpdate(temp); JOptionPane.showMessageDialog(this,添加成功!恭喜 J
18、OptionPane.WARNING_MESSAGE); Con.close();单词的删除class DelWin extends JFrame implements ActionListener JTextField 删除单词_文本条; JButton delbtn,cancelbtn; Connection Con = null; Statement Stmt = null; if(e.getSource()=delbtn) if(删除单词_文本条.getText().equals(删除的单词不能为空! else try 删除(); catch(SQLException ee) if(e
19、name.equals(删除单词_文本条.getText() String s1=+删除单词_文本条.getText().trim()+DELETE FROM 表1 WHERE 单词=+s1; Stmt.executeUpdate(temp);成功删除记录! dispose();单词的修改class ModifyWin extends JFrame implements ActionListener JTextField 修改英语单词_文本条,修改汉语解释_文本条; JButton modifybtn,cancelbtn; if(e.getSource()=modifybtn) if(修改英语
20、单词_文本条.getText().equals( 修改汉语解释_文本条.getText().equals(修改的单词或解释不能为空! / 判断输入框不能为空 else 修改(); catch(SQLException ee) else if(e.getSource()=cancelbtn) dispose(); if(ename.equals(修改英语单词_文本条.getText()+修改英语单词_文本条.getText().trim()+修改汉语解释_文本条.getText().trim()+ String temp=UPDATE 表1 SET 解释= WHERE 单词 = 记录修改成功!帮
21、助public class HelpFrame extends JFrame public HelpFrame() super(Help setBounds( 120, 50, 275, 260); HtmlPane html = new HtmlPane(); setContentPane(html); public static void main(String args) HelpFrame help=new HelpFrame(); help.setVisible(true); System.out.println(Hello World!class HtmlPane extends JScrollPane im