freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

在線(xiàn)考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2024-08-31 18:56本頁(yè)面

【導(dǎo)讀】本文中主要介紹java中web程序的開(kāi)發(fā)流程,研究程序的結(jié)構(gòu)的重要性,探討。MVC模式中、hibernate、spring的良好運(yùn)用,設(shè)計(jì)出比較智能的在線(xiàn)考試系統(tǒng),并對(duì)在線(xiàn)考試系統(tǒng)的考試試卷的抽取設(shè)計(jì)出一個(gè)不同于其他項(xiàng)目的新設(shè)計(jì)方案。

  

【正文】 Hibernate框架中的 Session組件對(duì)象的管理是透明的,開(kāi)發(fā)者無(wú)須再通過(guò)在代碼中創(chuàng)建和關(guān)閉 Session組件對(duì)象的實(shí)例。 傳統(tǒng)的基于 Hibernate框架開(kāi)發(fā)中, SessionFactory對(duì) 象必須由開(kāi)發(fā)者自己手動(dòng)創(chuàng)建。對(duì)兩者進(jìn)行整合后,將可以實(shí)現(xiàn)將 SessionFactory組件對(duì)象實(shí)例通過(guò)注入方式到 DAO組件中,這樣不再需要使用 Hibernate框架中配置文件 。 主界面 主界面包含該學(xué)生的主要信息,也是對(duì)信息的核對(duì),考生的信息存儲(chǔ)在數(shù)據(jù)庫(kù)中,為了防止信息錄入出錯(cuò),在此界面為學(xué)生提供詳細(xì)列表,如果考生信息有誤,那么聯(lián)系管理員,以免對(duì)考生成績(jī)產(chǎn)生影響。 通過(guò)學(xué)生登錄時(shí)的學(xué)號(hào),到數(shù)據(jù)庫(kù)中查詢(xún),將考生重要信息查出,例如姓名、學(xué)號(hào)、院系、專(zhuān)業(yè)等。 主界面中提供 查看成績(jī)和查看考試科目 2個(gè)功能,在數(shù)據(jù)庫(kù)中科目表中設(shè)置科目狀態(tài)字段,將已經(jīng)考試過(guò)的科目和沒(méi)有考試的科目分開(kāi)。 圖例: 科目成績(jī)管理 科目是與學(xué)生的 id 對(duì)應(yīng),通過(guò)一個(gè)學(xué)生的 id 可以查詢(xún)到該學(xué)生的所有已經(jīng)考試科 28 目,分?jǐn)?shù)由系統(tǒng)錄入。 考試功能 如果時(shí)間判分成功,則進(jìn)入考試,系統(tǒng)會(huì)根據(jù)考生登錄時(shí)的院系和專(zhuān)業(yè)和科目來(lái)選擇試題,通過(guò)流的方式將文本文件導(dǎo)入到頁(yè)面中,考生考試完畢后系統(tǒng)接受答案,然后與正確答案進(jìn)行比較,進(jìn)行判分,再保存到數(shù)據(jù)庫(kù)。 動(dòng)態(tài)時(shí)間的生成 為了給學(xué)生 一個(gè)正確的時(shí)間信息,考試時(shí)間按照系統(tǒng)的時(shí)間來(lái)參照,因此生成一個(gè)動(dòng)態(tài)時(shí)間有一定必要,在 javascript 中有一個(gè)時(shí)間對(duì)象( today),可以通過(guò)此對(duì)象獲得當(dāng)前時(shí)間的年、月、日、小時(shí)、分鐘、秒,代碼如下: function startTime() { var today=new Date()。//定義日期對(duì)象 var yyyy = ()。//通過(guò)日期對(duì)象的 getFullYear()方法返回年 var MM = ()+1。//通過(guò)日期對(duì)象的 getMonth()方法返回年 var dd = ()。//通過(guò)日期對(duì)象的 getDate()方法返回年 var hh=()。//通過(guò)日期對(duì)象的 getHours 方法返回小時(shí) var mm=()。//通過(guò)日期對(duì)象的 getMinutes 方法返回分鐘 var ss=()。//通過(guò)日期對(duì)象的 getSeconds 方法返回秒 // 如果分鐘或小時(shí)的值小于 10,則在其值前加 0,比如如果時(shí)間是下午 3 點(diǎn) 20 29 分 9 秒的話(huà),則顯示 15: 20: 09 MM=checkTime(MM)。 dd=checkTime(dd)。 mm=checkTime(mm)。 ss=checkTime(ss)。 var day。 //用于保存星期( getDay()方法得到星期編號(hào)) if(()==0) day = 星期日 if(()==1) day = 星期一 if(()==2) day = 星期二 if(()==3) day = 星期三 if(()==4) day = 星期四 if(()==5) day = 星期五 if(()==6) day = 星期六 (39。nowDateTimeSpan39。).innerHTML=yyyy++MM ++ dd + + hh+:+mm+:+ss+ + day。 setTimeout(39。startTime()39。,1000)。//每一秒中重新加載 startTime()方法 } function checkTime(i) { if (i10){ i=0 + i。 } return i。 } 在此系統(tǒng)中會(huì)用到多次動(dòng)態(tài)時(shí)間,因此將該代碼封裝到一個(gè)文件,需要用時(shí)直接將該文件引用,為了文件的簡(jiǎn)潔性,因此將 javascript 中的代碼盡量封裝起來(lái),使得 jsp 頁(yè)面中盡量呈現(xiàn)的是標(biāo)簽,方便維護(hù)。 試題的生成 試題的生成是該項(xiàng)目中的難點(diǎn),試卷的信息量大,而且一個(gè)學(xué)校的試卷很多,那么根據(jù)科目來(lái)選擇試卷,一般會(huì)考慮放入數(shù)據(jù)庫(kù)中,但是試卷有題目和選項(xiàng),因此如果放 30 入數(shù)據(jù)庫(kù),那么專(zhuān)業(yè)與科目之間一對(duì)多,科目與題目之間一對(duì)多,題目與選項(xiàng)一對(duì)多,這樣會(huì)使得數(shù)據(jù)庫(kù)表十分復(fù)雜,因此生成一個(gè)試卷要經(jīng)過(guò)多次一對(duì)多查詢(xún),這樣會(huì)使得生成試卷的效率很低。 因此想到了另外一個(gè)方案,就是通過(guò)流的方式將試卷保存到一個(gè)對(duì)象中,然后再 jsp頁(yè)面中獲取該對(duì) 象信息就可以生成試卷,此對(duì)象中包含兩個(gè)重要的屬性,一個(gè)是題目,一個(gè)是選項(xiàng)的集合,這樣是為了在 jsp 頁(yè)面中生成正確的試卷格式。 在網(wǎng)上看到的方案大多是將試卷保存到數(shù)據(jù)庫(kù)中,由于沒(méi)有想到在數(shù)據(jù)庫(kù)中保存試卷時(shí)的完美方案,而且該方案中生成試卷的效率很好,因此就用此方案代替了用數(shù)據(jù)庫(kù)生成試卷的方法。 抽取試卷實(shí)現(xiàn)步驟 要選擇科目試卷,則需要用到 Properties 這個(gè)類(lèi),這個(gè)類(lèi)可以將流文件導(dǎo)入到對(duì)象中然后用 getProperty 方法可以獲得文件中 key 對(duì)應(yīng)的 value 值, value 值就是試卷文件的文件名, 然后再用流就該文件導(dǎo)入。 獲取試卷文件名的代碼如下: public String findFileName(String key) throws IOException{ Properties p = new Properties()。 InputStream is =().getContextClassLoader().getResourceAsStream()。//將 src 目錄下的 properties 文件導(dǎo)入 try { (is)。//將流文件導(dǎo)入到 Properties 對(duì)象 } catch (FileNotFoundException e) { throw new FileNotFoundException(系統(tǒng)找不到文件 )。 } catch (IOException e) { throw new IOException(IO 異常 )。 } String filename = (key)。 //此方法獲取 value 值 (試卷文件名 ) return filename。 } 找到該文件后再用流的方式導(dǎo)入文件,并進(jìn)行試卷格式的組合,試卷組合方式必須 31 是一個(gè)題目對(duì)應(yīng) 4 個(gè)選項(xiàng),因此試卷時(shí)一個(gè)集合,里面都是一個(gè)題目對(duì)應(yīng) 4 個(gè)選項(xiàng)的實(shí)體類(lèi)對(duì)象,導(dǎo)入試卷的代碼如下: private ListExam paper = new ArrayListExam()。 public ListExam loadPaper() throws IOException{ Config c = new Config()。 String filename = (電子信息工程 )。//測(cè)試用 InputStream file = ().getContextClassLoader().getResourceAsStream(filename)。 BufferedReader br = new BufferedReader( new InputStreamReader(file,utf8))。 // BufferedReader br = new BufferedReader( // new InputStreamReader(new FileInputStream(src/+filename)))。//此方法在 web 中無(wú)法使用 int i = 1。 String titleInfo = null。 while((titleInfo=())!=null){ (titleInfo)。 parseTitleInfo(titleInfo)。 Exam e = new Exam()。 String title = i+.+()。 (title)。 String [] opt = new String [4]。 opt[0] = (char)(39。A39。+0) + . + ()。 opt[1] = (char)(39。A39。+1) + . + ()。 opt[2] = (char)(39。A39。+2) + . + ()。 opt [3] = (char)(39。A39。+3) + . + ()。 //試卷文件中并沒(méi)有題目和選項(xiàng)的號(hào)碼,用字符串拼接的方式完成 (opt)。 (e)。 i++。 }return paper。} 32 在 jsp 頁(yè)面中通過(guò)遍歷方式將試卷正常顯示,代碼如下: body p align=center在線(xiàn)考試系統(tǒng) /pbr/ div style=border:1px solid red。 class=d1 s:form action= method=get namespace=/exam s:iterator value=paper//試卷對(duì)象 s:property value=title/br///先獲取題目 s:iterator value=options var=opt//遍歷選項(xiàng) s:property value=opt/br///4 個(gè)選項(xiàng) /s:iterator A.input type=checkbox value=0 name=answer/ B.input type=checkbox value=1 name=answer/ C.input type=checkbox value=2 name=answer/ D.input type=checkbox value=3 name=answer/br/ /s:iterator input style=marginleft: 48% type=submit value=交卷 / /s:form /div /body 生成試卷的注意點(diǎn) 中代碼注釋行中寫(xiě)到:此方法在 web 中無(wú)法使用。由于將程序部署到服務(wù)器中了, BufferedReader 無(wú)法在 web 程序中查找部署到服務(wù)器中的文件,在服務(wù)器中并沒(méi)有 src 目錄下的文件,只有 src 目錄下文件的字節(jié)碼文件,用 BufferedReader 類(lèi)進(jìn)行文件導(dǎo)入時(shí)會(huì)報(bào)異常,查找不 到該文件,因此需要換一種方式,通過(guò)當(dāng)前線(xiàn)程獲取類(lèi)加載器,類(lèi)加載器可以查找到服務(wù)器中字節(jié)碼文件,然后將該字節(jié)碼文件導(dǎo)入。 ,數(shù)據(jù)的格式并不是 utf8 編碼方式,而 jsp 頁(yè)面中的編碼方式是 utf8 方式,因此流中不加編碼方式在 jsp 頁(yè)面中生成試卷時(shí)會(huì)亂碼,在流中加入流文件的編碼方式為 utf8 后與 jsp 頁(yè)面編碼方式保持一致就可以保證試卷正常顯示,在 web開(kāi)發(fā)中編碼方式是一個(gè)非常需要注意的細(xì)節(jié),一定要保證程序中每個(gè)環(huán)節(jié)中數(shù)據(jù)的編碼方式是一致的。 33 第六章 測(cè)試 測(cè)試目的 測(cè)試在軟件開(kāi) 發(fā)過(guò)程中是不可缺少的一部分,由于其重要性,現(xiàn)在基本上所有的軟件公司都有軟件測(cè)試部門(mén),可以看出測(cè)試的重要性,測(cè)試是根據(jù)系統(tǒng)的流程圖、數(shù)據(jù)庫(kù)結(jié)構(gòu)、設(shè)計(jì)規(guī)格說(shuō)明和編碼規(guī)定來(lái)進(jìn)行系統(tǒng)的詳細(xì)測(cè)試,主要包括流程的正確性和數(shù)據(jù)存儲(chǔ)的完整性。 軟件測(cè)試的目的在是軟件投入使用之前,盡量發(fā)現(xiàn)系統(tǒng)的漏洞和缺點(diǎn),防止在投入使用后對(duì)企業(yè)和用戶(hù)產(chǎn)生損失,例如:用戶(hù)信息被竊取、系統(tǒng)被黑客攻擊、系統(tǒng)中出現(xiàn)的非常規(guī)異常;這些信息都是必須解決的,一旦在投入使用后,漏洞和缺點(diǎn)被別人利用,那么對(duì)企業(yè)雙方和用戶(hù)會(huì)產(chǎn)生一系列不良影響。 測(cè)試方 法 程序測(cè)試的主要方法分為兩大類(lèi),白盒測(cè)試和黑盒測(cè)試。 白盒測(cè)試也叫軟件內(nèi)部結(jié)構(gòu)測(cè)試,這種測(cè)試方法可以在程序開(kāi)發(fā)過(guò)程中邊開(kāi)發(fā)邊測(cè)試,測(cè)試當(dāng)前功能模塊是否能正常運(yùn)行,系統(tǒng)被看做一個(gè)打開(kāi)的盒子,就像電腦機(jī)箱一樣,拆開(kāi)對(duì)里面的硬件逐個(gè)測(cè)試,檢查系統(tǒng)內(nèi)部是不是按照預(yù)期設(shè)計(jì)要求進(jìn)行的。 黑盒測(cè)試也叫軟件功能測(cè)試,在測(cè)試時(shí)只需要逐步去實(shí)現(xiàn)軟件流程,觀(guān)察軟件流程是否符合程序設(shè)計(jì)概要中的分析結(jié)果,是否達(dá)到符合預(yù)期的用戶(hù)體驗(yàn)度,不需要去考慮程
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1