电子词典java课程设计.docx

上传人:b****5 文档编号:4477940 上传时间:2022-12-01 格式:DOCX 页数:17 大小:143.33KB
下载 相关 举报
电子词典java课程设计.docx_第1页
第1页 / 共17页
电子词典java课程设计.docx_第2页
第2页 / 共17页
电子词典java课程设计.docx_第3页
第3页 / 共17页
电子词典java课程设计.docx_第4页
第4页 / 共17页
电子词典java课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

电子词典java课程设计.docx

《电子词典java课程设计.docx》由会员分享,可在线阅读,更多相关《电子词典java课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

电子词典java课程设计.docx

电子词典java课程设计

英汉电子词典

一、需求分析

二十世纪后半叶,以电子计算机为代表的现代科学获得了突飞猛进的发展并迅速和人们的日常生活结合在一起。

计算机技术的发展和进步也使电子语言词典的诞生成为可能。

我们日常的学习生活中,常会遇到这样的问题:

在工作时或在网上冲浪,或者电子邮箱中收到一封外国朋友发的英文E-mail,遇到某些陌生的单词,可又疲于去翻查厚重的英文字典时,电脑中所安装的英汉电子词典便成为了最为方便、快捷的选择。

电子词典是一种多功能的词典类工具软件,它可以即时翻译,快速、准确、详细地查阅英文单词,或将中文单词进行英文翻译,使自己的知识面拓展得更宽、更广。

尽管电子词典只有十来年的历史,但它却已经发展壮大,成为词典家族中具有旺盛生命力的一员。

虽然目前它尚不足以取代传统词典,但在英语学习和教学中,由于它实用、快捷、准确、经济等特点,已经成为传统英汉词典的有力竞争者,并对传统的词典提出了挑战。

本系统是一个采用MicrosoftAccess作为数据库,用JAVA作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。

它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。

其功能结构图如图1.1所示:

 

图1.1 功能结构图

功能模块说明:

1、英译汉功能模块说明:

可以实现对英文单词对中文单词的查询功能。

用户文本框中输入要查询的英语单词。

若该单词存在于词库中,则会在文件对话框中显示其词性及中文翻译;若该单词没有存在于词库中,则会弹出“警告”,说明“查无此词”;若没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”。

2、汉译英功能模块说明:

可以实现对中文单词对英文单词的查询功能。

用户可在文本框中输入要查询的中文单词。

若该单词存在于词库中,则会在文件对话框中显示一个或多个对应的英文;若该单词没有存在于词库中,则会弹出“警告”,说明“查无此词”;若没有输入直接点击“查询”,则会弹出“警告”,说明“查询对象不能为空”。

3、备份词库功能模块说明:

可以实现对现有词库的备份,可将当前词库存入用户所设置的任一位位置。

4、添加词汇功能模块说明:

可以实现对词库的添加。

用户可自行输入所添加的单词及其解释,若添加的是词库中没有的单词,系统在添加成功后有提示“添加成功”;若添加的是词库中已有的单词,系统会弹出“警告”,说明“此词汇已存在”。

5、修改词汇功能模块说明:

可以实现对词库中已有单词的修改。

用户可自行修改词库中的单词的解释,若输入单词不存在于词库中,系统会弹出“警告”,说明“不存在此单词”。

6、删除词汇功能模块说明:

可以删除词库中已有的单词。

用户可自行删除词库中已有的单词,在删除此单词的同时,其解释也会随之被删除,若输入单词不存在于词库中,系统会弹出“警告”,说明“不存在此单词”。

7、其它功能模块说明:

在帮助中有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。

 

二、概要设计

1、英语词典设计要求

分析词典的主要功能,设计实现如下功能:

(1)实现程序GUI图形界面;

(2)实现与词典数据库的访问;

(3)实现文件的输入、输出;

(4)实现鼠标或键盘事件响应模块。

2、自定义类说明

(1)publicclassDic{}

 自定义主体main函数的类,用来调用各种类

(2)classDataWindowextendsJFrameimplementsActionListener{}

 自定义一个主窗体类,用来显示整个窗体。

  继承的父类:

JFrame类

实现的接口:

ActionListener

(3)classAddWin extends JFrameimplementsActionListener{}

  自定义一个添加窗口类,用于添加新的单词及其解释

   (4)DelWinextendsJFrameimplementsActionListener{}

   自定义一个删除窗口类,用于删除词库中所存在的单词及其解释

(5)ModifyWinextends JFrameimplements ActionListener{}

    自定义一个修改窗口类,用于修改词库中所存在的单词及其解释

  (6)class HelpFrame extendsJFrame {}

  自定义一个帮助窗口类,用不可编辑的文本域的窗体对该词典的功能做简要的说明

   3、界面设计思想

创建窗体,设计菜单。

定义菜单条JMenumfile(文件)、medit(编辑)、mhelp(帮助),菜单子项JMenuItemedic(英汉词典)、cdic(汉英词典)、back_data(备份词库)、quit(退出)、addedit(添加词汇)、modedi(修改词汇)、deledit(删除词汇)、hhelp(帮助)、about(关于)。

通过add()方法将菜单子项添加到菜单中,并注册监听者。

定义一个文件对话框,并为之增加适配器。

自定义一个面板,实现GUI元素的布局。

4、方法定义说明

 (1)定义方法actionPerformed(),内用if语句实现按钮监听:

public void actionPerformed(ActionEvente)

  

(2)定义方法Listwords(),实现查询功能

publicvoid Listwords() throwsSQLException

(3)定义方法删除(),实现删除功能

publicvoid删除()throwsSQLException

  (4)定义方法添加(),实现添加功能

public void添加()throwsSQLException

(5)定义方法修改(),实现修改功能

publicvoid 修改() throwsSQLException

 5、数据库说明

Java数据库连接(JDBC)由一组用 Java编程语言编写的类和接口组成。

JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。

然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。

本系统采用的是Access数据库的连接方式,Access数据库使用ODBC直连方式如下:

加载驱动程序:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

与数据库建立连接:

Stringurl="jdbc:

odbc:

Driver={MicroSoft AccessDriver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");

Connectionconn=DriverManager.getConnection(url,"","");

创建JDBC Statement对象:

Statement stmtNew=conn.createStatement();

注意:

首先要配置数据源:

控制面版->管理工具->数据源->系统DSN->添加->选择Microsort AccessDrive(*.mdb)->完成->写个数据源名(随意)->选择->找到你的access文件->确定,接下来再进行你的操作。

 

三、详细设计

本系统是通过对类对象的引用,以及函数的调用实现类之间的连接的。

创建窗体,GUI(标签,文本框,按钮),用add()方法加入容器,进而进行布局,用addActionListener( )方法为按钮或者菜单条按钮注册事件监听者,通过监听者方法调用(事件源,处理代码)对按钮触发。

1、添加功能的实现:

 publicvoid添加()throwsSQLException{

    ﻩ Stringcname,ename;

   ﻩtry

{class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

ﻩﻩﻩ}catch(ClassNotFoundExceptione){}

ﻩ Con =DriverManager.getConnection("jdbc:

odbc:

Driver=

{MicroSoft AccessDriver(*.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()+"'";

 ﻩString temp="INSERTINTO表1VALUES ("+s1+","+s2+")";

   Stmt.executeUpdate(temp);

ﻩﻩﻩJOptionPane.showMessageDialog(this,"添加成功!

","恭喜",

ﻩ  JOptionPane.WARNING_MESSAGE);

ﻩﻩdispose();

ﻩﻩ}

Con.close();}

2、删除功能的实现:

public void删除()throwsSQLException{

 String cname,ename;

 try

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

ﻩ} catch(ClassNotFoundException e){}

ﻩﻩCon=DriverManager.getConnection

("jdbc:

odbc:

Driver={MicroSoft AccessDriver(*.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);

ﻩ }

  }

3、修改功能的实现:

ﻩpublicvoid 修改()throwsSQLException{

ﻩString cname,ename;

ﻩtry

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

ﻩ}catch(ClassNotFoundException e){}

Con=DriverManager.getConnection

("jdbc:

odbc:

Driver={MicroSoftAccess Driver(*.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()))

ﻩ{

ﻩﻩﻩString s1="'"+修改英语单词_文本

条.getText().trim()+"'",s2="'"+修改汉语解释_

文本条.getText().trim()+"'";

ﻩ Stringtemp="UPDATE表1SET解释="+s2+"

WHERE单词= "+s1;

Stmt.executeUpdate(temp);

JOptionPane.showMessageDialog(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.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 =new AddWin(); } //AddWin是添加窗口的类

ﻩelseif(e.getSource()==b3||e.getSource()==modedit)

{ ModifyWinmodi = newModifyWin();}

//ModifyWin是修改窗口的类

ﻩelseif(e.getSource()==b4||e.getSource()==deledit)

{ DelWin del=newDelWin();}//DelWin是删除窗口的类

ﻩﻩelseif(e.getSource()==edic)//英汉

ﻩlabel.setText("输入要查询的英语单词:

");

ﻩﻩb1.setVisible(true);

ﻩ}

elseif(e.getSource()==cdic)//汉英

ﻩ{

label.setText("输入要查询的汉语意思:

");

ﻩﻩﻩb1.setVisible(true);

ﻩ}

ﻩelse if(e.getSource()==back_data)//备份

ﻩ{

ﻩﻩ =newFile("english\\english.mdb");

 fis=null;ﻩ

ﻩ(true);

try{

ﻩfis= new(fromfile);

ﻩﻩﻩﻩintbytesRead;

//定义变量来存储输入流中读取出来的文件

ﻩbyte[]buf=newbyte[4*1024]; //4Kbuffer

 =new

(),

());

ﻩfos=new(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) //关于

{

ﻩﻩfinal String AboutMsg ="AElectricalDictionary\n\n"

ﻩ+"Anapplicationwrittentoshowoffthefunctionof

dictionary.\n\n"

ﻩﻩﻩ+"JAVA课程设计 杨汝洁\n\n"

ﻩ+"Copyright(c)2008byEdith.All rights Reserved.";

ﻩ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=english\\english.mdb","","");

StatementEx1Stmt=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 表1 

WHERE解释LIKE'%"+englishtext.getText()+"%'");

ﻩﻩ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);

ﻩﻩ}}

}

四、软件测试

经过编译、执行后可看到运行界面如图4.1所示

图4.1

此时有三全菜单选择:

文件、编辑、帮助

1、文件菜单:

它包含四个子菜单:

英汉词典、汉英词典、备份词库及退出。

打开该词典时默认进入的是英汉词典。

如图4.2所示:

图4.2

(1)英汉词典:

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

图4.3

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

  图4.4     图4.5

(2)汉英词典:

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

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1