3 概要設(shè)計(jì)軟件系統(tǒng)的概要設(shè)計(jì)就是根據(jù)之前得出的需求分析,總結(jié)使用者對(duì)該系統(tǒng)具體的需求,對(duì)進(jìn)行總體的規(guī)劃,從而確定系統(tǒng)的總體框架,以及程序的各個(gè)部件之間的關(guān)系。
3.1 系統(tǒng)開(kāi)發(fā)環(huán)境
選擇一個(gè)好的編程語(yǔ)言是開(kāi)發(fā)一個(gè)系統(tǒng)的一個(gè)十分的重要前提。當(dāng)前,面對(duì)眾多的編程語(yǔ)言,讓人感覺(jué)到無(wú)從選擇,而本系統(tǒng)中用的是Java語(yǔ)言。之所以選擇Java語(yǔ)言是因?yàn)樵谒鼜?qiáng)大的面向?qū)ο蠊δ埽褂盟軌蜉p松的將界面顯示和業(yè)務(wù)邏輯分開(kāi)。
由于java語(yǔ)言的平臺(tái)無(wú)關(guān)性,所以我選取在windows操作系統(tǒng)上進(jìn)行開(kāi)發(fā),而且數(shù)據(jù)庫(kù)設(shè)計(jì)用的是MySQL Server 5.0。
操作系統(tǒng):Microsoft Windows 7 旗艦版
數(shù)據(jù)庫(kù): MySQL Server 5.0
JAVA開(kāi)發(fā)包:JDK1.6
開(kāi)發(fā)語(yǔ)言:Java
開(kāi)發(fā)平臺(tái):Eclipse 3.7
3.2 系統(tǒng)運(yùn)行環(huán)境
3.2.1 環(huán)境變量的配置 想要配置Java的環(huán)境變量,首先就要安裝JDK,安裝后記下JDK的安裝路徑,然后按以下幾個(gè)步驟配置環(huán)境變量:
(1)右擊【我的電腦】---【屬性】-----【高級(jí)】---【環(huán)境變量】
(2)選擇【新建系統(tǒng)變量】--彈出“新建系統(tǒng)變量”對(duì)話框,在“變量名”文本框輸入“JAVA_HOME”,在“變量值”文本框輸入JDK的安裝路徑,單擊“確定”按鈕,如圖3.1:

圖3.1 配置JAVA_HOME
(3)在“系統(tǒng)變量”選項(xiàng)區(qū)域中查看PATH變量,如果不存在,則新建變量 PATH,否則選中該變量,單擊“編輯”按鈕,在“變量值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”或者是“%JAVA_HOME%\bin;”,單擊“確定”按鈕,如圖3.2:

圖3.2 配置Path
(4)在“系統(tǒng)變量”選項(xiàng)區(qū)域中查看CLASSPATH 變量,如果不存在,則新建變量CLASSPATH,否則選中該變量,單擊“編輯”按鈕,在“變量值”文本框的起始位置添加“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。如圖3.3:

圖3.3 配置CLASSPATH
3.3 關(guān)鍵技術(shù)
3.3.1 Java語(yǔ)言
Java是由Sun公司于1995年推出的一種程序設(shè)計(jì)語(yǔ)言,它和C++語(yǔ)言有著千絲萬(wàn)縷的聯(lián)系,而C++語(yǔ)言又是從C語(yǔ)言派生而來(lái)的,因此Java語(yǔ)言具備這兩種程序設(shè)計(jì)語(yǔ)言的大部分特性。由于Java語(yǔ)言具有使用簡(jiǎn)便、完全面向?qū)ο蟆⒖缙脚_(tái)性、可移植性、健壯動(dòng)態(tài)、安全可靠等特點(diǎn),使得其在眾多高級(jí)語(yǔ)言中脫穎而出。自從Java語(yǔ)言推出之后,其獨(dú)樹(shù)一幟的非凡品質(zhì)使其受到廣大程序員的歡迎。Java語(yǔ)言具有以下幾個(gè)的特點(diǎn):
(1)簡(jiǎn)單性
Java是一種簡(jiǎn)單的程序設(shè)計(jì)語(yǔ)言,可以通過(guò)最基本的方法來(lái)完成指定的任務(wù)。Java取消了許多程序設(shè)計(jì)語(yǔ)言中十分煩瑣和難以理解的內(nèi)容,并且具備垃圾自動(dòng)回收的功能,大大簡(jiǎn)化了程序員的內(nèi)存管理工作。
(2)面向?qū)ο?/font>
Java是一種完全面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言[12]。它的程序設(shè)計(jì)集中于對(duì)象及其接口,可以實(shí)現(xiàn)模塊化和信息封裝。并且通過(guò)繼承機(jī)制,實(shí)現(xiàn)代碼的重用功能。
(3)跨平臺(tái)
Java的編譯器可以生成一種與計(jì)算機(jī)體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)指令(Byte Code),Java能夠在JVM(Java Virtual Machine)上執(zhí)行[12]。
(4)健壯性
Java編寫的程序在編譯和運(yùn)行時(shí)都要對(duì)可能出現(xiàn)的問(wèn)題進(jìn)行檢查,從而能夠在多種情況下穩(wěn)定執(zhí)行。同時(shí),Java還能排除內(nèi)存中的數(shù)據(jù)被覆蓋和毀損的可能行以及可以在編譯的時(shí)候提示可能出現(xiàn)卻未被處理的異常。
(5)安全性
Java是一種安全的編程語(yǔ)言,可以防止他人訪問(wèn)對(duì)象的私有成員[12],也能夠避免在指針操作紅產(chǎn)生的錯(cuò)誤。此外,其安全性也體現(xiàn)在編譯層、解釋層等多個(gè)層次上。
(6)可移植性
Java由于具有與平臺(tái)無(wú)關(guān)的特性,從而具有良好的移植性。同時(shí),Java的編譯器主要由Java本身實(shí)現(xiàn)的,并且Java的解釋器由C語(yǔ)言實(shí)現(xiàn),這使得Java系統(tǒng)都具有很好的移植性。
3.3.2 C/S結(jié)構(gòu)
C/S(Client/Server)結(jié)構(gòu)被稱為客戶/服務(wù)器結(jié)構(gòu)。其服務(wù)器一般采用高性能的PC、工作站或小型機(jī),并且采用大型的數(shù)據(jù)庫(kù)系統(tǒng),比如Oracle、Sybase、或 SQL Server,客戶端則需要安裝專門的客戶端軟件。它是軟件系統(tǒng)體系結(jié)構(gòu),它能夠很好地利用兩端硬件環(huán)境的優(yōu)勢(shì),通過(guò)把任務(wù)合理地分配到服務(wù)器和客戶端來(lái)實(shí)現(xiàn)C/S結(jié)構(gòu),從而使得系統(tǒng)的通訊開(kāi)銷得到降低。C/S結(jié)構(gòu)具備能充分發(fā)揮客戶端PC機(jī)的處理能力的特性,許多工作能夠在客戶端處理后再傳交給服務(wù)器。
其對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快,具體表現(xiàn)主要有以下兩點(diǎn):
(1)應(yīng)用服務(wù)器運(yùn)行的數(shù)據(jù)負(fù)荷比較輕。
(2)對(duì)數(shù)據(jù)的儲(chǔ)存管理比較透明。
其缺點(diǎn)主要有以下幾點(diǎn):
(1)高昂的投資且維護(hù)成本較大。
(2)只對(duì)局域網(wǎng)適用。
(3)客戶端要安裝專門的軟件。
3.3.3 MySQL Server 5.0
MySQL Server 5.0是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者是瑞典MySQL AB公司,在2008年1月16日被SUN公司收購(gòu)。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,這樣就增加了速度并提高了靈活性,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi)。MySQL的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),很多中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)庫(kù)。
3.4 數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)使用的數(shù)據(jù)庫(kù)是MySQL Server 5.0建立的數(shù)據(jù)庫(kù)recite,根據(jù)實(shí)現(xiàn)智能背單詞自測(cè)系統(tǒng)所涉及的數(shù)據(jù),該數(shù)據(jù)庫(kù)共建立了9張表,設(shè)計(jì)的表的結(jié)構(gòu)如下(表的定義相同的用一個(gè)表顯示):
表3.1用戶、管理員登錄表

表3.2每日一句表

表3.3單詞、生詞表

表3.4試題表

表3.5四、六級(jí)詞匯表

3.5 功能模塊描述
3.5.1 需求功能描述 (1)用戶登錄:登錄成功后才能使用該系統(tǒng),根據(jù)自己的需要進(jìn)行各種操作。
(2)用戶注冊(cè):新用戶在注冊(cè)后,在系統(tǒng)啟動(dòng)界面輸入賬號(hào)和密碼登錄系統(tǒng)。
(3)“每日一句” 界面:用戶登錄成功后,彈出該界面,3秒后自動(dòng)消失。
(4)用戶操作:用戶可以進(jìn)行單詞查詢、單詞瀏覽(瀏覽四、六級(jí)詞匯)、背單詞(可選擇不同的題目類型)、查看生詞庫(kù)、修改密碼操作。
(5)管理員登錄: 登錄成功后才能使用該系統(tǒng),根據(jù)自己的需要進(jìn)行各種操作。
(6)管理員操作:可以進(jìn)行題目管理(查看,添加,刪除,修改)和用戶管理(查看,刪除)操作。
3.5.2 總體框架本系統(tǒng)設(shè)計(jì)的目的就是方便使用者(用戶和管理員)的操作,從而對(duì)用戶的功能主要分為用戶登錄、單詞查詢、單詞瀏覽、背單詞、查看生詞庫(kù)、修改密碼等幾部分;對(duì)管理員的功能主要分為題目和用戶管理兩部分。
3.5.3 各模塊功能描述本系統(tǒng)共分為用戶模塊和管理員模塊(均含有主界面及各子界面),這兩個(gè)主模塊又分為若干個(gè)小模塊。用戶模塊包括用戶登錄模塊、用戶注冊(cè)模塊、每日一句模塊、單詞查詢模塊、單詞瀏覽模塊、背單詞模塊、查看生詞庫(kù)模塊、修改密碼模塊;管理員模塊包括題目管理、用戶管理。接下來(lái)就詳細(xì)地介紹各個(gè)小模塊的具體功能。
1.用戶模塊
(1)用戶登錄模塊
該模塊的功能是對(duì)用戶的賬號(hào)、密碼進(jìn)行驗(yàn)證。驗(yàn)證方法是將輸入的賬號(hào)、密碼和數(shù)據(jù)庫(kù)中的login2表的數(shù)據(jù)進(jìn)行比較,驗(yàn)證正確后,就會(huì)彈出“每日一句”界面。同時(shí),賬號(hào)會(huì)被寫進(jìn)新建的一個(gè)文本文檔中(文件名為“save.txt”),在背單詞界面調(diào)用將其顯示在JTable上。
(2)用戶注冊(cè)模塊
該模塊的功能是實(shí)現(xiàn)新用戶注冊(cè)。輸入用戶名和密碼后,驗(yàn)證該用戶名是否存在后,如果不存在,則注冊(cè)成功。
(3)每日一句模塊
該模塊的功能是在一個(gè)對(duì)話框顯示一句英文及其含義。用戶登錄成功后,從數(shù)據(jù)庫(kù)中的每日一句表隨機(jī)選擇一個(gè)數(shù)據(jù),顯示在對(duì)話框中,持續(xù)3秒后自動(dòng)消失。
(4)單詞查詢模塊
該模塊的功能是實(shí)現(xiàn)單詞的查詢。輸入要查找的單詞,將所輸入的單詞與數(shù)據(jù)庫(kù)中words表的單詞比較。如果words表存在該單詞,則將表中該單詞的含義、例句及例句含義顯示出來(lái)。
(5)單詞瀏覽模塊
該模塊的功能是實(shí)現(xiàn)瀏覽四、六級(jí)詞匯。用戶主可以選擇瀏覽四級(jí)或六級(jí)詞匯。彈出的對(duì)話框顯示相應(yīng)的詞匯表的第一個(gè)單詞,及其含義、例句、例句含義。對(duì)話框有四個(gè)按鈕:“上一個(gè)”、“下一個(gè)”、“加入生詞庫(kù)”、“退出”,它們分別實(shí)現(xiàn)以下功能:瀏覽當(dāng)前單詞的上一個(gè)單詞,下一個(gè)單詞,將其加入到生詞庫(kù)中(包括含義、例句、例句含義),關(guān)閉對(duì)話框返回用戶主界面。
(6)背單詞模塊
該模塊的功能是實(shí)現(xiàn)背單詞,也是本系統(tǒng)最重要的功能。用戶可以選擇試題1或試題2兩種題目類型。彈出對(duì)話框,顯示的是相應(yīng)的題目表的第一道題目,用JLabel顯示登錄該系統(tǒng)的用戶的用戶名(通過(guò)讀取在用戶登錄模塊時(shí)新建的“save.txt”文件實(shí)現(xiàn))。用textarea顯示題目的內(nèi)容(設(shè)置為只讀),用四個(gè)JRadioButton分別顯示四個(gè)選項(xiàng)(其中有一個(gè)是正確答案)。對(duì)話框有三個(gè)按鈕:“上一題”、“下一題”、“結(jié)束”。它們的功能是:做上一題、做下一題、統(tǒng)計(jì)信息。系統(tǒng)在每次用戶做上一題或下一題時(shí),都會(huì)將用戶所選的選項(xiàng)的內(nèi)容記下,并與數(shù)據(jù)庫(kù)的題目表中的答案比較。如果相同,則將數(shù)組a(i為題號(hào))賦值為1;如果不同,則賦值為0。結(jié)束時(shí),系統(tǒng)會(huì)統(tǒng)計(jì)a中為1的個(gè)數(shù)(賦值給rights)和0的個(gè)數(shù)(賦值給wrongs),且在一個(gè)消息對(duì)話框中顯示用戶使用情況:“總詞數(shù)”(值為i),“正確數(shù)”(值為rights),“錯(cuò)誤數(shù)”(值為wrongs)。同時(shí),系統(tǒng)會(huì)將當(dāng)前用戶此次背單詞的情況記錄下來(lái),將其寫入數(shù)據(jù)庫(kù)的用戶表中,以便在管理員模塊顯示。
(7)查看生詞庫(kù)模塊
該模塊的功能是實(shí)現(xiàn)查看生詞庫(kù)。將數(shù)據(jù)庫(kù)中的生詞表顯示在“查看生詞庫(kù)”對(duì)話框的表格中,表格包含兩列:生詞、含義。對(duì)話框有四個(gè)按鈕:“添加”、“刪除”、“查找”、“查看例句”。
A)添加生詞:輸入生詞后,可以點(diǎn)擊“搜索”按鈕將其含義、例句顯示出來(lái)(查詢數(shù)據(jù)庫(kù)的單詞表),再點(diǎn)擊 “保存”按鈕就能加入到生詞庫(kù)中。
B)刪除生詞:首先要選中要?jiǎng)h除的生詞所在的那一行,再點(diǎn)擊“刪除”按鈕就可以刪除選中的生詞,之后系統(tǒng)會(huì)重新顯示所有的生詞庫(kù)中的生詞。
C)查找生詞:輸入生詞后就可以查找生詞庫(kù)中的生詞,用戶可以點(diǎn)擊“刪除”按鈕來(lái)刪除該生詞。
D)查看例句:首先要選中要查看例句的生詞所在的那一行,點(diǎn)擊“查看例句”按鈕后,系統(tǒng)會(huì)顯示選中生詞的例句及例句含義。
(8)修改密碼模塊
該模塊的功能是實(shí)現(xiàn)修改用戶密碼。輸入用戶名、原始密碼和新密碼,驗(yàn)證正確后,密碼修改成功。
2. 管理員模塊
(1)題目管理
該模塊的功能是實(shí)現(xiàn)題目的管理。管理員可以查看、刪除和修改所有的題目,并添加新題目,及以退出該模塊。
(2)用戶管理
該模塊的功能是實(shí)現(xiàn)用戶的管理。管理員可以查看每個(gè)用戶每次背單詞的情況(包括題目類型、總詞數(shù)、正確數(shù)、錯(cuò)誤數(shù)),點(diǎn)擊“刪除”按鈕可以刪除選中的用戶。