軟件工程課程設(shè)計(jì)范例_第1頁(yè)
軟件工程課程設(shè)計(jì)范例_第2頁(yè)
軟件工程課程設(shè)計(jì)范例_第3頁(yè)
軟件工程課程設(shè)計(jì)范例_第4頁(yè)
軟件工程課程設(shè)計(jì)范例_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

給塔\i&上叁/《軟件工程》課程設(shè)計(jì)題目C語(yǔ)言在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名 學(xué)號(hào) 院系計(jì)算機(jī)與軟件學(xué)院專(zhuān)業(yè) 指導(dǎo)教師文學(xué)志二0年月日.緒論 錯(cuò)誤!未定義書(shū)簽。語(yǔ)言在線考試系統(tǒng)概述 錯(cuò)誤!未定義書(shū)簽。語(yǔ)言在線考試系統(tǒng)的可行性分析 錯(cuò)誤!未定義書(shū)簽。經(jīng)濟(jì)可行性錯(cuò)誤!未定義書(shū)簽。技術(shù)可行性錯(cuò)誤!未定義書(shū)簽。社會(huì)可行性錯(cuò)誤!未定義書(shū)簽。.相關(guān)技術(shù)介紹 錯(cuò)誤!未定義書(shū)簽。體系結(jié)構(gòu) 錯(cuò)誤!未定義書(shū)簽。ServerPages 錯(cuò)誤!未定義書(shū)簽。錯(cuò)誤!未定義書(shū)簽。錯(cuò)誤!未定義書(shū)簽。錯(cuò)誤!未定義書(shū)簽。Web服務(wù)器 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的需求分析 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的功能需求 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的模塊劃分 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的概要設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。系統(tǒng)的總體結(jié)構(gòu) 錯(cuò)誤!未定義書(shū)簽。系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)主要模塊的詳細(xì)設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。試題管理模塊設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽??荚嚬芾砟K設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。在線考試模塊設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。答卷自動(dòng)評(píng)分模塊設(shè)計(jì) 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)主要模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。.創(chuàng)建項(xiàng)目 錯(cuò)誤!未定義書(shū)簽。開(kāi)發(fā)環(huán)境的搭建 錯(cuò)誤!未定義書(shū)簽。系統(tǒng)的整體框架 錯(cuò)誤!未定義書(shū)簽。.試題管理模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。創(chuàng)建持久化類(lèi)和數(shù)據(jù)庫(kù)訪問(wèn)相關(guān)類(lèi) 錯(cuò)誤!未定義書(shū)簽。創(chuàng)建Struts相關(guān)類(lèi) 錯(cuò)誤!未定義書(shū)簽。創(chuàng)建表示層JSP文件 錯(cuò)誤!未定義書(shū)簽。.考試管理模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。初始種群的生成 錯(cuò)誤!未定義書(shū)簽。適應(yīng)度值的計(jì)算 錯(cuò)誤!未定義書(shū)簽。選擇(Select) 錯(cuò)誤!未定義書(shū)簽。交叉(Crossover) 錯(cuò)誤!未定義書(shū)簽。變異(Mutation) 錯(cuò)誤!未定義書(shū)簽。.在線考試模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。倒計(jì)時(shí)子模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。故障延時(shí)子模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。.答卷自動(dòng)評(píng)分模塊的實(shí)現(xiàn) 錯(cuò)誤!未定義書(shū)簽。

6.系統(tǒng)的測(cè)試6.系統(tǒng)的測(cè)試.系統(tǒng)的測(cè)試環(huán)境 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的測(cè)試用例設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的測(cè)試結(jié)果 錯(cuò)誤!未定義書(shū)簽。.系統(tǒng)的測(cè)試分析 錯(cuò)誤!未定義書(shū)簽。結(jié)束語(yǔ) 錯(cuò)誤!未定義書(shū)簽。參考文獻(xiàn) 錯(cuò)誤!未定義書(shū)簽。致謝 錯(cuò)誤!未定義書(shū)簽。C語(yǔ)言在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)張三南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院,南京210044摘要:隨著計(jì)算機(jī)技術(shù)、Internet技術(shù)的迅猛發(fā)展,在線考試模式以其跨地域性、隨時(shí)性和用戶(hù)廣泛性的特點(diǎn),成為推動(dòng)教育現(xiàn)代化的重要手段,已經(jīng)成為對(duì)學(xué)生練習(xí)、考試、評(píng)價(jià)和分析教學(xué)效果的重要工具。本文研究利用三層瀏覽器(B/S/S)體系結(jié)構(gòu),即Web瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器結(jié)構(gòu)來(lái)實(shí)現(xiàn)C語(yǔ)言科目的在線考試系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了試題庫(kù)的管理、自動(dòng)組卷和答卷的自動(dòng)評(píng)分等功能,滿足了廣大教師和考生的需求。該系統(tǒng)的實(shí)現(xiàn)以Java語(yǔ)言及其相關(guān)技術(shù)為基礎(chǔ),構(gòu)建于MySQL數(shù)據(jù)庫(kù)系統(tǒng)以及TomcatWeb服務(wù)器之上。該系統(tǒng)的實(shí)現(xiàn)表明,在線考試系統(tǒng)能夠提高試題庫(kù)管理、考試組織和閱卷的效率,并同時(shí)保證考試的公正和公平。因此,其他科目的考試也可以開(kāi)發(fā)相應(yīng)的在線考試系統(tǒng)。關(guān)鍵詞:在線考試系統(tǒng);B/S/S體系結(jié)構(gòu);Java;MySQL;自動(dòng)組卷.緒論本章對(duì)C語(yǔ)言在線考試系統(tǒng)進(jìn)行了概要性的介紹,并在經(jīng)濟(jì)、技術(shù)、社會(huì)三個(gè)方面對(duì)該系統(tǒng)開(kāi)發(fā)的可行性進(jìn)行了分析,以說(shuō)明該系統(tǒng)的開(kāi)發(fā)是可行的,可以立即開(kāi)始研制工作。C語(yǔ)言在線考試系統(tǒng)概述隨著計(jì)算機(jī)技術(shù)、Internet技術(shù)的迅猛發(fā)展,絕大部分高校都已接入互聯(lián)網(wǎng)并建成了校園網(wǎng),硬件設(shè)施也日趨完善。以互聯(lián)網(wǎng)為基礎(chǔ)的在線考試模式,以其跨地域性、隨時(shí)性和用戶(hù)廣泛性的特點(diǎn),成為推動(dòng)教育現(xiàn)代化的重要手段,已經(jīng)成為對(duì)學(xué)生練習(xí)、考試、評(píng)價(jià)和分析教學(xué)效果的重要工具[1]C語(yǔ)言在線考試系統(tǒng)利用開(kāi)放、動(dòng)態(tài)的系統(tǒng)架構(gòu),將傳統(tǒng)的考試模式與先進(jìn)的網(wǎng)絡(luò)應(yīng)用相結(jié)合,實(shí)現(xiàn)YC語(yǔ)言科目考試的無(wú)紙化、自動(dòng)化、網(wǎng)絡(luò)化。第一,本系統(tǒng)能夠幫助教師方便地實(shí)現(xiàn)試題的管理,包括試題的錄入、查詢(xún)、修改、刪除。第二,本系統(tǒng)實(shí)現(xiàn)了自動(dòng)組卷功能,能夠根據(jù)出題要求自動(dòng)生成C語(yǔ)言考試試卷,供考生在線作答。第三,考生在使用本系統(tǒng)進(jìn)行在線考試時(shí),系統(tǒng)將提供倒計(jì)時(shí)功能,使考生能夠隨時(shí)了解考試的剩余時(shí)間。第四,本系統(tǒng)在考試時(shí)間截止之后將自動(dòng)完成交卷,以保證考試嚴(yán)肅公正地進(jìn)行。第五,在答卷提交之后,本系統(tǒng)將對(duì)答卷進(jìn)行自動(dòng)評(píng)分并保存結(jié)果,以便考生查詢(xún)考試成績(jī)。C語(yǔ)言在線考試系統(tǒng)的可行性分析項(xiàng)目的可行性一般從三個(gè)方面進(jìn)行分析,即經(jīng)濟(jì)可行性、技術(shù)可行性、社會(huì)可行性。經(jīng)濟(jì)可行性分析即進(jìn)行開(kāi)發(fā)成本的估算以及效益的評(píng)估,確定開(kāi)發(fā)的項(xiàng)目是否值得投資開(kāi)發(fā);技術(shù)可行性分析是指對(duì)要開(kāi)發(fā)的項(xiàng)目的功能、性能和限制條件進(jìn)行分析,確定現(xiàn)有的資源條件下,技術(shù)風(fēng)險(xiǎn)有多大,項(xiàng)目是否能實(shí)現(xiàn);社會(huì)可行性分析是指研究要開(kāi)發(fā)的項(xiàng)目是否存在侵犯、妨礙等責(zé)任問(wèn)題,要開(kāi)發(fā)的項(xiàng)目的運(yùn)行方式在用戶(hù)組織內(nèi)是否行得通,現(xiàn)有管理制度、人員素質(zhì)和操作方式是否可行⑵本節(jié)從這三個(gè)方面對(duì)C語(yǔ)言在線考試系統(tǒng)的可行性進(jìn)行分析,以便后續(xù)工作的展開(kāi)。經(jīng)濟(jì)可行性C語(yǔ)言在線考試系統(tǒng)的開(kāi)發(fā)成本包括開(kāi)發(fā)該系統(tǒng)的人力的費(fèi)用以及用于購(gòu)買(mǎi)部署該系統(tǒng)并充當(dāng)服務(wù)器的計(jì)算機(jī)的費(fèi)用。開(kāi)發(fā)該系統(tǒng)估計(jì)需要四個(gè)開(kāi)發(fā)人員一周的工作量,如果每人每月的工資為2000元,則開(kāi)發(fā)該系統(tǒng)的人力費(fèi)用約為2000元。為了部署該系統(tǒng),需要購(gòu)買(mǎi)一臺(tái)帶有較大容量磁盤(pán)的高性能計(jì)算機(jī),費(fèi)用估計(jì)在1萬(wàn)元。因此,開(kāi)發(fā)該系統(tǒng)的成本總計(jì)為萬(wàn)元。在未使用該系統(tǒng)之前,為了進(jìn)行C語(yǔ)言考試,必須支出相應(yīng)的人力費(fèi)用進(jìn)行出卷、組織考試和批閱試卷,這部分費(fèi)用約為每年4000元。此外,由于傳統(tǒng)考試模式需要用紙,每年需要約3500元的紙張費(fèi)用。因此,若維護(hù)系統(tǒng)每年需花費(fèi)500元,使用C語(yǔ)言在線考試系統(tǒng)每年可節(jié)省約萬(wàn)元。根據(jù)以上的估計(jì)開(kāi)發(fā)費(fèi)用和節(jié)省的費(fèi)用,在假設(shè)年利率i等于12%的前提下,可以計(jì)算得到投資的回收期為年(如表1-1所示),即在使用C語(yǔ)言在線考試系統(tǒng)年以后用戶(hù)可以收回全部投資。因此,開(kāi)發(fā)C語(yǔ)言在線考試系統(tǒng)在經(jīng)濟(jì)上是可行的。表1-1C語(yǔ)言在線考試系統(tǒng)的成本/效益分析購(gòu)買(mǎi)設(shè)備萬(wàn)元人力(四人、一周、2000元/月)萬(wàn)元開(kāi)發(fā)成本總計(jì)萬(wàn)元系統(tǒng)的維護(hù)費(fèi)500元/年每年節(jié)省人力費(fèi)用萬(wàn)元每年節(jié)省紙的費(fèi)用萬(wàn)元每年節(jié)省的總費(fèi)用萬(wàn)元年節(jié)省(元)(1+i)的n次方現(xiàn)在值(元)累計(jì)的現(xiàn)在值(元)1萬(wàn)萬(wàn)萬(wàn)2萬(wàn)萬(wàn)萬(wàn)3萬(wàn)萬(wàn)萬(wàn)第三年后純收入萬(wàn)投資回收期年技術(shù)可行性(1)對(duì)所建議的系統(tǒng)的簡(jiǎn)要描述C語(yǔ)言在線考試系統(tǒng)利用數(shù)據(jù)庫(kù)對(duì)試題信息進(jìn)行高效、便捷的管理,實(shí)現(xiàn)試題的錄入、查詢(xún)、修改和刪除。同時(shí),系統(tǒng)提供了自動(dòng)組卷功能、倒計(jì)時(shí)功能、試卷提交功能、試卷評(píng)分功能,實(shí)現(xiàn)了考試的無(wú)紙化、自動(dòng)化、網(wǎng)絡(luò)化,并體現(xiàn)了考試的公正、嚴(yán)肅。(2)與現(xiàn)有系統(tǒng)比較的優(yōu)越性C語(yǔ)言在線考試系統(tǒng)利用數(shù)據(jù)庫(kù)對(duì)試題進(jìn)行管理,使得對(duì)大量試題的管理高效、方便地進(jìn)行,而傳統(tǒng)考試模式下的試題管理低效耗時(shí),在試題達(dá)到一定數(shù)量之后,管理起來(lái)十分不便,需要耗費(fèi)大量的時(shí)間和精力。由于試題存放于計(jì)算機(jī)硬盤(pán)中,并采用在線考試這種無(wú)紙化的考試模式,與傳統(tǒng)考試模式相比,不僅節(jié)省了試題的存放空間,更是節(jié)約了大量的紙張(試卷和答題冊(cè)),更加環(huán)保、節(jié)約。同時(shí),該系統(tǒng)的自動(dòng)組卷和評(píng)分功能使得出卷和評(píng)分過(guò)程自動(dòng)化,與傳統(tǒng)的手工出卷評(píng)分相比,節(jié)省了大量的勞力,使得廣大教師可以從繁重的出卷、評(píng)分工作中解脫出來(lái),從而把更多的時(shí)間和精力用于教學(xué)和科研。此外,系統(tǒng)的試卷提交功能在考試時(shí)間截止時(shí),自動(dòng)完成試卷的提交,阻止考生繼續(xù)答題,使得考試的公正性和嚴(yán)肅性較傳統(tǒng)考試更好得體現(xiàn)。最后,該系統(tǒng)提供的倒計(jì)時(shí)功能,使得考生在考試過(guò)程中更合理地安排時(shí)間,有助于考生取得好成績(jī)。(3)采用建議系統(tǒng)可能帶來(lái)的影響采用C語(yǔ)言在線考試系統(tǒng)之后,試題的管理效率,組織考試和評(píng)卷的效率將大為提高,有利于在短時(shí)間內(nèi)實(shí)現(xiàn)對(duì)考生的C語(yǔ)言學(xué)習(xí)情況的檢驗(yàn)。同時(shí),本系統(tǒng)將節(jié)約大量的紙資源,節(jié)省組織考試的開(kāi)支。教師將從繁重的出題、組織監(jiān)督考試、評(píng)分的工作中解脫出來(lái),把更多的時(shí)間和精力用于教學(xué)和科研。采用C語(yǔ)言在線考試系統(tǒng)之后,要求教師適應(yīng)新型的試題管理模式,需要教師掌握該系統(tǒng)的使用。對(duì)考生而言,要求他們適應(yīng)新型考試模式,同樣,也需要他們熟悉系統(tǒng)的使用。(4)所建議技術(shù)可行性分析C語(yǔ)言在線考試系統(tǒng)是一個(gè)基于B/S/S體系結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用系統(tǒng),開(kāi)發(fā)這類(lèi)系統(tǒng)的技術(shù)已經(jīng)比較成熟,比如JSP技術(shù)、ASP技術(shù)等等。同時(shí),考慮到開(kāi)發(fā)人員對(duì)這類(lèi)系統(tǒng)以及相關(guān)的技術(shù)比較熟悉且開(kāi)發(fā)期較為充裕,預(yù)計(jì)可以再規(guī)定期限內(nèi)完成開(kāi)發(fā)。社會(huì)可行性(1)法律方面的可行性C語(yǔ)言在線考試系統(tǒng)的研制和開(kāi)發(fā)的過(guò)程,將在嚴(yán)格遵守國(guó)家各項(xiàng)法律法規(guī)的基礎(chǔ)上進(jìn)行,將不會(huì)侵犯他人、集體和國(guó)家的利益。同時(shí),在系統(tǒng)的開(kāi)發(fā)過(guò)程中,將嚴(yán)格遵守與客戶(hù)簽訂的合同的各項(xiàng)條款。(2)使用方面的可行性C語(yǔ)言在線考試系統(tǒng)的研制和開(kāi)發(fā)將充分考慮到用戶(hù)的業(yè)務(wù)往來(lái)、管理流程和人員素質(zhì)等,從而能滿足使用要求。.相關(guān)技術(shù)介紹C語(yǔ)言在線考試系統(tǒng)的開(kāi)發(fā)采用了三層瀏覽器(B/S/S)體系結(jié)構(gòu),即Web瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器結(jié)構(gòu)[7]本文中采用了Java語(yǔ)言及相關(guān)技術(shù)JSP、Struts和Hibernate實(shí)現(xiàn)該系統(tǒng),并以Tomcat作為Web服務(wù)器,以MySQL作為數(shù)據(jù)庫(kù)服務(wù)器。本章是對(duì)這些技術(shù)和服務(wù)器的介紹。

B/S/S體系結(jié)構(gòu)將Web技術(shù)的B/S結(jié)構(gòu)與數(shù)據(jù)庫(kù)系統(tǒng)的三層C/S/S體系結(jié)構(gòu)結(jié)合,產(chǎn)生了Web瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器結(jié)構(gòu),如圖2-1所示。B/S/S體系結(jié)構(gòu)是指在TCP/IP的支持下,以HTTP為傳輸協(xié)議,客戶(hù)通過(guò)瀏覽器訪問(wèn)Web服務(wù)器和與Web服務(wù)器相連的后臺(tái)數(shù)據(jù)庫(kù)的體系結(jié)構(gòu),它由Web瀏覽器、Web服務(wù)器、中間件和數(shù)據(jù)庫(kù)服務(wù)器組成。在B/S/S結(jié)構(gòu)中,各組成部分之間通過(guò)Internet(或Intranet)相連,遵守HTTP協(xié)議,瀏覽器通過(guò)發(fā)送請(qǐng)求和服務(wù)器端建立連接,從而實(shí)現(xiàn)以整個(gè)Internet為背景的數(shù)據(jù)存儲(chǔ)和訪問(wèn)。結(jié)果4 Web瀏覽器結(jié)果4 Web瀏覽器SQL請(qǐng)求圖2-1Web數(shù)據(jù)庫(kù)系統(tǒng)的三層B/S/S體系結(jié)構(gòu)B/S/S結(jié)構(gòu)中的表示層有Web瀏覽器,它向網(wǎng)絡(luò)上的Web服務(wù)器提出服務(wù)請(qǐng)求,接收Web服務(wù)器返回的頁(yè)面并顯示給用戶(hù);事務(wù)邏輯層有Web服務(wù)器,它接受用戶(hù)的請(qǐng)求并判斷請(qǐng)求的類(lèi)型。如果請(qǐng)求的是一般靜態(tài)頁(yè)面,就直接在Web服務(wù)器的文件系統(tǒng)中找到頁(yè)面并返回;否則執(zhí)行相應(yīng)的應(yīng)用程序,比如對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新、查詢(xún)等,隨后獲得數(shù)據(jù)庫(kù)操作的結(jié)果,將結(jié)果動(dòng)態(tài)生成頁(yè)面,返回給表示層的客戶(hù)端;數(shù)據(jù)層則有數(shù)據(jù)庫(kù)服務(wù)器,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、維護(hù)、訪問(wèn)和更新,它接受Web服務(wù)器的數(shù)據(jù)操作請(qǐng)求,并把運(yùn)行結(jié)果返回給Web服務(wù)器。B/S/S結(jié)構(gòu)具有以下特點(diǎn):第一,基于TCP/IP開(kāi)放式網(wǎng)絡(luò)標(biāo)準(zhǔn)協(xié)議,完全實(shí)現(xiàn)了跨平臺(tái)訪問(wèn)計(jì)算機(jī)及其網(wǎng)絡(luò)上的各種資源,具有很強(qiáng)的系統(tǒng)獨(dú)立性和平臺(tái)無(wú)關(guān)性。第二,軟件維護(hù)開(kāi)銷(xiāo)大大降低,只需開(kāi)發(fā)維護(hù)服務(wù)器應(yīng)用程序,無(wú)需開(kāi)發(fā)客戶(hù)端程序,規(guī)范和統(tǒng)一了客戶(hù)端程序的標(biāo)準(zhǔn)一一Web瀏覽器,從而統(tǒng)一了用戶(hù)界面。第三,充分發(fā)揮了數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)高效的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理能力,實(shí)現(xiàn)了更大程度和更大范圍的數(shù)據(jù)庫(kù)資源共享。B/S/S結(jié)構(gòu)代表了當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用軟件技術(shù)發(fā)展的趨勢(shì),是目前開(kāi)發(fā)Web數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)普遍采用的數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu)。它的優(yōu)點(diǎn)使它成為構(gòu)建高效安全Web數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)首選的體系結(jié)構(gòu)[7]JavaServerPagesJavaServerPages簡(jiǎn)稱(chēng)JSP^,是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類(lèi)似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中插入Java程序段(scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開(kāi)發(fā)的Web應(yīng)用是跨平臺(tái)的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。與前一代Internet/Intranet開(kāi)發(fā)語(yǔ)言(ASP、PHP)相比,JSP在以下幾個(gè)方面有了重大突破:第一,通過(guò)JSP的擴(kuò)展標(biāo)簽庫(kù)和JavaBeans功能,網(wǎng)站邏輯和網(wǎng)站界面可以完美地分離。第二,使用EnterpriseJavaBeans,可以輕松地在JSP開(kāi)發(fā)的Web中實(shí)現(xiàn)事務(wù)、安全、會(huì)話等等企業(yè)級(jí)應(yīng)用所需要的功能。第三,JDBC提供了不同的數(shù)據(jù)庫(kù)產(chǎn)品無(wú)關(guān)的數(shù)據(jù)庫(kù)連接方式,更重要的是,數(shù)據(jù)庫(kù)連接池提供了一種比普通的數(shù)據(jù)庫(kù)連接方式效率高得多的連接方式。Web服務(wù)器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶(hù)。程序片段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)以及發(fā)送email等等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都是在服務(wù)器端進(jìn)行,網(wǎng)絡(luò)上傳送給客戶(hù)端僅是得到的結(jié)果,對(duì)客戶(hù)瀏覽器的要求最低,可以實(shí)現(xiàn)無(wú)plugin,無(wú)ActiveX,無(wú)JavaApplet,甚至無(wú)Frame。JSP具有以下的優(yōu)點(diǎn)⑹:第一,將內(nèi)容的生成和顯示進(jìn)行分離。使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝標(biāo)識(shí)在JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響動(dòng)態(tài)內(nèi)容的生成。在服務(wù)器端,JSP引擎JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的動(dòng)態(tài)內(nèi)容并且將結(jié)果以HTML(或XML)頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。第二,可重用的組件。絕大多數(shù)JSP頁(yè)面依賴(lài)于可重用的,跨平臺(tái)的組件(JavaBeans或者EJB組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶(hù)團(tuán)體所使用?;诮M件的方法加速了總體開(kāi)發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開(kāi)發(fā)努力中得到平衡。第三,用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)。Web頁(yè)面開(kāi)發(fā)人員不會(huì)都是熟悉腳本語(yǔ)言的編程人員。JSP技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時(shí)的功能。StrutsStruts是Apache軟件基金組織Jakarta項(xiàng)目的一個(gè)子項(xiàng)目,5仃成$的前身是CraigR.McClanahan編寫(xiě)的JSPModel2架構(gòu)。Struts在英文中是〃支架、支撐〃的意思,這表明了5仃成$在Web應(yīng)用開(kāi)發(fā)中的巨大作用,采用Struts可以更好地遵循MVC模式。此外,可以更好地遵循MVC模式。此外,JSP/Servlet的優(yōu)點(diǎn),減輕程序員的工作量,具有很強(qiáng)的可擴(kuò)展性。Struts的作者Craig參與了JSP規(guī)范制定以及Tomcat4的開(kāi)發(fā),同時(shí)還領(lǐng)導(dǎo)制定YJ2EE平臺(tái)的Web層架構(gòu)的規(guī)范。受此影響,Struts框架一經(jīng)推出,立即引起了Java開(kāi)發(fā)者的廣泛興趣,并在全世界推廣開(kāi)來(lái),最終成為世界上應(yīng)用最廣泛的MVC框架⑼。Hibernate當(dāng)前的軟件開(kāi)發(fā)語(yǔ)言已經(jīng)全面轉(zhuǎn)向面向?qū)ο?,而?shù)據(jù)庫(kù)系統(tǒng)仍停留在關(guān)系數(shù)據(jù)庫(kù)階段。面對(duì)復(fù)雜的企業(yè)環(huán)境,同時(shí)使用面向?qū)ο笳Z(yǔ)言和關(guān)系數(shù)據(jù)庫(kù)是相當(dāng)麻煩的,不但中間的過(guò)渡難以理解,而且其開(kāi)發(fā)周期也相當(dāng)長(zhǎng)。Hibernate是一個(gè)面向Java環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具。對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射(Object/RelationalMapping)表示一種技術(shù),用來(lái)把對(duì)象模型表示的對(duì)象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去ns。Hibernate的目標(biāo)是:釋放開(kāi)發(fā)者通常的數(shù)據(jù)持久化相關(guān)的編程任務(wù)的95%。對(duì)于以數(shù)據(jù)為中心的程序而言,往往在數(shù)據(jù)庫(kù)中使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)商業(yè)邏輯,Hibernate可能不是最好的解決方案。但對(duì)于那些基于Java的中間件應(yīng)用中,設(shè)計(jì)采用面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯時(shí),Hibernate是最有用的。不管怎樣,Hibernate能消除那些針對(duì)特定數(shù)據(jù)庫(kù)廠商的SQL代碼,并且把結(jié)果集由表格式的形式轉(zhuǎn)換成值對(duì)象的形式。Hibernate不僅管理Java類(lèi)到數(shù)據(jù)庫(kù)表的映射(包括Java數(shù)據(jù)類(lèi)型到SQL數(shù)據(jù)類(lèi)型的映射),還提供數(shù)據(jù)查詢(xún)和獲取數(shù)據(jù)的方法,可以大幅度地減少在開(kāi)發(fā)時(shí)人工使用SQL和JDBC處理數(shù)據(jù)的時(shí)間。MySQLMySQL是最流行的開(kāi)放源碼SQL數(shù)據(jù)庫(kù)管理系統(tǒng),它是由MySQLAB公司開(kāi)發(fā)、發(fā)布并支持的。MySQLAB是由多名MySQL開(kāi)發(fā)人創(chuàng)辦的一家商業(yè)公司。它是一家第二代開(kāi)放源碼公司,結(jié)合了開(kāi)放源碼價(jià)值取向、方法和成功的商業(yè)模型。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指得是結(jié)構(gòu)化查詢(xún)語(yǔ)言。SQL是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言,它是由ANSI/ISOSQL標(biāo)準(zhǔn)定義的。SQL標(biāo)準(zhǔn)自1986年以來(lái)不斷演化發(fā)展,有數(shù)種版本。MySQL軟件是一種開(kāi)放源碼軟件。開(kāi)放源碼意味著任何人都能使用和改變軟件。任何人都能從Internet下載MySQL軟件,而無(wú)需支付任何費(fèi)用。如果愿意,你可以研究源碼并進(jìn)行恰當(dāng)?shù)母?,以滿足你自己的需求。MySQL數(shù)據(jù)庫(kù)服務(wù)器具有快速、可靠和易于使用的特點(diǎn)。MySQL服務(wù)器還有一套實(shí)用的特性集合,這些特性是通過(guò)與用戶(hù)的密切合作而開(kāi)發(fā)的。在MySQL的基準(zhǔn)測(cè)試主頁(yè)上,給出YMySQL服務(wù)器和其他數(shù)據(jù)庫(kù)管理器。MySQL服務(wù)器最初是為處理大型數(shù)據(jù)庫(kù)而開(kāi)發(fā)的,與已有的解決方案相比,它的速度更快,多年以來(lái),它已成功用于眾多要求很高的生產(chǎn)環(huán)境。盡管MySQL始終在不斷發(fā)展,但目前MySQL服務(wù)器已能提供豐富和有用的功能。它具有良好的連通性、速度和安全性,這使得MySQL十分適合于訪問(wèn)Internet上的數(shù)據(jù)庫(kù)。MySQL服務(wù)器工作在客戶(hù)端/服務(wù)器模式下,或嵌入式系統(tǒng)中。MySQL數(shù)據(jù)庫(kù)軟件是一種客戶(hù)端/服務(wù)器系統(tǒng),由支持不同后端的1個(gè)多線程SQL服務(wù)器,數(shù)種不同的客戶(hù)端程序和庫(kù),眾多管理工具和廣泛的應(yīng)用編程接口API組成。還能以嵌入式多線程庫(kù)的形式提供MySQL服務(wù)器,你可以將其鏈接到你的應(yīng)用程序,從而獲得更小、更快、和更易管理的產(chǎn)品⑷。TomcatWeb服務(wù)器Tomcat服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用服務(wù)器。它是Apache軟件基金會(huì)(ApacheSoftwareFoundation)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成?。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn),Tomcat5支持最新的Servlet和JSP規(guī)范。因?yàn)門(mén)omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。Tomcat很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開(kāi)發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。Tomcat是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶(hù)不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP程序的首選。對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置始pache服務(wù)器,可利用它響應(yīng)對(duì)HTML頁(yè)面的訪問(wèn)請(qǐng)求。實(shí)際上Tomcat部分是Apache服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行Tomcat時(shí),它實(shí)際上作為一個(gè)與Apache獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。這里的訣竅是,當(dāng)配置正確時(shí),Apache為HTML頁(yè)面服務(wù),而Tomcat實(shí)際上運(yùn)行JSP頁(yè)面和Servlet。另外,Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過(guò),Tomcat處理靜態(tài)HTML的能力不如Apache服務(wù)器。.系統(tǒng)的需求分析在系統(tǒng)的可行性分析完成以后,并確定系統(tǒng)可以立即投入設(shè)計(jì)和研制時(shí),下一步要做的工作便是系統(tǒng)的需求分析,即通過(guò)各種途徑(訪談、調(diào)查問(wèn)卷、實(shí)地考察等)了解并明確用戶(hù)對(duì)所要開(kāi)發(fā)的系統(tǒng)各方面的需求,包括功能上的要求、性能上的要求、操作方便性的要求等等。本章對(duì)c語(yǔ)言在線考試系統(tǒng)進(jìn)行了需求分析,主要是根據(jù)用戶(hù)對(duì)系統(tǒng)功能方面的要求,明確了系統(tǒng)所要實(shí)現(xiàn)的各個(gè)功能的相關(guān)細(xì)節(jié),并在此基礎(chǔ)上對(duì)系統(tǒng)進(jìn)行了模塊劃分,為后續(xù)的系統(tǒng)的設(shè)計(jì)打下基礎(chǔ)。系統(tǒng)的功能需求根據(jù)用戶(hù)對(duì)系統(tǒng)功能方面的實(shí)際要求,C語(yǔ)言在線考試系統(tǒng)的主要功能包括:用戶(hù)登錄驗(yàn)證功能、用戶(hù)管理功能、試題管理功能(試題的錄入、查詢(xún)、修改、刪除)、考試管理功能、自動(dòng)組卷功能、倒計(jì)時(shí)功能、試卷提交功能、故障延時(shí)功能和答卷自動(dòng)評(píng)分功能。本節(jié)詳細(xì)地說(shuō)明了用戶(hù)對(duì)這些功能的需求。(1)用戶(hù)登錄驗(yàn)證功能用戶(hù)在登錄C語(yǔ)言在線考試系統(tǒng)時(shí)必須進(jìn)行身份驗(yàn)證,只有通過(guò)了身份驗(yàn)證,才能進(jìn)入并使用該系統(tǒng)。系統(tǒng)的用戶(hù)應(yīng)分成三大類(lèi),即管理員、教師和考生。用戶(hù)在登錄時(shí),系統(tǒng)應(yīng)提供用戶(hù)類(lèi)別的選擇,以區(qū)別不同用戶(hù)的登錄;用戶(hù)在選擇好登錄身份之后,系統(tǒng)應(yīng)該要求用戶(hù)提供用戶(hù)名和密碼,以進(jìn)行登錄驗(yàn)證。系統(tǒng)應(yīng)該為管理員(有若干位)預(yù)置登錄的用戶(hù)名和密碼,并允許管理員修改用戶(hù)名和密碼。在系統(tǒng)提供給教師和考生使用前,管理員負(fù)責(zé)向系統(tǒng)中提前錄入教師和考生的一些相關(guān)信息,比如教師的編號(hào)、考生的學(xué)號(hào)以及各自的身份證號(hào)等等,這些信息可用來(lái)作為這兩類(lèi)用戶(hù)首次登錄時(shí)的驗(yàn)證信息。用戶(hù)首次登錄之后,系統(tǒng)應(yīng)該要求用戶(hù)修改登錄信息,特別是登錄密碼,以防止他人冒用。此外,為了防止惡意軟件進(jìn)行系統(tǒng)攻擊,每個(gè)用戶(hù)登錄之前都要以圖片的形式產(chǎn)生一組隨機(jī)驗(yàn)證碼[8]用戶(hù)必須輸入正確的驗(yàn)證碼才能進(jìn)入系統(tǒng)。(2)用戶(hù)管理功能C語(yǔ)言在線考試系統(tǒng)應(yīng)該對(duì)用戶(hù)進(jìn)行有效的管理。系統(tǒng)的用戶(hù)分成了三類(lèi),即管理員、教師和考生。管理員具有系統(tǒng)操作的最高權(quán)限,負(fù)責(zé)添加教師和考生用戶(hù),并查看其用戶(hù)信息(不包括密碼)。管理員的初始用戶(hù)名和密碼是內(nèi)置的,管理員可以修改自己的用戶(hù)名和密碼,并添加和修改其他相關(guān)信息。對(duì)于教師用戶(hù)來(lái)說(shuō),用戶(hù)信息應(yīng)至少包括登錄的用戶(hù)名和密碼,初始時(shí)可以選擇教師的教師編號(hào)作為用戶(hù)名,身份證號(hào)作為密碼,之后可以修改。教師可以添加和修改自身相關(guān)的其他信息,并查看考試結(jié)果(包括相關(guān)分析)。對(duì)于考生來(lái)說(shuō),用戶(hù)信息應(yīng)至少包括用戶(hù)名、密碼,初始時(shí),用戶(hù)名為考生的學(xué)號(hào),密碼為考生的身份證號(hào),之后可以修改??忌梢蕴砑雍托薷淖陨淼南嚓P(guān)其他信息,并查看考試成績(jī)。(3)試題管理功能C語(yǔ)言在線考試系統(tǒng)需要實(shí)現(xiàn)試題的管理功能,即組建一個(gè)試題庫(kù),以便對(duì)大量的C語(yǔ)言試題進(jìn)行高效、便捷的管理。該功能包括:試題的錄入,即使得教師能夠方便地將C語(yǔ)言試題及其參考答案錄入系統(tǒng)的試題庫(kù)。試題錄入子功能應(yīng)該根據(jù)教師錄入的試題的類(lèi)型(選擇題、填空題、程序設(shè)計(jì)題)對(duì)試題進(jìn)行分類(lèi)管理;試題的查詢(xún),即使得教師能夠根據(jù)試題的某些關(guān)鍵字方便地查詢(xún)?cè)囶},以便檢查和修改試題。試題的查詢(xún)子功能同樣應(yīng)該對(duì)不同的題型進(jìn)行分類(lèi)查詢(xún),以提高查詢(xún)的效率;試題的修改,即使教師能夠?qū)σ呀?jīng)錄入系統(tǒng)的試題及其參考答案進(jìn)行不限次數(shù)的修改,以便提高試題本身或參考答案的準(zhǔn)確性;試題的刪除,即使教師能夠刪除已經(jīng)錄入系統(tǒng)的試題(連同參考答案),以便更新試題庫(kù)。(4)考試管理功能考試管理功能,即系統(tǒng)提供管理員對(duì)考試信息以及考試公告的管理功能。具體來(lái)說(shuō),系統(tǒng)管理員用戶(hù)可以安排考試、編輯考試信息、利用自動(dòng)組卷功能生成試卷投入考試使用;系統(tǒng)管理員可以發(fā)布、編輯考試公告。而教師和考生用戶(hù)則只能瀏覽考試公告。(5)自動(dòng)組卷功能自動(dòng)組卷功能,即系統(tǒng)能夠自動(dòng)生成C語(yǔ)言試卷,供考生作答。自動(dòng)組卷功能應(yīng)該根據(jù)管理員的要求組卷,即管理員可以設(shè)置試卷所包括的題型,各類(lèi)題型的分值和題數(shù),各類(lèi)型的試題在試卷上的先后順序以及考試的時(shí)間限制。自動(dòng)組卷功能應(yīng)該按照管理員設(shè)置的出卷要求按照某種算法從試題庫(kù)中選擇相應(yīng)的試題,保證每個(gè)試題都有機(jī)會(huì)出現(xiàn)在試卷上,并且每次組卷試卷相同的概率盡可能小。(6)倒計(jì)時(shí)功能倒計(jì)時(shí)功能,即在考生進(jìn)行測(cè)試的界面上提供倒計(jì)時(shí),以便考生隨時(shí)了解考試的剩余時(shí)間。倒計(jì)時(shí)功能應(yīng)該根據(jù)教師設(shè)置的考試的時(shí)間限制準(zhǔn)確地進(jìn)行,保證考試的公平性。倒計(jì)時(shí)功能應(yīng)該在考試結(jié)束前10分鐘時(shí)給出相應(yīng)的提示,提醒考生抓緊時(shí)間作答。此外,該功能出現(xiàn)在界面上的位置應(yīng)該合理,顯示的大小適中,不至于分散考生的注意力,產(chǎn)生負(fù)面效果。(7)試卷提交功能試卷提交功能包括兩種情況,一種情況是考生在考試時(shí)間截止之前就已經(jīng)完成答題,應(yīng)允許考生提交試卷;另一種情況是考生在規(guī)定的考試時(shí)間內(nèi)沒(méi)能完成答題,此時(shí),系統(tǒng)將自動(dòng)完試卷的提交,以避免考生繼續(xù)答題,破壞考試的公平性。對(duì)于提前完成考試并欲提交試卷的考生,試卷提交功能在正式提交試卷之前,應(yīng)該給出確認(rèn)提示,保證考生不是由于誤操作而提交試卷。自動(dòng)提交試卷的情況則應(yīng)該與倒計(jì)時(shí)功能相一致,確保倒計(jì)時(shí)到零時(shí)自動(dòng)提交試卷并切換主界面到考試結(jié)束界面。(8)故障延時(shí)功能故障延時(shí)功能,即當(dāng)某個(gè)考生的電腦發(fā)生故障,例如死機(jī)時(shí),監(jiān)考人員可以暫停該考生的答題倒計(jì)時(shí)。當(dāng)故障排除之后,考生可重新登錄系統(tǒng),進(jìn)入考試,此時(shí)考生的考試剩余時(shí)間同故障發(fā)生時(shí)相同,即考生的考試時(shí)間被延遲。(9)答卷自動(dòng)評(píng)分功能答卷自動(dòng)評(píng)分功能完成考生答卷的批閱和評(píng)分工作,得出考生的成績(jī)。由于C語(yǔ)言考試試題一般包括選擇題、填空題和程序設(shè)計(jì)題,所以系統(tǒng)應(yīng)能夠自動(dòng)完成這三類(lèi)試題的批閱和評(píng)分。對(duì)于程序設(shè)計(jì)題,應(yīng)能將考生的程序保存下來(lái),批量編譯、運(yùn)行,得出結(jié)果以判斷程序是否正確。系統(tǒng)的模塊劃分根據(jù)系統(tǒng)的功能需求,將C語(yǔ)言在線考試系統(tǒng)分成六大模塊進(jìn)行設(shè)計(jì):(1)用戶(hù)登錄驗(yàn)證模塊;(2)用戶(hù)管理模塊;(3)試題管理模塊;(4)考試管理模塊;(5)在線考試模塊;(6)答卷自動(dòng)評(píng)分模塊。各個(gè)模塊及子模塊的劃分和功能說(shuō)明如表3-1所示:表3-1C語(yǔ)言在線考試系統(tǒng)的模塊劃分編號(hào)模塊名稱(chēng)子模塊名稱(chēng)功能說(shuō)明1用戶(hù)登錄模塊實(shí)現(xiàn)用戶(hù)登錄時(shí)的身份選擇、驗(yàn)證。2用戶(hù)管理模塊管理員信息管理模塊添加、刪除教師和考生用戶(hù);修改和查看教師和考生的部分信息;修改和查看管理員個(gè)人信息。教師信息管理模塊修改和查看教師個(gè)人信息;查看考生的部分信息??忌畔⒐芾砟K修改和查看考生個(gè)人信息、查詢(xún)考試相關(guān)信息。

續(xù)表3-1編號(hào)模塊名稱(chēng)子模塊名稱(chēng)功能說(shuō)明3試題管理模塊試題錄入模塊允許教師錄入試題及參考答案。試題編輯模塊允許教師對(duì)試題庫(kù)中的試題進(jìn)行查詢(xún)、修改、刪除。4考試管理模塊自動(dòng)組卷模塊自動(dòng)組卷;保存、查看、刪除試卷。考試信息管理模塊發(fā)布考試;保存、修改、刪除考試信息。考試公告管理模塊對(duì)考試公告進(jìn)行添加、修改、刪除。5在線考試模塊倒計(jì)時(shí)模塊給出考試剩余時(shí)間和相應(yīng)的提示信息。試卷提交模塊允許考試提前交卷;考試時(shí)間截止時(shí)自動(dòng)交卷。試題顯示及作答模塊顯示試題,供考生在線作答。故障延時(shí)模塊故障發(fā)生時(shí),暫??忌拇痤}倒計(jì)時(shí)。6答卷自動(dòng)評(píng)分模塊客觀題評(píng)分模塊對(duì)選擇題、填空題進(jìn)行自動(dòng)評(píng)分,并保存得分。程序設(shè)計(jì)題評(píng)分模塊對(duì)程序設(shè)計(jì)題自動(dòng)評(píng)分,并保存得分。.系統(tǒng)的設(shè)計(jì)在c語(yǔ)言在線考試系統(tǒng)的需求分析和模塊劃分完成的基礎(chǔ)上,本章論述了該系統(tǒng)的概要設(shè)計(jì)和主要模塊的詳細(xì)設(shè)計(jì)。系統(tǒng)的概要設(shè)計(jì)本節(jié)對(duì)C語(yǔ)言在線考試系統(tǒng)進(jìn)行概要設(shè)計(jì),給出了系統(tǒng)的總體結(jié)構(gòu)圖和數(shù)據(jù)庫(kù)的設(shè)計(jì)。系統(tǒng)的總體結(jié)構(gòu)根據(jù)上一章需求分析中的系統(tǒng)模塊劃分,對(duì)C語(yǔ)言在線考試系統(tǒng)進(jìn)行總體設(shè)計(jì),得到系統(tǒng)的總體結(jié)構(gòu)圖如圖4-1所示(各模塊的功能說(shuō)明見(jiàn)上一章表3-1):

系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)本節(jié)根據(jù)系統(tǒng)各模塊的功能和模塊間的相互關(guān)系,對(duì)系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)進(jìn)行論述,包括了數(shù)據(jù)庫(kù)的需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯設(shè)計(jì)和表設(shè)計(jì)。(1)數(shù)據(jù)庫(kù)的需求分析C語(yǔ)言在線考試系統(tǒng)實(shí)現(xiàn)了用戶(hù)管理、試題管理、在線考試、試卷評(píng)分等功能,這些功能所涉及到的數(shù)據(jù)庫(kù)的需求說(shuō)明如下:為實(shí)現(xiàn)用戶(hù)的管理,必須在數(shù)據(jù)庫(kù)中保存用戶(hù)的信息,由于用戶(hù)分成管理員、教師和考生三類(lèi),數(shù)據(jù)庫(kù)中應(yīng)建立對(duì)應(yīng)的管理員表、教師表和考生表。此外,為了方便管理同一考場(chǎng)的考生,數(shù)據(jù)庫(kù)中應(yīng)建立考生組表。為實(shí)現(xiàn)試題的管理,數(shù)據(jù)庫(kù)中應(yīng)建立試題表以保存試題信息。為實(shí)現(xiàn)考試的管理,數(shù)據(jù)庫(kù)中應(yīng)建立試卷表保存自動(dòng)組卷功能生成的試卷;應(yīng)建立考試信息表和考試公告表,保存考試信息和考試公告。為實(shí)現(xiàn)在線考試和試卷評(píng)分,數(shù)據(jù)庫(kù)中應(yīng)建立答題表存放考生的答題結(jié)果。此外,應(yīng)建立考生的成績(jī)表用于保存考生的成績(jī)和相關(guān)的考試信息。對(duì)于系統(tǒng)E-R圖中的m:n關(guān)系(即多對(duì)多關(guān)系),也應(yīng)建立相應(yīng)的表。(2)數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)

根據(jù)C語(yǔ)言在線考試系統(tǒng)的數(shù)據(jù)庫(kù)需求分析進(jìn)行概念結(jié)構(gòu)設(shè)計(jì),畫(huà)出系統(tǒng)的實(shí)體-聯(lián)系圖,即E-R圖[3](圖4-2)以及實(shí)體圖(圖4-3?圖4-18)。圖4-2C語(yǔ)言在線考試系統(tǒng)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)(E-R圖)圖4-4教師實(shí)體圖

圖4-7考試實(shí)體圖圖4-9試卷實(shí)體圖圖4-13公告管理實(shí)體圖圖4-14考生組管理實(shí)體圖(3)數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)及表設(shè)計(jì)根據(jù)系統(tǒng)的總體概念設(shè)計(jì)模型、E-R圖向關(guān)系模式的轉(zhuǎn)化規(guī)則和數(shù)據(jù)庫(kù)的范式理論,得到系統(tǒng)優(yōu)化后的邏輯模型[5]如表4-1?表4-17所示:表4-1管理員表(admin表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明AdminlDInt自增YesNo管理員編號(hào)

RealNamevarChar(20)NoNo真實(shí)姓名續(xù)表4-1字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明PasswordvarChar(20)NoNo密碼UsernamevarChar(20)NoNo用戶(hù)名表4-2教師表(teacher表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明TeacherIDInt自增YesNo教師編號(hào)RealNamevarChar(20)NoNo真實(shí)姓名PasswordvarChar(20)NoNo密碼UsernamevarChar(20)NoNo用戶(hù)名AcademyvarChar(20)NoNo所在院系表4-3考生表(student表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明StudentIDInt自增YesNo考生編號(hào)UsernamevarChar(20)NoNo用戶(hù)名PasswordvarChar(20)NoNo密碼RealNamevarChar(20)NoNo真實(shí)姓名GroupIDIntNoNo考生組編號(hào),外鍵AcademyvarChar(20)NoNo所在院系表4-4試題表(question表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明QuestionIDInt自增YesNo試題編號(hào)TypeChar(10)NoNo試題類(lèi)型DescriptionNvarchar(500)NoNo試題描述DifficultyChar(10)NoNo難度ScoreOfQuestionNvarchar(200)NoNo該題分值A(chǔ)nswerNvarchar(200)NoNo參考答案表4-5考試表(exam表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明ExamIDInt自增YesNo考試編號(hào)

GroupIDIntNoNo考生組編號(hào),外鍵續(xù)表4-5字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明PaperIDIntNoNo試卷編號(hào),外鍵SupervisorIdvarChar(20)NoNo監(jiān)考人編號(hào)(管理員監(jiān)考)ExamRoomvarChar(20)NoNo考場(chǎng)DescriptionNvarchar(500)NoNo考試描述ExamDateDateTimeNoNo考試日期DurationIntNoNo考試時(shí)長(zhǎng)(分鐘)TotalScoreIntNoNo考試總分表4-6考試公告表(notice表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明NoticeIDInt自增YesNo公告編號(hào)NoticeTitleNvarchar(30)NoNo公告標(biāo)題ReadCntInt0NoNo瀏覽次數(shù)ContentNvarchar(500)NoNo公告內(nèi)容AuthorChar(30)NoNo發(fā)布人表4-7試卷表(exam_paper表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明PaperIDInt自增YesNo試卷編號(hào)AdminIDIntNoNo管理員編號(hào),外鍵AddTimeDateTimeNoNo試卷生成時(shí)間IsUsedInt0NoNo是否使用表4-8考生組表(stu_group表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明GroupIDInt自增YesNo考生組編號(hào)GroupNameNvarchar(20)NoNo考生組名TeacherIDIntNoNo指導(dǎo)教師編號(hào),外鍵MemoNvarchar(100)NoNo備注

表4-9答題卡(answer_sheet表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明SheetIDInt自增YesNo答題卡編號(hào)續(xù)表4-9字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明ExamIDIntNoNo考試編號(hào),外鍵StudentIDIntNoNo考生編號(hào),外鍵QuestionIDIntNoNo試題編號(hào),外鍵TypeChar(1)NoNo試題類(lèi)型IsCheckedBit(1)0NoNo是否批閱AnswerVarchar(300)NoNo考生答案ScoreIntNoNo該題得分表4-10考生成績(jī)單表(mark_sheet表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明SheetIDInt自增YesNo成績(jī)單編號(hào)ExamIDIntNoNo考試編號(hào),外鍵StudentIDIntNoNo考生學(xué)號(hào),外鍵IsPaperSubmittedBit(1)NoNo試卷是否提交IsExamPausedBit(1)NoNo考試是否暫停RemainMinuteIntNoNo考試剩余時(shí)間ScoreOfStudentIntNoNo考生總分表4-11公告管理表(notice_org表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明NoticeOrgIDInt自增YesNo編號(hào)AdminIDIntNoNo管理員編號(hào),外鍵NoticeIDIntNoNo公告編號(hào),外鍵OperationChar(10)NoNo操作(修改信息等)OperationDateDateTimeNoNo操作日期表4-12考生組管理表(stu_group_org表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明

GroupOrgIDInt自增YesNo編號(hào)AdminIDIntNoNo管理員編號(hào),外鍵GroupIDIntNoNo考生組編號(hào),外鍵OperationChar(10)NoNo操作(修改信息等)OperationDateDateTimeNoNo操作日期表4-13教師管理表(teacher_org表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明TeacherOrgIDInt自增YesNo編號(hào)AdminIDIntNoNo管理員編號(hào),外鍵TeacherIDIntNoNo教師編號(hào),外鍵OperationChar(10)NoNo操作(修改等)OperationDateDateTimeNoNo操作日期表4-14試題管理表(question_org表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明QuestionOrgIDInt自增YesNo編號(hào)TeacherIDIntNoNo教師編號(hào),外鍵QuestionIDIntNoNo試題編號(hào),外鍵OperationNvarchar(200)NoNo操作(添加、修改等)OperationDateDateTimeNoNo操作日期表4-15考試管理表(exam_org表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明ExamOrgIDInt自增YesNo編號(hào)AdminIDIntNoNo管理員編號(hào),外鍵ExamIDIntNoNo考試編號(hào),外鍵OperationNvarchar(200)NoNo操作(修改信息等)OperationDateDateTimeNoNo操作日期表4-16組卷表(paper_composition表)字段名稱(chēng)類(lèi)型默認(rèn)值是否主鍵是否為空說(shuō)明PaperCreationIDInt自增YesNo編號(hào)QuestionIDIntNoNo試題編號(hào),外鍵PaperIDIntNoNo試卷編號(hào),外鍵系統(tǒng)主要模塊的詳細(xì)設(shè)計(jì)本節(jié)在上一節(jié)系統(tǒng)概要設(shè)計(jì)的基礎(chǔ)上,對(duì)系統(tǒng)的主要模塊進(jìn)行詳細(xì)設(shè)計(jì)。系統(tǒng)的主要模塊包括試題管理、考試管理、在線考試和自動(dòng)評(píng)分模塊。本文通過(guò)這些模塊(子模塊)的功能流程圖來(lái)說(shuō)明它們的詳細(xì)設(shè)計(jì)。試題管理模塊設(shè)計(jì)試題管理模塊下分成了兩個(gè)子模塊,包括試題的錄入子模塊、試題編輯子模塊,該模塊只提供給教師用戶(hù)使用。(1)試題錄入試題錄入子模塊為教師用戶(hù)提供試題(包括參考答案、難度和其他試題參數(shù))的錄入功能,以組建試題庫(kù),是自動(dòng)組卷的基礎(chǔ)。該子模塊的功能流程圖如圖4-19所示:圖4-19試題錄入子模塊功能流程圖(2)試題編輯試題編輯子模塊為教師用戶(hù)提供按關(guān)鍵字查詢(xún)?cè)囶}、修改和刪除試題(包括參考答案)的功能。該子模塊的功能流程圖如圖4-20所示:

圖4-20試題編輯子模塊功能流程圖考試管理模塊設(shè)計(jì)考試管理模塊下分成三個(gè)子模塊,即自動(dòng)組卷子模塊、考試信息管理子模塊和考試公告管理子模塊。本小節(jié)重點(diǎn)論述自動(dòng)組卷子模塊的詳細(xì)設(shè)計(jì)。本文中自動(dòng)組卷采用的是遺傳算法,遺傳算法的概念由Holland和他的同事在二十世紀(jì)六七十年代提出。遺傳算法的來(lái)源于解釋物種起源的進(jìn)化理論。在自然界中,不適應(yīng)環(huán)境的弱者將被自然選擇所淘汰。強(qiáng)者有更多的機(jī)會(huì)通過(guò)繁殖將基因傳遞給后代。長(zhǎng)遠(yuǎn)來(lái)說(shuō),帶有正確基因組合的物種在種群中占據(jù)主導(dǎo)地位。有時(shí),在緩慢的進(jìn)化中,基因可能發(fā)生突變。如果這些突變能夠在物種面對(duì)生存挑戰(zhàn)時(shí)帶來(lái)好處,舊物種就進(jìn)化為新物種了。而不成功的突變則被自然選擇所消滅[1。]本文中自動(dòng)組卷子模塊根據(jù)試卷所要求的各題型的題量、難度,通過(guò)遺傳算法從試題庫(kù)中選取相關(guān)的試題,自動(dòng)生成試卷,并保存。算法的流程如圖4-21所示,其中適應(yīng)值低表示試卷更符合組卷要求:

否圖否圖4-21自動(dòng)組卷子模塊功能流程圖在線考試模塊設(shè)計(jì)在線考試模塊下分成了四個(gè)子模塊,本小節(jié)主要詳細(xì)論述倒計(jì)時(shí)子模塊、故障延時(shí)子模塊的設(shè)計(jì)。(1)倒計(jì)時(shí)倒計(jì)時(shí)子模塊在考生進(jìn)行在線考試時(shí)在界面上給出考試的剩余時(shí)間,并在距離考試結(jié)束10分鐘的時(shí)候在界面上給出相應(yīng)提示,以提醒考生。其功能流程圖如圖4-22所示:(2)故障延時(shí)圖4-22倒計(jì)時(shí)子模塊功能流程圖故障延時(shí)子模塊主要實(shí)現(xiàn)監(jiān)考人員(由管理員擔(dān)當(dāng))暫停某個(gè)考生考試的功能。該子模塊的功能流程圖如圖4-23所示:4.2.4.答卷自動(dòng)評(píng)分模塊設(shè)計(jì)試卷評(píng)分模塊下分成了兩個(gè)子模塊,包括客觀題評(píng)分子模塊和程序設(shè)計(jì)題評(píng)分子模塊。(1)客觀題評(píng)分客觀題評(píng)分子模塊實(shí)現(xiàn)對(duì)選擇題、填空題進(jìn)行自動(dòng)評(píng)分(通過(guò)對(duì)比考生答案和參考答案)并保存得分。其功能流程圖如圖4-24所示:圖4-24客觀題評(píng)分子模塊功能流程圖(2)程序設(shè)計(jì)題評(píng)分程序設(shè)計(jì)題評(píng)分子模塊從考生答題卡中獲取考生編寫(xiě)的程序,將其保存為C語(yǔ)言源程序(*.c),并進(jìn)行編譯、運(yùn)行得出結(jié)果。通過(guò)對(duì)比考生程序的運(yùn)行結(jié)果和試題的參考答案來(lái)確定考生是否得分。若考生的程序無(wú)法通過(guò)編譯則不進(jìn)行運(yùn)行操作,其功能流程圖如圖4-25所示:否圖4-25程序設(shè)計(jì)題評(píng)分子模塊功能流程圖5.系統(tǒng)主要模塊的實(shí)現(xiàn)本章在上一章系統(tǒng)主要模塊詳細(xì)設(shè)計(jì)的基礎(chǔ)上,給出了(3語(yǔ)言在線考試系統(tǒng)的主要模塊的具體實(shí)現(xiàn)過(guò)程,包括項(xiàng)目創(chuàng)建過(guò)程和這些模塊的主要實(shí)現(xiàn)代碼。5.1.創(chuàng)建項(xiàng)目在本文中,系統(tǒng)的實(shí)現(xiàn)用到了經(jīng)典MVC框架Struts()和經(jīng)典ORM框架Hibernate(3)。系統(tǒng)的數(shù)據(jù)庫(kù)管理軟件為MySql,Web服務(wù)器為T(mén)OMCAT(6)。在系統(tǒng)開(kāi)發(fā)工作開(kāi)始之前,必須下載、安裝和配置這些開(kāi)發(fā)工具和軟件。本節(jié)介紹開(kāi)發(fā)環(huán)境的搭建和項(xiàng)目的整體結(jié)構(gòu)。1.開(kāi)發(fā)環(huán)境的搭建本系統(tǒng)的開(kāi)發(fā)環(huán)境的搭建步驟如下:a)從Sun公司的官方網(wǎng)站()上下載適合所使用操作系統(tǒng)的JDK和JRE并安裝;b)編輯系統(tǒng)環(huán)境變量Path,使其包含JDK安裝目錄下的bin目錄;c)編輯系統(tǒng)環(huán)境變量Classpath,使其包含JDK安裝目錄下的lib目錄中的和;d)從網(wǎng)站下載Tomcat6的壓縮包,解壓后置于任意目錄下;e)添加系統(tǒng)環(huán)境變量JAVA_HOME,其值為JDK所在目錄;f)添加系統(tǒng)環(huán)境變量CATALINA_HOME,其值為T(mén)omcat所在目錄;g)從網(wǎng)站下載Ant(作為編譯工具)壓縮包,解壓后置于任意目錄下;h)添加系統(tǒng)環(huán)境變量ANT_HOME,其值為ANT所在目錄;i)從網(wǎng)站下載Struts壓縮包,解壓后備用;j)從網(wǎng)站下載Hibernate壓縮包,解壓后備用;k)在Tomcat目錄下的webapps目錄中新建目錄CExamSystem作為本項(xiàng)目的目錄,在該目錄下創(chuàng)建項(xiàng)目的文件結(jié)構(gòu),如下所示:CExamSystem—WEB-INF|-classes該目錄下存放src中Java源程序編譯后生成的.class文件和相關(guān)的配置文件|—kent| |一struts| | |—action| | |—form| |—DAO| |—po| |—tools|—系統(tǒng)的國(guó)際化配置文件|一 系統(tǒng)的Hibernate配置文件—lib 存放系統(tǒng)所需的jar包—src 該目錄下存放系統(tǒng)的Java源程序和相關(guān)的配置文件|—kent| |一struts Struts相關(guān)的Java源程序所在目錄

| | | |—action存放action類(lèi)| | | |—form 存放form類(lèi)| | |一DAO存放與訪問(wèn)數(shù)據(jù)庫(kù)相關(guān)的類(lèi)| | |—po存放Hibernate持久化類(lèi)| | |-tools存放工具類(lèi)| |一系統(tǒng)的國(guó)際化配置文件| |一系統(tǒng)的Hibernate配置文件|一系統(tǒng)的Web配置文件|一系統(tǒng)的Struts配置文件|一系統(tǒng)的build配置文件,以便使用Ant進(jìn)行源程序的編譯|—Struts的bean標(biāo)簽庫(kù)|—Struts的html標(biāo)簽庫(kù)|—Struts的logic標(biāo)簽庫(kù)-css存放樣式列表|一系統(tǒng)的樣式列表文件-images存放系統(tǒng)所需的圖片文件—inc存放JSP頁(yè)面中公用的inc文件一admin存放與admin用戶(hù)相關(guān)的JSP頁(yè)面一teacher存放與teacher用戶(hù)相關(guān)的JSP頁(yè)面一student存放與student用戶(hù)相關(guān)的JSP頁(yè)面—為登錄頁(yè)面隨機(jī)生成驗(yàn)證碼—登錄頁(yè)面2.系統(tǒng)的整體框架系統(tǒng)的整體框架結(jié)構(gòu)可由圖5-1所示:個(gè)人信息管理頁(yè)面教師管理頁(yè)面考生組管理頁(yè)面考試管理頁(yè)面考試公告管理頁(yè)面?zhèn)€人信息管理頁(yè)面教師管理頁(yè)面考生組管理頁(yè)面考試管理頁(yè)面考試公告管理頁(yè)面圖5-1系統(tǒng)的整體框架結(jié)構(gòu)試題管理模塊的實(shí)現(xiàn)試題管理模塊用于完成試題的錄入、查看、修改和刪除。本節(jié)根據(jù)4.2.1節(jié)中該模塊的設(shè)計(jì),對(duì)該模塊進(jìn)行實(shí)現(xiàn)。創(chuàng)建持久化類(lèi)和數(shù)據(jù)庫(kù)訪問(wèn)相關(guān)類(lèi)試題管理模塊所需的持久化類(lèi)主要包括:Question和QuestionOrg,為它們創(chuàng)建相應(yīng)的Hibernate配置文件以及,并在添加相應(yīng)配置內(nèi)容。同時(shí),創(chuàng)建QuestionDAO類(lèi)用戶(hù)封裝對(duì)相應(yīng)數(shù)據(jù)庫(kù)表的操作。以下是QuestionDAO類(lèi)的主要代碼,完成對(duì)試題的查看、添加、修改和刪除操作:etType((int)()*3)+1);etDifficulty((int)()*3)+1);etType();difficulty=population[n][i].getDifficulty();switch(type){case1:numOfChoiseR++;break;case2:numOfFillR++;break;default:numOfProgramR++;)switch(difficulty){case1:numOfEasy++;break;case2:numOfMiddle++;break;default:numOfDifficult++;))typeFitness=(numOfChoiseR-numOfChoiseQ)etFitnessValue()<fitness[minPos].getFitnessValue()){minPos=j;))if(minPos!=i){temp=fitness[i];fitness[i]=fitness[minPos];fitness[minPos]=temp;交叉(Crossover)本文中,交叉操作采用的是單點(diǎn)交叉,交叉點(diǎn)在個(gè)體(染色體)中央。對(duì)選擇操作完成后獲取的個(gè)體進(jìn)行兩兩隨機(jī)配對(duì),交叉后產(chǎn)生一對(duì)后代。以下是源代碼(crossOver()):publicvoidcrossOver(){int口randomArray;etPos()][p].setType(population[fitness[randomArray[i]].getPos()][p].getType());population[fitness[numOfPopulation+i].getPos()][p].setDifficulty(population[fitness[randomArray[i]].getPos()][p].getDifficulty());}else{population[fitness[numOfPopulation+i].getPos()][p].setType(population[fitness[randomArray[i+1]].getPos()][p].getType());population[fitness[numOfPopulation+i].getPos()][p].setDifficulty(population[fitness[randomArray[i+1]].getPos()][p].getDifficulty());))for(p=0;p<totalNum;p++){etPos()][p].setType(population[fitness[randomArray[i+1]].getPos()][p].getType());population[fitness[numOfPopulation+i+1].getPos()][p].setDifficulty(population[fitness[randomArray[i+1]].getPos()][p].getDifficulty());}else{population[fitness[numOfPopulation+i+1].getPos()][p].setType(population[fitness[randomArray[i]].getPos()][p].getType());population[fitness[numOfPopulation+i+1].getPos()][p].setDifficulty(population[fitness[randomArray[i]].getPos()][p].getDifficulty());)變異(Mutation)本文中變異隨機(jī)產(chǎn)生,變異的個(gè)體數(shù)由變異率和種群數(shù)決定,產(chǎn)生變異的個(gè)體只有一個(gè)基因發(fā)生突變。變異操作的主要目的是防止求得的解(試卷)是局部最優(yōu)解。以下是源代碼(mutation()):publicvoidmutation(){int口randomArray;etPos();point=(int)()*totalNum);type=population[pos][point].getType();difficulty=population[pos][point].getDifficulty();type=(type+(int)()*2)+1)%3;if(type==0)type=3;difficulty=(difficulty+(int)()*2)+1)%3;if(difficulty==0)difficulty=3;population[pos][point].setType(type);population[pos][point].setDifficulty(difficulty);)))在線考試模塊的實(shí)現(xiàn)在線考試模塊下有三個(gè)子模塊,分別是倒計(jì)時(shí)子模塊,試卷提交子模塊和試卷的顯示和作答子模塊。本節(jié)將論述倒計(jì)時(shí)子模塊和試卷提交子模塊的具體實(shí)現(xiàn)。倒計(jì)時(shí)子模塊的實(shí)現(xiàn)倒計(jì)時(shí)子模塊并不復(fù)雜,通過(guò)Javascript可以較容易地實(shí)現(xiàn),以下是關(guān)鍵代碼,在在線考試頁(yè)面加載時(shí)調(diào)用,之后以懸浮窗的形式顯示:varexamHour=<%=("examHour")%>;varduration=<%=("duration")%>;varrestMinute=duration%60;varendHour=examHour+(duration/60);varendMinute=<%=("examMinute")%>+restMinute;functiongetRestTime(){nnerHTML=remainHour+“小時(shí)”+remainMinute+“分鐘”+(remainSec%60)+"秒”;setTimeout("count()”,1000);ntValue();ntValue();ntValue();)的形式保存于特定目錄下,文件名由考試編號(hào)、考生編號(hào)和試題編號(hào)組成*/Stringpath="F:/Exam/"+examId+"#"+()+”#"+();”,code);")==0){rim()).equals().trim())){(),(),());}else{(),(),());))}catch(IOExceptione){})(examId);于500個(gè)字符的字符串表6-2試題輸入測(cè)試用例設(shè)計(jì)測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍500字符以?xún)?nèi)的字符串輸入有效1多于500字符的字符串輸入無(wú)效2表6-3試題修改、刪除測(cè)試用例設(shè)計(jì)測(cè)試操作期望結(jié)果修改某試題的難度試題難度被修改修改某試題的題型試題題型被修改修改某試題的內(nèi)容試題內(nèi)容被修改修改某試題的參考答案試題參考答案被修改刪除某試題試題被刪除

自動(dòng)組卷功能測(cè)試用例設(shè)計(jì)測(cè)試自動(dòng)組卷功能時(shí),主要看在設(shè)定合法組卷參數(shù)時(shí),組卷是否成功。表6-4給出了組卷參數(shù)輸入的等價(jià)類(lèi)劃分,表6-5給出了組卷測(cè)試用例設(shè)計(jì)。表6-4組卷參數(shù)輸入等價(jià)類(lèi)劃分輸入等價(jià)類(lèi)合理等價(jià)類(lèi)不合理等價(jià)類(lèi)各題型試題數(shù)目1.各題型數(shù)目都不超過(guò)30題.選擇題超過(guò)30題.填空題超過(guò)30題.程序設(shè)計(jì)題超過(guò)30題續(xù)表6-4輸入等價(jià)類(lèi)合理等價(jià)類(lèi)不合理等價(jià)類(lèi)試卷難度比例分布5.各個(gè)難度比例之和為16.各個(gè)難度比例之和大于1表6-5自動(dòng)組卷測(cè)試用例設(shè)計(jì)測(cè)試數(shù)據(jù)期望結(jié)果覆蓋范圍選擇題:20填空題:10程序設(shè)計(jì)題:5輸入有效1選擇題:31填空題:10程序設(shè)計(jì)題:5輸入無(wú)效2選擇題:20填空題:31程序設(shè)計(jì)題:5輸入無(wú)效3選擇題:20填空題:10程序設(shè)計(jì)題:31輸入無(wú)效4容易:33%中等:33%難:34%輸入有效5容易:70%中等:40%難:20%輸入無(wú)效6在線考試模塊測(cè)試用例設(shè)計(jì)在線考試模塊主要測(cè)試的是倒計(jì)時(shí)是否準(zhǔn)確,考試到點(diǎn)時(shí)是否自動(dòng)提交試卷,故障延時(shí)是否操作成功。表6-6是在線考試模塊測(cè)試用例設(shè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論