網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試設(shè)計與實現(xiàn)_第1頁
網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試設(shè)計與實現(xiàn)_第2頁
網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試設(shè)計與實現(xiàn)_第3頁
網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試設(shè)計與實現(xiàn)_第4頁
網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

word文檔可自由復(fù)制編輯摘要本文敘述了網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)形成的全過程。通過在線學(xué)習(xí)系統(tǒng)的建設(shè),完成了對于在線學(xué)習(xí)課程的遠(yuǎn)程化授課。采用了軟件工程的思想,MVC模式設(shè)計,JSP為前臺,JavaScript為客戶端腳本語言和MySQL為后臺數(shù)據(jù)庫,使用DOA設(shè)計模式和Hibernate的HQL實現(xiàn)數(shù)據(jù)庫訪問查詢,充分利用B/S結(jié)構(gòu)特點,實現(xiàn)網(wǎng)上學(xué)習(xí),實現(xiàn)紙張答題式考試向基于Intemet的無紙化測試系統(tǒng)的轉(zhuǎn)變。本文概要介紹了在線學(xué)習(xí)測試系統(tǒng)設(shè)計的系統(tǒng)目標(biāo)、系統(tǒng)設(shè)計思想、系統(tǒng)功能、系統(tǒng)后臺數(shù)據(jù)庫的配置。關(guān)鍵詞:B/S模式;信息化;軟件工程ABSTRACTThispaperdescribestheformationofapersonnelmanagementsystem,thewholeprocess,includingthepartofthepresentation.Thesystemusestheideaofsoftwareengineering,B/Smodeldesign,JSPforthefront,JavaScriptisclient-sidescriptinglanguageandmssql2000asthebackgrounddatabase,usingtheDOAdesignpatternsandHibernate'sHQLqueryofdatabaseaccesstoachievethepasswordchanges,personnelinformationmanagement,permissions,employeeinformationmanagement,departmentofinformationmanagement.Keywords:StaffInformation目錄摘要 IABSTRACT II第1章引言 11.1背景 11.1.1目的 11.1.2意義 11.2研究內(nèi)容 2第2章網(wǎng)絡(luò)工程師在線學(xué)習(xí)與測試系統(tǒng) 32.1在線學(xué)習(xí)和測試系統(tǒng)概述 32.1.2在線學(xué)習(xí)與測試系統(tǒng)的任務(wù)及目的 3第3章需求分析 4第4章系統(tǒng)設(shè)計 64.1系統(tǒng)結(jié)構(gòu)設(shè)計 64.2業(yè)務(wù)實體設(shè)計 74.3系統(tǒng)模塊劃分 7第5章數(shù)據(jù)庫設(shè)計與實現(xiàn) 9第6章詳細(xì)設(shè)計與主要模塊的實現(xiàn) 136.1目錄結(jié)構(gòu) 136.2各功能模塊的實現(xiàn)界面效果 146.2.1主頁顯示模塊設(shè)計 146.2.2登錄模塊設(shè)計 146.2.3學(xué)習(xí)資料模塊設(shè)計 156.2.4參加測試模塊設(shè)計 156.2.5成績查詢模塊設(shè)計 166.2.6用戶資料模塊設(shè)計 176.2.7修改密碼模塊設(shè)計 176.2.8管理員模塊設(shè)計 176.3開發(fā)工具簡介 206.3.1JAP簡介 206.3.1B/S模式體系結(jié)構(gòu)概述 21第7章結(jié)束語 23致謝 24參考文獻(xiàn) 25附錄源代碼 26第1章引言1.1背景隨著科學(xué)技術(shù)的不斷提高,計算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用[1]。互聯(lián)網(wǎng)的出現(xiàn)給人們提供了全新的信息交換和文化共享的理念和方式,這種“各獻(xiàn)所知,各取所需”的文化工具使全球為之振奮[2]。網(wǎng)絡(luò)工程師無需走入教室學(xué)習(xí),只需通過互聯(lián)網(wǎng)便可得到自己需要的學(xué)習(xí)資料并對自己的學(xué)習(xí)情況進(jìn)行在線的測試。1.1.1目的于上述對系統(tǒng)開發(fā)背景的描述和對系統(tǒng)需求的描述,在線學(xué)習(xí)和測試系統(tǒng)的設(shè)計應(yīng)達(dá)到以下的目標(biāo):(1)極大地利用優(yōu)秀的教師資源和知識資源,從而整體提高教育水平,實現(xiàn)平民教育。(2)使學(xué)生在不同的地理位置上也能與教師進(jìn)行交流,打破了傳統(tǒng)的面對面教育的局限性。(3)學(xué)生可以根據(jù)自己的興趣或?qū)W習(xí)情況掌握學(xué)習(xí)進(jìn)度,自主學(xué)習(xí)。遠(yuǎn)程教學(xué)不受時間和地點的限制,可實現(xiàn)持續(xù)教育和終生教育。(4)通過在線測試功能,及時測試自己實際的學(xué)習(xí)情況。1.1.2意義隨著計算機(jī)技術(shù)的迅猛發(fā)展,學(xué)校教學(xué)和管理的信息化發(fā)展也有長足的進(jìn)步,這就要求各個環(huán)節(jié)都均衡發(fā)展,其中之一是,教師如何通過網(wǎng)絡(luò)了解學(xué)生的學(xué)習(xí)狀況并且讓學(xué)生能通過互聯(lián)網(wǎng)自覺學(xué)習(xí)網(wǎng)絡(luò)工程師相關(guān)知識[3]。為此,配合傳統(tǒng)課堂教學(xué)而建立的在線學(xué)習(xí)和測試系統(tǒng)就顯得相當(dāng)必要[4]。測試是教學(xué)過程的重要組成部分,是教學(xué)評價的主要渠道之一,也是課堂教學(xué)中師生互動的重要手段。教師通過課堂測試可以了解學(xué)生的學(xué)習(xí)情況,及時調(diào)整教學(xué)進(jìn)程;學(xué)生通過課堂測試可以了解自己的學(xué)習(xí)情況,及時調(diào)整學(xué)習(xí)方法。在傳統(tǒng)教學(xué)模式中,一位教師同時面對一個班的所有學(xué)生,師生不能及時準(zhǔn)確地獲得反饋信息。目前,雖然在課堂教學(xué)中引入多媒體輔助教學(xué)手段,但課堂練習(xí)仍然采用傳統(tǒng)的模式,練習(xí)的評價功能并沒有充分體現(xiàn)[5]。隨著網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步和信息技術(shù)的廣泛普及,網(wǎng)絡(luò)教學(xué)與考試系統(tǒng)已經(jīng)遍布于Internet的每個角落[6]。因此,如何充分利用計算機(jī)網(wǎng)絡(luò)的信息處理、傳輸功能,構(gòu)建一個基于網(wǎng)絡(luò)的在線測試系統(tǒng),是我校推進(jìn)教學(xué)改革亟待完成的任務(wù),也是計算機(jī)輔助教學(xué)領(lǐng)域中的一個重要研究課題[7]。該測試系統(tǒng)基于現(xiàn)代教育理論和計算機(jī)應(yīng)用理論,給學(xué)生提供了一種在線測試的學(xué)習(xí)方式,希望能激發(fā)廣大教師和學(xué)生的興趣。相對于傳統(tǒng)的課堂測試,利用網(wǎng)絡(luò)平臺開展在線測試具有以下一些優(yōu)勢:(1)教學(xué)活動不受時間和空間的限制,教師和學(xué)生可以根據(jù)自己的實際情況選擇不同的時間段、不同的地點進(jìn)行自我測試和自我學(xué)習(xí);(2)有助于減輕教師的負(fù)擔(dān),幫助學(xué)生詳細(xì)了解知識點掌握情況,鞏固所學(xué),提高認(rèn)知和解決問題的能力[8]。1.2研究內(nèi)容在線教育是一種新式的教育方式,人們通過計算機(jī)網(wǎng)絡(luò),可以在任何地點任何有電腦的地方,學(xué)習(xí)知識,消除了舊有的教育方式在時間和空間上對人們的制約。網(wǎng)上學(xué)習(xí)系統(tǒng),就是這樣一個以答疑解惑為目的的在線教育系統(tǒng)。本文論述了一個以Internet為網(wǎng)絡(luò)平臺、三層架構(gòu)(B/S)的網(wǎng)上學(xué)習(xí)系統(tǒng)的設(shè)計原理、設(shè)計思想及具體的實現(xiàn)過程,對在設(shè)計過程中涉及到的關(guān)鍵算法及重要作業(yè)流程作了具體分析和介紹,并對各個模塊的設(shè)計思想及設(shè)計過程作了詳細(xì)闡述[9]。本系統(tǒng)的設(shè)計采用了sun的javaServerPage(簡稱JSP)技術(shù),以MacromediaDreamWeaverMX2004作為開發(fā)工具,MySQL作為數(shù)據(jù)庫支撐平臺[10]。本設(shè)計根據(jù)jSP結(jié)合HTML網(wǎng)頁、和ADO組件實現(xiàn)了一個動態(tài)、交互、高效的Web服務(wù)器應(yīng)用程序組——網(wǎng)上學(xué)習(xí)系統(tǒng),該系統(tǒng)將傳統(tǒng)的教學(xué)工作放在了網(wǎng)上進(jìn)行,使教學(xué)工作突破了時間和地點上的限制,獲得了很大的擴(kuò)展,當(dāng)老師不在線時,學(xué)生可以以留言的方式進(jìn)行提問;當(dāng)老師在線時,學(xué)生又可以以聊天室的方式與老師進(jìn)行討論,大大方便了教學(xué)工作。系統(tǒng)的設(shè)計與實現(xiàn),遵循軟件工程思想,進(jìn)行了細(xì)致的需求和系統(tǒng)分析工作[11]。在線測試系統(tǒng)由學(xué)生和管理員兩個模塊組成。學(xué)生模塊包括學(xué)生注冊、登陸、測試、查詢成績模塊。管理員模塊包括院系管理、試卷管理、題庫管理、審批管理等模塊[12]。第2章網(wǎng)絡(luò)工程師在線學(xué)習(xí)與測試系統(tǒng)2.1在線學(xué)習(xí)和測試系統(tǒng)概述隨著現(xiàn)代信息技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)技術(shù)在教育中的應(yīng)用日益廣泛和深入,特別是Internet與校園網(wǎng)的接軌,為各大中小學(xué)教育提供了豐富的資源,使在線學(xué)習(xí)真正成為現(xiàn)實,同時也為各大中小學(xué)教育開辟了廣闊的前景。陳至立部長在全國信息技術(shù)教育工作會議上指出:全國實施“校校通”工程,努力實現(xiàn)教育的跨越式發(fā)展[13]。遠(yuǎn)程教育自19世紀(jì)在英國誕生以來,已經(jīng)歷了三個階段:第一階段以文字、印刷教材為主要傳播媒體,以郵政作為主要傳播手段(如函授教育);第二階段以廣播、電視、電話等為主并輔以文字教材的多種媒體組合,以廣播電視作為主要傳播手段(如電視大學(xué));第三階段以計算機(jī)多媒體和網(wǎng)絡(luò)作為主要技術(shù)手段、以數(shù)字化信息作為主要傳播媒體,以因特網(wǎng)作為主要傳播手段(如網(wǎng)絡(luò)學(xué)校),真正實現(xiàn)了“師生雙向通信交流”。前兩個階段的遠(yuǎn)程教育對教育的普及與發(fā)展曾起到了相當(dāng)大的作用,但由于缺乏適當(dāng)?shù)耐ㄐ攀侄?學(xué)生與教師的交流基本上是單向的,反饋也是滯后的。我國教育部將遠(yuǎn)程教育的第三階段稱之為現(xiàn)代遠(yuǎn)程教育[14]。2.1.2在線學(xué)習(xí)與測試系統(tǒng)的任務(wù)及目的(1)極大地利用優(yōu)秀的教師資源和知識資源,從而整體提高教育水平,實現(xiàn)平民教育。(2)使學(xué)生在不同的地理位置上也能與教師進(jìn)行交流,打破了傳統(tǒng)的面對面教育的局限性。(3)學(xué)生可以根據(jù)自己的興趣或?qū)W習(xí)情況掌握學(xué)習(xí)進(jìn)度,自主學(xué)習(xí)。遠(yuǎn)程教學(xué)不受時間和地點的限制,可實現(xiàn)持續(xù)教育和終生教育。(4)通過在線測試功能,及時測試自己實際的學(xué)習(xí)情況。第3章需求分析3.1系統(tǒng)分析概述需求分析是系統(tǒng)開發(fā)必要環(huán)節(jié),也是重中之重。作為該過程的結(jié)果,需求規(guī)格說明書是對系統(tǒng)的功能和行為完整的描述。系統(tǒng)設(shè)計將來自于需求分析的抽象規(guī)格說明轉(zhuǎn)變?yōu)槊嫦蛘鎸嵤澜绲脑O(shè)計。一旦構(gòu)建完成,該系統(tǒng)就會投入使用,同時會不可避免地產(chǎn)生更多的新需求。同時,需求過程與分析活動之間有相當(dāng)程度的重疊,分析建模對于設(shè)定工作的范圍和其他一些事來說是必要的,所以我們利用分析模型來描述需求過程,隨著開發(fā)工作的繼續(xù),分析活動在工作中占的比例將變得越來越大,直到所有需求都已知。3.2系統(tǒng)功能描述1.登錄與注冊用戶登錄和注冊就是實現(xiàn)一個新用戶注冊和老用戶的登錄,這兩個功能基本上每個系統(tǒng)都有提供。登錄時系統(tǒng)會對登錄信息進(jìn)行驗證,以確保登錄信息的正確性。登錄時,如果用戶名,密碼或驗證碼錯誤,系統(tǒng)會提示錯誤信息并跳回登錄界面重新登錄。由于系統(tǒng)需求原因,不允許用戶注冊,需要管理員添加用戶成功,該用戶才能登錄成功。2.首頁瀏覽首頁瀏覽是實現(xiàn)用戶登錄成功后,跳轉(zhuǎn)到頁面信息。在首頁中,用戶可以瀏覽學(xué)習(xí)信息,參加測試,查詢測試成績,修改密碼,修改個人資料及退出系統(tǒng)。3.功能設(shè)計個人控制面板模塊普通用戶身份:可以查看修改用戶信息,修改密碼,查看歷史測試成績及資料學(xué)習(xí)。管理員身份:修改密碼,刪除用戶,添加用戶,添加、刪除、修改圖書資料和測試試卷,添加試卷。學(xué)生在線自我學(xué)習(xí)模塊按科目分類各圖書,用戶可以根據(jù)自己的具體情況選擇相關(guān)內(nèi)容。學(xué)生在線測試模塊學(xué)生可以查看到模擬題和各年真題,學(xué)生完成測試后系統(tǒng)會給出各題答案、錯誤題目的解答以及最終成績。本課題擬解決的問題如下所述。(1)解決考生無法獲得系統(tǒng)的考試輔導(dǎo)資料問題。(2)解決考生無法直觀的了解自己應(yīng)考能力的問題。(3)解決考生遇到疑難問題無人解答的問題。3.3研究方法和技術(shù)路線在對在線輔導(dǎo)和測試系統(tǒng)的現(xiàn)狀和特點進(jìn)行分析研究之后,又考慮到系統(tǒng)穩(wěn)定性、實時性及其它方面的要求,最后決定研發(fā)過程分為5個階段進(jìn)行:1、系統(tǒng)需求分析與系統(tǒng)的功能設(shè)計。包括可行性分析和用戶需求分析,收集各種用戶對系統(tǒng)功能的要求,整理相關(guān)信息資料,確定系統(tǒng)的開發(fā)范圍。2、數(shù)據(jù)庫設(shè)計。確定數(shù)據(jù)庫結(jié)構(gòu),設(shè)計數(shù)據(jù)庫的各種參數(shù)、創(chuàng)建實體數(shù)據(jù)庫和數(shù)據(jù)庫的表、視圖和觸發(fā)器等數(shù)據(jù)庫對象。3、程序模塊劃分和實現(xiàn)。根據(jù)系統(tǒng)所管理的信息的類型和功能對系統(tǒng)進(jìn)行模塊劃分,分別編寫代碼,逐一實現(xiàn)系統(tǒng)功能。4、安全策略設(shè)計。根據(jù)系統(tǒng)功能劃分用戶類型和權(quán)限,并進(jìn)行安全模式的設(shè)計。5、系統(tǒng)測試。完成系統(tǒng)主體功能后,進(jìn)行系統(tǒng)的整體測試,查找設(shè)計缺陷和錯誤,并進(jìn)行改進(jìn)和糾正。根據(jù)上面大概的需求,畫出網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)的用例圖,如圖3-1所示。用戶用戶瀏覽資料參加考試查詢成績登錄注銷修改用戶資料首頁查看資料下載資料試卷管理Admin資料管理圖3-1用例圖第4章系統(tǒng)設(shè)計4.1系統(tǒng)結(jié)構(gòu)設(shè)計本系統(tǒng)采用三層架構(gòu)設(shè)計,即程序邏輯結(jié)構(gòu)分為用戶界面、業(yè)務(wù)邏輯處理層和數(shù)據(jù)存儲層。各層在實際的物理結(jié)構(gòu)上也是獨立的,用戶界面與業(yè)務(wù)邏輯分離。整個應(yīng)用程序遵循了多層次的架構(gòu)模式,從上到下依次為視圖層、模型層、持久化層和數(shù)據(jù)庫層,如圖4-1所示。視圖層視圖層模型層持久化層依賴關(guān)系減弱依賴關(guān)系加強(qiáng)數(shù)據(jù)庫層 圖4-1系統(tǒng)架構(gòu)其中,模型層、數(shù)據(jù)庫層之間的關(guān)系是上層依賴下層,下層對上層的依賴很少,如同網(wǎng)絡(luò)的ISO七層模型。各層之間的依賴關(guān)系應(yīng)該是自頂向下的,即上層可以依賴下層,而下層應(yīng)該盡量減少對上層的依賴。4.2業(yè)務(wù)實體設(shè)計一個系統(tǒng)的業(yè)務(wù)實體在內(nèi)存中的表現(xiàn)為實體域?qū)ο螅跀?shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù),實現(xiàn)業(yè)務(wù)實體包括以下內(nèi)容:設(shè)計域模型,創(chuàng)建域模型實體對象。設(shè)計關(guān)系數(shù)據(jù)模型創(chuàng)建對象-關(guān)系映射文件4.3系統(tǒng)模塊劃分按照功能描述的內(nèi)容,設(shè)計系統(tǒng)的功能模塊,如圖4-2所示。用戶管理功能模塊的關(guān)系如圖4-3所示。學(xué)習(xí)和測試系統(tǒng)學(xué)習(xí)和測試系統(tǒng)前臺管理瀏覽首頁學(xué)習(xí)資料參加考試成績查詢修改密碼后臺管理試卷管理用戶資料成績管理用戶管理圖4-2系統(tǒng)功能模塊示意圖系統(tǒng)用戶信息管理系統(tǒng)用戶信息管理資料更新試卷管理成績評定修改自身的密碼,用戶資料管理瀏覽資料,參加考試,查看成績管理員普通用戶圖4-3用戶管理模塊示意圖第5章數(shù)據(jù)庫設(shè)計與實現(xiàn)根據(jù)上面的業(yè)務(wù)實體設(shè)計,可以先把數(shù)據(jù)庫開發(fā)出來,具體開發(fā)情況如下。1.學(xué)歷表b_education_type學(xué)歷表b_education_type用來保存學(xué)歷的基本信息,結(jié)構(gòu)如表5-1如示。表5-1學(xué)歷表2.管理員信息表ex_adminuser管理員表ex_adminuser用來保存系統(tǒng)用戶和管理員的基本信息,結(jié)構(gòu)如表5-2所示。表5-2管理員信息表3.基本信息表ex_baseinfo基本表ex_baseinfo用來保存基本信息,結(jié)構(gòu)如表5-3所示。表5-3基本信息表4.試卷信息表ex_examinationpaper試卷信息表ex_examinationpaper用來保存試卷的基本信息,結(jié)構(gòu)如表5-4如示。表5-4試卷信息表5.用戶信息表ex_examinee用戶信息表ex_examinee用來保存用戶的詳細(xì)信息,結(jié)構(gòu)如表5-5如示。表5-5用戶信息表6.考題信息表ex_question考題信息表ex_question用來保存考題的基本信息,結(jié)構(gòu)如表5-6如示。表5-6考題信息表7.考卷信息表ex_testpaper考卷信息表ex_testpaper用來保存考卷的基本信息,結(jié)構(gòu)如表5-7如示。表5-7考卷信息表第6章詳細(xì)設(shè)計與主要模塊的實現(xiàn)本系統(tǒng)中,運用Hibernate作為持久化層的中間組件,并使用了DAO設(shè)計模式實現(xiàn)對數(shù)據(jù)庫的訪問。DAO模式是J2EE核心模式中的一種,其主要的行動就是在業(yè)務(wù)核心的方法和具體數(shù)據(jù)源之間的再增加一層,用這一層來連接業(yè)務(wù)方法和數(shù)據(jù)源,這樣就實現(xiàn)了兩者的解耦。因為具體持久層數(shù)據(jù)源可能是多樣化的,可能是XML或者是關(guān)系數(shù)據(jù)庫。在具體的關(guān)系數(shù)據(jù)庫中,也可能是不同的產(chǎn)品,如Oracle或者M(jìn)ySQL通過使用DAO模式,業(yè)務(wù)核心部分不關(guān)心數(shù)據(jù)層是如何實現(xiàn)對數(shù)據(jù)庫的操作的,而只關(guān)心自己的業(yè)務(wù)操作,對數(shù)據(jù)庫的操作全部扔給了DAO代理,如圖6-1所示。 業(yè)務(wù)核心業(yè)務(wù)核心DAO數(shù)據(jù)源Mode1DTO/VO封裝Use創(chuàng)建獲得圖6-1DAO模式6.1目錄結(jié)構(gòu)src用于存儲系統(tǒng)使用的所有java文件原碼admin用于存放管理員的JSP頁面文件exam用于存放普通用戶的JSP頁面文件主目錄存放公共的JSP文件Css用于存儲頁面的層疊樣式表,有于頁面主要采用了jsp+css的模式設(shè)計,需要目錄存儲css表。images用于存儲頁面顯示的圖片,在頁面中需要大量的圖片輔助顯示,使頁面顯示視覺效果更加宜人,如今的各大網(wǎng)站都采用大量的圖片輔助頁面顯示。js用于存儲頁面javascript腳本文件,利用這些腳本文件添加了頁面動態(tài)顯示的效果。目前該項技術(shù)是編寫動態(tài)網(wǎng)站不可缺少的。6.2各功能模塊的實現(xiàn)界面效果6.2.1主頁顯示模塊設(shè)計主頁效果圖6-2和關(guān)鍵代碼如下:圖6-2主頁效果6.2.2登錄模塊設(shè)計圖6-3登錄界面6.2.3學(xué)習(xí)資料模塊設(shè)計圖6-4資料學(xué)習(xí)界面6.2.4參加測試模塊設(shè)計圖6-5參加測試界面圖6-6測試界面6.2.5成績查詢模塊設(shè)計圖6-7成績查詢界面圖6-8成績界面6.2.6用戶資料模塊設(shè)計圖6-9用戶資料界面6.2.7修改密碼模塊設(shè)計圖6-10修改密碼界面6.2.8管理員模塊設(shè)計管理員模塊負(fù)責(zé)系統(tǒng)的整體維護(hù),只有管理員才能夠?qū)ο到y(tǒng)的信息進(jìn)行操作。頁面效果圖4-8如下。圖6-11管理員入口界面圖6-12管理員界面圖6-13考生信息界面圖6-14新增單選題界面圖6-15添加試卷界面圖6-16考試分?jǐn)?shù)界面圖6-17試卷管理界面6.3開發(fā)工具簡介網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)所使用的開發(fā)技術(shù)有Struts1.2,Hibernate3.0,JavaBeans,Jsp/Servletxml及使用sql對數(shù)據(jù)庫進(jìn)行相關(guān)操作。網(wǎng)站的開發(fā)工具共有eclipseIDE,Tomcat,MySQL。6.3.1JAP簡介隨著internet和電子商務(wù)等應(yīng)用的出現(xiàn),動態(tài)網(wǎng)頁技術(shù)也隨著他們的出現(xiàn)誕生了。其中較為成熟的一種技術(shù)是JSP技術(shù)。JSP是javaEE系統(tǒng)中的Web層技術(shù),負(fù)責(zé)動態(tài)生成用戶界面。1.JSP技術(shù)概述及特點JSP頁面由HTML代碼和嵌套其中的java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。JavaServlet是JSP技術(shù)的基礎(chǔ),而且大型的web應(yīng)用程序的開發(fā)需要javaServlet和JSP配合才能完成。JSP具備了java技術(shù)的簡單易用,完全面向?qū)ο螅哂衅脚_無關(guān)性且安全可靠,主要面向Internet的所有特點。JSP文件主要由模板元素,指令元素,動作元素,腳本元素,聲明,表達(dá)式,Scriptlets和JSP內(nèi)建對象組成。2.JSP技術(shù)特點JSP技術(shù)的優(yōu)勢:(1)一次編寫,到處運行。在這一點上java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。(2)系統(tǒng)的多平臺支持?;旧峡梢栽谒衅脚_上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中開展。相比之下,ASP/PHP的局限性是顯而易見的。(3)強(qiáng)大的可伸縮性。(4)多樣化和功能強(qiáng)大的開發(fā)工具支持。JSP技術(shù)的劣勢:(1)與ASP一樣,java的一些優(yōu)勢正是他致命的問題所在。正是由于其跨平臺的功能和極度的伸縮能力,所以極大地增加了產(chǎn)品的復(fù)雜度。(2)java的運行速度是用class常駐內(nèi)存來完成的,所以他在一些情況下所使用的內(nèi)存比起用戶數(shù)量來說確實是“最低性能價格比”了。從另一方面來說,它還需要硬盤空間來存儲一系列的.java文件,.class文件及對應(yīng)的版本文件。3.JSP的內(nèi)置對象JSP為簡化頁面的開發(fā)提供了一些內(nèi)建對象。這些內(nèi)部對象不需要由JSP的編寫者實例化,他們由容器實現(xiàn)和管理,在所有的JSP頁面中都能使用內(nèi)部對象。所有的隱含對象只要對Scriptlets或者表達(dá)式有用,在JSP聲明中不可用。JSP里有以下的內(nèi)部對象:●request對象●response對象●pageContext對象●session對象●application對象●out對象●config對象●page對象●exception對象4.JSP常用開發(fā)模式如今的JSP網(wǎng)站開發(fā)標(biāo)準(zhǔn),提供了模式一,模式二等框架以及框架之間結(jié)合使用的各種開發(fā)模式。JSP+JavaBean開發(fā)模式稱為模式一;MVC開發(fā)模式稱為模式二。本系統(tǒng)是按照模式二標(biāo)準(zhǔn)開發(fā)實現(xiàn)的,即structs為開發(fā)框架的。實現(xiàn)了顯示與業(yè)務(wù)邏輯之間的分離。至今,對于大部分的項目來說,structs開發(fā)模式仍然是一種可選的方案。因為它完整,并能夠很快地構(gòu)建及運行項目。本網(wǎng)站項目經(jīng)過了深入考慮,采用MVC開發(fā)模式較為合適。6.3.1B/S模式體系結(jié)構(gòu)概述B/S模式體系結(jié)構(gòu)的全稱Browser/Server,即瀏覽器/服務(wù)器。B/S模式的用戶工作界面是通過web瀏覽器來實現(xiàn)的,極少部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn),形成所謂的三層結(jié)構(gòu)。由于客戶服務(wù)器兩層結(jié)構(gòu)存在靈活性差、升級困難、維護(hù)工作量大等缺陷,已較難適應(yīng)當(dāng)前信息技術(shù)與網(wǎng)絡(luò)技術(shù)發(fā)展的需要。隨著WEB技術(shù)的日益成熟,Browser/Server(簡稱B/S)三層結(jié)構(gòu)已成為取代Client/Server(簡稱C/S)模式的一種全新技術(shù)。該結(jié)構(gòu)在管理信息系統(tǒng)開發(fā)領(lǐng)域中獲得飛速發(fā)展,成為應(yīng)用軟件研制中一種流行的體系結(jié)構(gòu)。采用該體系結(jié)構(gòu)的優(yōu)勢在于:(1)無須開發(fā)客戶端軟件,維護(hù)和升級方便;(2)可跨平臺操作,任何一臺機(jī)器只要裝有WWW瀏覽器軟件,均可作為客戶機(jī)來訪問系統(tǒng)(3)具有良好的開放性和可擴(kuò)充性;(4)可采用防火墻技術(shù)來保證系統(tǒng)的安全性,有效地適應(yīng)了當(dāng)前用戶對管理信息系統(tǒng)的新需求。第7章結(jié)束語本文討論了網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)在在線學(xué)習(xí)、在線測試等模塊的具體實現(xiàn)作了較詳細(xì)的介紹,整個系統(tǒng)在本地windows7+apache-tomcat-6.0.18環(huán)境下調(diào)試無誤,實現(xiàn)預(yù)期功能。(1)優(yōu)勢本文完成的網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)具有如下4大特性:①簡單性:后臺管理條理清晰,操作簡單易懂,非專業(yè)人員亦可輕松地對該系統(tǒng)各項信息進(jìn)行管理操作。②完整性:功能完整,實現(xiàn)了網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)所需的各項功能。③實用性:系統(tǒng)除實現(xiàn)網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)的各功能模塊外,線上網(wǎng)站運營非常實用的功能,系統(tǒng)可以直接上線運營,具有較強(qiáng)的實用性。④安全性:系統(tǒng)對用戶注冊密碼進(jìn)行了MD5加密。針對系統(tǒng)中涉及文件上傳功能的文件以及產(chǎn)生客戶端提交數(shù)據(jù)的文件,在代碼中增加了對客戶端傳遞參數(shù)的安全檢測,配合apache-tomcat的相關(guān)安全性設(shè)置,本系統(tǒng)具備較強(qiáng)的安全性。(2)不足及完善方向 系統(tǒng)在功能上實現(xiàn)了,但還是比較粗造的,存在比較多的細(xì)節(jié)問題,在健壯性上做的還不是非常好,會出現(xiàn)崩潰的形象。頁面編寫出現(xiàn)瀏覽器兼容的問題尚未解決,兼容性不強(qiáng)??傊€是有一定的缺陷有待解決。致謝在網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng)開發(fā)過程中,我把幾年所學(xué)的知識進(jìn)行了系統(tǒng)化的溫習(xí),把所學(xué)的知識運用到實踐中,加強(qiáng)了對知識的理解。同時在開發(fā)中運用了設(shè)計模式思想,DAO、JSP、CSS等技術(shù),使自己的技術(shù)、理論水平都有了極大的提升。本次畢業(yè)設(shè)計,歷時數(shù)月。在老師的悉心指導(dǎo),本人不斷努力下,終于圓滿完成了??粗约河H手設(shè)計、開發(fā)的基于B/S模式的網(wǎng)絡(luò)工程師在線學(xué)習(xí)和測試系統(tǒng),心里說不出的高興。此時此刻,我除了高興自己的成功,更要感謝在此過程中幫助過我的所有人。特別是我的導(dǎo)師和我的室友,同時在系統(tǒng)開發(fā)中也得到了他們很多建設(shè)性的建議,當(dāng)我調(diào)試程序出錯或遇到難題長時間難以解決時,他總是鼓勵我不要放棄,并從百忙中抽出時間耐心地對我提出的問題給予解答,這給了我極大的信心,使我能突破難題,順利地完成系統(tǒng)代碼的編寫和調(diào)試工作,并最終完成本論文。最后,感謝所有幫忙查閱資料、幫我借書的同學(xué)和老師,沒有你們就沒有我的作品順利完成!參考文獻(xiàn)[1](美)BRUCEECKEL.ThinkinginJava[M].北京機(jī)械工業(yè)出版社,2002:56-455.[J][3]VandykeSoftware(TM).SurveyShowsHowITPerceives&RespondstoConstantlyChangingSecurityThreats..[4]張蓓,趙國鋒.JSP數(shù)據(jù)庫通用模塊開發(fā)與系統(tǒng)移植[J].計算機(jī)學(xué)報,2007(5):65-72.[5]王軍杰.精通JavaScript動態(tài)網(wǎng)頁編程[M].人民郵電出版社,2006,45-304.[6]劉乃麗.精通J2EE項目案例基于Eclipsespringstrutshibernate[M].人民郵電出版社,2008,21-62.[7]TangYi-Ping,LiuKai-Feng.JSPautomaticgenerationtechnologybasedonmappingmechanism[C].IEEEInternationalConferenceonSystems,ManandCybernetics.Volume1,Oct2004,655-659.[8]于丙超.網(wǎng)站開發(fā):項目規(guī)劃、設(shè)計與實現(xiàn)[J].微計算機(jī)信息,2004,6(15):46-52.[9]任永功等.網(wǎng)站規(guī)劃與網(wǎng)頁設(shè)計[M].北京:電子工業(yè)出版社,2003,30-62.[11]蔡翠平.網(wǎng)絡(luò)程序設(shè)計基礎(chǔ)[M].北京:清華大學(xué)出版社,2003,58-82.[12] 王國輝等.javaweb開發(fā)技術(shù)方案寶典[M].北京:人民郵電出版社,2008,139-165.[13] 熊松韞,張志平.構(gòu)建網(wǎng)絡(luò)信息體系[J].計算機(jī)學(xué)報,2003(22):72-78.[14] 孫鑫.JavaWeb開發(fā)詳解--XML+XSLT+Servlet+JSP深入剖析與實例應(yīng)用[M].北京:電子工業(yè)出版社,2006,124-381.附錄源代碼publicstaticListcreateQuery(Stringhql){ Sessionsession=openSession();//打開Session Listlist=null; try{ Queryquery=session.createQuery(hql); list=query.list(); }catch(Exceptione){ e.printStackTrace(); System.out.println("查詢時出現(xiàn)的錯誤信息:"+e.getMessage()); }finally{ closeSession(session);//關(guān)閉Session } returnlist; }然后調(diào)用createQuery()方法從數(shù)據(jù)表中獲取“主要菜系”、“人均消費水平”、“折扣優(yōu)惠”、“所在區(qū)域”,并將查詢結(jié)果循環(huán)顯示在下拉列表框中,代碼如下:<%@pageimport="com.wgh.core.MySession"%><%//獲取主要菜系信息Stringhql_dish="SELECTc.dishFROMTbCompanyInfocGROUPBYc.dish";Listlist_dish=MySession.createQuery(hql_dish);%><selectname="dish"class="wenbenkuang"id="dish"><optionvalue="*">--請選擇--</option><%for(inti=0;i<list_dish.size();i++){%><optionvalue="<%=list_dish.get(i)%>"><%=list_dish.get(i)%></option><%}%></select><selectname="expenditure"class="wenbenkuang"id="expenditure"><optionvalue="*">--請選擇--</option><%for(inti=0;i<list_expenditure.size();i++){%><optionvalue="<%=list_expenditure.get(i)%>"><%=list_expenditure.get(i)%></option><%}%></select><selectname="rebate"class="wenbenkuang"id="rebate"><optionvalue="*">--請選擇--</option><%for(inti=0;i<list_rebate.size();i++){%><optionvalue="<%=list_rebate.get(i)%>"><%=list_rebate.get(i)%></option><%}%></select><selectname="area"class="wenbenkuang"id="area"><optionvalue="*">--請選擇--</option><%for(inti=0;i<list_area.size();i++){%><optionvalue="<%=list_area.get(i)%>"><%=list_area.get(i)%></option><%}%></select>在制作通過Hibernate的HQL實現(xiàn)的查詢處理頁時,在獲取前臺表單提交的查詢條件前,不能再使用request對象的setCharacterEncoding()方法將編碼格式設(shè)置成“GB2312”,而是需要首先編寫一個用于進(jìn)行編碼轉(zhuǎn)換的方法toChinese(),在該方法中將字符的編碼格式轉(zhuǎn)換,該方法的返回值為編碼后的字符串。代碼如下:publicStringtoChinese(Stringstrvalue){try{if(strvalue==null){return"";}else{strvalue=newString(strvalue.getBytes("ISO8859_1"),"GBK").trim();returnstrvalue;}}catch(Exceptione){return"";}}在獲取表單信息時,調(diào)用toChinese()方法對字符的編碼給市進(jìn)行轉(zhuǎn)換,代碼如下;ChStrchStr=newChStr();Stringdish=chStr.toChinese(request.getParameter("dish"));Stringexpenditure=chStr.toChinese(request.getParameter("expenditure"));Stringrebate=chStr.toChinese(request.getParameter("rebate"));Stringarea=chStr.toChinese(request.getParameter("area"));通過HQL實現(xiàn)在獲取查詢條件組合為WHERE子句的條件表達(dá)式的方法與SQL實現(xiàn)類似,但不能再寫成“SELECT*FROM表名”了,而是“FROM持久化類名”,具體如下。 Stringhql=“fromTbCompanyInfo”+str; Listlist=MySession.createQuery(hql);通過調(diào)用createQuery()方法執(zhí)行查詢后,查詢結(jié)果將保存到list集合中,這時可以根據(jù)需要在頁面中輸出該list集合。 在實現(xiàn)表格方式顯示搜索結(jié)果時,需要判定結(jié)果集是否為空。由于結(jié)果保存在list對象中,因此可以根據(jù)list對象的size()方法返回值是否為0來判斷,如果為0將輸出“沒有符合條件的數(shù)據(jù)”,否則通過for循環(huán)以表格形式輸出搜索結(jié)果。關(guān)鍵代碼和效果圖4-3如下。 <%if(list.size()==0){out.println("沒有符合條件的數(shù)據(jù)!");}else{%><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdwidth="2%"> </td><td><tablewidth="100%"border="0"cellpadding="0"cellspacing="1"bgcolor="#E7AE41"><tr> ……… </tr> <%for(inti=0;i<list.size();i++){ c=(TbCompanyInfo)list.get(i); id=c.getId();%><tr>……</tr><%}%></table></td><tdwidth="2%"> </td></tr></table><% }%> <%break;/**GeneratedbyMyEclipseStruts*Templatepath:templates/java/JavaClass.vtl*/packageorg.mmxbb.exam.business.exam;importjava.io.File;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.actions.DispatchAction;importorg.apache.struts.upload.FormFile;/***MyEclipseStrutsCreationdate:09-08-2008*XDocletdefinition:*@struts.actionpath="/file"name="fileForm"parameter="op"scope="request"validate="true"*@struts.action-forwardname="ok"path="/index.jsp"publicclassFileActionextendsDispatchAction{ /** *Methodexecute * *@parammapping *@paramform *@paramrequest *@paramresponse *@returnActionForward *@throwsException */ publicActionForwarddoUpLoad(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ FileFormfileForm=(FileForm)form;//TODOAuto-generatedmethodstub StringclassString=SearchResourceAction.class.getResource("/").getPath(); FileclassDir=newFile(classString); System.out.println("classDir"+classDir.getAbsolutePath()); Fileapp=classDir.getParentFile().getParentFile(); FileresourceDir=newFile(app,"resource"); System.out.println(resourceDir); System.out.println("上傳路徑:"+resourceDir); FormFilefile=fileForm.getFile(); System.out.println("文件名:"+file.getFileName()); System.out.println("文件大小"+file.getFileSize()); //ifnofilewasuploaded(e.g.firstformload),thendisplayView if(file==null){ returnmapping.findForward("ok"); } //獲取文件名和大小 StringfileName=file.getFileName(); StringfileSize=Integer.toString(file.getFileSize())+"bytes"; //直接將文件上傳但不好有時文件讀取不了 //OutputStreamstreamOut=newFileOutputStream(upPath+"/" //+fileName); //streamOut.write(file.getFileData()); //streamOut.close(); InputStreamstreamIn=file.getInputStream(); //設(shè)置輸出流(路徑) Filefolder=newFile(resourceDir,fileForm.getFolder()); if(!folder.exists()){ folder.mkdirs(); } OutputStreamstreamOut=newFileOutputStream(newFile(folder,fileName)); intbytesRead=0; byte[]buffer=newbyte[8192]; longtotal=0; //根據(jù) while(total<file.getFileSize()){ //每次讀取buffer大小 bytesRead=streamIn.read(buffer); //將文件寫入 streamOut.write(buffer,0,bytesRead); //累加每次寫入的Size total+=bytesRead; } streamIn.close(); streamOut.close(); request.getSession().setAttribute("fName",fileName); returnmapping.findForward("ok"); }}packageorg.mmxbb.exam.business.exam;importjava.util.*;importjavax.servlet.http.*;importorg.apache.struts.action.*;importorg.mmxbb.exam.bean.*;publicclassExamTestActionFormextendsActionForm{publicExamTestActionForm(){try{jbInit();}catch(Exceptionex){ex.printStackTrace();}}privateArrayListsingleQ=newArrayList();privateArrayListmultiQ=newArrayList();privateArrayListfitinQ=newArrayList();privateArrayListanswerQ=newArrayList();privateExaminationPaperexamPaper=newExaminationPaper();privateStringt_id="";privateStringt_begin="";privateStringt_end="";privatefloate_manual=0;privatefloate_auto=0;privatefloatt_total=0;privateStringexaminee_name;privateString[]t_answer=null;//newString[10];privateString[][]multi_answer=null;privateStringe_id;privateStringexaminee_id;publicvoidsetT_answerLen(intlen){this.t_answer=newString[len];}publicvoidsetMultiLen(intlen){this.multi_answer=newString[len][5];}publicStringgetT_answer(inti){returnt_answer[i];}publicvoidsetT_answer(inti,Stringt_answer){this.t_answer[i]=t_answer;}publicStringgetMulti_answer(inti){StringBufferT_answer=newStringBuffer();String[]answer=multi_answer[i];for(intj=0;j<answer.length;j++){T_answer.append(answer[j]);}returnT_answer.toString();}publicvoidsetMulti_answer(inti,Stringanswer[]){this.multi_answer[i]=answer;}publicstaticvoidmain(String[]argus){String[]q=newString[5];q[0]="A";q[1]="B";q[3]="C";q[2]="D";q[4]="E";ExamTestActionForme=newExamTestActionForm();for(inti=0;i<3;i++){e.setMulti_answer(i,q);}}publicArrayListgetAnswerQ(){returnanswerQ;}publicvoidsetAnswerQ(ArrayListanswerQ){this.answerQ=answerQ;}publicvoidsetSingleQ(ArrayListsingleQ){this.singleQ=singleQ;}publicvoidsetMultiQ(ArrayListmultiQ){this.multiQ=multiQ;}publicvoidsetFitinQ(ArrayListfitinQ){this.fitinQ=fitinQ;}publicvoidsetExamPaper(ExaminationPaperexamPaper){this.examPaper=examPaper;}publicvoidsetT_id(Stringt_id){this.t_id=t_id;}publicvoidsetT_begin(Stringt_begin){this.t_begin=t_begin;}publicvoidsetT_end(Stringt_end){this.t_end=t_end;}publicvoidsetE_manual(floate_manual){this.e_manual=e_manual;}publicvoidsetE_auto(floate_auto){this.e_auto=e_auto;}publicvoidsetT_total(floatt_total){this.t_total=t_total;}publicvoidsetExaminee_name(Stringexaminee_name){this.examinee_name=examinee_name;}publicvoidsetT_answer(String[]t_answer){this.t_answer=t_answer;}publicvoidsetMulti_answer(String[][]multi_answer){this.multi_answer=multi_answer;}publicArrayListgetFitinQ(){returnfitinQ;}publicArrayListgetMultiQ(){returnmultiQ;}publicArrayListgetSingleQ(){returnsingleQ;}publicExaminationPapergetExamPaper(){returnexamPaper;}publicStringgetT_id(){returnt_id;}publicStringgetT_begin(){returnt_begin;}publicStringgetT_end(){returnt_end;}publicfloatgetE_manual(){returne_manual;}publicfloatgetE_auto(){returne_auto;}publicfloatgetT_total(){returnt_total;}publicStringgetExaminee_name(){returnexaminee_name;}publicString[]getT_answer(){returnt_answer;}publicString[][]getMulti_answer(){returnmulti_answer;}publicStringgetE_id(){returne_id;}publicvoidsetE_id(Stringe_id){this.e_id=e_id;}publicActionErrorsvalidate(ActionMappingactionMapping,HttpServletRequesthttpServletRequest){/**@todo:finishthismethod,thisisjusttheskeleton.*/returnnull;}publicvoidreset(ActionMappingactionMapping,HttpServletRequestservletRequest){}privatevoidjbInit()throwsException{}publicStringgetExaminee_id(){returnexaminee_id;}publicvoidsetExaminee_id(Stringexaminee_id){this.examinee_id=examinee_id;}}packageorg.mmxbb.exam.business.exam;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.action.ActionForm;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.Action;importorg.mmxbb.exam.bean.QuestionInTest;importorg.mmxbb.exam.bean.TestPaper;importorg.mmxbb.exam.dao.TestPaperDAO;importorg.mmxbb.exam.dao.TestPaperDetailDAO;importorg.mmxbb.exam.util.Transformer;importjava.util.ArrayList;importjava.sql.*;publicclassSaveTestPaperActionextendsAction{publicActionForwardexecute(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequestservletRequest,HttpServletResponseservletResponse){ExamTestActionFormexamTestActionForm=(ExamTestActionForm)actionForm;ArrayListsingleQ=examTestActionForm.getSingleQ();ArrayListmultiQ=examTestActionForm.getMultiQ();ArrayListfitinQ=examTestActionForm.getFitinQ();ArrayListanswerQ=examTestActionForm.getAnswerQ();String[]answer1=examTestActionForm.getT_answer();String[]answer2=newString[multiQ.size()];Stringname="";String[]temp;StringBufferS=null;for(inti=0;i<multiQ.size();i++){S=newStringBuffer();name="multi_answer["+i+"]";temp=servletRequest.getParameterValues(name);if(temp!=null){for(intj=0;j<temp.length;j++){S.append(temp[j]);}answer2[i]=S.toString();}}Stringt_idS=examTestActionForm.getT_id();longt_id=Long.parseLong(t_idS);QuestionInTestqInTest=null;TestPaperDetailDAOtpdDAO=null;intpos=0;inti=0;floattotal=0;for(i=0;i<singleQ.size();i++){qInTest=(QuestionInTest)singleQ.get(i);floatt_value=0;if(answer1[i]!=null){if(qInTest.getQ_standard().equals(answer1[i])){t_value=qInTest.getQ_value();}}qInTest.setT_value(t_value);total+=t_value;tpdDAO=newTestPaperDetailDAO();tpdDAO.updateTestPaperDetail(t_id,qInTest.getQ_id(),answer1[i],qInTest.getT_value());}for(i=0;i<multiQ.size();i++){qInTest=(QuestionInTest)multiQ.get(i);if(answer2[i]!=null){floatt_value=(answer2[i].equals(qInTest.getQ_standard())?qInTest.getQ_value():0);qInTest.setT_value(t_value);total+=t_value;tpdDAO=newTestPaperDetailDAO();tpdDAO.updateTestPaperDetail(t_id,qInTest.getQ_id(),answer2[i],qInTest.getT_value());}else{tpdDAO=newTestPaperDetailDAO();tpdDAO.updateTestPaperDetail(t_id,qInTest.getQ_id(),"",0);}}pos=singleQ.size();for(i=0;i<fitinQ.size();i++){qInTest=(QuestionInTest)fitinQ.get(i);floatt_value=0;qInTest.setT_value(t_value);total+=t_value;tpdDAO.updateTestPaperDetail(t_id,qInTest.getQ_id(),answer1[pos+i],qInTest.getT_value());}pos=singleQ.size()+fitinQ.size();for(i=0;i<answerQ.size();i++){qInTest=(QuestionInTest)answerQ.get(i);floatt_value=0;qInTest.setT_value(t_value);total+=t_value;tpdDAO.updateTestPaperDetail(t_id,qInTest.getQ_id(),answer1[pos+i],qInTest.getT_value());}Transformertransformer=newTransformer();Stringt_state1=transformer.valueToId("已考完未評分");transformer=newTransformer();Stringt_state2=transformer.valueToId("已評分");TestPaperDAOtDAO=null;tDAO=newTestPaperDAO();TestPapertestPaper=tDAO.findByKey(t_id

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論