




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
無紙化考試系統(tǒng)研究與開發(fā)畢業(yè)論文無紙化考試系統(tǒng)研究與開發(fā)畢業(yè)論文 目目 錄錄 1 引言 1 2 主要技術(shù)介紹 2 2 1 JSP 技術(shù) 2 2 2 Java Bean 技術(shù) 3 2 3 JDBC 技術(shù) 4 2 4 Javascript 技術(shù) 5 2 5 SQL Server2000 數(shù)據(jù)庫 5 3 系統(tǒng)分析 6 3 1 無紙化考試系統(tǒng)的需求 6 3 2 技術(shù)可行性 6 系統(tǒng)設(shè)計 7 4 1 無紙化考試系統(tǒng)的概要設(shè)計 7 4 1 1 無紙化考試系統(tǒng)的綜合系統(tǒng)框架圖 7 4 1 2 本系統(tǒng)包含的兩個子系統(tǒng) 8 4 2 系統(tǒng)結(jié)構(gòu)設(shè)計 8 4 3 系統(tǒng)數(shù)據(jù)庫設(shè)計 9 4 4 系統(tǒng) web 服務(wù)器執(zhí)行流程 10 5 無紙化考試系統(tǒng)功能實現(xiàn) 11 5 1 數(shù)據(jù)連接 11 5 2 無紙化考試系統(tǒng)設(shè)計 12 5 2 1 數(shù)據(jù)庫連接公用模塊 12 5 2 2 首頁 index jsp 16 5 2 3 無紙化考試模塊 17 5 2 4 系統(tǒng)管理模塊 28 總結(jié) 35 參考文獻(xiàn) 36 致 謝 37 1 1 引言引言 計算機網(wǎng)絡(luò)技術(shù)的飛速發(fā)展以及計算機技術(shù)的發(fā)展及計算機的日益普及 現(xiàn)在 很多國內(nèi)外的大學(xué)和社會其他部門都已經(jīng)開設(shè)了遠(yuǎn)程教育 通過計算機網(wǎng)絡(luò)實現(xiàn)異 地教育和培訓(xùn) 從而為無紙化考試系統(tǒng)發(fā)展提供了堅實的基礎(chǔ) 現(xiàn)在 計算機硬件 技術(shù)的發(fā)展已經(jīng)達(dá)到了相當(dāng)高的水平 但是 在我國遠(yuǎn)程教育軟件的開發(fā)目前還處 于起步階段 隨著這項技術(shù)的不斷深入發(fā)展 就要求有更好 更完善的軟件系統(tǒng)應(yīng) 用到遠(yuǎn)程教育當(dāng)中去 這就給軟件設(shè)計人員提出了更高的設(shè)計要求 在二十一世紀(jì)的新時代 隨著計算機技術(shù)的發(fā)展及計算機的日益普及 基于在 線考試與無紙化辦公一樣已成為大勢所趨 無紙化考試系統(tǒng)也越來越成為學(xué)校的好 幫手 它的優(yōu)勢不但體現(xiàn)在人力上也體現(xiàn)在物力上 無紙化考試系統(tǒng)的采用自動評 閱 計分 成績存檔功能將有效地避免資源的浪費 有利于環(huán)保 減少人員 提高 效率 相比傳統(tǒng)的考試方式 無紙化考試系統(tǒng)的主要好處是一方面可以動態(tài)地管理各 種考試信息 只要準(zhǔn)備好足夠大的題庫 從該題庫中抽取一定數(shù)量的考題生成考試 試卷 從而有效地避免了考試作弊 相互抄襲的避端 另一方面 考試時間靈活 可以在規(guī)定的時間段內(nèi)的任意時間參加考試 另外計算機化的考試的最大特點是閱 卷快 系統(tǒng)可以在考試結(jié)束時當(dāng)場給考生成績 計算機閱卷給了考生最大的公平感 網(wǎng)絡(luò)考試系統(tǒng)極大地提高了教學(xué)的靈活性 現(xiàn)在在許多領(lǐng)域已經(jīng)有了廣泛的應(yīng) 用 最有影響的案例就是ETS 美國教育考試中心 舉辦的GRE 美國研究生入學(xué)考 試 的計算機化考試 它使考試由原來的每年只能有兩次參加考試的機會變成了每 個工作日都可以參加的考試 本設(shè)計講述的是一個基于SQL Server 2000 JSP javabean的無紙化考試系統(tǒng)的 綜合實現(xiàn) 該系統(tǒng)基本上可以滿足學(xué)校及現(xiàn)代信息化企業(yè)的內(nèi)部考試要求 可以實 現(xiàn)學(xué)校低成本投入 高效率辦公的宗旨 例如 一個學(xué)校如果使用了本系統(tǒng) 無需 老師閱卷 評卷 而直接由系統(tǒng)自動判卷 使老師從傳統(tǒng)的繁瑣的閱卷過程中解脫 出來 為廣大老師省去不少的時間 從而有更大的精力致力于日常的教學(xué)過程中 極大地提高了辦公效率 網(wǎng)上無紙化考試系統(tǒng)已成為時代發(fā)展的趨勢 本課題的設(shè) 計正是順應(yīng)時代潮流 為眾多師生考試中提供便捷 公平 當(dāng)今時代是一個追求公 平 公正的時代 是一個效率第一的時代 傳統(tǒng)的考試系統(tǒng)在未來的發(fā)展中逐漸退 出歷史舞臺 網(wǎng)上無紙化考試系統(tǒng)必將在未來的考試過程發(fā)揮更重要的作用 眾多 優(yōu)勢為網(wǎng)上無紙化考試系統(tǒng)在我國順利普及打下良好的基礎(chǔ) 從而使得我國的網(wǎng)絡(luò) 信息迅速普及 使得中國的高速信息化戰(zhàn)略順利進(jìn)行 2 2 主要技術(shù)介紹主要技術(shù)介紹 2 12 1 JSPJSP 技術(shù)技術(shù) JSP JavaServer Pages 是由Sun Microsystems公司倡導(dǎo) 許多公司參與一起建立的 一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn) 其網(wǎng)址為 頁HTML文件 htm html 中加入Java程序片段 Scriptlet 和JSP標(biāo)記 tag 就構(gòu)成了 JSP網(wǎng)頁 jsp Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時 首先執(zhí)行其中的程序片段 然后將執(zhí)行結(jié)果以HTML格式返回給客戶 程序片段可以操作數(shù)據(jù)庫 重新定向網(wǎng) 頁以及發(fā)送 email 等等 這就是建立動態(tài)網(wǎng)站所需要的功能 所有程序操作都在服 務(wù)器端執(zhí)行 網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果 對客戶瀏覽器的要求最低 可以實現(xiàn)無Plugin 無ActiveX 無Java Applet 甚至無Frame JSP JavaServer Pages 是一種基于Java的腳本技術(shù) 在JSP 的眾多優(yōu)點之中 其中之一是它能將 HTML 編碼從 Web 頁面的業(yè)務(wù)邏輯中有效地分離出來 用 JSP 訪問可重用的組件 如 Servlet JavaBean 和基于 Java 的 Web 應(yīng)用程序 JSP 還支持在 Web 頁面中直接嵌入 Java 代碼 可用兩種方法訪問 JSP 文件 瀏 覽器發(fā)送 JSP 文件請求 發(fā)送至 Servlet 的請求 1 JSP 文件訪問 Bean 或其它能將生成的動態(tài)內(nèi)容發(fā)送到瀏覽器的組件 圖 2 1說明了該 JSP 訪問模型 當(dāng) Web 服務(wù)器接收到一個 JSP 文件請求時 服務(wù)器 將請求發(fā)送至 WebSphere應(yīng)用服務(wù)器 WebSphere應(yīng)用服務(wù)器 對 JSP 文件進(jìn)行語 法分析并生成 Java 源文件 被編譯和執(zhí)行為 Servlet Java 源文件的生成和編譯 僅在初次調(diào)用 Servlet 時發(fā)生 除非已經(jīng)更新了原始的 JSP 文件 在這種情況下 WebSphere應(yīng)用服務(wù)器 將檢測所做的更新 并在執(zhí)行它之前重新生成和編譯 Servlet 瀏覽器發(fā)送 JSP 文件請求如圖2 1所示 圖 2 1 瀏覽器發(fā)送 JSP 文件請求 2 發(fā)送至 Servlet 的請求生成動態(tài)內(nèi)容 并調(diào)用 JSP 文件將內(nèi)容發(fā)送到瀏覽 器 圖2 2說明了該訪問模型 該訪問模型使得將內(nèi)容生成從內(nèi)容顯示中分離出來更 為方便 WebSphere應(yīng)用服務(wù)器支持 HttpServiceRequest 對象和 HttpServiceResponse 對象的一套新方法 這些方法允許調(diào)用的 Servlet 將一個對象 放入 通常是一個 Bean 請求對象中 并將該請求傳遞到另一個頁面 通常是一個 JSP 文件 以供顯示 調(diào)用的頁面從請求對象中檢索 Bean 并用 JSP 來生成客戶 機端的 HTML 發(fā)送至 Servlet 的請求如圖2 2所示 圖 2 2 發(fā)送至 Servlet 的請求 2 22 2 JavaJava BeanBean 技術(shù)技術(shù) 簡單地說 JavaBean是用Java語言描述的軟件組件模型 其實際上是一個類 這 些類遵循一個接口格式 以便于使函數(shù)命名 底層行為以及繼承或?qū)崿F(xiàn)的行為 可 以把類看作標(biāo)準(zhǔn)的JavaBean組件進(jìn)行構(gòu)造和應(yīng)用 JavaBean一般分為可視化組件和 非可視化組件兩種 可視化組件可以是簡單的GUI元素 如按鈕或文本框 也可以 是復(fù)雜的 如報表組件 非可視化組件沒有GUI表現(xiàn)形式 用于封裝業(yè)務(wù)邏輯 數(shù) 據(jù)庫操作等 其最大的優(yōu)點在于可以實現(xiàn)代碼的可重用性 JavaBean又同時具有以 下特性 1 易于維護 使用 編寫 2 可實現(xiàn)代碼的重用性 3 可移植性強 但僅限于Java工作平臺 4 便于傳輸 不限于本地還是網(wǎng)絡(luò) 5 可以以其他部件的模式進(jìn)行工作 對于有過其他語言編程經(jīng)驗的讀者 可以將其看作類似微軟的ActiveX的編程組 件 但是區(qū)別在于JavaBean是跨平臺的 而ActiveX組件則僅局限于Windows系統(tǒng) 總之 JavaBean比較適合于那些需要跨平臺的 并具有可視化操作和定制特性的軟 件組件 avaBean組件與EJB Enterprise JavaBean 企業(yè)級JavaBean 組件完全不同 EJB 是J2EE的核心 是一個用來創(chuàng)建分布式應(yīng)用 服務(wù)器端以及基于Java應(yīng)用的功 能強大的組件模型 JavaBean組件主要用于存儲狀態(tài)信息 而EJB組件可以存儲業(yè)務(wù) 邏輯 JavaBean是描述Java的軟件組件模型 有點類似于Microsoft的COM組件概念 在Java模型中 通過JavaBean可以無限擴充Java程序的功能 通過JavaBean的組合可 以快速的生成新的應(yīng)用程序 對于程序員來說 最好的一點就是JavaBean可以實現(xiàn) 代碼的重復(fù)利用 另外對于程序的易維護性等等也有很重大的意義 JavaBean通過 Java虛擬機 Java Virtual Machine 可以得到正確的執(zhí)行 運行JavaBean最小的需求是 JDK1 1或者以上的版本 JavaBean傳統(tǒng)的應(yīng)用在于可視化的領(lǐng)域 如AWT下的應(yīng)用 自從Jsp誕生后 JavaBean更多的應(yīng)用在了非可視化領(lǐng)域 在服務(wù)器端應(yīng)用方面表現(xiàn) 出來了越來越強的生命力 使用JavaBean的原因是程序中往往會有大量重復(fù)使用的段落 JavaBean就是為 了能夠重復(fù)使用而設(shè)計的程序段落 而且這些段落并不只服務(wù)于某一個程序 而且 每個JavaBean都具有特定功能 當(dāng)需要這個功能的時候就可以調(diào)用相應(yīng)的 JavaBean 從這個意義上來講 JavaBean大大簡化了程序的設(shè)計過程 也方便了其 他程序的重復(fù)使用 2 32 3 JDBCJDBC 技術(shù)技術(shù) JDBC API用于連接Java應(yīng)用程序與各種關(guān)系數(shù)據(jù)庫 這使得人們在建立客戶 服 務(wù)器應(yīng)用程序時 通常把Java作為編程語言 把任何一種瀏覽器作為應(yīng)用程序的友 好界面 把Internet或Intranet作為網(wǎng)絡(luò)主干 把有關(guān)的數(shù)據(jù)庫作為數(shù)據(jù)庫后端 以下 是使用JDBC的優(yōu)缺點 優(yōu)點如下 1 JDBC API與ODBC十分相似 有利于用戶理解 2 JDBC使得編程人員從復(fù)雜的驅(qū)動器調(diào)用命令和函數(shù)中解脫出來 可以致力 于應(yīng)用程序中的關(guān)鍵地方 3 JDBC支持不同的關(guān)系數(shù)據(jù)庫 使得程序的可移植性大大加強 4 用戶可以使用JDBC ODBC橋驅(qū)動器將JDBC函數(shù)調(diào)用轉(zhuǎn)換為ODBC 5 JDBC API是面向?qū)ο蟮?可以讓用戶把常用的方法封裝為一個類 備后用 缺點如下 6 使用JDBC 訪問數(shù)據(jù)記錄的速度會受到一定程度的影響 7 JDBC結(jié)構(gòu)中包含了不同廠家的產(chǎn)品 這就給更改數(shù)據(jù)源帶來了很大的麻煩 2 42 4 JavascriptJavascript 技術(shù)技術(shù) 為了使網(wǎng)頁能夠具有交互性 能夠包含更多活躍的元素 就有必要在網(wǎng)頁中嵌 入其它的技術(shù) 如 Javascript VBScript Document Object Model 文件目標(biāo)模塊 Layers 和 Cascading Style Sheets CSS CSS 和 Lyaer 圖層 技術(shù)已作過專題介 紹 因此在這里主要講 Javascript 那么 Javascript 是什么呢 Javascript 就是適應(yīng)動 態(tài)網(wǎng)頁制作的需要而誕生的一種新的編程語言 如今越來越廣泛地使用于 Internet 網(wǎng) 頁制作上 Javascript 是由 Netscape 公司開發(fā)的一種腳本語言 scripting language 或者稱為描述語言 在 HTML 基礎(chǔ)上 使用 Javascript 可以開發(fā)交互式 Web 網(wǎng)頁 Javascript 的出現(xiàn)使得網(wǎng)頁和用戶之間實現(xiàn)了一種實時性的 動態(tài)的 交互性的關(guān)系 使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容 運行用 Javascript 編寫的程序需要 能支持 Javascript 語言的瀏覽器 Netscape 公司 Navigator 3 0 以上版本的瀏覽器都 能支持 Javascript 程序 微軟公司 Internet Explorer 3 0 以上版本的瀏覽器基本上支 持 Javascript 微軟公司還有自己開發(fā)的 Javascript 稱為 JScript Javascript 和 Jscript 基本上是相同的 只是在一些細(xì)節(jié)上有出入 Javascript 短小精悍 又是在 客戶機上執(zhí)行的 大大提高了網(wǎng)頁的瀏覽速度和交互能力 同時它又是專門為制作 Web 網(wǎng)頁而量身定做的一種簡單的編程語言 雖然 在 Dreamweaver 的 Behaviors 可以為我們方便地使用 Javascript 程序而不 用編寫代碼 但我們自己了解了 Javascript 的編程方法后 將能更加方便靈活地應(yīng)用 也使 Javascript 的代碼更簡練 本專題通過對一系列典型程序的剖析 使你快速地掌 握 Javascript 的編程技巧 設(shè)計出質(zhì)量上乘的動態(tài)網(wǎng)頁打下堅實的基礎(chǔ) 2 52 5 SQLSQL Server2000Server2000 數(shù)據(jù)庫數(shù)據(jù)庫 SQL Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng) DBMS 它最初 是由Microsoft Sybase和Ashton Tate三家公司共同開發(fā)的 并于1988年推出了第一 個OS 2版本 SQL Server近年來不斷更新版本 1996年 Microsoft 推出了SQL Server 6 5版本 1998年 SQL Server 7 0版本和用戶見面 SQL Server 2000是 Microsoft公司于2000年推出的最新版本 3 3 系統(tǒng)分析系統(tǒng)分析 3 13 1 無紙化考試系統(tǒng)的需求無紙化考試系統(tǒng)的需求 無紙化考試系統(tǒng)是在網(wǎng)上模擬考試的應(yīng)用程序 它維護著一個數(shù)據(jù)庫 存儲著 考生 題庫 管理員等信息 主要包括教師出題 學(xué)生無紙化考試 自動判卷以及 相關(guān)的系統(tǒng)維護功能 3 23 2 技術(shù)可行性技術(shù)可行性 現(xiàn)代社會 由于網(wǎng)絡(luò)技術(shù)的飛速發(fā)展 從而給我們的社會生活帶來的極大的方 便 而無紙化考試系統(tǒng)網(wǎng)站的建設(shè) 使得用戶可以不出遠(yuǎn)門 在家庭或網(wǎng)吧 就可 以完成一項考試 從而免去不必要的麻煩 本網(wǎng)站建設(shè)使用了JSP開發(fā)技術(shù) SQL SERVER大型數(shù)據(jù)庫 JAVA開發(fā)技術(shù) 從而實現(xiàn)了無紙化考試系統(tǒng)的實用性和可靠 性 本網(wǎng)站運用JSP技術(shù)和SQL SERVER數(shù)據(jù)庫原理 我們開發(fā)的一個無紙化考試系 統(tǒng)網(wǎng)站 該網(wǎng)站主要采用JSP HTML JavaScript SQL SERVER2000等技術(shù)和工具 整體設(shè)計包括前臺頁面的設(shè)計與后臺的開發(fā) 并將兩者很好的結(jié)合在一起 實現(xiàn)了無 紙化考試系統(tǒng)的可用性 系統(tǒng)設(shè)計系統(tǒng)設(shè)計 4 14 1 無紙化考試系統(tǒng)的概要設(shè)計無紙化考試系統(tǒng)的概要設(shè)計 4 1 14 1 1 無紙化考試系統(tǒng)的綜合系統(tǒng)框架圖無紙化考試系統(tǒng)的綜合系統(tǒng)框架圖 在 線 考 試 系 統(tǒng) 管 理 員 考 生 考生信息管理 考題管理 判卷系統(tǒng) 成績查詢 自動選題 考生登錄 管理員添加 圖 4 1 綜合系統(tǒng)框架圖 其功能模塊大致分為 1 考生信息模塊 考生信息是由管理員用戶添加生成的 其中包括對考生信息的添加和刪除功能 2 題目管理模塊 主要包括對考試題目的添加和修改以及刪除的功能 3 成績查詢功能 其功能包括對所有考生成績的顯示以及各個分?jǐn)?shù)段考生人數(shù)的統(tǒng)計 4 管理員添加 其功能是添加和刪除后臺管理員 5 無紙化考試模塊 考生考試主要經(jīng)過三個步驟 首先考生登錄 登錄成功后進(jìn)入考試 將所有問 題答完后提交將成績顯示出來 4 1 24 1 2 本系統(tǒng)包含的兩個子系統(tǒng)本系統(tǒng)包含的兩個子系統(tǒng) 1 學(xué)生登錄界面的子系統(tǒng)流程圖 見圖4 2 考生登錄 準(zhǔn)備考試 答題并提交 查看考試結(jié)果 圖 4 2 學(xué)生登錄界面的系統(tǒng)流程圖 2 后臺管理的子系統(tǒng)功能模塊圖 見圖4 3 管理員 學(xué) 生 管 理 考 題 管 理 成 績 查 詢 管 理 員 添 加 圖 4 3 后臺管理的系統(tǒng)功能模塊圖 4 24 2 系統(tǒng)結(jié)構(gòu)設(shè)計系統(tǒng)結(jié)構(gòu)設(shè)計 JSP服務(wù)器響應(yīng)客戶端的工作過程 如圖4 4所示 圖 4 4 本系統(tǒng)的概要邏輯表示圖 Sql2000 Java bean 技術(shù) JSP 技術(shù) JavaScript 技術(shù) 數(shù)據(jù) 客戶端 服務(wù)器 數(shù)據(jù)庫 本系統(tǒng)屬于跨平臺的多層Web應(yīng)用程序 在開發(fā)過程中采用了Java的跨平臺解 決方案作為程序的整體開發(fā)框架 從整體上采用了B S結(jié)構(gòu) 分成三層 即 客戶層 服務(wù)器層 數(shù)據(jù)庫層 其中數(shù)據(jù)庫層采用了中型SQL數(shù)據(jù)庫服務(wù)器SQL2000 檢索 速度快是它最大的優(yōu)勢 以完成對數(shù)據(jù)的存儲和維護 在服務(wù)器層中采用了Java中 的JavaBean技術(shù)作為中間層開發(fā)手段和JSP技術(shù)用以完成對Java服務(wù)器頁面的調(diào)用 在客戶層中采用了JavaScript等技術(shù)來實現(xiàn)復(fù)雜的動態(tài)界面展示 4 34 3 系統(tǒng)數(shù)據(jù)庫設(shè)計系統(tǒng)數(shù)據(jù)庫設(shè)計 根據(jù)用戶角色和系統(tǒng)實現(xiàn)的功能 本系統(tǒng)數(shù)據(jù)庫設(shè)計了一個數(shù)據(jù)庫Exam數(shù)據(jù)庫 采用的數(shù)據(jù)庫是Microsoft SQL SERVER 包含如下幾個表文件 admin表 用于管理員的管理 admin表的結(jié)構(gòu) 如表4 1所示 表 4 1 admim 的結(jié)構(gòu) 字段名稱類型可否為空長度缺省值主鍵說明 idbigintN8 是管理員 id namevarcharN50 管理員用戶名 passwordvarcharN50 管理員密碼 score表 用于實現(xiàn)對學(xué)生成績的查詢 score表的結(jié)構(gòu) 如表4 2所示 表 4 2 score 的結(jié)構(gòu) 字段名稱類型可否為空長度缺省值主鍵說明 idbigintN8 是Id 號 S idbigintN8 學(xué)生 id scorebigintN8 學(xué)生成績 Student表 用于實現(xiàn)對學(xué)生信息的添加 修改和刪除 Student表的結(jié)構(gòu) 如表 4 3所示 表 4 3 Student 的結(jié)構(gòu) 字段名稱類型可否為空長度缺省值主鍵說明 idbigintN8 是Id 號 S idbigintN8 學(xué)生 id S namevarcharN50 學(xué)生姓名 S pswvarcharN20 學(xué)生密碼 sexcharY10 學(xué)生性別 majorvarcharY50 學(xué)生系別 gradevarcharY50 學(xué)生年級 Tiku表 用于實現(xiàn)對題庫的添加 修改和刪除操作 Tiku表的結(jié)構(gòu) 如表4 4所 示 表 4 4 Tiku 的結(jié)構(gòu) 字段名稱類型可否為空長度缺省值主鍵說明 idbigintN8 是問題 Id 號 questionvarcharN300 問題 keyavarcharN200 選項 A keybvarcharN200 選項 B keycvarcharN200 選項 C keydvarcharN200 選項 D answercharN10 答案 4 44 4 系統(tǒng)系統(tǒng) webweb 服務(wù)器執(zhí)行流程服務(wù)器執(zhí)行流程 圖 4 5 本系統(tǒng) Web 服務(wù)器詳細(xì)執(zhí)行流程 如上圖4 5所示 本次畢業(yè)設(shè)計是用典型的B S Browser Server 結(jié)構(gòu)完成的 它的整個框架分為三層 客戶層 服務(wù)器層 數(shù)據(jù)層 在數(shù)據(jù)層采用了SQL Server 2000數(shù)據(jù)庫 服務(wù)器層使用了Java的JavaBean和JSP技術(shù) 客戶層使用了JavaScript相 關(guān)技術(shù) 整個程序開始運行后 處于服務(wù)器層層Apache Tomcat應(yīng)用服務(wù)器支持的 Servlet會在得到前臺頁面請求時通過JDBC向后臺數(shù)據(jù)庫通過動態(tài)查詢并索取數(shù)據(jù) 然后將結(jié)果由JSP頁面通過HTTP協(xié)議向前臺發(fā)送 通過瀏覽器根據(jù)接受到的JSP頁面 傳遞過來的結(jié)果將考試信息展示在前臺 在JSP頁面的制作上 為了增加特效 我又 編寫了幾段JavaScript代碼 Javascript Jsp 頁面轉(zhuǎn)化 Jsp 文件 JavaBean 數(shù)據(jù)的讀寫 數(shù)據(jù)源 客戶端 服務(wù)器端 數(shù)據(jù)端 5 5 無紙化考試系統(tǒng)功能實現(xiàn)無紙化考試系統(tǒng)功能實現(xiàn) 5 15 1 數(shù)據(jù)連接數(shù)據(jù)連接 數(shù)據(jù)庫作為無紙化考試系統(tǒng)的核心 在建立之后要和前臺應(yīng)用程序建立連接才 能發(fā)揮它的作用 5 1 1建立數(shù)據(jù)庫連接建立數(shù)據(jù)庫連接 JSP程序通過JDBC來連接和操作數(shù)據(jù)庫 JDBC是一組API 可以協(xié)助編程人員 輕松地處理程序與數(shù)據(jù)庫之間的連接和操作動作 進(jìn)行數(shù)據(jù)庫連接時 需要使用java sql套件中的類 在正式連接數(shù)據(jù)庫時 首先 必須使用java sql Class類中的forName方法加載驅(qū)動程序類 語法如下 Class forName String 驅(qū)動程序類描述 對于SQL SERVER數(shù)據(jù)庫 使用如下語句加載驅(qū)動程序類 Class forName com microsoft jdbc sqlserver SQLServerDriver newInstance 注釋 對于tomcat 就確保msbase jar mssqlserver jar msutil jar三個文件拷貝到 tomcat路徑下的comm lib目錄下 加載驅(qū)動程序類后 就可以使用DriverManager類來打開數(shù)據(jù)庫連接 其語法如 下 Connection 連接對象 DriverManager getConnection String 數(shù)據(jù)庫名稱 String 用戶名稱 String 用戶密碼 對于SQL Server數(shù)據(jù)庫 一個示例如下 String url jdbc microsoft sqlserver localhost 1433 DatabaseName exam username sa password sa Connection conn DriverManager getConnection url id passworcd 相應(yīng)地 關(guān)閉數(shù)據(jù)庫連接使用連接對象的close方法 其語法如下 連接對象 close 5 5 1 1 2 2安全策略安全策略 本系統(tǒng)用兩個方法來加強用系統(tǒng)的安全性 首先 使用Session限制未經(jīng)登錄的訪問 當(dāng)考生從登錄界面登錄 JSP程序進(jìn)行 用戶名稱和密碼的檢查后 如果數(shù)據(jù)符合則成功登錄 將用戶的ID值寫到Session對 象中 對以后的頁面都會先檢查Session對象保存的數(shù)據(jù) 從而判斷用戶是否可瀏覽 頁面 以達(dá)到安全控制的目的 如果檢查失敗都會導(dǎo)向登錄界面 要求用戶重新登 錄 第二 防止考生任意刷新頁面 起到了防止作弊的作用 5 25 2 無紙化考試系統(tǒng)設(shè)計無紙化考試系統(tǒng)設(shè)計 我們的無紙化考試系統(tǒng)由一個公用模塊和兩個主要功能模塊組成 1 數(shù)據(jù)庫連接公用模塊 2 無紙化考試模塊 考生登錄系統(tǒng)后 進(jìn)行無紙化考試 提交試卷后自動判卷 顯示成績 3 系統(tǒng)管理模塊 包括考生信息 題目 分?jǐn)?shù)查詢和管理員添加 5 2 15 2 1 數(shù)據(jù)庫連接公用模塊數(shù)據(jù)庫連接公用模塊 在本考試系統(tǒng)中 我們把數(shù)據(jù)庫參數(shù)寫入一個名為jdbcsql properies的配置文件 中 這樣在程序運行時如果環(huán)境變化 可以方便地修改數(shù)據(jù)庫配置 jdbcsql properies內(nèi)容如下 driver com microsoft jdbc sqlserver SQLServerDriver 驅(qū)動程序 url jdbc microsoft sqlserver localhost 1433 DatabaseName exam 連接字符串 username sa 用戶名 password 密碼 javaBean是一種基于java的軟件組件 JSP對于在Web應(yīng)用中集成JavaBean組 件提供了完善的支持 這種支持不僅能縮短開發(fā)時間 可以直接利用通過測試可信 任的已有組件 避免了重復(fù)開發(fā) 也為JSP應(yīng)用帶來了更多的可伸縮性 JavaBean 組件可以用來執(zhí)行復(fù)雜的計算任務(wù) 在本例中 我們通過使用縮寫JavaBean讀取配 置文件 jdbcsql properies 來連接數(shù)據(jù)庫 文件名為DBConnectionBean java的代碼 如所示 DBConnectionBean java 用在jsp網(wǎng)頁里的數(shù)據(jù)庫橋接bean package examinline import java util import java sql import java io public class DBConnectionBean 成員變量初始化 定義變量并初始化 Connection dbcon null 數(shù)據(jù)庫連接 Statement stmt null JDBC聲明 ResultSet result null 記錄集 String driver 數(shù)據(jù)庫驅(qū)動程序 String url 連接字符串 String user 用戶名 String password 密碼 public DBConnectionBean try 配置輸入流讀取配置文件 InputStream fis getClass getResourceAsStream jdbcsql properties Properties ps new Properties ps load fis 讀取配置文件參數(shù) driver ps getProperty driver url ps getProperty url user ps getProperty username password ps getProperty password Class forName this driver 注冊數(shù)據(jù)庫驅(qū)動程序 catch Exception e System out println e 為方便調(diào)試程序 出錯打印e就知道在什么地方出錯了 設(shè)置驅(qū)動程序 public void setdrivername try Class forName this driver 注冊數(shù)據(jù)庫驅(qū)動程序 System out println 加載數(shù)據(jù)驅(qū)動成功 輸出結(jié)果 方便調(diào)試 catch ClassNotFoundException e System out println jdbc driver error 拋出異常 加載數(shù)據(jù)驅(qū)動失敗 打開連接 public Connection getopenConnection try 建立數(shù)據(jù)庫連接 this dbcon DriverManager getConnection this url this user this password System out println 橋接數(shù)據(jù)庫成功 catch SQLException e2 System out println e2 異常處理 return dbcon executeQuery方法用于進(jìn)行記錄的查詢操作 入口參數(shù)為sql語句 返回 ResultSet對象 public ResultSet executeQuery String query throws SQLException this stmt dbcon createStatement 創(chuàng)建一個JDBC聲明 this result stmt executeQuery query 獲得SQL指令執(zhí)行返回結(jié)果 return result executeUpdate方法用于進(jìn)行add或者update記錄的操作 入口參數(shù)為SQL語句 成功返回true 否則為false public void executeUpdate String query throws SQLException this stmt dbcon createStatement 創(chuàng)建一個JDBC聲明 stmt executeUpdate query 執(zhí)行指令 if stmt null stmt close 操作成功時關(guān)閉聲明 根據(jù)列號讀取數(shù)據(jù) 入口參數(shù)為int型數(shù)據(jù)表列號 返回string類型的數(shù)據(jù) public String getData int index throws SQLException return result getString index 根據(jù)列號讀取數(shù)據(jù) 入口參數(shù)為int型數(shù)據(jù)表列號 返回int類型的數(shù)據(jù) public int getIntData int index throws SQLException return result getInt index 根據(jù)列號讀取數(shù)據(jù) 入口參數(shù)為int型數(shù)據(jù)表列號 返回float類型的數(shù)據(jù) public float getFltData int index throws SQLException return result getFloat index 判斷數(shù)據(jù)庫中的記錄是否已到記錄尾 返回值為boolean值 若到記錄尾 返回值為false 否則為true public boolean next throws SQLException return result next 清空SQL指令執(zhí)行結(jié)果 public void resetResult throws SQLException this result null 關(guān)閉數(shù)據(jù)庫連接 關(guān)閉JDBC聲明 清空結(jié)果 public void close throws SQLException if dbcon null dbcon close if stmt null stmt close if result null result close 系統(tǒng)公共函數(shù) 實現(xiàn)字符的替換 public void finalize throws Throwable this close public String replaceString String str 轉(zhuǎn)換入口參數(shù)String類型的str為數(shù)組 char tempArray str toCharArray int iCurr new int 10 int j 0 for int i 0 i tempArray length i int temp int tempArray i if temp 92 iCurr j i j final int temp2 j 1 String strArray new String temp2 strArray 0 str substring 0 iCurr 0 strArray temp2 1 str substring iCurr j 1 1 for int m 1 m strArray length 1 m strArray m str substring iCurr m 1 1 iCurr m str for int k 0 k strArray length 1 k str str strArray k 5C str str strArray temp2 1 return str 5 2 25 2 2 首頁首頁 index jspindex jsp 考試系統(tǒng)首界頁圖5 1所示 圖5 1考試系統(tǒng)首界頁 5 2 35 2 3無紙化考試模塊無紙化考試模塊 該模塊實現(xiàn)用戶登錄 信息確認(rèn) 考試 顯示成績等功能 該部分文件包括 Login jsp 考試登錄頁面 Reading jsp 考生信息顯示 Begin jsp 開始考試 Result jsp 顯示考試成績 考生登錄頁面是考生登錄系統(tǒng)第一個頁面 是進(jìn)入考試狀態(tài)的接口 在考生登 錄頁面 login jsp 中 提供給考生進(jìn)入考試時所必須的ID和密碼 考生登錄 處輸 入考生ID和密碼 然后按 登錄 按鈕轉(zhuǎn)到reading jsp頁面對ID和密碼進(jìn)行驗證 Login jsp代碼執(zhí)行 其顯示界面圖5 2所示 圖 5 2 考生登錄界面 在登錄頁面中 我們用JavaScript創(chuàng)建一個數(shù)據(jù)檢查函數(shù)numericCineck 來檢查 考生的 ID 考生ID只能為數(shù)字 這樣可以把一部分檢測工作放在客戶端來執(zhí)行 降低 服務(wù)器的壓力 下面給出這段javaScript的代碼 function numericCheck 取得頁面中ID輸入文本框中的值 nr1 document formloginD userid value flg 0 str spc arw for var i 0 i nr1 length i cmp 0123456789 tst nr1 substring i i 1 if cmp indexOf tst 1 str 和空格 alert 這里只接受數(shù)字 發(fā)現(xiàn) flg 個不可接受的字符 n str return false 相應(yīng)地在login jsp代碼中的ID文本框中做如下更改 其中onblur numericCheck 的作用為 當(dāng)輸入完ID并且ID文本框失去焦點時調(diào) 用numericCheck 函數(shù)進(jìn)行驗證 以檢驗考生輸入的ID是否符合要求 在本程序中判 斷輸入文本框的是否全為數(shù)字 登錄頁面login jsp程序不包含和數(shù)據(jù)庫的交互操作 因為主要代碼為html和 javascript 對用戶登錄信息進(jìn)行驗證的頁面在reading jsp中 如果用戶存在密碼正確 則顯示該考生資料 然后單擊按鈕進(jìn)入begin jsp界面 Reading jsp代碼如下 設(shè)置數(shù)據(jù)庫驅(qū)動程序 登陸成功 您的相關(guān)信息 學(xué)號 姓名 性別 年級 專業(yè) input name S id type hidden id S id value input name S name type hidden id S name value 你已經(jīng)參加過考試了 你的上次考試成績?yōu)?警告 答題過程不能中斷 如果您試圖進(jìn)行作弊或 者超過答題時間 您將被強令在24小時后進(jìn)行補考 補考時間 到期前 您不能參加考試 如果您準(zhǔn)備完畢 點按鈕開始答題 Else 若用戶名不存在或者用戶密碼錯誤 給出登錄錯誤信息返回重新登錄 out print 用戶ID不存在或密碼錯誤 返回 考生成功登錄界面如圖5 3所示 圖 5 3 考生成功登錄界面 3 考試頁面begin jsp實現(xiàn)隨機出題 防止刷新頁面 通過javaScript來實現(xiàn) 超時處理 通過調(diào)用Servlet來實現(xiàn) 和考試時間顯示 通過javaScript來實現(xiàn) 等功 能 在考試開始頁面中將會隨機抽取50道題供考生做答 并且在考生進(jìn)入答題時即 生成 為了防止考生反復(fù)刷新頁面 進(jìn)行重新選題 利用客戶端javaScript限制考生 刷新 采用cookie存儲用戶登錄時間和url 比較url如果發(fā)現(xiàn)相同值則認(rèn)為用戶登錄后 刷新了頁面 拋出錯誤 其代碼實現(xiàn)如下 Begin var cookID 獲取cookie值 var username GetCookie username 從cookie中讀取用戶名 pathname location pathname 讀取頁面url myDomain pathname substring 0 pathname lastIndexOf 截取當(dāng)前路徑 的上url var largeExpDate new Date 定義時間變量 largeExpDate setTime largeExpDate getTime 24 3600 1000 if username cookID 判斷考生是否刷新頁面 若刷新則進(jìn)行錯誤處理 window alert 警告 你曾經(jīng)對網(wǎng)頁進(jìn)行了刷新 屬于作弊行為 24小時內(nèi)你被 禁止參加考試 window location servlet CTimeOut chaoshiID 1 username cookID 存儲當(dāng)前用戶名 SetCookie username username largeExpDate myDomain function getCookieVal offset var endstr document cookie indexOf offset 取得客戶端的cookie值 if endstr 1 endstr document cookie length return unescape document cookie substring offset endstr function GetCookie name 取得客戶端cookie名稱 var arg name var alen arg length var clen document cookie length var i 0 while i 2 argv 2 null var path argc 3 argv 3 null var domain argc 4 argv 4 null var secure argc 5 argv 5 false document cookie name escape value expires null expires expires toGMTString path null path path domain null domain domain secure true secure End 用戶登錄系統(tǒng)答題時間超過預(yù)定時間后會顯示答題超時 我們采用Servlet處理 代碼如下 CTimeOut java 驗證密碼 驗證是否以參加考試 傳送參數(shù) import java io import javax servlet import javax servlet http import java util public class CTimeOut extends HttpServlet 定義doPost方法用來接受數(shù)據(jù) public void doGet HttpServletRequest req HttpServletResponse res throws ServletException IOException 定義輸出流 req setCharacterEncoding gb2312 設(shè)置輸入編碼格式 res setContentType text html charset gb2312 設(shè)置輸出編碼格式 PrintWriter out res getWriter 定義輸出流 String chaoshiID req getParameter chaoshiID 取得url參數(shù) try 輸出跳轉(zhuǎn)頁 out println out println out println out println 無標(biāo)題文檔 out println out println out println out println out println out println out close catch Exception e 異常處理 System out println e toString 在考生答題過程中 要實時顯示考生答題已經(jīng)消耗時間 并在即將交卷時給出 提示 Begin jsp頁面是考生進(jìn)入答題系統(tǒng)的主界面 給考生提供了一個網(wǎng)絡(luò)答題交流 平臺 begin jsp將從tiku表中抽取50道題 在規(guī)定時間范圍內(nèi)回答完畢并提交給系統(tǒng)進(jìn) 行評分 此程序也是整個系統(tǒng)的一個難點 其中隨機數(shù)的產(chǎn)生 相同隨機數(shù)的處理 方法 Begin jsp執(zhí)行界面如圖5 4所示 圖 5 4 開始答題界面 其產(chǎn)生隨機數(shù)代碼如下 產(chǎn)生50個隨即數(shù) int randnum new int 50 boolean isexsit false for num 0 num 50 num randnum num 0 Random rand new Random while true 判斷隨機數(shù)是否重復(fù)并進(jìn)行處理 isexsit false i rand nextInt maxid for num 0 num j num if randnum num i isexsit true break 4 成績顯示頁面result jsp主要為根據(jù)考生的答題結(jié)果 計算考生成績并顯示 執(zhí)行代碼顯示界面如圖5 5所示 圖 5 5 考生成績顯示界面 計算答對題的數(shù)量 并計算分?jǐn)?shù) 代碼如下 int i int score 0 總分 String selectvalue String id for i 1 i 50 i selectvalue request getParameter select i id request getParameter h i ps conn prepareStatement select from tiku where id and answer ps setInt 1 Integer parseInt id ps setString 2 selectvalue rs ps executeQuery 判斷用戶做出的答案是否正確 如果正確score 1 if rs next score score 1 System out println id selectvalue score score score 2 每題兩分 按百分制計算 到這里 前臺考生登錄 考試模塊均已經(jīng)設(shè)計完畢 這些是最終要展現(xiàn)給用戶 的界面信息 5 2 45 2 4 系統(tǒng)管理模塊系統(tǒng)管理模塊 該模塊主要實現(xiàn)如下功能 管理員登錄 考生信息管理 題目管理 管理員添 加等功能 主要包含以下文件 Login jsp 管理員登錄頁面 Main jsp 主窗體 后臺管理的主要框架 Zuo jsp 主窗體中左邊的導(dǎo)航頁面 You jsp 主窗體中右邊的顯示頁面 Addobject jsp 對考生信息的管理 Addadmin jsp對管理員信息的管理 Addq jsp 對考題的管理 Search jsp 成績統(tǒng)計 1 管理員登錄 Login jsp管理員登錄頁面 它是后臺管理的首頁面 根據(jù)輸入的用戶名和密碼 驗證該管理員是否存在及密碼是否正確 當(dāng)輸入的用戶名和密碼正確時 自動跳轉(zhuǎn) 到main jsp頁面 從而最終選擇對考生信息 管理員信息 考題和成績的管理 管理 員登錄界面 如圖5 6所示 圖 5 6 管理員登錄界面 2 main jsp主窗體 main jsp起到一個導(dǎo)航的作用 采用框架結(jié)構(gòu) 通過它管理員可以進(jìn)行對考生信 息 管理員信息 考題和成績的管理操作并可以實現(xiàn)退出管理選項 最終實現(xiàn)退出 管理系統(tǒng) 主窗架界面 如圖5 7所示 圖 5 7 主窗架界面 3 addobject jsp考生管理 管理員選擇學(xué)生管理 可以實現(xiàn)對學(xué)生信息的管理 如考生信息的刪除和添加 操作 其中對考生的添加包括添加考生學(xué)號 密碼 姓名 性別 專業(yè)和年級等各 項 其中學(xué)號 密碼和姓名是必選項 考生管理界面 圖5 8所示 圖 5 8 考生管理界面 4 addp jsp考題管理 實現(xiàn)對考題的維護操作 用于實現(xiàn)對考題的添加和刪除操作 其中對考題的添 加包括對考試題目和四個選項的添加 考題管理界面 如圖5 9所示 圖 5 9 考題管理界面 5 addadmin jsp管理員的管理 該程序的功能是對系統(tǒng)管理員進(jìn)行維護 包括添加和刪除功能 管理員管理界 面 如圖5 10所示 圖 5 10 管理員管理界面 6 search jsp考試成績顯示 該程序的主要功能是對成績進(jìn)行統(tǒng)計 其中包括各個分?jǐn)?shù)段的人數(shù)及平均分 最高分和最低分 以及可以看到各個考生的考試成績 成績顯示界面 如圖5 11所示 圖 5 11 成績顯示界面 代碼實現(xiàn)如下 80 取得80分以上的考生數(shù) 量 ps con
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030打印計算器行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 高三物理數(shù)學(xué)試卷
- 高二廣西數(shù)學(xué)試卷
- 二診模擬考數(shù)學(xué)試卷
- 高中新人教版數(shù)學(xué)試卷
- 富平縣小升初的數(shù)學(xué)試卷
- 關(guān)于立體幾何數(shù)學(xué)試卷
- 高三西城期末數(shù)學(xué)試卷
- 新疆地方金融監(jiān)督管理局事業(yè)單位真題2024
- 高考日本數(shù)學(xué)試卷
- 鐵路集裝箱現(xiàn)狀分析報告
- 2024屆四川涼山州數(shù)學(xué)高二第二學(xué)期期末考試試題含解析
- 2023全新包干制物業(yè)服務(wù)合同
- 外賣運營培訓(xùn)手冊
- 鋁壓延加工材項目評估報告
- 多學(xué)科治療協(xié)作模式
- (環(huán)境管理)環(huán)境保護與水土保持監(jiān)理實施細(xì)則
- 國際稅收稅收管轄權(quán)
- 云南省昆明市官渡區(qū)2022-2023學(xué)年七年級下學(xué)期期末語文試題(含答案)
- yamaha貼片機操作規(guī)程
- 標(biāo)準(zhǔn)化知識競賽考試題庫(含答案)
評論
0/150
提交評論