当前位置:首页 >> 学科竞赛 >>

java课程设计——英汉电子词典编程


贵州大学实习报告专用纸

Java 课程设计——英汉电子词典

一、需求分析
二十世纪后半叶, 以电子计算机为代表的现代科学获得了突飞猛进的发展并 迅速和人们的日常生活结合在一起。 计算机技术的发展和进步也使电子语言词典 的诞生成为可能。 我们日常的学习生活中,常会遇到这样的问题:在工作时或在网上冲浪,或 者电子邮箱中收到一封外国

朋友发的英文 E-mail,遇到某些陌生的单词,可又 疲于去翻查厚重的英文字典时,电脑中所安装的英汉电子词典便成为了最为方 便、快捷的选择。电子词典是一种多功能的词典类工具软件,它可以即时翻译, 快速、准确、详细地查阅英文单词,或将中文单词进行英文翻译,使自己的知识 面拓展得更宽、更广。 尽管电子词典只有十来年的历史,但它却已经发展壮大,成为词典家族中具 有旺盛生命力的一员。虽然目前它尚不足以取代传统词典,但在英语学习和教学 中,由于它实用、快捷、准确、经济等特点,已经成为传统英汉词典的有力竞争 者,并对传统的词典提出了挑战。 本系统是一个采用 Microsoft Access 作为数据库,用 JAVA 作为开发工具的 英汉电子词典,内有英汉词典、汉英词典和备份词库。它不仅可实现英译汉、汉 译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形 成自己的词库。其功能结构图如图 1.1 所示:

贵州大学实习报告专用纸 英语小词典

文件

编辑

英 汉 词 典

汉 英 词 典

备 份 词 库

退



添 加 词 汇

修 改 词 汇

删 除 词 汇

图 1.1 功能结构图

功能模块说明: 1、英译汉功能模块说明:可以实现对英文单词对中文单词的查询功能。用 户文本框中输入要查询的英语单词。若该单词存在于词库中,则会在文件对话框 中显示其词性及中文翻译;若该单词没有存在于词库中,则会弹出“警告” ,说 明“查无此词” ;若没有输入直接点击“查询” ,则会弹出“警告” ,说明“查询 对象不能为空” 。 2、汉译英功能模块说明:可以实现对中文单词对英文单词的查询功能。用 户可在文本框中输入要查询的中文单词。若该单词存在于词库中,则会在文件对 话框中显示一个或多个对应的英文;若该单词没有存在于词库中,则会弹出“警 告” ,说明“查无此词” ;若没有输入直接点击“查询” ,则会弹出“警告” ,说明 “查询对象不能为空” 。 3、备份词库功能模块说明:可以实现对现有词库的备份,可将当前词库存 入用户所设置的任一位位置。 4、添加词汇功能模块说明:可以实现对词库的添加。用户可自行输入所添 加的单词及其解释, 若添加的是词库中没有的单词, 系统在添加成功后有提示 “添 加成功” ;若添加的是词库中已有的单词,系统会弹出“警告” ,说明“此词汇已 存在” 。 5、修改词汇功能模块说明:可以实现对词库中已有单词的修改。用户可自 行修改词库中的单词的解释,若输入单词不存在于词库中,系统会弹出“警告” ,

2

贵州大学实习报告专用纸 说明“不存在此单词” 。 6、删除词汇功能模块说明:可以删除词库中已有的单词。用户可自行删除 词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,若输入单词 不存在于词库中,系统会弹出“警告” ,说明“不存在此单词” 。 7、其它功能模块说明:在帮助中有“帮助”与“关于”两项, “帮助”中有 关于词典的功能说明, “关于”可显示版本信息。

二、概要设计
1、英语词典设计要求 分析词典的主要功能,设计实现如下功能: (1)实现程序 GUI 图形界面; (2)实现与词典数据库的访问; (3)实现文件的输入、输出; (4)实现鼠标或键盘事件响应模块。 2、自定义类说明 (1) public class Dic{} 自定义主体 main 函数的类,用来调用各种类 (2) class DataWindow extends JFrame implements ActionListener{} 自定义一个主窗体类,用来显示整个窗体。 继承的父类: JFrame 类 实现的接口: ActionListener (3) class AddWin extends JFrame implements ActionListener{} 自定义一个添加窗口类,用于添加新的单词及其解释 (4) DelWin extends JFrame implements ActionListener{} 自定义一个删除窗口类,用于删除词库中所存在的单词及其解释 (5) ModifyWin extends JFrame implements ActionListener{}

3

贵州大学实习报告专用纸 自定义一个修改窗口类,用于修改词库中所存在的单词及其解释 (6) class HelpFrame extends JFrame {} 自定义一个帮助窗口类, 用不可编辑的文本域的窗体对该词典的功能 做简要的说明 3、界面设计思想 创建窗体,设计菜单。定义菜单条 JMenu mfile(文件) 、medit(编辑) 、 mhelp 帮助)菜单子项 JMenuItem edic 英汉词典)cdic 汉英词典)back_data ( , ( 、 ( 、 (备份词库) 、quit (退出) 、addedit(添加词汇) 、modedi(修改词汇) 、deledit (删除词汇) 、hhelp(帮助) 、about(关于) 。通过 add( )方法将菜单子项添加 到菜单中,并注册监听者。定义一个文件对话框 filedialog_save,并为之增加 适配器。自定义一个面板,实现 GUI 元素的布局。 4、方法定义说明 (1)定义方法 actionPerformed() ,内用 if 语句实现按钮监听: public void actionPerformed(ActionEvent e) (2)定义方法 Listwords() ,实现查询功能 public void Listwords() throws SQLException (3)定义方法删除() ,实现删除功能 public void 删除() throws SQLException (4)定义方法添加() ,实现添加功能 public void 添加() throws SQLException (5)定义方法修改() ,实现修改功能 public void 修改() throws SQLException 5、数据库说明 Java 数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。 JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯 Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的 变化会带来一定的配置变化。 本系统采用的是 Access 数据库的连接方式, Access 数据库使用 ODBC 直连 方式如下: 加载驱动程序: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; 与数据库建立连接: String url="jdbc:odbc:Driver={MicroSoft
4

Access

Driver

贵州大学实习报告专用纸 (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb"); Connection conn = DriverManager.getConnection(url,"",""); 创建 JDBC Statement 对象: Statement stmtNew=conn.createStatement() ; 注意:首先要配置数据源: 控制面版->管理工具->数据源->系统 DSN->添加->选择 Microsort Access Drive(*.mdb)->完成->写个数据源名(随意)->选择->找到你的 access 文件->确 定,接下来再进行你的操作。

三、详细设计
本系统是通过对类对象的引用,以及函数的调用实现类之间的连接的。创 建窗体,GUI(标签,文本框,按钮),用 add( )方法加入容器,进而进行布局, 用 addActionListener( )方法为按钮或者菜单条按钮注册事件监听者,通过监 听者方法调用(事件源,处理代码)对按钮触发。 1、添加功能的实现: public void 添加() throws SQLException{ String cname,ename; try { class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

} catch(ClassNotFoundException e){} Con = DriverManager.getConnection("jdbc:odbc:Driver= {MicroSoft Access Driver (*.mdb)}; DBQ=english\\english.mdb","",""); Stmt=Con.createStatement(); ResultSet rs=Stmt.executeQuery("SELECT * FROM 表 1"); boolean boo=false; while((boo=rs.next())==true) {

5

贵州大学实习报告专用纸 ename=rs.getString("单词"); cname=rs.getString("解释"); if(ename.equals(添加英语单词_文本条.getText())) { JOptionPane.showMessageDialog(this, "此词汇已存在!","警告", 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,"添加成功!","恭喜", JOptionPane.WARNING_MESSAGE); dispose(); } Con.close();} 2、删除功能的实现: public void 删除() throws SQLException{ String cname,ename; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){} Con = DriverManager.getConnection

6

贵州大学实习报告专用纸 ("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=english\\english.mdb","",""); Stmt=Con.createStatement(); ResultSet rs=Stmt.executeQuery("SELECT * FROM 表 1"); boolean boo=false; while((boo=rs.next())==true) { ename=rs.getString("单词"); cname=rs.getString("解释"); if(ename.equals(删除单词_文本条.getText())) { String s1="'"+删除单词_文本 条.getText().trim()+"'" String temp="DELETE FROM 表 1 WHERE 单词="+s1; Stmt.executeUpdate(temp); JOptionPane.showMessageDialog(this, "成功删除记录!","恭喜", JOptionPane.WARNING_MESSAGE); dispose(); break; } } Con.close(); if(boo==false) { JOptionPane.showMessageDialog(this, "不存在此单词!","警告", JOptionPane.WARNING_MESSAGE); }

7

贵州大学实习报告专用纸 } 3、修改功能的实现: public void 修改() throws SQLException{ String cname,ename; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){}

Con = DriverManager.getConnection ("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=english\\english.mdb","",""); Stmt=Con.createStatement(); ResultSet rs=Stmt.executeQuery("SELECT * FROM 表 1"); boolean boo=false; while((boo=rs.next())==true) { ename=rs.getString("单词"); cname=rs.getString("解释"); if(ename.equals(修改英语单词_文本条.getText())) { String s1="'"+修改英语单词_文本 条.getText().trim()+"'",s2="'"+修改汉语解释_ 文本条.getText().trim()+"'"; String temp="UPDATE 表 1 SET 解释="+s2+" WHERE 单词 = "+s1; Stmt.executeUpdate(temp); JOptionPane.showMessageDialog(this, "记录修改成功!","恭喜", JOptionPane.WARNING_MESSAGE); dispose();

8

贵州大学实习报告专用纸 break; } } Con.close(); if(boo==false) { JOptionPane.showMessageDialog(this, "不存在此单词!","警告", JOptionPane.WARNING_MESSAGE); }} 4、实现按钮监听的实现: public void actionPerformed(ActionEvent e){ if(e.getSource()==b1||e.getSource()==englishtext) { chinesetext.setText(""); if(englishtext.getText().equals("")) { JOptionPane.showMessageDialog(this, "查询对象不能为空!","警告", JOptionPane.WARNING_MESSAGE); } else{ try{ Listwords(); }

catch(SQLException ee){ } } } else if(e.getSource()==b2||e.getSource()==addedit) { AddWin add = new AddWin(); } //AddWin 是添加窗口的类

else if(e.getSource()==b3||e.getSource()==modedit)

9

贵州大学实习报告专用纸 { ModifyWin modi = new ModifyWin();} //ModifyWin 是修改窗口的类 else if(e.getSource()==b4||e.getSource()==deledit) { DelWin del = new DelWin();}//DelWin 是删除窗口的类 else if(e.getSource()==edic) //英汉 { label.setText("输入要查询的英语单词:"); b1.setVisible(true); } else if(e.getSource()==cdic) //汉英 { label.setText("输入要查询的汉语意思:"); b1.setVisible(true); } else if(e.getSource()==back_data) //备份 { File fromfile = new File("english\\english.mdb"); FileInputStream fis = null; filedialog_save.setVisible(true); try{ fis = new FileInputStream(fromfile); int bytesRead; //定义变量来存储输入流中读取出来的文件 byte[] buf = new byte[4*1024]; File tofile = new File(filedialog_save.getDirectory(), filedialog_save.getFile()); FileOutputStream fos = new FileOutputStream(tofile); while((bytesRead = fis.read(buf))!=-1) //4K buffer

10

贵州大学实习报告专用纸 { fos.write(buf,0,bytesRead); } fos.flush();fos.close();fis.close(); } catch(IOException e2){ } else if(e.getSource()==quit) //退出 { System.exit(0); } //关于 }

else if(e.getSource()==about) {

final String AboutMsg = "A Electrical Dictionary

\n \n"

+"An application written to show off the function of dictionary.\n \n" +"JAVA 课程设计 杨汝洁\n\n"

+"Copyright (c) 2008 by Edith.All rights Reserved."; JOptionPane.showMessageDialog(topFrame,AboutMsg); } else if(e.getSource()==hhelp) { HelpFrame help = new HelpFrame(); help.setVisible(true); } } //帮助

5、实现查询功能的实现 public void Listwords() throws SQLException { String cname,ename; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){} String url="jdbc:odbc:English"; //建立桥接器 Connection Ex1Con = DriverManager.getConnection ("jdbc:odbc:Driver={MicroSoft Access Driver //

11

贵州大学实习报告专用纸 (*.mdb)};DBQ=english\\english.mdb","",""); Statement Ex1Stmt = Ex1Con.createStatement(); if(label.getText().equals("输入要查询的英语单词:")) { ResultSet rs = 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); } } else if(label.getText().equals("输入要查询的汉语意思:")) { ResultSet rs=Ex1Stmt.executeQuery("SELECT * FROM 表 1 WHERE 解释 LIKE '%"+englishtext.getText()+"%'"); while(rs.next()) { ename = rs.getString("单词");

12

贵州大学实习报告专用纸 cname = rs.getString("解释"); chinesetext.append(ename+'\n'); } Ex1Con.close(); //关闭数据库

if(chinesetext.getText().equals("")) { JOptionPane.showMessageDialog(this, "查无此单词!","警告", JOptionPane.WARNING_MESSAGE); }} }

四、软件测试
经过编译、执行后可看到运行界面如图 4.1 所示

图 4.1 此时有三全菜单选择:文件、编辑、帮助 1、文件菜单:它包含四个子菜单:英汉词典、汉英词典、备份词库及退出。 打开该词典时默认进入的是英汉词典。如图 4.2 所示:

13

贵州大学实习报告专用纸

图 4.2 (1)英汉词典:在文本框中输入要查询的英文单词,单击“查询” ,英文单 词对应的中文解释及其词性便会出现在文件对话框中,如图 4.3 所示:

图 4.3 如果所查单词不存在于词库中,则会弹出“警告” ,说明“查无此词” ,如图 4.4 所示;如果是没有输入直接点击“查询” ,则会弹出“警告” ,说明“查询对 象不能为空” ,如图 4.5 所示:

图 4.4

图 4.5

(2)汉英词典:在在文本框中输入要查询的汉语意思,单击“查询” ,对应的 英文单词便会出现在文件对话框中,如图 4.6 所示:

14

贵州大学实习报告专用纸

图 4.6 如果所查单词不存在于词库中,则会弹出“警告” ,说明“查无此词” ;如果 是没有输入直接点击“查询” ,则会弹出“警告” ,说明“查询对象不能为空” , 演示与英汉词典类似。 (3)点击备份词库时,会弹出保存文件对话框,此时可将词库拷贝到机算机 里的任一位置。 2、编辑菜单:它包含三个子菜单:添加词汇、修改词汇和删除词汇。如图 4.7 所示

图 4.7 (1)添加词汇:用户可自行输入所添加的单词及其解释,如图 4.8 所示

图 4.8

图 4.9

如果添加的是词库中没有的单词,系统在添加成功后有提示“添加成功” , 如图 4.9 所示;若添加的是词库中已有的单词,系统会弹出“警告” ,说明“此
15

贵州大学实习报告专用纸 词汇已存在” 。 (2)修改词汇:用户可自行修改词库中的单词的解释,如图 4.10 所示;如果 输入单词不存在于词库中,系统会弹出“警告” ,说明“不存在此单词” 。

图 4.10

图 4.11

(3)删除词汇:用户可自行删除词库中已有的单词,在删除此单词的同时, 其解释也会随之被删除,如图 4.11 所示。如果输入单词不存在于词库中,系统 会弹出“警告” ,说明“不存在此单词” 。 3、帮助菜单:它包含二个子菜单:帮助和关于。 (1)帮助:显示有关于词典的功能说明。 (2)关于:显示版本信息。 经测试,该系统各项功能均能使用,各个功能选项与设计所想相符。

五、总结
此次课程设计是由我一个人完成的,在这个过程中,我遇到了很多问题,也 更加了解 JAVA。Java 与 C++语言非常相近,但 Java 比 C++简单,它抛弃了 C++ 中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重 载、多重继承以及自动强迫同型。 Java 实现了自动的垃圾收集,简化了内存管 理的工作。这使程序设计更加简便,同时减少了出错的可能。 Java 提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量 和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过 继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实 现了代码的复用,又提供了一种动态的解决方案。

16

贵州大学实习报告专用纸 除此之外,此次课程设计还让我对 JAVA 的独立性有了更多的认识。 Java 是一种网络语言,为使 Java 程序能在网络的任何地方运行,Java 解释 器生成与体系结构无关的字节码结构的文件格式。Java 为了做到结构中立,除 生成机器无关的字节码外,还制定了完全统一的语言文本,如 Java 的基本数据 类型不会随目标机的变化而变化,一个整型总是 32 位,一个长整型总是 64 位。 为了使 Java 的应用程序能不依赖于具体的系统,Java 语言环境还提供了用 于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运 行在各种支持 Java 的平台上。 java.lang: 一般的语言包。其中包括用于字符串处理、多线程、异常处理 和数字函数等的类,该包是实现 Java 程序运行平台的基本包 java.util: 实用工具包。其中包括哈希表、堆栈、时间和日期等 java.io: 基于流模型的输入/输出包。 该包用统一的流模型实现了各种格式 的输入/输出,包括文件系统、网络和设备的输入/输出等 java.net: 网络包。 该包支持 TCP/IP 协议,其中提供了 socket、 URL 和 WWW 的编程接口 java.awt: 抽象窗口工具集。其中实现了可以跨平台的图形用户界面组件, 包括窗口、菜单、滚动条和对话框等 java.applet: 支持 applet 程序设计的基本包 在课程设计的最后,我的大部分时间花在了与数据库的连接上,也学到了更 多的知识。 JDBC 是执行 SQL 语句的 Java API。JDBC 本身是一个产品的商标名,但它也 可被看作为"Java Database Connecivity(Java 数据库连接)"。它由一组用 Java 语言编写的类与接口组成。JDBC 已成为一种供工具/数据库开发者使用的标准 API,用户可以用纯 Java API 来编写数据库应用。使用 JDBC 可以很容易地把 SQL 语句传送到任何关系型数据库中。 换言之,用户不必为访问 Sybase 数据库写一个 程序,又为访问 Oracle 数据库写另一个程序。你可以用 JDBC API 写出唯一的程 序,它能够将 SQL 语句发送到相应的任何一种数据库。Java 与 JDBC 的结合,使程 序员可以只写一次数据库应用软件后,就能在各种数据库系统上运行。 通过对 JAVA 数据库编程的更多的了解,我也获得了一些调试的经验:通过

17

贵州大学实习报告专用纸 层层的捕获异常来得知错误的发生。 在课程设计中出现的问题对我而言是学习与 复习的好机会, 是它们使我学会了如何自学、 如何查阅资料等, 让我学习了很多, 也让我对旧的知识点有了更深的理解。 在这不断的调试、改动的过程中也让我明白了养成良好编程习惯的益处。由 于编写程序时容易出错,因此我采用了单个模块单个功能进行调试与测试的方 法。在不断的出错与改错的过程中,我学到了很多关于编程和调试程序的知识, 使自己的知识体系得到了一定的完善, 也使我对平时所学有了很多的了解与更深 的理解。面对一系列的问题,失败了尝试,再失败再尝试??通过这次的实践, 我发现了自己在编程及对软件开发相关知识的不足,在以后的学习实践中,我要 取长补短,敢想善问,不断加强自身在专业知识方面的能力,为以后的学习与工 作打下坚实的基础。

18


相关文章:
java课程设计英汉词典
目前市场上的电子辞典内置的辞典有学习词典如英汉、雅思等,也有专业 词典如电子...注重面向对象程序设计理论知识的 理解与实际的动手编程能力, 要求学生设计具有继承...
电子词典_java课设_含可运行程序_图文
课程设计说明书电子词典 1.课程设计的目的 NO.1 本课程设计利用 Java 编程开发语言,设计一个电子词典,该词典主要支持用户查询需 求,实现英汉互译功能,支持用户自...
基于java的英汉互译词典的设计课程设计
全面掌握 JAVA 语言的编程思想及面向对象程序设计的方法,为今后从事 实际工作打...作为数据库, 用 JAVA 作为开发工具的英汉电子 词典,内有英汉词典、汉英词典和...
c语言课程设计-电子英汉词典(含源码)
c语言课程设计-电子英汉词典(含源码)_计算机软件及应用_IT/计算机_专业资料。题目 : 电子英汉词典 设计要求 : 1.用图形用户界面实现 2.能够编辑词典库中的信息 ...
C语言课程设计——电子英汉词典
课程设计报告 课程名称 课题名称 C 语言课程设计 电子英汉词典 专班学姓 业级号名 纺织服装学院 指导教师 2014 年 01 月 06 日 1 课程设计任务书 课程名称 ...
课程设计报告-电子词典
规范编程的思想,为后继课程(数 据结构和数据库等课程)的实验以及课程设计打下...Java英汉电子字典课程设... 8页 1下载券 java课程设计——英汉电... 18页...
java设计电子词典
java设计电子词典_计算机软件及应用_IT/计算机_专业资料。英汉互译、输入、查询。...也是你在编写程序时要用上的 在控制面板---管理工具中选择数据源,选择系统 ...
C++课程设计之电子词典
作为一个英汉词典进行,该系统具备简单的英汉词 典的...退出系统 5 总结 这次编程里,遇到几次数组溢出,...java电子词典课程设计 18页 3下载券 电子词典_java...
C语言课程设计——电子英汉词典
C语言课程设计——电子英汉词典_工学_高等教育_教育专区。湖南工程学院C语言课程...回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到...
c语言课程设计之电子词典
日批准 沈阳工程学院课程设计(报告) 一、课程设计的原始资料及依据在计算机中建立有限规模的电子英汉词典,利用程序实现电子英汉词典的查找、增加、 删除、修改等功能...
更多相关标签:
java英汉词典 | java电子英汉词典 | java英汉词典源代码 | java编程词典 | java编程词典破解版 | java编程全能词典 | java编程词典注册码 | java编程词典注册机 |