电子词典java课设含可运行程序解析.docx

上传人:b****5 文档编号:11624013 上传时间:2023-03-29 格式:DOCX 页数:15 大小:22.36KB
下载 相关 举报
电子词典java课设含可运行程序解析.docx_第1页
第1页 / 共15页
电子词典java课设含可运行程序解析.docx_第2页
第2页 / 共15页
电子词典java课设含可运行程序解析.docx_第3页
第3页 / 共15页
电子词典java课设含可运行程序解析.docx_第4页
第4页 / 共15页
电子词典java课设含可运行程序解析.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

电子词典java课设含可运行程序解析.docx

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

电子词典java课设含可运行程序解析.docx

电子词典java课设含可运行程序解析

电子词典

1.课程设计的目的

本课程设计利用Java编程开发语言,设计一个电子词典,该词典主要支持用户查询需求,实现英汉互译功能,支持用户自定义词库,能够使用户对词库进行操作,以便用户获得更多资料。

通过设计这个小词典,将课堂所学应用于实际生活中,学会运用面向对象开发语言进行简单程序的设计,与此同时也加强了对JavaSwing和JavaAwt包的使用和对Java相关知识的巩固。

本课程设计也使用了MSAccess数据库做数据持久化,不仅丰富了电子词典的内容,同时也加深了对数据库的相关知识的深入了解,这种跨学科的综合设计,锻炼了自己的编程和综合运用知识的能力,为以后的发展打下了良好基础。

2.设计方案论证

2.1项目开发背景

近几年来外语学习已经变为一种潮流,越来越多的中小学生拥有自己的电子词典。

现在的数字电子词典容量不断增大,已发展到可以自由扩充词库,或者从网上下载词库,对词典进行自动更新。

电子词典的功能的需求也越来越强大,作为一个计算机专业的学生,希望根据英语学习者的需求来设计一个实用电子词典,以帮助英语学习者们更方便快捷的查询单词、记忆单词、有效自由的对词库进行管理和操作。

与此同时也提高一下自己对Java语言的运用和对程序的开发设计能力。

2.2系统需求分析

用户在使用电子词典的时候,有可能会使用到电子词典的查询功能,也有可能使用到对词库的更新功能。

通过对用户的需求分析,初步确定该系统的基本需求情况。

(1用户在打开软件的时候,应该呈现一个友好的查询界面,便于用户操作。

(2当用户需要查询的时候,软件将提供这个单词的所有信息。

(3可以自定义单词,使用户可以自动扩充单词库,方便以后使用,并具有针对性。

2.2.1模块功能说明

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

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

当用户输入一个单词,用户可以单击查询按钮,显示这个单词的中文解释,解释出现在文本区。

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

实现将中文词汇翻译成英语。

在查询栏中输入中文,点击查

询,便出现它的英文解释。

(3词库的备份模块:

此模块可将已有模块备份,保证数据的安全性。

(4词库的更新模块:

此模块有增、删、改等功能。

可以根据自己需要,为词库添加相应的英文单词和汉语解释,或者对已有单词的词义进行补充、修改或删除。

(5帮助功能模块:

此模块添加了一些使用该软件的方法,当用户在使用时遇到不清楚的问题时,可以点帮助文档,根据提示进行操作。

2.2.2系统总体结构设计

图1系统功能框图

菜单栏

文件

编辑帮助

汉英词典

备份词库

退出

添加词汇

修改词汇

删除词汇

关于文档

英汉词典

调用filedialog窗口

调用word文档

调用word文档

调用类AddWin

调用类ModifyWin

调用类DelWin

调用方法AboutP

2.2.3系统功能流程图

图2修改功能函数流程图

开始

加载驱动

建立桥接器调用状态函数

定义记录进行修改数据库操作

下一条记录是否存在

取单词

取解释

执行修改操作

关闭数据库

boo==false

发出警告

结束

N

Y

Y

N

图3添加功能流程图

是否按取消按钮

Y

开始

是否按添加按钮

输入内容是否空

调用添加(方法

捕获数据库异常发出警告

退出操作

结束

Y

N

N

Y

N

2.2.4详细设计

(1系统中有6个类

系统运行主类:

Dic.java

窗口主界面类:

DataWindow

添加单词类:

AddWin.java

修改单词类:

ModifyWin.java

删除单词类:

DelWin.java

使用帮助类:

HelpFrame.java

(2系统运行主类Dic的方法

Main(:

程序入口,建立窗体类DataWindow的对象。

(3窗口主界面类DataWindow的方法

DataWindow(:

构造函数,安排界面布局,设置菜单项和工具按钮。

actionPerformed(:

执行按钮动作事件。

Listwords(;实现数据查询功能。

(4添加单词类AddWin的方法

AddWin(:

构造函数,安排界面布局,设置监听按钮。

actionPerformed(:

执行按钮动作事件,调用添加(方法。

添加(:

实现添加数据功能。

(5修改单词类ModifyWin的方法

ModifyWin(:

构造函数,安排界面布局,设置监听按钮。

actionPerformed(:

执行按钮动作事件,调用修改(方法。

修改(:

实现修改数据功能。

(6删除单词类DelWin的方法

DelWin:

构造函数,安排界面布局,设置监听按钮。

actionPerformed(:

执行按钮动作事件,调用删除(方法。

删除(:

实现删除数据功能。

2.3设计方法

2.3.1开发环境

Java开发工具(Javadevelopmentkit,JDK是Sun公司所开发的一套Java程序开发工具软件,它是Sun公司的网站免费取得。

它与JDK的参考文件同样是编辑Java程序的必备工具。

在编写、编译和运行应用程序时用到eclipse。

2.3.2功能模块设计

图4程序主界面

(1窗口功能说明

窗口共有3个主要部分:

菜单栏、工具条、显示栏。

菜单栏:

包括文件、编辑、帮助菜单。

工具条:

包括输入栏和查询、添加、修改、删除、发生按钮。

显示栏:

显示查询单词在词典中的所有解释。

(2菜单说明

文件菜单:

包括英汉词典、汉语词典、备份词库、退出功能。

编辑菜单:

包括添加词汇、修改词汇、删除词汇功能。

帮助菜单:

关于该软件的一些信息。

(3工具栏说明

在向输入栏中输入英/中文单词,单击查询按钮,在显示栏中将会显示查找所对应词典中的所有解释。

发音按钮:

发音纯正标准。

方便用户更好的记忆朗读单词。

添加、修改、删除按钮:

可由用户自行添加、修改和删除词库中的词汇。

(4显示栏说明

显示用户所查询的词义。

右击将出现复制、粘贴等命令。

方便用复制到其它地方进行其它如打印、学习等操作。

2.4数据库设计

在开始设计电子词典之前,要做一些准备工作,在MicrosoftAccess2003中,建立一个数据库,数据库的名字为english数据库,其中包括一张表。

图5建立Accesss数据库

图6表的属性图

此英语单词表有两个属性值,分别是单词和解释。

其中单词字段为主键,保证输入不可以为空。

其类型都是文本类型。

其中,单词表示英文单词信息;解释代表汉语解释信息。

表1英语单词解释表

2.4.1使用JDBC连接数据库

JDBC是Java程序连接数据库的应用程序接口(API。

JDBC是由一群类和接口组成,通过调用这些类和接口所提供的成员方法,我们可以连接各种不同的数据库,进而使用SQL命令对数据库进行查询、插入、删除、更新等操作。

Java程序包括Java小程序和应用程序,主要是根据JDBC方法实现对数据库的访问和操作。

完成的主要任务有请求与数据库建立连接;向数据库发送SQL请求;为结果集定义存储应用和数据类型;查询结果;错误处理;控制传输;提交关闭连接等操作。

2.4.2JDBC编程要点

(1引用java.sql包:

importjava.sql.*;

(2使用Class.forName(方法加载相应数据库的JDBC驱动程序。

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“;

(3定义JDBC的URL对象。

(4连接数据库。

Connections=DriverManager.getConnection(conURL;

(5使用SQL语句对数据库进行操作。

(6解除Java与数据库的连接并关闭数据库。

(7常用的JDBC类有,DriverManage类,Connection类,Statement类,

PreparedStatement类,ResultSet类。

3.程序运行结果

图7文件菜单界面

文件菜单:

包括英汉词典、汉语词典、备份词库、退出功能。

当单击英汉词典时,主界面出现输入查询英语单词;单击汉语词典,显示输入要查询的汉语意思;单击退出,将退出操作;单击备份数据库,将对已有的数据进行备份,以便保证数据的安全。

图8英汉词典英译汉

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

当用户输入一个单词,用户可以单击查询按钮,显示这个单词的中文解释,解释出现在文本区,但是输入不可以为空。

图9英汉词典汉译英

实现将中文词汇翻译成英语。

在查询栏中输入中文,点击查询,便出现它的英文解释。

图10编辑菜单界面

编辑菜单:

包括添加词汇、修改词汇、删除词汇功能。

可以扩充词库,按照自己的需要,完善词库,也可对原有的信息进行修改、补充等操作。

图11删除界面

单击主界面的删除按钮,出现删除界面,在输入单词栏中填上要删除的单词,然后单击提交按钮。

如果要退出,也可以点击取消,退出删除界面,回到主界面。

图12修改界面

单击主界面的修改按钮,出现修改界面,在输入单词栏中填上要修改的单词,下面写上它的汉语解释,然后单击提交按钮。

如果输入有误,也可以点击取消,退出修改界面。

图13添加单词界面

单击主界面的添加按钮,出现添加单词界面,在输入单词栏中填上要添加的单词,下面写上它的汉语解释,然后单击提交按钮。

如果输入有误或要退出,也可以点击取消,退出添加单词界面,回到主界面。

图14帮助菜单界面

帮助菜单包括帮助和关于两个选项。

此模块添加了一些使用该软件的方法,当用户在使用时遇到不清楚的问题时,可以点帮助文档,根据提示进行操作。

图15关于界面

此界面显示关于此软件的一些信息,供用户参阅。

4.设计体会

通过本次设计,进一步深化了课堂上所学的知识,深刻理解了Java语言的重要概念及其面向对象的特点,熟练的应用面向对象的思想和设计方法解决实际问题。

巩固所学java语言基本知识,增进Java语言编辑基本功,掌握JDK、eclipse等开发工具的运用,拓展常用类库的应用,把所学课程及相关知识加以融会贯通。

除此之外,对于图形用户界面的设计,从课本的Awt包扩展到Swing包,利用Swing编程设计漂亮的图形用户界面,增加了一些新的的效果。

在此次设计中,预先设计的所有功能均能实现,而且执行效果较好。

但是,由于时间有限,此电子词典的功能还不够完善。

例如可以增加背单词功能,英文单词游戏等功能,由于时间和能力有限,其他功能待日后完善。

在此次课程设计中,自己解决问题的能力得到了提高。

由于课堂所学有限,不足以解决实际问题,所以在设计过程中遇到的问题,参阅了大量的书目和借助网络,再加上老师的指导,最终问题都得到了解决。

这为以后进行复杂的程序设计奠定了很好的基础,同时也培养了自己获得信息、总结信息,以及综合运用所学知识的能力。

5.参考文献

[1]胡宋军.Java2编程技术与实例[M].北京:

人民邮电出版社,2004.5:

95-125

[2]岩洪亮等.JAVA课程设计教程[M].北京:

北京电子工业出版社,2004.5:

26-42

[3]刘志铭,孙明丽等.数据库系统开发案例精选[M].北京:

清华大学出版社,2005.6:

235-263

[4]王国辉,吕海涛.数据库系统开发案例[M].北京:

人民邮电出版社,2007.3:

106-177

[5]陈国君,陈锡祯.Java2程序设计基础[M].北京:

清华大学出版社,2006.1:

316-338

[6]袁海燕.Java实用程序设计100例[M].北京:

人民邮电出版社,2005.6:

210-224

6.附录

主要代码:

importjava.awt.*;

import.*;

importjava.sql.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.io.*;

importsun.audio.*;

importjavax.swing.JOptionPane;

classDataWindowextendsJFrameimplementsActionListener

{

JFrametopFrame;

JDesktopPanedesktop;

FileDialogfiledialog_save;

JTextFieldenglishtext;

JTextAreachinesetext;

JButtonb1,b2,b3,b4,b5;

JLabellabel;

JMenuBarmbar;

JMenumfile,medit,mhelp;

JMenuItemedic,cdic,back_data,quit,addedit,modedit,deledit,hhelp,about;

DataWindow(

{

super("英汉小词典";

this.setBounds(250,250,600,400;

this.setVisible(true;

getContentPane(.add(newJScrollPane(chinesetext;mbar=newJMenuBar(;

setJMenuBar(mbar;

mbar.setOpaque(true;

mfile=newJMenu("文本";

medit=newJMenu("编辑";

mhelp=newJMenu("帮助";

mbar.add(mfile;

mbar.add(medit;

mbar.add(mhelp;

edic=newJMenuItem("英汉词典";

cdic=newJMenuItem("汉英词典";

back_data=newJMenuItem("备份词典";

quit=newJMenuItem("退出";//文件菜单

addedit=newJMenuItem("添加词汇";

modedit=newJMenuItem("修改词汇";

deledit=newJMenuItem("删除词汇";//编辑菜单hhelp=newJMenuItem("帮助";

about=newJMenuItem("关于....";//帮助菜单mfile.add(edic;

mfile.add(cdic;

mfile.add(back_data;

mfile.addSeparator(;

mfile.add(quit;

medit.add(addedit;

medit.add(modedit;

medit.add(deledit;

mhelp.add(hhelp;

mhelp.add(about;

edic.addActionListener(this;

cdic.addActionListener(this;

quit.addActionListener(this;

addedit.addActionListener(this;

modedit.addActionListener(this;

deledit.addActionListener(this;

hhelp.addActionListener(this;

about.addActionListener(this;

englishtext=newJTextField(16;

englishtext.setFont(newFont("",15,15;

chinesetext=newJTextArea(8,15;

chinesetext.setEditable(false;

chinesetext.setFont(newFont("",25,25;

b1=newJButton("查询";

b2=newJButton("添加";

b3=newJButton("修改";

b4=newJButton("删除";

b5=newJButton("";

JPanelp1=newJPanel(;

JPanelp2=newJPanel(;//添加面板

label=newJLabel("输入要查询的英语单词";

label.setFont(newFont("隶书",20,20;

p1.add(label;

p1.add(englishtext;

p1.add(b1;

p1.add(b5;

p2.add(b2;

p2.add(b3;

p2.add(b4;

this.add(p1,"North";

this.add(p2,"South";

this.add(newJScrollPane(chinesetext,"Center";

b1.addActionListener(this;

b2.addActionListener(this;

b3.addActionListener(this;

b4.addActionListener(this;

b5.addActionListener(this;

englishtext.addActionListener(this;

back_data.addActionListener(this;

filedialog_save=newFileDialog(this,"保存文件对话框",FileDialog.SAVE;//定义"保存文件对话框"filedialog_save.addWindowListener(newWindowAdapter(

{

publicvoidwindowClosing(WindowEvente

{

filedialog_save.setVisible(false;

}

};

addWindowListener(newWindowAdapter(

{

publicvoidwindowClosing(WindowEvente

{

System.exit(0;

}

};

}

publicvoidactionPerformed(ActionEvente//实现按钮监听事件

{

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//如果是"添加"

{

newAddWin(;//AddWin是添加窗口的类

}

elseif(e.getSource(==b3||e.getSource(==modedit//如果是"修改"

{

newModifyWin(;//ModifyWin是修改窗口的类

}

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

{

newDelWin(;//DelWin是删除窗口的类

}

elseif(e.getSource(==b5//如果是语音文件,则读出单词

{

if(englishtext.getText(!

=null

{

try

{

InputStream

is=getClass(.getResource("sound//"+englishtext.getText(.trim(+".wav".openStream(;

//AudioPlayer.player.start(is;

}

catch(IOExceptione1{}

}

}

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

{

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

";

b1.setVisible(true;

b5.setVisible(true;

}

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

{

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

";

b1.setVisible(true;

b5.setVisible(true;

}

elseif(e.getSource(==back_data//备份

{

Filefromfile=newFile("english\\english.mdb";

FileInputStreamfis=null;

filedialog_save.setVisible(true;

try

{

fis=newFileInputStream(fromfile;//建立文件输入流

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

byte[]buf=newbyte[4*1024];//定义4KB容量的buffer数组

Filetofile=newFile(filedialog_save.getDirectory(,filedialog_save.getFile(;//建立新文件对象

FileOutputStreamfos=newFileOutputStream(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//关于

{

finalStringAboutMsg="AElectricalDictionary1.0\n\n"+"Anapplicationwrittentoshowoffthefunctionofdictionary.\n\n"+"\n\n"+"Copyright(c2005.";

JOptionPane.showMessageDialog(topFrame,AboutMsg;

}

elseif(e.getSource(==hhelp

{

JInternalFramehelp=newHelpFrame(;

help.setVisible(true;

}

}

publicvoidListwords(throwsSQLException//实现查询功能

{

Stringcname,ename;

try

{

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

}

catch(ClassNotFoundExceptione{}//建立桥接

ConnectionExlCon=DriverManager.getConnection("jdbc:

odbc:

Driver={MicroSoftAccessDriver(e

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

当前位置:首页 > 职业教育 > 中职中专

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

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