SSM-在線考試系統(tǒng)_第1頁
SSM-在線考試系統(tǒng)_第2頁
SSM-在線考試系統(tǒng)_第3頁
SSM-在線考試系統(tǒng)_第4頁
SSM-在線考試系統(tǒng)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于B/S的在線考試系統(tǒng)湖北文理學(xué)院 在線考試系統(tǒng)實 驗 報 告專業(yè)班級: 軟工1512 姓 名: 學(xué) 號: 任課教師: 熊齊軍 2018 年 1 月 4 日目 錄1 摘要32 引言43 開發(fā)方案53.1 問題的分析53.2 設(shè)計的目的53.2.1系統(tǒng)的總體目標(biāo)63.2.2對教師的系統(tǒng)目標(biāo)63.3 方案選擇63.3.1 解決方案 Web應(yīng)用程序開發(fā)JSP技術(shù)框架技術(shù)-SSM Tomcat應(yīng)用服務(wù)器 Mysql數(shù)據(jù)庫 B/S 開發(fā)模式84.系統(tǒng)需求分析94.1任務(wù)概述94.2功能需求概述94.3各模塊需完成的功能10

2、4. 4運行環(huán)境115系統(tǒng)設(shè)計125.1指導(dǎo)思想125.1.1 B/S結(jié)構(gòu)開發(fā)思想125.2系統(tǒng)總體結(jié)構(gòu)設(shè)計135.2.1 系統(tǒng)的總體架構(gòu)135. 2.2 軟件系統(tǒng)設(shè)計原則135.2.3 數(shù)據(jù)存儲的總體設(shè)計135. 2.4 系統(tǒng)總體功能結(jié)構(gòu)設(shè)計145.3 系統(tǒng)詳細(xì)設(shè)計145.3.1系統(tǒng)結(jié)構(gòu)設(shè)計145.3.2數(shù)據(jù)庫設(shè)計156系統(tǒng)的實現(xiàn)176.1 數(shù)據(jù)庫連接的建立146.2各子系統(tǒng)模塊程序設(shè)計舉例156.2.1 用戶登陸的實現(xiàn)176.2.2 學(xué)生和教師身份驗證186.2.3 學(xué)生考試的實現(xiàn)196.2.4 題目信息管理的實現(xiàn)246.2.5題目包含的資源356.2.6試卷的添加386. 2.7添加題目

3、到試卷386.2.8學(xué)生提交的試卷436.2.9 學(xué)生信息的顯示506.2.10項目基本結(jié)構(gòu)536.3 小結(jié)547 結(jié)束語55摘要本文在第一章主要闡述在線考試系統(tǒng)的研究背景和研究意義,;第二章闡述了該系統(tǒng)的需求性分析,包括對系統(tǒng)的配置,系統(tǒng)所需要的功能和系統(tǒng)的需求分析;第三 章介紹了系統(tǒng)的體系結(jié)構(gòu)和流程圖,各個功能模塊的流程圖和系統(tǒng)的模塊流程圖;系統(tǒng)的E-R圖的結(jié)構(gòu);第四章對功能截了圖,同時附帶了相關(guān)的核心要代碼,并且添加了相應(yīng)注釋。 基于Web的在線考試系統(tǒng) 隨著計算機及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet/Intranet應(yīng)用在全球范圍內(nèi)日益普及,當(dāng)今社會正快速向信息化社會前進,信息自動化

4、的作用也越 來越大,從而使我們從繁雜的事務(wù)中解放出來,提高了我們的工作效率。 在眾多的網(wǎng)絡(luò)服務(wù)中,Web給人耳目一新的感覺,而在這其中,JSP技術(shù)和基于Struts框架技術(shù)則因為可以進行復(fù)雜的數(shù)據(jù)庫操作、很強的交互性以及方便用戶控制和管理備受青睞。 目前存在各級各類的考試,而它們的各種工作主要還是依賴于手工完成,手工管理還存在這許多弊端,由于不可避免的人為因素,造成數(shù)據(jù)的遺漏、誤報。計算機信 息化管理有著儲存量大,速度快等許多優(yōu)點,因此我們可以利用計算機網(wǎng)絡(luò),利用ASP技術(shù)實現(xiàn)動態(tài)的管理。 隨著計算機網(wǎng)絡(luò)技術(shù)的進一步發(fā)展和普及,利用JSP技術(shù)開發(fā)的各種網(wǎng)絡(luò)在線考系統(tǒng)必將大行其道。 關(guān)鍵字:JS

5、P技術(shù);SSM ;在線考試系統(tǒng)引 言現(xiàn)今,不管是國內(nèi)還是國外的各大廠家,都在不斷的推出一系列的考試、認(rèn)證。如微軟的MCSE、Cisco的CCNA等。我們國家的自考或是成考,以及各省市的各種考試,現(xiàn)在都在朝著信息化的道路前進在走。我們相信在今后這一系列的考試將會走向網(wǎng)絡(luò)化考試的。這樣才是符合信息發(fā)展的。所以我們考慮這是一個機會。我們要給不同的考試一個好的解決方案。 這個方案在技術(shù)上來講我們是采用B/S模式。在Windows平臺上,使用chome瀏覽器,完成制題、考試、交卷等考試任務(wù)?,F(xiàn)階段,學(xué)校與社會上的各種考試大都采用傳統(tǒng)的考試方式,在此方式下,組織一次考試至少要經(jīng)過五個步驟,即人工出卷,考生

6、考試,人工閱卷,成績評估和試卷分析。顯然,隨著考試類型的不斷增加及考試要求的不斷提高,教師的工作量將會越來越大,并且其工作將是一件十分煩瑣和非常容易出錯的事情,可以說傳統(tǒng)的考試方式已經(jīng)不能適應(yīng)現(xiàn)代考試的需要。隨著計算機應(yīng)用的迅猛發(fā)展,網(wǎng)絡(luò)應(yīng)用不斷擴大,如遠(yuǎn)程教育和虛擬大學(xué)的出現(xiàn)等等,且這些應(yīng)用正逐步深入到千家萬戶。人們迫切要求利用這些技術(shù)來進行在線考試,以減輕教師的工作負(fù)擔(dān)及提高工作效率,與此同時也提高了考試的質(zhì)量,從而使考試更趨于公證、客觀、更加激發(fā)學(xué)生的學(xué)習(xí)興趣。例如目前許多國際著名的計算機公司所舉辦的各種認(rèn)證考試絕大部分采用這種方式。為了適應(yīng)新形勢的發(fā)展,我們推出了這一系統(tǒng),使其盡快在各

7、類考試中發(fā)揮高效,便捷的作用,把老師從繁重的工作中解脫出來。由于時間,人員,以及我所掌握的技術(shù)問題,該系統(tǒng)僅僅人工出卷,考生考試,人工閱卷三個方向的問題。第一章、開發(fā)方案1.1問題分析傳統(tǒng)的學(xué)校教學(xué)中,進行一場考試,要求老師刻試卷、印試卷、安排考試、監(jiān)考、收集試卷、評改試卷、講評試卷和分析試卷,這是一個繁雜的過程,需要大量人力、物力與時間的投入,已經(jīng)越來越不適應(yīng)學(xué)校信息化建設(shè)與現(xiàn)代教學(xué)的需要。尤其在遠(yuǎn)程網(wǎng)絡(luò)教學(xué)中,學(xué)生分布廣,不易統(tǒng)一集中安排考試,給校方和學(xué)生帶來了眾多的不便。而在線考試系統(tǒng),正是信息化建設(shè)的產(chǎn)物,它是傳統(tǒng)考場的延伸。它可以利用互聯(lián)網(wǎng)絡(luò)和局域網(wǎng),隨時隨地的對學(xué)生進行考試,加上數(shù)

8、據(jù)庫技術(shù)的利用,大大簡化了傳統(tǒng)考試的過程,因此在線考試是電子化教學(xué)的不可缺少的輔助手段。在當(dāng)今信息時代,計算機技術(shù)與網(wǎng)絡(luò)技術(shù)越來越廣地應(yīng)用于各個領(lǐng)域,改變著人們的學(xué)習(xí)、工作、生活乃至思維方式,也引起了教育領(lǐng)域的重大變革。將計算機與網(wǎng)絡(luò)技術(shù)應(yīng)用于現(xiàn)代高等教育中,是現(xiàn)代高等教育發(fā)展的需要,也是改革教育模式,提高學(xué)校教學(xué)效果和教學(xué)效率、提高科研和管理水平的必要手段。1.2設(shè)計目的1.2.1系統(tǒng)的總體目標(biāo):1 在線考試系統(tǒng)可以幫助教師完成一個考試從題目設(shè)計,考試安排,考試實施,考卷批改到分?jǐn)?shù)統(tǒng)計總結(jié)的所有工作。2. 所有的考試數(shù)據(jù)和其它數(shù)據(jù)庫需要一種主流的方式進行存儲和管理,例如使用數(shù)據(jù)庫技術(shù)。3 考

9、試數(shù)據(jù)的存放和處理必須對考試保密,需要一定的安全性保障。對考試的系統(tǒng)目標(biāo):4. 這個軟件是分布式的,這意味著只要有考試客戶端可以連接到考試應(yīng)用服務(wù)器,任何考生在任何地方進行身份確認(rèn),都能完成考試。5. 題目最好有一定的穩(wěn)定性和隨機性。穩(wěn)定性可以保證每一次考試對每一個考生是公平的,隨機性可以避免作弊的發(fā)生。6. 考試的部分結(jié)果在考生考完之后就可以知道,同時提供一個機會讓考生知道自己哪里做錯了,并給出反饋信息說明理由。1.2.2 對教師的系統(tǒng)目標(biāo):1. 提供一個功能全面的考核管理客戶端,可以進行考試設(shè)計和安排。2. 通過管理客戶端,教師可以進行考試的身份管理。3. 考生的考試結(jié)果可以被保存下來,供

10、教師進行分析統(tǒng)計和察看。1.3方案選擇開發(fā)在線考試系統(tǒng),提出以下解決方案:選擇JSP、JavaScript、Html作為應(yīng)用程序開發(fā)語言,采用SSM框架,運用Tomcat服務(wù)器技術(shù),并選擇mysql作為后臺的數(shù)據(jù)庫,整個系統(tǒng)完全基于B/S (Browser/Server)模式進行設(shè)計。1. Web應(yīng)用程序開發(fā)JSP技術(shù)JSP的全稱是Java Server Pages,它是SUN推出的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。它在傳統(tǒng)的靜態(tài)頁面文件(*.html,*.htm)中加入JAVA程序片段和JSP標(biāo)記,就構(gòu)成了JSP頁面。JSP具有以下的優(yōu)點:1) 將業(yè)務(wù)層與表示層分離:使用JSP技術(shù),網(wǎng)絡(luò)開發(fā)人員可充分使

11、用HTML來設(shè)計頁面顯示部分(如字體顏色等),并使用JSP指令或者JAVA程序片段來生成網(wǎng)頁上的動態(tài)內(nèi)容;2) 能夠跨平臺:JSP支持絕大部分平臺,包括現(xiàn)在非常流行的LINUX系統(tǒng),應(yīng)用非常廣泛的Apache服務(wù)器也提供了支持JSP的服務(wù);3) 組件的開發(fā)和使用很方便:如ASP的組件是由C+,VB等語言開發(fā)的,并需要注冊才能使用;而JSP的組件是用Java開發(fā)的,可以直接使用;4) 一次編寫,處處運行:作為JAVA開發(fā)平臺的一部分,JSP具有JAVA的所有優(yōu)點,包括Write once , Run everywhere.2 框架技術(shù)-SSMssm框架是spring MVC ,spring和my

12、batis框架的整合,是標(biāo)準(zhǔn)的MVC模式,將整個系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層,使用spring MVC負(fù)責(zé)請求的轉(zhuǎn)發(fā)和視圖管理,spring實現(xiàn)業(yè)務(wù)對象管理,mybatis作為數(shù)據(jù)對象的持久化引擎。Spring MVC工作原理:1.客戶端發(fā)送請求到DispacherServlet(分發(fā)器)2.由DispacherServlet控制器查詢HanderMapping,找到處理請求的Controller3.Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView4.DispacherSerclet查詢視圖解析器,找到ModelAndView指定

13、的視圖5.視圖負(fù)責(zé)將結(jié)果顯示到客戶端Mybatis的優(yōu)缺點優(yōu)點:SQL寫在XML中,便于統(tǒng)一管理的優(yōu)化,提供映射標(biāo)簽,支持對象和數(shù)據(jù)庫的orm字段關(guān)系映射,可以對SQL進行優(yōu)化。缺點:SQL工作量大,mybatis的移植性不好,不支持級聯(lián)。為什么要用spring?1.spring能夠很好的和各大框架整合2.spring通過IOC容器管理了對象的創(chuàng)建和銷毀 工廠模式(設(shè)計模式)3.在使用hiberna丶mybatis的時候,不用每次都編寫提交事務(wù)的代碼,可以使用spring的AOP來管理事務(wù)3 Tomcat應(yīng)用服務(wù)器目前支持JSP的應(yīng)用服務(wù)器是較多的,Tomcat是其中較為流行的一個Web服務(wù)器

14、,被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的Java產(chǎn)品,可見其在業(yè)界的地位。 Tomcat是一個免費的開源的Serlvet容器,在Tomcat中,應(yīng)用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應(yīng)用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問將會很快。Tomcat也具有傳統(tǒng)的Web服務(wù)器的功能:處理Html頁面。但是與Apache相比,它的處理靜態(tài)Html的能力就不如Apache。我們可以將Tomcat和Apache集成到

15、一塊,讓Apache處理靜態(tài)Html,而Tomcat處理Jsp和Servlet。Tomcat是一個很好的工具,不僅僅因為其免費,功能強大,更因為其開放性,越來越受到人們的重視。4 Mysql數(shù)據(jù)庫MySQL的優(yōu)點: 1 它使用的核心線程是完全多線程,支持多處理器。 2 有多種列類型:1、2、3、4、和8字節(jié)長度自有符號無符號整數(shù)、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM類型。 3 它通過一個高度優(yōu)化的類庫實現(xiàn)SQL函數(shù)庫并像他們能達(dá)到的一樣快速,通常在查詢初始化后不該有任何內(nèi)存分配。

16、沒有內(nèi)存漏洞。 4 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(shù)(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN()。你可以在同一查詢中混來自不同數(shù)據(jù)庫的表。 5 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。 6 所有列都有缺省值。你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設(shè)置為他們的決省值。 7 MySQL可以工作在不同的平臺上。支持C、C、Java、Perl、PHP、Python和TCL API。5 B/S 開發(fā)模式伴隨著Internet的迅速發(fā)展,計算機技術(shù)正在由基于C

17、/S(client/ Server)模式的應(yīng)用系統(tǒng)轉(zhuǎn)變?yōu)榛贐/S模式的應(yīng)用系統(tǒng)。過去,網(wǎng)絡(luò)軟件的開發(fā)都采用C/S(client)模式,在這種模式下,主要的業(yè)務(wù)邏輯都集中于客戶端程序,因此,必然導(dǎo)致以下問題:1) 系統(tǒng)安裝、調(diào)試、維護和升級困難。由于客戶端的硬件配置可能存在差異,軟件環(huán)能各不相同,因此,在安裝時,必須對每一個客戶端分別進行配置,同樣,在軟件升級時也要對客戶端分別處理。2) 在整個系統(tǒng)中,業(yè)務(wù)邏輯和用戶界面都集中到了客戶端,必然會增加安全隱患。 B/S模式帶來了巨大的好處:1) 開發(fā)成本及維護成本降低。由于B/S架構(gòu)管理軟件只安裝在服務(wù)器端(Server)上,即應(yīng)用程序在部署、升

18、級、維護時,只需要在服務(wù)器端進行配置就可以了,網(wǎng)絡(luò)管理人員只需要管理服務(wù)器就行了,用戶界面主要事務(wù)邏輯在服務(wù)器(Server)端完全通過WWW瀏覽器實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),所有的客戶端只有瀏覽器,網(wǎng)絡(luò)管理人員只需要做硬件維護。2) 良好的安全性能,防火墻技術(shù)可以保證后臺數(shù)據(jù)庫的安全性。所有的配置工作都集中在服務(wù)器端且所有客戶端請求都是通過DBMS來訪問數(shù)據(jù)庫,從而大大減少了數(shù)據(jù)直接暴露的風(fēng)險。第二章、 系統(tǒng)需求分析2.1任務(wù)概述在線考試管理子系統(tǒng)主要實現(xiàn)題庫管理、在線制作試卷、在線控制考試、教師評分(客觀題部分)、自動交卷、考生管理、成績查詢、試卷管理等功

19、能,充分利用計算機科學(xué)與技術(shù),改變傳統(tǒng)的考試操作方式,實現(xiàn)無紙化考試的模式。2.2功能需求概述系統(tǒng)需要解決的主要問題在此系統(tǒng)中我們主要對前臺考試系統(tǒng)的顯示信息進行管理和設(shè)置。我將子系統(tǒng)分為以下功能模塊:在線考試管理子系統(tǒng)評卷管理試卷管理題庫管理 成績管理考試管理用戶管理圖2.1 系統(tǒng)總結(jié)構(gòu)圖題庫管理:用于對單個試題的增、刪、改、查等基本維護??荚嚬芾恚航處熞簿褪枪芾韱T對試卷的狀態(tài),以及時間的設(shè)置,來設(shè)置當(dāng)前考試要使用的試卷。成績管理:對每次考試的學(xué)生成績的基本信息進行維護,并提供學(xué)生成績的統(tǒng)計管理。用戶管理:對使用本系統(tǒng)的用戶基本信息進行維護,用戶多數(shù)為:系統(tǒng)管理員(老師)、學(xué)生。2.3各模塊

20、需完成的功能:試卷管理題庫管理試卷信息維護試題維護圖2.2題庫管理結(jié)構(gòu)圖 圖2.3試卷管理機構(gòu)圖試題維護:對試題的基本信息進行增、刪、改、查操作考試管理評卷管理成績管理考生成績維護考試信息維護考生信息維護評卷人評卷 圖2.4考試管理結(jié)構(gòu)圖 圖2.5評卷管理結(jié)構(gòu)圖 圖2.6成績管理結(jié)構(gòu)圖 考試信息維護:對考試的時間,考試用的試卷、試卷總分?jǐn)?shù)及答卷總時間等考試的基本要素進行設(shè)置??忌畔⒕S護:對考試的學(xué)生的基本信息進行增、刪、改、查操作。評卷人評卷:對教師(系統(tǒng)管理員)可以在此進行評卷??忌煽兙S護:對考試的考生成績信息進行統(tǒng)計與匯總,對有權(quán)限的人可進行成績的增、刪、改、查操作。成績其他維護:對考

21、生成績信息的批量查詢。用戶管理用戶基本信息圖2.7用戶管理結(jié)構(gòu)圖 用戶基本信息維護:對使用本系統(tǒng)的用戶進行維護,而用戶的權(quán)限由權(quán)限管理進行維護,并分配給用戶,使用戶只能訪問自己擁有的權(quán)限內(nèi)。2.4運行環(huán)境l 硬件需求: PIII/256M/10G 及以上配置,要求為考試系統(tǒng)分配足夠的數(shù)據(jù)庫磁盤空間l 推薦配置: PIV 2G/512M/40Gl 操作系統(tǒng)需求: Windows2000及以上操作系統(tǒng) ( 推薦 ) l 數(shù)據(jù)庫軟件需求: mysql中文版數(shù)據(jù)庫l 中間件軟件需求:tomcat系列服務(wù)器第三章、系統(tǒng)設(shè)計3.1指導(dǎo)思想3.1.1 B/S結(jié)構(gòu)開發(fā)思想B/S(Browser/Server)

22、結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn),形成所謂三層(3-tier)結(jié)構(gòu)。一個三層架構(gòu)的應(yīng)用程序由三部分組成,這三部分各自分布在網(wǎng)絡(luò)中的不同地方。這三個部分分別是:工作站或表示層接口、事務(wù)邏輯、數(shù)據(jù)庫以及與其相關(guān)的程序設(shè)計。在一個典型的三層架構(gòu)應(yīng)用程序中,應(yīng)用程序的用戶工作站包括提供圖形用戶界面(GUI)的程序設(shè)計和具體的應(yīng)用程序入口表格或交互式窗口。事務(wù)邏輯處在局域網(wǎng)(LAN)服務(wù)器或其他

23、共享主機上,它作為響應(yīng)工作站所發(fā)出客戶請求的服務(wù)器,而相對于處于大型機的第三層它是作為客戶端,并且決定需要什么數(shù)據(jù)以及數(shù)據(jù)存儲在哪里。第三層包括數(shù)據(jù)庫以及處理讀寫以及訪問數(shù)據(jù)庫的程序。然而應(yīng)用程序的設(shè)計可能比這個架構(gòu)要復(fù)雜,對于大型程序來說,這個三層模式是一種比較簡便的考慮方法。這種應(yīng)用程序的設(shè)計使用客戶/服務(wù)器模式,各層可以同時開發(fā),并且可以由不同的成員組用不同的語言來開發(fā)。因為各個層次的開發(fā)不會影響其他層次,所以這種模型對于進一步開發(fā)軟件是很方便的。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。以目前的技術(shù)看,局域網(wǎng)建立B/S結(jié)構(gòu)的網(wǎng)絡(luò)

24、應(yīng)用,并通過Internet/Intranet模式下數(shù)據(jù)庫應(yīng)用,相對易于把握、成本也是較低的。它是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全 。3.1.2 面向?qū)ο髾C制的設(shè)計思想所有計算機均由兩種元素組成:代碼和數(shù)據(jù)。精確的說,有些程序是圍繞著"什么正在發(fā)生"而編寫,有些則是圍繞"誰正在受影響"而編寫的。第一種編程方式叫做"面向過程的模型",按這種模型編寫的程序以一系

25、列的線性步驟(代碼)為特征,可被理解為作用于數(shù)據(jù)的代碼。如 C 等過程化語言。第二種編程方式叫做"面向?qū)ο蟮哪P?quot;,按這種模型編寫的程序圍繞著程序的數(shù)據(jù)(對象)和針對該對象而嚴(yán)格定義的接口來組織程序,它的特點是數(shù)據(jù)控制代碼的訪問.通過把控制權(quán)轉(zhuǎn)移到數(shù)據(jù)上,面向?qū)ο蟮哪P驮诮M織方式上有:抽象、封裝、繼承和多態(tài)的好處。3.1.3 代碼分層思想由于采用B/S設(shè)計模式分層思想,同時根據(jù)軟件工程的管理思想及系統(tǒng)分析的設(shè)計與分析的思想進行系統(tǒng)的開發(fā),利用Java語言開發(fā)Web應(yīng)用程序,主要的事務(wù)處理都在服務(wù)器端實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),用戶界面則完全通過客戶端實現(xiàn),采用“用戶界面

26、業(yè)務(wù)處理層數(shù)據(jù)存儲層”的三層架構(gòu)設(shè)計。3.2系統(tǒng)總體結(jié)構(gòu)設(shè)計3.2.1 系統(tǒng)的總體架構(gòu) 整個考試系統(tǒng)采用主要的事務(wù)處理都在服務(wù)器端實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),用戶界面則完全通過客戶端實現(xiàn),采用“用戶界面業(yè)務(wù)處理層數(shù)據(jù)存儲層”的三層架構(gòu)設(shè)計。Web服務(wù)器接受請求瀏覽器端請求,從而實現(xiàn)與客戶端進行信息資源的交互。數(shù)據(jù)庫服務(wù)器用來存儲管理信息系統(tǒng)中所用到的各種數(shù)據(jù),數(shù)據(jù)由數(shù)據(jù)庫管理程序直接錄入。系統(tǒng)的客戶端只需要一個瀏覽器即可。相關(guān)人員通過瀏覽器來查詢、增加、修改、刪除數(shù)據(jù),對信息進行管理。3.2.2 軟件系統(tǒng)設(shè)計原則軟件系統(tǒng)總體結(jié)構(gòu)設(shè)計的主要任務(wù)就是將整個系統(tǒng)合理的劃分成各個功能模塊,正確處理

27、模塊之間與模塊內(nèi)部的聯(lián)系及它們之間的調(diào)用關(guān)系和數(shù)據(jù)聯(lián)系,定義各模塊的內(nèi)部結(jié)構(gòu)等,本系統(tǒng)的軟件總體結(jié)構(gòu)按分解協(xié)調(diào)的原則,信息隱蔽抽象的原則,自頂向下的原則,一致性原則,面向用戶的原則進行設(shè)計。3.2.3 數(shù)據(jù)存儲的總體設(shè)計按用途分類可把本系統(tǒng)數(shù)據(jù)庫表分成以下幾種:系統(tǒng)中文件主要存放具有固定值屬性的數(shù)據(jù)。它需要長期保存,并不斷更新。有用戶信息表、題庫信息表、考試信息表、考試成績表。3.2.4 系統(tǒng)總體功能結(jié)構(gòu)設(shè)計1 通過對系統(tǒng)的數(shù)據(jù)流圖進行分析,進一步進行功能分解,直到分解成含義明確,功能單一的功能模塊,從而得到系統(tǒng)的功能模塊總體結(jié)構(gòu)圖,如下圖所示:圖3.1系統(tǒng)總體結(jié)構(gòu)圖3.3 系統(tǒng)詳細(xì)設(shè)計3.3

28、.1 系統(tǒng)結(jié)構(gòu)設(shè)計在系統(tǒng)的數(shù)據(jù)庫設(shè)計中,先要對系統(tǒng)分析得到的數(shù)據(jù)字典中的數(shù)據(jù)存儲進行分析,分析各數(shù)據(jù)存儲之間的關(guān)系,然后才能得出系統(tǒng)的關(guān)系模式。可以采用ER圖的方法來進行數(shù)據(jù)結(jié)構(gòu)分析,ER圖由實體、屬性、聯(lián)系三部分組成,系統(tǒng)如圖:n題目n1錄入考試成績n添加m查詢考試n1老師n試卷錄入狀態(tài)1n1考生圖3.5 系統(tǒng)組合ER圖3.3.2數(shù)據(jù)庫設(shè)計1. 主要數(shù)據(jù)庫表的介紹 根據(jù)系統(tǒng)需要和考試需要,設(shè)立了如下數(shù)據(jù)庫表: 教師(系統(tǒng)管理員)表:登錄注冊。學(xué)生表:學(xué)生的基本信息,以及登錄。題目表:題目的基本信息。試卷表:試卷的基本信息。題目試卷表:題目表和試卷表的中間表。資源表:教師或?qū)W生上傳資料的基本信

29、息。學(xué)生試卷表:學(xué)生答題后的試卷信息。2. 主要數(shù)據(jù)庫表的結(jié)構(gòu)定義(數(shù)據(jù)詞典):1) 數(shù)據(jù)庫表名的定義使用:重點字_table;重點字可以是多個英文單詞的組合,從組合的第二單詞起首字母大寫,字段命名是能表達(dá)字段內(nèi)容的英文單詞的組合,組合方式同表名重點字相同。2) 數(shù)據(jù)類型不使用固定數(shù)據(jù)庫的類型,標(biāo)識大眾類型,如字符串、字符、數(shù)字等。這樣在更改數(shù)據(jù)庫時需求的數(shù)據(jù)是可移植的3) 輸寫數(shù)據(jù)表在數(shù)據(jù)庫中的物理名稱,可用自己熟悉的語言再定義表名稱,方便溝通。4) 長度定義又?jǐn)?shù)據(jù)類型決定:如字符串可選8000以下,數(shù)字可在50位之間,字符只允許一位。5) 輸入方式表示數(shù)據(jù)的來源:生成表由程序或數(shù)據(jù)庫的索引

30、自動生成,而不需人工錄入;輸入表示通過文本框等輸入的數(shù)據(jù);選擇表單選框、復(fù)選框、下拉列表等通過選擇輸入的數(shù)據(jù);自定獲取是為外碼的輸入設(shè)定的,它由程序自動獲取。主要表結(jié)構(gòu):見數(shù)據(jù)庫文件。3. 數(shù)據(jù)庫的完整性和安全性1) 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。數(shù)據(jù)庫管理系統(tǒng)(DBMS)用一定的機制來檢查數(shù)據(jù)庫中的數(shù)據(jù)是否滿足規(guī)定的條件完整性約束條件,數(shù)據(jù)的約束條件是語義的體現(xiàn),將作為模式的一部分存入數(shù)據(jù)庫中。本系統(tǒng)中定義了表與表之間的聯(lián)系有助于實現(xiàn)完整性規(guī)則,一般在程序中實現(xiàn)具體的完整性控制。2) 數(shù)據(jù)庫的安全性 數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄漏、更改

31、或破壞。在數(shù)據(jù)庫系統(tǒng)中,大量的數(shù)據(jù)集中存放,而且為許多用戶直接共享,是寶貴的信息資源,系統(tǒng)的安全保護措施就顯得更為重要,它保護數(shù)據(jù)庫防止惡意的破壞和非法的存取。本系統(tǒng)包括數(shù)據(jù)庫的安全和服務(wù)器的安全。采用管理員表示和鑒定的方法實現(xiàn)數(shù)據(jù)庫的安全,此安全管理措施并不在前臺開發(fā)工具中實現(xiàn),而是在后臺數(shù)據(jù)庫中實現(xiàn)。在登錄數(shù)據(jù)庫時,系統(tǒng)讓用戶表示自己的身份,不同的用戶權(quán)限不同,系統(tǒng)進行核實,鑒別此用戶是否為合法用戶,若是,系統(tǒng)進一步核實用戶,通常要求用戶輸入口令,系統(tǒng)和對用戶口令以鑒別用戶身份。第四章、系統(tǒng)的實現(xiàn)4.1 數(shù)據(jù)庫連接的建立對于數(shù)據(jù)庫的連接,我們的數(shù)據(jù)訪問接口采用JDBC-ODBC橋數(shù)據(jù)驅(qū)動程

32、序,以純Java的方式來連接數(shù)據(jù)庫,為訪問不同的數(shù)據(jù)庫提供統(tǒng)一的接口。由于我們開發(fā)時是利用MVC的設(shè)計模式,所以在此我們的數(shù)據(jù)庫連接是封存在配置文件中的,但你使用不同是數(shù)據(jù)庫系統(tǒng)時僅需要在此修改即可。具體代碼如下:jdbc.Driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:/localhost:3306/exam?useUnicode=true&characterEncoding=UTF-8jdbc.root=rootjdbc.password=123456jdbc.maxPoolSize=500jdbc.minPoolSize=1jdbc

33、.initialPoolSize=204.2 各子系統(tǒng)模塊程序設(shè)計舉例4.2.1 用戶登陸的實現(xiàn)1. 對于已注冊的用戶根據(jù)用戶名和密碼進行登陸,登錄界面如下:圖3.6用戶登錄界面2. 填寫您的用戶名和密碼;3. 擊“登陸”按鈕;4. 用戶名、密碼和驗證碼都正確,登陸成功,進入系統(tǒng)主界面;4.2.2學(xué)生和教師身份驗證主要代碼:RequestMapping("/login")public String login(HttpServletRequest request) String userType = request.getParameter("user"

34、);String username = request.getParameter("username");String password = request.getParameter("password");if (username = null | username.equals("") | password = null| password.equals("") i = i + 1;if(i <= 3)request.setAttribute("msg", "登錄錯誤!,您還

35、有"+(3-i)+"次機會");return "/login"elsereturn "a"/ TODO userType=0表示教師,userType=1表示學(xué)生if (userType.equals("0") Admin admin = adminService.login(username, password);if (admin != null) request.getSession().setAttribute("adminId", admin.getId();request.

36、getSession().setAttribute("userType", userType);request.getSession().setAttribute("username", username);return "forward:/admin/index" else i = i + 1;if(i<=3)request.setAttribute("msg", "登錄錯誤!,您還有"+(3-i)+"次機會");return "/login"el

37、sereturn "a" else try request.getSession().setAttribute("username", username);Integer num = Integer.parseInt(username);Student stu = studentService.login(num);request.getSession().setAttribute("stuId", stu.getId();if (stu != null && password.equals(stu.getNum().

38、toString() request.getSession().setAttribute("userType",userType);request.getSession().setAttribute("stuId",stu.getId();return "redirect:/student/index" else i = i + 1;if(i<=3)request.setAttribute("msg", "登錄錯誤!,您還有"+(3-i)+"次機會");return &

39、quot;login"elsereturn "a" catch (Exception e) i = i + 1;if(i<=3)request.setAttribute("msg", "登錄錯誤!,您還有"+(3-i)+"次機會");return "login"elsereturn "a"4.2.3 學(xué)生考試的實現(xiàn):學(xué)生通過成功登錄之后,會自動跳轉(zhuǎn)到該頁面,可以進行進行考試,如下圖所示:主要代碼如下:RequestMapping("/selectSt

40、uPaperListByStuId")public String selectStuPaperListByStuId(HttpServletRequest request) String stuid = request.getParameter("id");try Integer stuId = Integer.parseInt(stuid);if(request.getSession().getAttribute("stuId") = null)request.getSession().setAttribute("stuId&quo

41、t;, stuId);elserequest.getSession().removeAttribute("stuId");request.getSession().setAttribute("stuId", stuId);List<AdminPaper> adminPapers = new ArrayList<AdminPaper>();List<Integer> adminPaperIdList = studentPaperService.selectStuPaperListByStuId(stuId);int j

42、= adminPaperIdList.size();for (int i = 0; i < j; i+) Integer adminPaperId = adminPaperIdList.get(i);AdminPaper adminPaper = adminPaperService.select(adminPaperId);adminPapers.add(adminPaper);System.out.println("ddd:" + adminPapers + "eeee:"+ adminPapers.size();request.setAttri

43、bute("stuId", stuId);request.setAttribute("adminPapers", adminPapers);return "admin/paper/stuSubmitPaper/stuPaperList" catch (Exception e) return "admin/paper/stuSubmitPaper/info"RequestMapping("/selectTopicListByAdminPaperIdAndStuId")public String s

44、electTopicListByAdminPaperIdAndStuId(HttpServletRequest request) Integer currentIndex = null;Topic topic = null;Integer page = 1;Integer limit = 20;Integer adminPaperId = Integer.parseInt(request.getParameter("adminPaperId");request.getSession().setAttribute("adminPaperId", admin

45、PaperId);try currentIndex = Integer.parseInt(request.getParameter("currentIndex");System.out.println("2345:" + currentIndex);Integer currentIndex1 = (Integer) request.getAttribute("currentIndex");if (currentIndex1 != null && !currentIndex.equals("") Sy

46、stem.out.println("aaaa");currentIndex = currentIndex1 + 1; catch (Exception e) e.printStackTrace();try Integer stuId = (Integer)request.getSession().getAttribute("stuId");System.out.println("adminPaperId:" + adminPaperId + " stuId:"+ stuId + " currentInde

47、x:" + currentIndex);List<Topic> topicList = null;topicList = (List<Topic>) request.getSession().getAttribute("topicList");if (topicList = null) topicList = paperTopicService.selectTopicByAdminPaperId(adminPaperId, (page - 1) * limit, limit);request.getSession().setAttribut

48、e("topicList", topicList);if (topicList.size() = currentIndex) currentIndex = topicList.size();if (currentIndex <= topicList.size() && currentIndex >= 1) request.setAttribute("currentIndex", currentIndex);System.out.println("-currentIndex:" + currentIndex)

49、;if (currentIndex > topicList.size() currentIndex = topicList.size();request.setAttribute("currentIndex", currentIndex);System.out.println("currentIndex:" + currentIndex);topic = topicList.get(currentIndex - 1);request.setAttribute("topic", topic);Integer topicId = t

50、opic.getId();System.out.println("34667:" + topicId);StudentPaper studentPaper = studentPaperService.selectStudentPaperByAdminPaperIdAndStuIdAndTopicId(adminPaperId, stuId, topicId);request.setAttribute("studentPaper",studentPaper);System.out.println("studentPaper:"+stud

51、entPaper);/ 教師資源/ 0表示教師,1表示學(xué)生Integer userId = 1;Integer userType = 0;List<Resouce> adminResouceListImg = new ArrayList<Resouce>();List<Resouce> adminResouceListLast = new ArrayList<Resouce>();List<Resouce> adminResouceList = resouceService.selectResouceByTopicId(topicId

52、, userType, userId,(page - 1) * limit, limit);int j = adminResouceList.size();for (int i = 0; i < j; i+) Resouce resouce = adminResouceList.get(i);if (resouce.getSuffix().equals("jpg")| resouce.getSuffix().equals("JPG")| resouce.getSuffix().equals("png")| resouce.get

53、Suffix().equals("PNG") adminResouceListImg.add(resouce); else adminResouceListLast.add(resouce);System.out.println("adminResouceListLast;"+ adminResouceListLast.size();System.out.println("adminResouceListLast;" + adminResouceListLast);request.setAttribute("adminRes

54、ouceListLast", adminResouceListLast);request.setAttribute("adminResouceListImg", adminResouceListImg);/ 學(xué)生資源/ 0表示教師,1表示學(xué)生Integer stuUserType = 1;Integer stuUserId = stuId;List<Resouce> stuResouceListImg = null;List<Resouce> stuRresouceListLast = null;List<Resouce> st

55、uResouceList = resouceService.selectResouceByTopicId(topicId, stuUserType, stuUserId,(page - 1) * limit, limit);int p = stuResouceList.size();for (int i = 0; i < p; i+) Resouce resouce = stuResouceList.get(i);if (resouce.getSuffix().equals("jpg")| resouce.getSuffix().equals("JPG&qu

56、ot;)| resouce.getSuffix().equals("png")| resouce.getSuffix().equals("PNG") stuResouceListImg = new ArrayList<Resouce>();stuResouceListImg.add(resouce); else stuRresouceListLast = new ArrayList<Resouce>();stuRresouceListLast.add(resouce);request.setAttribute("stuResouceListImg", stuResouceListImg);request.setAttribute("s

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論