java课程设计——英汉电子词典编程_第1页
java课程设计——英汉电子词典编程_第2页
java课程设计——英汉电子词典编程_第3页
java课程设计——英汉电子词典编程_第4页
java课程设计——英汉电子词典编程_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java课程设计英汉电子词典一、需求分析二十世纪后半叶,以电子计算机为代表的现代科学获得了突飞猛进的发展并迅速和人们的日常生活结合在一起。计算机技术的发展和进步也使电子语言词典的诞生成为可能。我们日常的学习生活中,常会遇到这样的问题:在工作时或在网上冲浪,或者电子邮箱中收到一封外国朋友发的英文E-mail,遇到某些陌生的单词,可又疲于去翻查厚重的英文字典时,电脑中所安装的英汉电子词典便成为了最为方便、快捷的选择。电子词典是一种多功能的词典类工具软件,它可以即时翻译,快速、准确、详细地查阅英文单词,或将中文单词进行英文翻译,使自己的知识面拓展得更宽、更广。尽管电子词典只有十来年的历史,但它却已经

2、发展壮大,成为词典家族中具有旺盛生命力的一员。虽然目前它尚不足以取代传统词典,但在英语学习和教学中,由于它实用、快捷、准确、经济等特点,已经成为传统英汉词典的有力竞争者,并对传统的词典提出了挑战。本系统是一个采用Microsoft Access作为数据库,用JAVA作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。其功能结构图如图1.1所示:英语小词典文件编辑英汉词典汉英词典退出备份词库添加词汇删除词汇修改词汇 图1.1 功能结构图功能模块说明:1、英译汉功能模块说明:可以实现

3、对英文单词对中文单词的查询功能。用户文本框中输入要查询的英语单词。若该单词存在于词库中,则会在文件对话框中显示其词性及中文翻译;若该单词没有存在于词库中,则会弹出“警告”,说明“查无此词”;若没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”。2、汉译英功能模块说明:可以实现对中文单词对英文单词的查询功能。用户可在文本框中输入要查询的中文单词。若该单词存在于词库中,则会在文件对话框中显示一个或多个对应的英文;若该单词没有存在于词库中,则会弹出“警告”,说明“查无此词”;若没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”。3、备份词库功能模块说明:可以实现对

4、现有词库的备份,可将当前词库存入用户所设置的任一位位置。4、添加词汇功能模块说明:可以实现对词库的添加。用户可自行输入所添加的单词及其解释,若添加的是词库中没有的单词,系统在添加成功后有提示“添加成功”;若添加的是词库中已有的单词,系统会弹出“警告”,说明“此词汇已存在”。5、修改词汇功能模块说明:可以实现对词库中已有单词的修改。用户可自行修改词库中的单词的解释,若输入单词不存在于词库中,系统会弹出“警告”,说明“不存在此单词”。6、删除词汇功能模块说明:可以删除词库中已有的单词。用户可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,若输入单词不存在于词库中,系统会弹出“警

5、告”,说明“不存在此单词”。7、其它功能模块说明:在帮助中有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。二、概要设计1、英语词典设计要求分析词典的主要功能,设计实现如下功能:(1)实现程序GUI图形界面;(2)实现与词典数据库的访问;(3)实现文件的输入、输出;(4)实现鼠标或键盘事件响应模块。2、自定义类说明(1) public class Dic自定义主体main函数的类,用来调用各种类(2) class DataWindow extends JFrame implements ActionListener自定义一个主窗体类,用来显示整个窗体。继承的父类

6、: JFrame类实现的接口: ActionListener(3) class AddWin extends JFrame implements ActionListener 自定义一个添加窗口类,用于添加新的单词及其解释 (4) DelWin extends JFrame implements ActionListener 自定义一个删除窗口类,用于删除词库中所存在的单词及其解释 (5) ModifyWin extends JFrame implements ActionListener 自定义一个修改窗口类,用于修改词库中所存在的单词及其解释 (6) class HelpFrame ext

7、ends JFrame 自定义一个帮助窗口类,用不可编辑的文本域的窗体对该词典的功能做简要的说明 3、界面设计思想创建窗体,设计菜单。定义菜单条JMenu mfile(文件)、medit(编辑)、mhelp(帮助),菜单子项JMenuItem edic(英汉词典)、cdic(汉英词典)、back_data(备份词库)、quit(退出)、addedit(添加词汇)、modedi(修改词汇)、deledit(删除词汇)、hhelp(帮助)、about(关于)。通过add( )方法将菜单子项添加到菜单中,并注册监听者。定义一个文件对话框filedialog_save,并为之增加适配器。自定义一个面板

8、,实现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)定义方法修改(),实现修改功能pu

9、blic void 修改() throws SQLException 5、数据库说明Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本系统采用的是Access数据库的连接方式,Access数据库使用ODBC直连 方式如下:加载驱动程序:ver") ; 与数据库建立连接:String url="jdbc:odbc:Driver=MicroSoft Access Dr

10、iver (*.mdb);DBQ="+application.getRealPath("/Data/ReportDemo.mdb");Connection conn = DriverManager.getConnection(url,"","");创建JDBC Statement对象:Statement stmtNew=conn.createStatement() ;注意:首先要配置数据源: 控制面版->管理工具->数据源->系统DSN->添加->选择Microsort Access Drive

11、(*.mdb)->完成->写个数据源名(随意)->选择->找到你的access文件->确定,接下来再进行你的操作。3、 详细设计 本系统是通过对类对象的引用,以及函数的调用实现类之间的连接的。创建窗体,GUI(标签,文本框,按钮),用add( )方法加入容器,进而进行布局,用addActionListener( )方法为按钮或者菜单条按钮注册事件监听者,通过监听者方法调用(事件源,处理代码)对按钮触发。1、添加功能的实现: public void 添加() throws SQLException String cname,ename; try class.forN

12、ame("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) Con = DriverManager.getConnection("jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb","",""); Stmt=Con.createStatement(); ResultSet rs=Stmt.executeQuery("SELECT * F

13、ROM 表1"); boolean boo=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) String s1

14、="'"+添加英语单词_文本条.getText().trim()+"'",s2="'"+添加汉语解释_文本条.getText().trim()+"'" String temp="INSERT INTO 表1 VALUES ("+s1+","+s2+")" Stmt.executeUpdate(temp);JOptionPane.showMessageDialog(this,"添加成功!","恭喜

15、", 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("jdbc:odbc:Driver=MicroSoft Access Driver

16、 (*.mdb);DBQ=englishenglish.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(删除单词_文本条.getTe

17、xt()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) JOptio

18、nPane.showMessageDialog(this,"不存在此单词!","警告", JOptionPane.WARNING_MESSAGE); 3、修改功能的实现:public void 修改() throws SQLExceptionString cname,ename;try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e)Con = DriverManager.getConnection("jdbc:odb

19、c:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.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

20、(ename.equals(修改英语单词_文本条.getText() String s1="'"+修改英语单词_文本条.getText().trim()+"'",s2="'"+修改汉语解释_文本条.getText().trim()+"'" String temp="UPDATE 表1 SET 解释="+s2+" WHERE 单词 = "+s1; Stmt.executeUpdate(temp); JOptionPane.showMessageD

21、ialog(this,"记录修改成功!","恭喜", JOptionPane.WARNING_MESSAGE); dispose(); break; Con.close();if(boo=false)JOptionPane.showMessageDialog(this,"不存在此单词!","警告",JOptionPane.WARNING_MESSAGE);4、实现按钮监听的实现:public void actionPerformed(ActionEvent e)if(e.getSource()=b1|e.getSo

22、urce()=englishtext)chinesetext.setText("");if(englishtext.getText().equals("")JOptionPane.showMessageDialog(this,"查询对象不能为空!","警告",JOptionPane.WARNING_MESSAGE); else tryListwords(); catch(SQLException ee) else if(e.getSource()=b2|e.getSource()=addedit) AddWin a

23、dd = new AddWin(); /AddWin是添加窗口的类else if(e.getSource()=b3|e.getSource()=modedit) 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.setVisib

24、le(true);else if(e.getSource()=cdic) /汉英label.setText("输入要查询的汉语意思:");b1.setVisible(true);else if(e.getSource()=back_data) /备份File fromfile = new File("englishenglish.mdb");FileInputStream fis = null;filedialog_save.setVisible(true);tryfis = new FileInputStream(fromfile);int bytes

25、Read; /定义变量来存储输入流中读取出来的文件byte buf = new byte4*1024; /4K bufferFile 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(); catc

26、h(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课程设计 杨汝洁nn"+"Copyright (c) 2008 by Edith

27、.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");

28、catch(ClassNotFoundException e)String url="jdbc:odbc:English"/建立桥接器Connection Ex1Con = DriverManager.getConnection ("jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb","","");Statement Ex1Stmt = Ex1Con.createStatement();if(label.getText()

29、.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

30、.getText().equals("")JOptionPane.showMessageDialog(this,"查无此单词!","警告",JOptionPane.WARNING_MESSAGE);else if(label.getText().equals("输入要查询的汉语意思:")ResultSet rs=Ex1Stmt.executeQuery("SELECT * FROM 表1 WHERE 解释 LIKE '%"+englishtext.getText()+"%

31、9;");while(rs.next()ename = rs.getString("单词");cname = rs.getString("解释");chinesetext.append(ename+'n');Ex1Con.close(); /关闭数据库if(chinesetext.getText().equals("")JOptionPane.showMessageDialog(this,"查无此单词!","警告",JOptionPane.WARNING_MESSAGE

32、);四、软件测试经过编译、执行后可看到运行界面如图4.1所示图4.1此时有三全菜单选择:文件、编辑、帮助1、文件菜单:它包含四个子菜单:英汉词典、汉英词典、备份词库及退出。打开该词典时默认进入的是英汉词典。如图4.2所示:图4.2(1)英汉词典:在文本框中输入要查询的英文单词,单击“查询”,英文单词对应的中文解释及其词性便会出现在文件对话框中,如图4.3所示:图4.3如果所查单词不存在于词库中,则会弹出“警告”,说明“查无此词”,如图4.4所示;如果是没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”,如图4.5所示: 图4.4 图4.5(2)汉英词典:在在文本框中输入要查询

33、的汉语意思,单击“查询”,对应的英文单词便会出现在文件对话框中,如图4.6所示: 图4.6如果所查单词不存在于词库中,则会弹出“警告”,说明“查无此词”;如果是没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”,演示与英汉词典类似。(3)点击备份词库时,会弹出保存文件对话框,此时可将词库拷贝到机算机里的任一位置。2、编辑菜单:它包含三个子菜单:添加词汇、修改词汇和删除词汇。如图4.7所示 图4.7(1)添加词汇:用户可自行输入所添加的单词及其解释,如图4.8所示 图4.8 图4.9如果添加的是词库中没有的单词,系统在添加成功后有提示“添加成功”,如图4.9所示;若添加的是词库

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

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论