《JAVA电子英汉词典课程设计.doc》由会员分享,可在线阅读,更多相关《JAVA电子英汉词典课程设计.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课课 程程 设设 计计 报报 告告课程设计名称课程设计名称Java 程序设计程序设计专专业业班班级级学学号号姓姓名名指导教师指导教师成成绩绩年 月 日年 月 日目录目录一、设计任务与要求.11.1 设计任务与要求.11.2 选题目的与意义.1二、需求分析.22.1 用户需求分析.22.2 开发环境分析.4三、系统设计.53.1 系统总体设计.53.2 功能模块设计.63.3 类的设计.63.4 数据库设计.8四、程序实现.104.1 程序流程图.104.2 关键算法与技术实现.134.3 类与数据结构实现.22五、测试运行.225.1 系统测试方案.225.2 运行结果分析.23六、设计体会.
2、27一、设计任务与要求一、设计任务与要求1.1 设计任务与要求设计任务与要求通过本课程设计实践,达到以下目的:(1)培养学生严谨务实的工作态度,并在老师的指导下,提高分析问题和解决问题的能力,促进理论联系实际学风养成。(2)巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理解。(3)掌握 Java 开发的主要环境与工具,掌握面向对象的常用控件的使用方法。(4)初步掌握面向对象系统分析与设计的基本方法和步骤,并能针对简单的实际应用问题进行初步地分析和设计。(5)掌握 Java 编程语言,并针对具体应用问题进行编程实现。(6)通过撰写课程设计论文,锻炼学生科技论文写作能力。电子英汉词典
3、功能要求:能够编辑词典库中的信息,能够实现英译汉,汉译英(要考虑一词多义)。该系统主要用于实现英汉互译的功能,先选择是英译汉还是汉译英然后再查询框中查询,该系统会自动弹出匹配信息1.2 选题目的与意义选题目的与意义我选择电子英汉互译词典这一课题的目的在于巩固所学 JAVA 语言编辑基本功,掌握 Jdk,Editplus,Eclipse,Jcreator 等开发工具的运用,拓宽常用类库的应用。Java 语言是当今流行的网络编程语言,它具有面向对象,跨平台,分布应用等特点,它贴近自然的语言,而且有利于软件的维护和继承。我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握 JAVA
4、语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。二、需求分析二、需求分析2.1 用户需求分析用户需求分析用户需求分析:英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子词的功能。该系统主要用于实现英汉互译的功能,系统拥有自己的数据库。1 英译汉功能:我们可以先选择让系统进行英译汉功能,然后在查找框中输入想要查询的英文单词,系统将自动在数据库中查找匹配记录并给出相对应的汉语意思。2 汉译英功能:我们可以在系统中选择汉译英功能,然后在查找框中输入想要查询的汉语意思,系统将自动在数据库中查找匹配记录并给出相对应的英文单词。3 备份词库功能:我们可
5、以将现有的词库做一份备份文件存入另一空间,以备文件丢失时使用。4 词汇的添加功能:用户可以添加词库内没有的单词及其解释。添加成功后该单词将在次库内保存,以便下次查询。5 词汇的修改功能;用户可以实现对词库中已有单词及其解释的修改。修改后的结果将保存在词库中。6 词汇的删除功能;用户可自行删除词库中已有的单词,同时次单词的解释也将被一同删除。7 其他功能:此外,系统还具有帮助和关于等功能,用来辅助用户更方便简洁的使用电子词典。电 子 英 汉词典文件编辑其他英汉词典汉英词典备份词库退出系统添加词汇修改词汇删除词汇帮助关于2.2 开发环境分析开发环境分析系统需求分析:本系统是一个采用 Microso
6、ft Access 作为数据库,用 JAVA 作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。(1)硬件环境Cpu:Intel(R)Core(TM)2 Duo Cpup74502.13GHz内存:2G硬盘空间:250G(2)软件环境32 位 XP 操作系统。JDK 和 Jcreator 软件环境。三、系统设计三、系统设计3.1 系统总体设计系统总体设计电子英汉词典系统包括三个大方面:文件,编辑,其他。文件菜单中包括英译汉,汉译英备份词库。这也是电子词典的最主要功能。编辑菜单中
7、包括添加词汇,修改词汇,删除词汇功能。其他菜单中包括帮助和关于。系统总体设计图如下:英汉电子词典文件编辑英汉词典汉英词典退出备份词库添加词汇删除词汇修改词汇其它帮助关于程序共有五个子函数和一个主函数。(1)search 是查找函数,用户通过系统提示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文或英文解释,这个查找函数使用的是从头到尾的线性查找法,虽然查找效率在数据很大时候是无法容忍的,但因为这里涉及的数据量很小,使用线性查找对系统性能上没有很大影响。(2)add 是增加函数,用户可以通过此函数来增加单词库单词的数量(3)modify 是修改函数,程序提示用户输入要修改的单词,使用线
8、性查找的方法找到相应的单词。如果找到,则提示输入新的单词及其解释。(4)delete 是删除函数,程序提示用户输入要删除的单词,使用线性查找的方法找到相应的单词,如果找到,提示用户确认删除,在得到确认后即删除这个单词的记录。(5)主程序通过无限循环来接收输入的命令,并且根据命令调用相应的函数处理。3.2 功能模块设计功能模块设计(1)英译汉功能模块说明:可以实现对英文单词的查询功能。用户文本框中输入要查询的英文单词。若该单词存在于词库中,则会在文件对话框中显示其词性及中文翻译;若该单词没有存在于词库中,则会弹出警告,说明查无此词。(2)汉译英功能模块说明:可以实现对中文单词的查询功能。用户文本
9、框中输入要查询的中文单词。若该单词存在于词库中,则会在文件对话框中显示其一个或多个对应的英文单词;若该单词没有存在于词库中,则会弹出警告,说明查无此词。(3)备份词库功能模块说明:可以实现对现有词库的备份,可将当前词库存入用户所设置的任意位置。(4)添加词汇功能模块说明:可以实现对词库的添加。用户可自行输入所添加的单词及其解释,若添加的是词库中没有的单词,系统在添加成功后提示添加成功。若添加的是词库中已有的单词,系统会弹出警告,说明此词汇已存在。(5)修改词汇功能模块:可以实现对词库中已有单词的修改。用户可自行修改词库中的单词及其解释。若输入的单词不存在于词库中,系统会弹出警告,说明不存在此单
10、词。(6)删除词汇功能模块:可以删除词库中已有的单词。用户可自行删除词库中已有的单词,再删除此单词的同时,其解释也会随之被删除,如输入的单词不存在于词库中,系统用会弹出警告,说明不存在此单词。(7)其他功能模块:在其他中有帮助和关于两项。帮助中是有关于词典的功能说明,关于中可显示版本信息。3.3 类的设计类的设计主要类设计:1.Loading 类Loading 类主要是要实现登陆界面和按钮监视器执行动作的事件,和数据库的连接。方法功能Loading()安排登陆界面布局LianJie()连接数据库Chaxun()执行登陆按钮的动作事件DengLiPan()判断文本框是否为空2.Register
11、类Register 类主要是实现注册界面和按钮监视器执行动作的事件,和数据库的连接。方法功能Register()安排注册界面布局LianJie()连接数据库Chaxun()执行确定按钮的动作事件DengLiPan()判断文本框是否为空3.Kellu 类Kellu 类为窗口主界面类,包括菜单栏,工具栏,显示栏,添加监视器执行动作的事件。方法功能Kehu()安排界面布局,设置菜单项和工具按钮action Performed()执行按钮的动作事件valueChanged()下拉列表的监听事件4.ChaXun 类ChaXun 类细腻那两个构造方法,分别是实现英汉,汉英查询功能。方法功能JingQunE
12、nglishCha()英译汉的查询JingQunChineseCha()汉译英的查询5Add 类Add 类实现单词的添加功能方法功能Add()设置“添加”窗口界面AddCha()实现和数据库的连接6.Update 类Update 类,功能通过单击主窗口界面的更新按钮弹出更新小窗口,输入更新的单词,对相应的解释进行更新。方法功能Add()设置“添加”窗口界面AddCha()实现和数据库的连接7.delect 类delect 类,功能通过单击主窗口界面的删除按钮弹出删除小窗口,输入删除的单词进行删除。方法功能delect()设置“删除”窗口界面delectcha()实现和数据库的连接8.help
13、类hele 类,功能通过单击主窗口界面的帮助菜单下的帮助选项又弹出帮助窗口,通过网页显示单词的想过说明,通过单击页面上的超链接来显示另一网页。方法功能Help()设置帮助窗口界面Hyperlinkupdate()显示新的 URL 资源9.Guanyu 类Guanyu 类功能通过单击主窗口界面的帮助菜单下的关于弹出关于窗口,显示词典的使用说明。方法功能Guanyu()设置关于窗口界面界面设计思想界面设计思想创建窗体,设计菜单。定义菜单条 JMenu mfile(文件)、medit(编辑)、mhelp(帮助),菜单子项 JMenuItem edic(英汉词典)、cdic(汉英词典)、back_da
14、ta(备份词库)、quit(退出)、addedit(添加词汇)、modedi(修改词汇)、deledit(删除词汇)、hhelp(帮助)、about(关于)。通过 add()方法将菜单子项添加到菜单中,并注册监听者。定义一个文件对话框filedialog_save,并为之增加适配器。自定义一个面板,实现 GUI 元素的布局。3.4 数据库设计数据库设计Java 数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯 JavaAPI 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会
15、带来一定的配置变化。本系统采用的是 Access 数据库的连接方式。英译汉词汇表字段名字段类型长度备注yingwudancichar30可为空yinbiaochar10可为空cixingchar10可为空jieshichar50可为空各功能模块 E-R 图如下:(1)文件模块子 E-R 图文件模块中主要目的就是要完成英汉互译功能。其中包括英译汉功能模块,汉译英模块功能,备份词库模块功能文件英译汉汉译英备份词库退出(2)编辑模块子 E-R 图编辑模块的主要目的就是要进行单词的添加修改与删除功能。编辑添加词汇修改词汇删除词汇(3)其他模块子 E-R 图其它模块的主要目的就是在用户遇到问题时,在其它
16、中有“帮助”与“关于”两项,“帮助”中有关于词典的功能说明,“关于”可显示版本信息。其它帮助关于四、程序实现四、程序实现4.1 程序流程图程序流程图分析电子词典的总体情况,划分系统边界,识别系统的数据来源和去处,确定外部实体,得出系统的顶层数据流程图;然后划分出几个主要的信息管理功能,本系统的主要数据的工作流包括以下几个方面:英汉词典,汉英词典,备份词库,添加词汇,修改词汇,帮助。明 确 各 功 能 之 间 的 联 系,绘 制 出 数 据 流 程 图,如 下 图 所 示:开始显示菜单输入选项输入单词输入词性输入音标输入中文输 入 显 示信息输入删除的单词判断循环体查找判断显示无法找到显 示 删
17、 除成功显示查询选项输入英文单词输入中文意思判断判断循环体循环体计算判断显 示 无法找到显示查找信息判断显 示 无法找到显 示 查找信息结束计算4.2 关键算法与技术实现关键算法与技术实现菜单窗口菜单窗口class DataWindow extends JFrame implements ActionListenertryfis=new FileInputStream(fromfile);int bytesRead;/定义变量来存储输入流中读取出来的文件byte buf=new byte4*1024;/4K bufferFile tofile=newFile(filedialog_save.g
18、etDirectory(),filedialog_save.getFile();FileOutputStream fos=newFileOutputStream(tofile);while(bytesRead=fis.read(buf)!=-1)fos.write(buf,0,bytesRead);fos.flush();fos.close();fis.close();catch(IOException e2)public void Listwords()throws SQLException/实现查询功能String cname,ename;tryClass.forName(sun.jdbc
19、.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e)/建立桥接器Connection Ex1Con=DriverManager.getConnection(jdbc:odbc:03,);Statement Ex1Stmt=Ex1Con.createStatement();if(label.getText().equals(输入要查询的英语单词:)ResultSet rs=Ex1Stmt.executeQuery(SELECT*FROM表1);while(rs.next()ename=rs.getString(单词);cname=rs.get
20、String(解释);if(ename.equals(englishtext.getText()chinesetext.append(cname+n);public class Dicpublic static void main(String args)JFrame.setDefaultLookAndFeelDecorated(true);DataWindow window=new DataWindow();window.validate();/AddWin add=new AddWin();public void add()单词的添加单词的添加public class AddWin ext
21、ends JFrame implements ActionListenerJTextField 添加汉语解释_文本条,添加英语单词_文本条;JButton addbtn,cancelbtn;Connection Con=null;Statement Stmt=null;public void actionPerformed(ActionEvent e)if(e.getSource()=addbtn)if(添加英语单词_文本条.getText().equals()|添加汉语解释_文本条.getText().equals()JOptionPane.showMessageDialog(this,添加
22、的单词或解释不能为空!,警告,JOptionPane.WARNING_MESSAGE);/判断输入框不能为空elsetry添加();catch(SQLException ee)else if(e.getSource()=cancelbtn)dispose();while(boo=rs.next()=true)ename=rs.getString(单词);cname=rs.getString(解释);if(ename.equals(添加英语单词_文本条.getText()JOptionPane.showMessageDialog(this,此词汇已存在!,警告,JOptionPane.WARNI
23、NG_MESSAGE);break;if(boo=false)String s1=+添加英语单词_文本条.getText().trim()+,s2=+添加汉语解释_文本条.getText().trim()+;String temp=INSERT INTO 表1 VALUES(+s1+,+s2+);Stmt.executeUpdate(temp);JOptionPane.showMessageDialog(this,添加成功!,恭喜,JOptionPane.WARNING_MESSAGE);dispose();Con.close();单词的删除class DelWin extends JFram
24、e implements ActionListener JTextField 删除单词_文本条;JButton delbtn,cancelbtn;Connection Con=null;Statement Stmt=null;public void actionPerformed(ActionEvent e)if(e.getSource()=delbtn)if(删除单词_文本条.getText().equals()JOptionPane.showMessageDialog(this,删除的单词不能为空!,警告,JOptionPane.WARNING_MESSAGE);/判断输入框不能为空els
25、etry删除();catch(SQLException ee)else if(e.getSource()=cancelbtn)dispose();while(boo=rs.next()=true)ename=rs.getString(单词);cname=rs.getString(解释);if(ename.equals(删除单词_文本条.getText()String s1=+删除单词_文本条.getText().trim()+;String temp=DELETE FROM 表1 WHERE 单词=+s1;Stmt.executeUpdate(temp);JOptionPane.showMes
26、sageDialog(this,成功删除记录!,恭喜,JOptionPane.WARNING_MESSAGE);dispose();break;单词的修改class ModifyWin extends JFrame implements ActionListenerJTextField 修改英语单词_文本条,修改汉语解释_文本条;JButton modifybtn,cancelbtn;Connection Con=null;Statement Stmt=null;public void actionPerformed(ActionEvent e)if(e.getSource()=modifyb
27、tn)if(修改英语单词_文本条.getText().equals()|修改汉语解释_文本条.getText().equals()JOptionPane.showMessageDialog(this,修改的单词或解释不能为空!,警告,JOptionPane.WARNING_MESSAGE);/判断输入框不能为空elsetry修改();catch(SQLException ee)else if(e.getSource()=cancelbtn)dispose();if(ename.equals(修改英语单词_文本条.getText()String s1=+修改英语单词_文本条.getText().
28、trim()+,s2=+修改汉语解释_文本条.getText().trim()+;String temp=UPDATE 表1 SET 解释=+s2+WHERE 单词=+s1;Stmt.executeUpdate(temp);JOptionPane.showMessageDialog(this,记录修改成功!,恭喜,JOptionPane.WARNING_MESSAGE);dispose();break;帮助public class HelpFrame extends JFrame public HelpFrame()super(Help);setBounds(120,50,275,260);H
29、tmlPane html=new HtmlPane();setContentPane(html);public static void main(String args)HelpFrame help=new HelpFrame();help.setVisible(true);System.out.println(Hello World!);class HtmlPane extends JScrollPane implementsHyperlinkListener JEditorPane html;public void run()if(url=null)html.setCursor(curso
30、r);Container parent=html.getParent();parent.repaint();else Document doc=html.getDocument();try html.setPage(url);catch(IOException ioe)html.setDocument(doc);getToolkit().beep();finally url=null;SwingUtilities.invokeLater(this);4.3 类与数据结构实现类与数据结构实现本系统采用的是 Access 数据库的连接方式,Access 数据库使用 ODBC 直连方式如下:加载驱动
31、程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);与数据库建立连接:String url=jdbc:odbc:Driver=MicroSoft Access Driver(*.mdb);DBQ=+application.getRealPath(/Data/ReportDemo.mdb);Connection conn=DriverManager.getConnection(url,);创建 JDBC Statement 对象:Statement stmtNew=conn.createStatement();注意:首先要配置数据源:控制面版-管理工具-
32、数据源-系统 DSN-添加-选择 Microsort AccessDrive(*.mdb)-完成-写个数据源名(随意)-选择-找到你的 access 文件-确定,接下来再进行你的操作。五、测试运行五、测试运行5.1 系统测试方案系统测试方案1,电子词典功能测试:运行程序,弹出电子词典运行窗口。若没有显示出来,则程序错误。2,电子词典查询功能测试:运行程序后,在单词框内输入要查询的单词,单击查询按钮,若显示出所查单词的意思,则程序运行成功。若点击无反应,则程序错误。3,电子词典添加功能测试:运行程序后,点击添加按钮,弹出添加运行窗口,若没有弹出,则程序错误。若成功在单词框内输入要添加的单词,点击
33、完成按钮,若弹出成功窗口,则程序正确,反之则程序错误。4,电子词典修改功能测试:运行程序后,点击修改按钮,弹出修改运行窗口,若没有弹出,则程序错误。若成功在单词框内输入要修改的单词,点击完成按钮,若弹出成功窗口,则程序正确,反之则程序错误。5,电子词典删除功能测试:运行程序后,点击删除按钮,弹出删除运行窗口,若没有弹出,则程序错误。若成功在单词框内输入要删除的单词,点击完成按钮,若弹出成功窗口,则程序正确,反之则程序错误。5.2 运行结果分析运行结果分析(1)此窗口为菜单窗口,用户可在此窗口内选择应用的内容。其中文件目录中包括:英汉词典,汉英词典,备份文库。编辑目录中包括:单词的添加,修改删除
34、。如图 5.2.1图 5.2.1 菜单界面运行图(2)用户可在窗口内输入要查询的单词,输入完毕后点击查询将出现次单词的解释及其词性。如输入的单词不存在词库中,则显示查无此单词。如图 5.2.2 和5.2.3图 5.2.2 单词查询图图 5.2.3 单词查询运行图(3)若用户需要在词库中添加新的单词,则选择单词的添加。用户可输入想要添加的单词及其解释和词性。单击确定后,次单词保存在词库中。如图 5.2.4图 5.2.4 单词添加运行图(4)用户想要修改词库中已存在的单词,可选择单词的修改。用户可对该单词及其解释进行修改。修改并保存后单击确定,系统将提示用户记录修改成功。如图 5.2.5图 5.2
35、.5 单词修改运行图(5)想要删除词库中已存在的单词,可选择单词的删除。输入想要删除的单词,点击确定后,此单词及其解释一并删除。删除后,系统提示用户单词删除成功。如图 5.2.6图 5.2.6 单词删除运行图(6)用户可点击帮助来更好的了解电子词典的功能及其用法。如图 5.2.7图 5.2.7 帮助菜单运行图六、设计体会六、设计体会此次课程设计是关于电子英汉词典系统设计,在这个过程中,我遇到了很多问题,也更加了解 JAVA。Java 与 C+语言非常相近,但 Java 比 C+简单,它抛弃了 C+中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型
36、。Java 实现了自动的垃圾收集,简化了内存管理的工作。这使程序设计更加简便,同时减少了出错的可能。Java 提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。除此之外,此次课程设计还让我对 JAVA 的独立性有了更多的认识。Java 是一种网络语言,为使 Java 程序能在网络的任何地方运行,Java 解释器生成与体系结构无关的字节码结构的文件格式。Java 为了做到结构中立,除生成机器无关的字节码外
37、,还制定了完全统一的语言文本,如 Java 的基本数据类型不会随目标机的变化而变化,一个整型总是 32 位,一个长整型总是 64位。为了使 Java 的应用程序能不依赖于具体的系统,Java 语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持 Java 的平台上。在课程设计的最后,我的大部分时间花在了与数据库的连接上,也学到了更多的知识。JDBC 是执行 SQL 语句的 Java API。JDBC 本身是一个产品的商标名,但它也可被看作为Java Database Connecivity(Java 数据库连接)。它由一组用 Java语言编写的类
38、与接口组成。JDBC 已成为一种供工具/数据库开发者使用的标准API,用户可以用纯 Java API 来编写数据库应用。使用 JDBC 可以很容易地把 SQL语句传送到任何关系型数据库中。换言之,用户不必为访问 Sybase 数据库写一个程序,又为访问 Oracle 数据库写另一个程序。你可以用 JDBC API 写出唯一的程序,它能够将 SQL 语句发送到相应的任何一种数据库。Java 与 JDBC 的结合,使程序员可以只写一次数据库应用软件后,就能在各种数据库系统上运行。通过对 JAVA 数据库编程的更多的了解,我也获得了一些调试的经验:通过层层的捕获异常来得知错误的发生。在课程设计中出现
39、的问题对我而言是学习与复习的好机会,是它们使我学会了如何自学、如何查阅资料等,让我学习了很多,也让我对旧的知识点有了更深的理解。在这不断的调试、改动的过程中也让我明白了养成良好编程习惯的益处。由于编写程序时容易出错,因此我采用了单个模块单个功能进行调试与测试的方法。在不断的出错与改错的过程中,我学到了很多关于编程和调试程序的知识,使自己的知识体系得到了一定的完善,也使我对平时所学有了很多的了解与更深的理解。面对一系列的问题,失败了尝试,再失败再尝试通过这次的实践,我发现了自己在编程及对软件开发相关知识的不足,在以后的学习实践中,我要取长补短,敢想善问,不断加强自身在专业知识方面的能力,为以后的学习与工作打下坚实的基础。指导教师签字:年月日