電子詞典_java課程設計.doc_第1頁
電子詞典_java課程設計.doc_第2頁
電子詞典_java課程設計.doc_第3頁
電子詞典_java課程設計.doc_第4頁
電子詞典_java課程設計.doc_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

英漢電子詞典一、需求分析二十世紀后半葉,以電子計算機為代表的現代科學獲得了突飛猛進的發展并迅速和人們的日常生活結合在一起。計算機技術的發展和進步也使電子語言詞典的誕生成為可能。我們日常的學習生活中,常會遇到這樣的問題:在工作時或在網上沖浪,或者電子郵箱中收到一封外國朋友發的英文E-mail,遇到某些陌生的單詞,可又疲于去翻查厚重的英文字典時,電腦中所安裝的英漢電子詞典便成為了最為方便、快捷的選擇。電子詞典是一種多功能的詞典類工具軟件,它可以即時翻譯,快速、準確、詳細地查閱英文單詞,或將中文單詞進行英文翻譯,使自己的知識面拓展得更寬、更廣。盡管電子詞典只有十來年的歷史,但它卻已經發展壯大,成為詞典家族中具有旺盛生命力的一員。雖然目前它尚不足以取代傳統詞典,但在英語學習和教學中,由于它實用、快捷、準確、經濟等特點,已經成為傳統英漢詞典的有力競爭者,并對傳統的詞典提出了挑戰。本系統是一個采用Microsoft Access作為數據庫,用JAVA作為開發工具的英漢電子詞典,內有英漢詞典、漢英詞典和備份詞庫。它不僅可實現英譯漢、漢譯英的基本翻譯功能,還可以讓用戶根據自己的需要添加、修改、刪除詞庫,形成自己的詞庫。其功能結構圖如圖1.1所示:英語小詞典文件編輯英漢詞典漢英詞典退出備份詞庫添加詞匯刪除詞匯修改詞匯 圖1.1 功能結構圖功能模塊說明:1、英譯漢功能模塊說明:可以實現對英文單詞對中文單詞的查詢功能。用戶文本框中輸入要查詢的英語單詞。若該單詞存在于詞庫中,則會在文件對話框中顯示其詞性及中文翻譯;若該單詞沒有存在于詞庫中,則會彈出“警告”,說明“查無此詞”;若沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”。2、漢譯英功能模塊說明:可以實現對中文單詞對英文單詞的查詢功能。用戶可在文本框中輸入要查詢的中文單詞。若該單詞存在于詞庫中,則會在文件對話框中顯示一個或多個對應的英文;若該單詞沒有存在于詞庫中,則會彈出“警告”,說明“查無此詞”;若沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”。3、備份詞庫功能模塊說明:可以實現對現有詞庫的備份,可將當前詞庫存入用戶所設置的任一位位置。4、添加詞匯功能模塊說明:可以實現對詞庫的添加。用戶可自行輸入所添加的單詞及其解釋,若添加的是詞庫中沒有的單詞,系統在添加成功后有提示“添加成功”;若添加的是詞庫中已有的單詞,系統會彈出“警告”,說明“此詞匯已存在”。5、修改詞匯功能模塊說明:可以實現對詞庫中已有單詞的修改。用戶可自行修改詞庫中的單詞的解釋,若輸入單詞不存在于詞庫中,系統會彈出“警告”,說明“不存在此單詞”。6、刪除詞匯功能模塊說明:可以刪除詞庫中已有的單詞。用戶可自行刪除詞庫中已有的單詞,在刪除此單詞的同時,其解釋也會隨之被刪除,若輸入單詞不存在于詞庫中,系統會彈出“警告”,說明“不存在此單詞”。7、其它功能模塊說明:在幫助中有“幫助”與“關于”兩項,“幫助”中有關于詞典的功能說明,“關于”可顯示版本信息。二、概要設計1、英語詞典設計要求分析詞典的主要功能,設計實現如下功能:(1)實現程序GUI圖形界面;(2)實現與詞典數據庫的訪問;(3)實現文件的輸入、輸出;(4)實現鼠標或鍵盤事件響應模塊。2、自定義類說明(1) public class Dic自定義主體main函數的類,用來調用各種類(2) class DataWindow extends JFrame implements ActionListener自定義一個主窗體類,用來顯示整個窗體。繼承的父類: JFrame類實現的接口: ActionListener(3) class AddWin extends JFrame implements ActionListener 自定義一個添加窗口類,用于添加新的單詞及其解釋 (4) DelWin extends JFrame implements ActionListener 自定義一個刪除窗口類,用于刪除詞庫中所存在的單詞及其解釋 (5) ModifyWin extends JFrame implements ActionListener 自定義一個修改窗口類,用于修改詞庫中所存在的單詞及其解釋 (6) class HelpFrame extends JFrame 自定義一個幫助窗口類,用不可編輯的文本域的窗體對該詞典的功能做簡要的說明 3、界面設計思想創建窗體,設計菜單。定義菜單條JMenu mfile(文件)、medit(編輯)、mhelp(幫助),菜單子項JMenuItem edic(英漢詞典)、cdic(漢英詞典)、back_data(備份詞庫)、quit(退出)、addedit(添加詞匯)、modedi(修改詞匯)、deledit(刪除詞匯)、hhelp(幫助)、about(關于)。通過add( )方法將菜單子項添加到菜單中,并注冊監聽者。定義一個文件對話框filedialog_save,并為之增加適配器。自定義一個面板,實現GUI元素的布局。4、方法定義說明 (1)定義方法actionPerformed(),內用if語句實現按鈕監聽:public void actionPerformed(ActionEvent e) (2)定義方法Listwords(),實現查詢功能public void Listwords() throws SQLException (3)定義方法刪除(),實現刪除功能public void 刪除() throws SQLException (4)定義方法添加(),實現添加功能public void 添加() throws SQLException(5)定義方法修改(),實現修改功能public void 修改() throws SQLException 5、數據庫說明Java數據庫連接(JDBC)由一組用 Java 編程語言編寫的類和接口組成。JDBC為工具/數據庫開發人員提供了一個標準的 API,使他們能夠用純Java API 來編寫數據庫應用程序。然而各個開發商的接口并不完全相同,所以開發環境的變化會帶來一定的配置變化。本系統采用的是Access數據庫的連接方式,Access數據庫使用ODBC直連 方式如下:加載驅動程序: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() ;注意:首先要配置數據源: 控制面版-管理工具-數據源-系統DSN-添加-選擇Microsort Access Drive(*.mdb)-完成-寫個數據源名(隨意)-選擇-找到你的access文件-確定,接下來再進行你的操作。3、 詳細設計 本系統是通過對類對象的引用,以及函數的調用實現類之間的連接的。創建窗體,GUI(標簽,文本框,按鈕),用add( )方法加入容器,進而進行布局,用addActionListener( )方法為按鈕或者菜單條按鈕注冊事件監聽者,通過監聽者方法調用(事件源,處理代碼)對按鈕觸發。1、添加功能的實現: public void 添加() throws SQLException String cname,ename; try class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) Con = DriverManager.getConnection(jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb,); Stmt=Con.createStatement(); ResultSet rs=Stmt.executeQuery(SELECT * FROM 表1); boolean boo=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) 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();2、刪除功能的實現: public void 刪除() throws SQLException String cname,ename; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e)Con = DriverManager.getConnection(jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb,); Stmt=Con.createStatement(); ResultSet rs=Stmt.executeQuery(SELECT * FROM 表1); boolean boo=false; 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.showMessageDialog(this,成功刪除記錄!,恭喜,JOptionPane.WARNING_MESSAGE);dispose();break; Con.close();if(boo=false) JOptionPane.showMessageDialog(this,不存在此單詞!,警告, JOptionPane.WARNING_MESSAGE); 3、修改功能的實現:public void 修改() throws SQLExceptionString cname,ename;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e)Con = DriverManager.getConnection(jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb,);Stmt=Con.createStatement();ResultSet rs=Stmt.executeQuery(SELECT * FROM 表1);boolean boo=false;while(boo=rs.next()=true)ename=rs.getString(單詞);cname=rs.getString(解釋);if(ename.equals(修改英語單詞_文本條.getText() String s1=+修改英語單詞_文本條.getText().trim()+,s2=+修改漢語解釋_文本條.getText().trim()+; String temp=UPDATE 表1 SET 解釋=+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 tryListwords(); 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是修改窗口的類else if(e.getSource()=b4|e.getSource()=deledit) DelWin del = new DelWin();/DelWin是刪除窗口的類else if(e.getSource()=edic) /英漢label.setText(輸入要查詢的英語單詞:);b1.setVisible(true);else if(e.getSource()=cdic) /漢英label.setText(輸入要查詢的漢語意思:);b1.setVisible(true);else if(e.getSource()=back_data) /備份File fromfile = new File(englishenglish.mdb);FileInputStream fis = null;filedialog_save.setVisible(true);tryfis = new FileInputStream(fromfile);int bytesRead; /定義變量來存儲輸入流中讀取出來的文件byte buf = new byte4*1024; /4K bufferFile tofile = new File(filedialog_save.getDirectory(),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); else if(e.getSource()=about) /關于final String AboutMsg = A Electrical Dictionary n n+An application written to show off the function of dictionary.n n+JAVA課程設計 楊汝潔nn+Copyright (c) 2008 by Edith.All rights Reserved.;JOptionPane.showMessageDialog(topFrame,AboutMsg);else if(e.getSource()=hhelp) /幫助HelpFrame help = new HelpFrame();help.setVisible(true);5、實現查詢功能的實現public void Listwords() throws SQLException / String cname,ename;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e)String url=jdbc:odbc:English;/建立橋接器Connection Ex1Con = DriverManager.getConnection (jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=englishenglish.mdb,);Statement Ex1Stmt = Ex1Con.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.getText().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(解釋);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所示: 圖4.6如果所查單詞不存在于詞庫中,則會彈出“警告”,說明“查無此詞”;如果是沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”,演示與英漢詞典類似。(3)點擊備份詞庫時,會彈出保存文件對話框,此時可將詞庫拷貝到機算機里的任一位置。2、編輯菜單:它包含三個子菜單:添加詞匯、修改詞匯和刪除詞匯。如圖4.7所示 圖4.7(1)添加詞匯:用戶可自行輸入所添加的單詞及其解釋,如圖4.8所示 圖4.8 圖4.9如果添加的是詞庫中沒有的單詞,系統在添加成功后有提示“添加成功”,如圖4.9所示;若添加的是詞庫中已有的單詞,系統會彈出“警告”,說明“此詞匯已存在”。(2)修改詞匯:用戶可自行修改詞庫中的單詞的解釋,如圖4.10所示;如果輸入單詞不存在于詞庫中,系統會彈出“警告”,說明“不存在此單詞”。 圖4.10 圖4.11(3)刪除詞匯:用戶可自行刪除詞庫中已有的單詞,在刪除此單詞的同時,其解釋也會隨之被刪除,如圖4.11所示。如果輸入單詞不存在于詞庫中,系統會彈出“警告”,說明“不存在此單詞”。3、幫助菜單:它包含二個子菜單:幫助和關于。(1)幫助:顯示有關于詞典的功能說明。(2)關于:顯示版本信息。 經測試,該系統各項功能均能使用,各個功能選項與設計所想相符。五、總結此次課程設計是由我一個人完成的,在這個過程中,我遇到了很多問題,也更加了解JAVA。Java與C+語言非常相近,但Java比C+簡單,它拋棄了C+中的一些不是絕對必要的功能,如頭文件、預處理文件、指針、結構、運算符重載、多重繼承以及自動強迫同型。 Java實現了自動的垃圾收集,簡化了內存管理的工作。這使程序設計更加簡便,同時減少了出錯的可能。Java提供了簡單的類機制和動態的構架模型。對象中封裝了它的狀態變量和方法,很好地實現了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現了代碼的復用,又提供了一種動態的解決方案。除此之外,此次課程設計還讓我對JAVA的獨立性有了更多的認識。Java是一種網絡語言,為使Java程序能在網絡的任何地方運行,Java解釋器生成與體系結構無關的字節碼結構的文件格式。Java為了做到結構中立,除生成機器無關的字節碼外,還制定了完全統一的語言文本,如Java的基本數據類型不會隨目標機的變化而變化,一個整型總是32位,一個長整型總是64位。為了使Java的應用程序能不依賴于具體的系統,Java語言環境還提供了用于訪問底層操作系統功能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論