1、JAVA设计实现电子词典目录摘要两周的课程设计实训我做的是用Java基本程序编写一个简单的电子词典,该程序是一个图形界面连接数据库的英汉字典,其界面主要采用了awt包, 程序实现了电子词典的基本功能有:查询、修改,添加词汇并保存修改,添加后的词汇,通过自己的实际动手操作,进一步加深了对Java的理解,电子词典的完成我还了解了市场的需求,培养了自己的学习兴趣。 关键字:Java图形界面,Access数据库,actionPerformed()接口方法, ActionEvent事件1需求分析我们的课题是电子词典功能的实现,电子词典作为一种学习工具,有着不可估量的市场前景。作为一名学生,我们在学习英语
2、的时候会经常碰到很多的生词,有时,为了读懂一篇文章,经常是读文章用一小时,但是其中却有半个小时都在翻阅英语字典。所以我们小组为了解决这一问题,才将选材方向定位于电子词典的功能实现,主要的目的就是为同学们解决这一问题。在做电子词典功能实现的时候,我们主要从以下几个方面入手,即:查询,添加,修改,在这几个功能模块上,我们首先提供了一个查询界面,即使用者需要输入要查询的关键字,点击确定按钮,屏幕上就会出现其对应的答案。在做这个模块的时候,我们主要解决了JAVA与数据库的链接问题,进而实现其功能。解决了同学们在学习英语过程中遇到的困难,满足了市场的需求。2. 概要设计2.1设计思路本系统在单词查阅方面
3、主要完成了英译汉功能;在系统性能方面主要完成了单词库的添加、修改、删除,退出功能等。2.1.1 系统总体功能模块图本系统总体功能模块图如下所示:英汉词典 文件汉英词典备份词库退出电子词典添加词汇修改词汇编辑 删除词汇 图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea,TextField,Button作为主要的部件,文本框上使用ActionEvent事件,文本区上实现TextEvent事件,实现接口方法用到了actionPerformeredf方法在设计类的时候,要实现三个系统性能功能,就用了三个类,一个主类和一个默认属性类
4、作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。数据库的创建,用Access创建数据库,库的名称叫做english,表的名称也叫做english,.为了将图形界面与数据库建立连接首先要创建一个ODBC数据源。数据库连接的建立包括两个步骤:首先要加载相应数据库的JDBC驱动程序;然后建立连接。3. 详细设计3.1 主界面功能该模块的主要功能为:使用户可以在一个界面下调用各功能模块。即放便用户使用又方便用户的学
5、习,而且不但可以通过菜单栏调用各功能模块,还可以通过按钮调用,主界面主要由两个面版,四个按钮,一个文本框,一个文本区,一个标签和一个菜单栏组成。在文本框中输入要查询的数据。文本区中显示查询的结果。主要方法包括:DataWindow()为构造方法,创建用户添加词汇界面;与actionPerformed()为接口方法,处理ActionEvent事件。设计好的主界面去如图所示3.2 英译汉功能该模块的主要功能为:当用记遇到陌生的单词或记不清解释的单词时,用户可以通过本功能查找,还通过本模块完成单词的再一次记忆。此功能模块主要是针对已经存在于单词库中的单词,通过编辑菜单中的英汉词典功能,在主界面的文本
6、框中输入要查询的单词,单击查询按钮进行查询。结果显示在主界面的文本区中。3.3 汉译英功能该模块的主要功能为:当用户进行汉译英翻译时难难免遇到不会的词或记不请的记。这时用记就可以通过本功能实现词汇的查找。它不但可以查到想要查的词还可以找到和该词相关的单词。3.4数据库创建与连接数据库表设计字段名字段类型长度单词文本50解释文本50打开控制面板选择:“管理工具”“数据源(ODBC)”“用户DNS”“添加”选择相应的数据库驱动Microsoft Access Driver (*.mdb),数据源的名称为english,然后选择数据库,确定。建立JDBCODBC桥接器:Class.forName()
7、方法的执行,将创建数据库驱动的实例并注册到驱动管理器。在某种数据库的驱动程序加载后,就可以建立与该DBMS的连接了。定义如下: Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”); 创建数据库连接这个步骤中要使数据库驱动连接到相应的DBMS。连接的建立通过使用DriverManager类中的static方法getConnection(),该方法的定义如下 Con=DriverManager.getConnection(“jdbc:odbc:english”,”,”); 4. 主要程序源代码class DataWindow extends JFrame i
8、mplements ActionListener/子类继承父类事件监听器作为接口 JFrame topFrame;/声明窗口 JDesktopPane desktop; FileDialog filedialog_save; /声明文件对话框 JTextField englishtext;/声明一个文本框 JTextArea chinesetext;/ 声明一个文本区 JButton b1,b2,b3,b4;/定义按钮 JLabel label;/定义标签 JMenuBar mbar; JMenu mfile,medit,mhelp;/菜单项 JMenuItem edic,cdic,back_
9、data,quit,addedit,modedit,deledit,hhelp,about; DataWindow()/方法的创建 super(英汉小词典);/子类继承父类的构造方法 this.setBounds(250,250,600,400); this.setVisible(true); getContentPane().add(new JScrollPane(chinesetext); mbar = new JMenuBar(); setJMenuBar(mbar); mbar.setOpaque(true); mfile = new JMenu(文件);/创建文件菜单 medit =
10、 new JMenu(编辑); mhelp = new JMenu(帮助); mbar.add(mfile);mbar.add(medit);mbar.add(mhelp); edic = new JMenuItem(英汉词典); cdic = new JMenuItem(汉英词典); back_data = new JMenuItem(备份词库); quit = new JMenuItem( 退出);/文件菜单 addedit = new JMenuItem(添加词汇); modedit = new JMenuItem(修改词汇); deledit = new JMenuItem(删除词汇)
11、;/编辑菜单 mfile.add(edic);/将菜单项添加到菜单 mfile.add(cdic); mfile.add(back_data); mfile.addSeparator(); mfile.add(quit); /mfile medit.add(addedit); medit.add(modedit); medit.add(deledit); /medit mhelp.add(hhelp); mhelp.add(about); /mhelp edic.addActionListener(this);/将edic作为事件监听器添加到当前窗口 cdic.addActionListene
12、r(this); quit.addActionListener(this); addedit.addActionListener(this); modedit.addActionListener(this); deledit.addActionListener(this); hhelp.addActionListener(this); about.addActionListener(this); englishtext = new JTextField(16); englishtext.setFont(new Font(,15,15);/设置字体 chinesetext = new JText
13、Area(8,15); chinesetext.setEditable(false);/文本区内不能编辑 chinesetext.setFont(new Font(,25,25); b1 = new JButton(查询);/创建查询按钮对象 b2 = new JButton(添加); b3 = new JButton(修改); b4 = new JButton(刪除); JPanel p1 = new JPanel(),p2 = new JPanel();/添加面板 label = new JLabel(输入要查询的英语单词:);/声明新标签 label.setFont(new Font(隶
14、书,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);/面板布局1的位置 this.add(p2,South);/面板布局2的位置 this.add(new JScrollPane(chinesetext),Center);/文本区在中心 b1.addActionListener(this);/ b2.addActionListener(this); b3.addActionListene
15、r(this); b4.addActionListener(this); englishtext.addActionListener(this); back_data.addActionListener(this); filedialog_save = new FileDialog(this,保存文件对话框,FileDialog.SAVE); filedialog_save.addWindowListener(new WindowAdapter() /对话框增加适配器 public void windowClosing(WindowEvent e) filedialog_save.setVis
16、ible(false); ); addWindowListener(new WindowAdapter()/监听器增加适配器 public void windowClosing(WindowEvent e) System.exit(0); /窗口的关闭 ); public void actionPerformed(ActionEvent e) /实现按钮监听 if(e.getSource()=b1|e.getSource()=englishtext) chinesetext.setText(); if(englishtext.getText().equals() JOptionPane.sho
17、wMessageDialog(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) ModifyWin modi = new ModifyWin(); /ModifyWin是修改窗
18、口的类 else if(e.getSource()=b4|e.getSource()=deledit) DelWin del = new DelWin(); /DelWin是删除窗口的类 else if(e.getSource()=edic) /英汉 label.setText(输入要查询的英语单词:); b1.setVisible(true); b5.setVisible(true); else if(e.getSource()=cdic) /汉英 label.setText(输入要查询的汉语意思:); b1.setVisible(true); b5.setVisible(true); el
19、se if(e.getSource()=back_data) /备份 File fromfile = new File(englishenglish.mdb); FileInputStream fis = null; filedialog_save.setVisible(true); try fis = new FileInputStream(fromfile); int bytesRead; /定义变量来存储输入流中读取出来的文件 byte buf = new byte4*1024; /4K buffer File tofile = new File(filedialog_save.getD
20、irectory(),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(); catch(IOException e2) else if(e.getSource()=quit) /退出 System.exit(0); public void Listwords() throws SQLE
21、xception /实现查询功能 String cname,ename; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) /建立桥接器 Connection Ex1Con = DriverManager.getConnection(jdbc:odbc:english,);/(jdbc:odbc Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb,);/连接数据源 Statement Ex1Stmt = Ex1C
22、on.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.get
23、Text().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(单词); cname = rs.getString(解释); chi
24、nesetext.append(ename+n); Ex1Con.close(); /关闭数据库 if(chinesetext.getText().equals() JOptionPane.showMessageDialog(this,查无此单词!,警告, JOptionPane.WARNING_MESSAGE); / end of Liststudent() public class Dic public static void main(String args) JFrame.setDefaultLookAndFeelDecorated(true); DataWindow window =
25、 new DataWindow(); window.validate(); / AddWin add = new AddWin(); public void add() 5.调试程序在程序调试中最大的问题就是数据库连接着一部分,由于对数据库的知识比较陌生,所以调试起来遇到了很多麻烦和问题,简单总结如下:(1) 数据库的廉洁就分为驱动连接和桥连接,这里容易混淆,需要将其区分开来,建议用驱动加载更好一些。(2) 注意关闭数据库连接,要注意在关闭连接时先释放Statement对象,这一点也容易忽略。(3) 在加载数据库驱动程序中,该方法可能抛出ClassNotFoundException异常,所以在
26、调用该方法时要注意进行异常处理。(4) 注意Java程序的层次结构,以及注意事项。(5) 注意在连接数据库的时间数据源和表的名称是否与数据库的一致,还有路径的选择的要正确,还有就是数据库的用户名和密码一般不用设置,正确连接数据库的代码如下:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) /建立桥接器 Connection Ex1Con = DriverManager.getConnection(jdbc:odbc:english,);/(jdbc:odbc:Driver=MicroSoft
27、 Access Driver (*.mdb);DBQ=englishenglish.mdb,);6.结论课程设计的收获是得到了对JAVA这种面向对象语言的初步印象,学到了一些编程的方法。在面向对象的编程方式下,真正实现了把主要精力放在功能的实现上,对封装好的对象只需了解其属性方法即可使用。编程的主要任务是为程序中使用的各种对象的事件编写事件处理程序,从而实现系统功能。7.参考文献1 张海藩.软件工程导论.北京:清华大学出版社,20032 卢潇.软件工程.北京:清华大学出版社,20053 王要武.管理系统.北京:电子工业出版社,20034 耿秋义.JAVA2实用教程.北京:清华大学出版社,20065宋昆,李严.SQL Server 数据库开发实例解析.北京:机械工业出版社,2006
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1