电子词典java课程设计Word文件下载.docx
《电子词典java课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子词典java课程设计Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
二、概要设计
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:
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解释="
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:
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所示: