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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

英漢電子詞典一、需求分析二十世紀后半葉,以電子計算機為代表的現(xiàn)代科學(xué)獲得了突飛猛進的發(fā)展并迅速和人們的日常生活結(jié)合在一起。計算機技術(shù)的發(fā)展和進步也使電子語言詞典的誕生成為可能。我們?nèi)粘5膶W(xué)習生活中,常會遇到這樣的問題:在工作時或在網(wǎng)上沖浪,或者電子郵箱中收到一封外國朋友發(fā)的英文E-mail,遇到某些陌生的單詞,可又疲于去翻查厚重的英文字典時,電腦中所安裝的英漢電子詞典便成為了最為方便、快捷的選擇。電子詞典是一種多功能的詞典類工具軟件,它可以即時翻譯,快速、準確、詳細地查閱英文單詞,或?qū)⒅形膯卧~進行英文翻譯,使自己的知識面拓展得更寬、更廣。盡管電子詞典只有十來年的歷史,但它卻已經(jīng)發(fā)展壯大,成為詞典家族中具有旺盛生命力的一員。雖然目前它尚不足以取代傳統(tǒng)詞典,但在英語學(xué)習和教學(xué)中,由于它實用、快捷、準確、經(jīng)濟等特點,已經(jīng)成為傳統(tǒng)英漢詞典的有力競爭者,并對傳統(tǒng)的詞典提出了挑戰(zhàn)。本系統(tǒng)是一個采用Microsoft Access作為數(shù)據(jù)庫,用JAVA作為開發(fā)工具的英漢電子詞典,內(nèi)有英漢詞典、漢英詞典和備份詞庫。它不僅可實現(xiàn)英譯漢、漢譯英的基本翻譯功能,還可以讓用戶根據(jù)自己的需要添加、修改、刪除詞庫,形成自己的詞庫。其功能結(jié)構(gòu)圖如圖1.1所示:英語小詞典文件編輯英漢詞典漢英詞典退出備份詞庫添加詞匯刪除詞匯修改詞匯 圖1.1 功能結(jié)構(gòu)圖功能模塊說明:1、英譯漢功能模塊說明:可以實現(xiàn)對英文單詞對中文單詞的查詢功能。用戶文本框中輸入要查詢的英語單詞。若該單詞存在于詞庫中,則會在文件對話框中顯示其詞性及中文翻譯;若該單詞沒有存在于詞庫中,則會彈出“警告”,說明“查無此詞”;若沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”。2、漢譯英功能模塊說明:可以實現(xiàn)對中文單詞對英文單詞的查詢功能。用戶可在文本框中輸入要查詢的中文單詞。若該單詞存在于詞庫中,則會在文件對話框中顯示一個或多個對應(yīng)的英文;若該單詞沒有存在于詞庫中,則會彈出“警告”,說明“查無此詞”;若沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”。3、備份詞庫功能模塊說明:可以實現(xiàn)對現(xiàn)有詞庫的備份,可將當前詞庫存入用戶所設(shè)置的任一位位置。4、添加詞匯功能模塊說明:可以實現(xiàn)對詞庫的添加。用戶可自行輸入所添加的單詞及其解釋,若添加的是詞庫中沒有的單詞,系統(tǒng)在添加成功后有提示“添加成功”;若添加的是詞庫中已有的單詞,系統(tǒng)會彈出“警告”,說明“此詞匯已存在”。5、修改詞匯功能模塊說明:可以實現(xiàn)對詞庫中已有單詞的修改。用戶可自行修改詞庫中的單詞的解釋,若輸入單詞不存在于詞庫中,系統(tǒng)會彈出“警告”,說明“不存在此單詞”。6、刪除詞匯功能模塊說明:可以刪除詞庫中已有的單詞。用戶可自行刪除詞庫中已有的單詞,在刪除此單詞的同時,其解釋也會隨之被刪除,若輸入單詞不存在于詞庫中,系統(tǒng)會彈出“警告”,說明“不存在此單詞”。7、其它功能模塊說明:在幫助中有“幫助”與“關(guān)于”兩項,“幫助”中有關(guān)于詞典的功能說明,“關(guān)于”可顯示版本信息。二、概要設(shè)計1、英語詞典設(shè)計要求分析詞典的主要功能,設(shè)計實現(xiàn)如下功能:(1)實現(xiàn)程序GUI圖形界面;(2)實現(xiàn)與詞典數(shù)據(jù)庫的訪問;(3)實現(xiàn)文件的輸入、輸出;(4)實現(xiàn)鼠標或鍵盤事件響應(yīng)模塊。2、自定義類說明(1) public class Dic自定義主體main函數(shù)的類,用來調(diào)用各種類(2) class DataWindow extends JFrame implements ActionListener自定義一個主窗體類,用來顯示整個窗體。繼承的父類: JFrame類實現(xiàn)的接口: 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、界面設(shè)計思想創(chuàng)建窗體,設(shè)計菜單。定義菜單條JMenu mfile(文件)、medit(編輯)、mhelp(幫助),菜單子項JMenuItem edic(英漢詞典)、cdic(漢英詞典)、back_data(備份詞庫)、quit(退出)、addedit(添加詞匯)、modedi(修改詞匯)、deledit(刪除詞匯)、hhelp(幫助)、about(關(guān)于)。通過add( )方法將菜單子項添加到菜單中,并注冊監(jiān)聽者。定義一個文件對話框filedialog_save,并為之增加適配器。自定義一個面板,實現(xiàn)GUI元素的布局。4、方法定義說明 (1)定義方法actionPerformed(),內(nèi)用if語句實現(xiàn)按鈕監(jiān)聽:public void actionPerformed(ActionEvent e) (2)定義方法Listwords(),實現(xiàn)查詢功能public void Listwords() throws SQLException (3)定義方法刪除(),實現(xiàn)刪除功能public void 刪除() throws SQLException (4)定義方法添加(),實現(xiàn)添加功能public void 添加() throws SQLException(5)定義方法修改(),實現(xiàn)修改功能public void 修改() throws SQLException 5、數(shù)據(jù)庫說明Java數(shù)據(jù)庫連接(JDBC)由一組用 Java 編程語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標準的 API,使他們能夠用純Java API 來編寫數(shù)據(jù)庫應(yīng)用程序。然而各個開發(fā)商的接口并不完全相同,所以開發(fā)環(huán)境的變化會帶來一定的配置變化。本系統(tǒng)采用的是Access數(shù)據(jù)庫的連接方式,Access數(shù)據(jù)庫使用ODBC直連 方式如下:加載驅(qū)動程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ; 與數(shù)據(jù)庫建立連接:String url=jdbc:odbc:Driver=MicroSoft Access Driver (*.mdb);DBQ=+application.getRealPath(/Data/ReportDemo.mdb);Connection conn = DriverManager.getConnection(url,);創(chuàng)建JDBC Statement對象:Statement stmtNew=conn.createStatement() ;注意:首先要配置數(shù)據(jù)源: 控制面版-管理工具-數(shù)據(jù)源-系統(tǒng)DSN-添加-選擇Microsort Access Drive(*.mdb)-完成-寫個數(shù)據(jù)源名(隨意)-選擇-找到你的access文件-確定,接下來再進行你的操作。3、 詳細設(shè)計 本系統(tǒng)是通過對類對象的引用,以及函數(shù)的調(diào)用實現(xiàn)類之間的連接的。創(chuàng)建窗體,GUI(標簽,文本框,按鈕),用add( )方法加入容器,進而進行布局,用addActionListener( )方法為按鈕或者菜單條按鈕注冊事件監(jiān)聽者,通過監(jiān)聽者方法調(diào)用(事件源,處理代碼)對按鈕觸發(fā)。1、添加功能的實現(xiàn): 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、刪除功能的實現(xiàn): 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、修改功能的實現(xiàn):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、實現(xiàn)按鈕監(jiān)聽的實現(xiàn):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) /關(guān)于final String AboutMsg = A Electrical Dictionary n n+An application written to show off the function of dictionary.n n+JAVA課程設(shè)計 楊汝潔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、實現(xiàn)查詢功能的實現(xiàn)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(); /關(guān)閉數(shù)據(jù)庫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(); /關(guān)閉數(shù)據(jù)庫if(chinesetext.getText().equals()JOptionPane.showMessageDialog(this,查無此單詞!,警告,JOptionPane.WARNING_MESSAGE);四、軟件測試經(jīng)過編譯、執(zhí)行后可看到運行界面如圖4.1所示圖4.1此時有三全菜單選擇:文件、編輯、幫助1、文件菜單:它包含四個子菜單:英漢詞典、漢英詞典、備份詞庫及退出。打開該詞典時默認進入的是英漢詞典。如圖4.2所示:圖4.2(1)英漢詞典:在文本框中輸入要查詢的英文單詞,單擊“查詢”,英文單詞對應(yīng)的中文解釋及其詞性便會出現(xiàn)在文件對話框中,如圖4.3所示:圖4.3如果所查單詞不存在于詞庫中,則會彈出“警告”,說明“查無此詞”,如圖4.4所示;如果是沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”,如圖4.5所示: 圖4.4 圖4.5(2)漢英詞典:在在文本框中輸入要查詢的漢語意思,單擊“查詢”,對應(yīng)的英文單詞便會出現(xiàn)在文件對話框中,如圖4.6所示: 圖4.6如果所查單詞不存在于詞庫中,則會彈出“警告”,說明“查無此詞”;如果是沒有輸入直接點擊“查詢”,則會彈出“警告”,說明“查詢對象不能為空”,演示與英漢詞典類似。(3)點擊備份詞庫時,會彈出保存文件對話框,此時可將詞庫拷貝到機算機里的任一位置。2、編輯菜單:它包含三個子菜單:添加詞匯、修改詞匯和刪除詞匯。如圖4.7所示 圖4.7(1)添加詞匯:用戶可自行輸入所添加的單詞及其解釋,如圖4.8所示 圖4.8 圖4.9如果添加的是詞庫中沒有的單詞,系統(tǒng)在添加成功后有提示“添加成功”,如圖4.9所示;若添加的是詞庫中已有的單詞,系統(tǒng)會彈出“警告”,說明“此詞匯已存在”。(2)修改詞匯:用戶可自行修改詞庫中的單詞的解釋,如圖4.10所示;如果輸入單詞不存在于詞庫中,系統(tǒng)會彈出“警告”,說明“不存在此單詞”。 圖4.10 圖4.11(3)刪除詞匯:用戶可自行刪除詞庫中已有的單詞,在刪除此單詞的同時,其解釋也會隨之被刪除,如圖4.11所示。如果輸入單詞不存在于詞庫中,系統(tǒng)會彈出“警告”,說明“不存在此單詞”。3、幫助菜單:它包含二個子菜單:幫助和關(guān)于。(1)幫助:顯示有關(guān)于詞典的功能說明。(2)關(guān)于:顯示版本信息。 經(jīng)測試,該系統(tǒng)各項功能均能使用,各個功能選項與設(shè)計所想相符。五、總結(jié)此次課程設(shè)計是由我一個人完成的,在這個過程中,我遇到了很多問題,也更加了解JAVA。Java與C+語言非常相近,但Java比C+簡單,它拋棄了C+中的一些不是絕對必要的功能,如頭文件、預(yù)處理文件、指針、結(jié)構(gòu)、運算符重載、多重繼承以及自動強迫同型。 Java實現(xiàn)了自動的垃圾收集,簡化了內(nèi)存管理的工作。這使程序設(shè)計更加簡便,同時減少了出錯的可能。Java提供了簡單的類機制和動態(tài)的構(gòu)架模型。對象中封裝了它的狀態(tài)變量和方法,很好地實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現(xiàn)了代碼的復(fù)用,又提供了一種動態(tài)的解決方案。除此之外,此次課程設(shè)計還讓我對JAVA的獨立性有了更多的認識。Java是一種網(wǎng)絡(luò)語言,為使Java程序能在網(wǎng)絡(luò)的任何地方運行,Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼結(jié)構(gòu)的文件格式。Java為了做到結(jié)構(gòu)中立,除生成機器無關(guān)的字節(jié)碼外,還制定了完全統(tǒng)一的語言文本,如Java的基本數(shù)據(jù)類型不會隨目標機的變化而變化,一個整型總是32位,一個長整型總是64位。為了使Java的應(yīng)用程序能不依賴于具體的系統(tǒng),Java語言環(huán)境還提供了用于訪問底層操作系統(tǒng)功能

溫馨提示

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

最新文檔

評論

0/150

提交評論