6-JAVA課程設(shè)計(jì)-在線考試系統(tǒng)_第1頁
6-JAVA課程設(shè)計(jì)-在線考試系統(tǒng)_第2頁
6-JAVA課程設(shè)計(jì)-在線考試系統(tǒng)_第3頁
6-JAVA課程設(shè)計(jì)-在線考試系統(tǒng)_第4頁
6-JAVA課程設(shè)計(jì)-在線考試系統(tǒng)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、成績:JAVA課程設(shè)計(jì)報(bào)告班級(jí)小組組長小組成員指導(dǎo)教師時(shí)間2021.9.前言隨著大學(xué)的擴(kuò)招,在校大學(xué)生的人數(shù)也劇增。老師教學(xué)任務(wù)繁重,加上各種教學(xué)設(shè)計(jì)、評(píng)估,老師工作量繁重不說,卻往往事倍功半,教學(xué)質(zhì)量沒有明顯的提高。同時(shí),如何設(shè)計(jì)考核的題目,使學(xué)生的知識(shí)得到總結(jié)、歸納和應(yīng)用,并且使零散的知識(shí)條理化和系統(tǒng)化,這也是老師們重點(diǎn)思考的方向,但如此一來,在繁重的教學(xué)任務(wù)之外,分散了老師們不少的精力。而隨著Internet的迅速開展和廣泛普及,網(wǎng)絡(luò)化教育代表了教育改革的一個(gè)開展方向,已經(jīng)成為現(xiàn)代教育的一個(gè)特征,并對(duì)教育的開展形成新的推動(dòng)力。Internet技術(shù)的開展也使得考試的技術(shù)手段和載體發(fā)生了革命

2、性的變化,Internet的開放性、分布性的特點(diǎn)和基于Internet的巨大的計(jì)算能力使得考試突破了時(shí)間和空間的限制。與傳統(tǒng)考試模式相比,在線考試具有無可比較的優(yōu)越性,它可以將傳統(tǒng)考試過程中的試卷組織、審定印制、傳送收集、登記發(fā)放、評(píng)判歸檔各個(gè)環(huán)節(jié)縮小到一至兩個(gè)環(huán)節(jié),幾乎屏蔽了所有人工直接干預(yù)考試活動(dòng)的可能性,不但能夠節(jié)約大量的時(shí)日、人力、物力與財(cái)力,而且還可以大幅度增加考試成績的客觀性和公正性。Internet 技術(shù)的開展為在線考試的開發(fā)提供了便利與可行性。所以本次課程設(shè)計(jì)充分利用現(xiàn)有的計(jì)算機(jī)軟、硬件和網(wǎng)絡(luò)資源實(shí)現(xiàn)無紙化考試以防止傳統(tǒng)手工考試的缺乏,力求一種高效率的考試系統(tǒng),來減輕教師負(fù)擔(dān),

3、為學(xué)生提供更好的學(xué)習(xí)平臺(tái),同時(shí)提高自己系統(tǒng)開發(fā)的能力。 而對(duì)于在線考試系統(tǒng)本身而言,由于各科教學(xué)的特點(diǎn)不同,必須借用許多種不同的題型,這樣才能全面地考察學(xué)生。而本系統(tǒng)在功能上,支持基此題型和自定義題型。同時(shí)可以對(duì)試卷的難度系數(shù)、考試的時(shí)間、參考的對(duì)象等考試規(guī)那么等進(jìn)行量化。操作簡便快捷,解決了考試程序繁蕪,教師耗時(shí)費(fèi)力的問題。學(xué)生可以在線自測(cè),系統(tǒng)按照考試規(guī)那么隨機(jī)出題;也可以參加統(tǒng)一考試,試題由系統(tǒng)按照老師制定的規(guī)那么生成統(tǒng)一的一份試卷。同時(shí)教師可以針對(duì)某個(gè)考試,查看平均分、最高分、最低分、及格率、排名、答卷等信息。在系統(tǒng)性能方面,在高并發(fā)人數(shù)下,本系統(tǒng)將依然能提供一個(gè)穩(wěn)定運(yùn)營環(huán)境。 總之本

4、系統(tǒng)實(shí)現(xiàn)后將有如下的功能:(1) 可以創(chuàng)立電子題庫,方便地實(shí)現(xiàn)試題的數(shù)字化管理.(2) 可以按照科學(xué)的策略智能組卷,從而提高出卷效率.(3) 可以具有操作性和交互性.(4) 使考試和評(píng)卷更具標(biāo)準(zhǔn)性和合理性.(5) 實(shí)現(xiàn)自動(dòng)評(píng)卷和數(shù)據(jù)的有效保存.1 工程方案11 工程成員分工工作人員文檔管理調(diào)研及進(jìn)度分析系統(tǒng)分析模塊分析代碼編寫美工設(shè)計(jì)測(cè)試工程數(shù)據(jù)庫管理1.2 工程進(jìn)度表進(jìn)度方案安排起 止 日 期要 求 完 成 的 內(nèi) 容2009-12-7到11選定開發(fā)對(duì)象,收集資料。2009-12-12到16整理資料,并進(jìn)行系統(tǒng)的分析一。2009-12-17到20系統(tǒng)分析二。2009-12-21到22系統(tǒng)初步

5、設(shè)計(jì),并將設(shè)計(jì)流程整理存檔。2009-12-23到31系統(tǒng)詳細(xì)設(shè)計(jì)。2010-1-1到5系統(tǒng)實(shí)施。2010-1-6、7調(diào)試、運(yùn)行。設(shè)計(jì)成果初步形成。2010-1-8、9編寫設(shè)計(jì)報(bào)告書。2010-1-10編寫設(shè)計(jì)報(bào)告書并上交。1.3 工程開發(fā)環(huán)境 TomcatTomcat 效勞器是一個(gè)免費(fèi)的開放源代碼的Web 應(yīng)用效勞器,我所使用的是最新版本(截止到2009-03-20)。Tomcat由Apache、Sun 和其他一些公司及個(gè)人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 標(biāo)準(zhǔn)總是能在Tomcat 中得到表達(dá),Tomcat 5 支持最新的Servlet 2.4 和J

6、SP 2.0 標(biāo)準(zhǔn)。因?yàn)門omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛好者的喜愛并得到了局部軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用效勞器。Tomcat它運(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件效勞等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改良和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中參加新的功能。Tomcat 是一個(gè)小型的輕量級(jí)應(yīng)用效勞器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。對(duì)于一個(gè)初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache 效勞器,可利用它響應(yīng)對(duì)HTML 頁面的訪問請(qǐng)求。實(shí)際上

7、Tomcat 局部是Apache 效勞器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat 時(shí),它實(shí)際上作為一個(gè)與Apache 獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。 這里的訣竅是,當(dāng)配置正確時(shí),Apache 為HTML頁面效勞,而Tomcat 實(shí)際上運(yùn)行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web效勞器一樣,具有處理HTML頁面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Apache效勞器。 MyeclipseMyEclipse企業(yè)級(jí)工作平臺(tái)MyEclipse Enterpr

8、ise Workbench ,簡稱MyEclipse是對(duì)Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序效勞器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在結(jié)構(gòu)上,MyEclipse的特征可以被分為7類:1. J2EE模型2. WEB開發(fā)工具3. EJB開發(fā)工具4. 應(yīng)用程序效勞器的連接器5. J2EE工程部署效勞6. 數(shù)據(jù)庫效勞7. MyEclipse整合幫助對(duì)于以上每一種功能上的類

9、別,在Eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。簡單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測(cè)試以及除錯(cuò)。數(shù)據(jù)庫用SQL Server 2005本系統(tǒng)的用戶可分為管理員,教師,學(xué)生三類。 從用戶的角度進(jìn)行總體上考慮,系統(tǒng)應(yīng)該實(shí)現(xiàn)以下功能: 對(duì)教師來說,包括試卷管理、試題管理、試題上傳、班級(jí)注冊(cè)、成績查詢。 1、試卷管理:隨即組卷,隨即組卷教師可以從課程,難度級(jí)別,各種題型的數(shù)量等方面對(duì)某份試卷提出一

10、定的要求生成試卷規(guī)那么,在學(xué)生考試時(shí),由系統(tǒng)根據(jù)試卷規(guī)那么自動(dòng)組卷生成滿足教師要求的試卷。 2、試題上傳:教師可以上傳新的試題,其中包括判斷題、填空題、單項(xiàng)選擇題、多項(xiàng)選擇題和論述題。3、試題管理:教師可以根據(jù)教學(xué)需求對(duì)題庫中的試題進(jìn)行兩種根本操作:刪除舊有考題、修改原有考題,其中試題類型包括判斷題、填空題、單項(xiàng)選擇題和多項(xiàng)選擇題;對(duì)于每種類型的試題,教師可以設(shè)置題干、答案、試題難度系數(shù)、解析、添加時(shí)間等屬性。 4、班級(jí)注冊(cè):教師可以選擇相應(yīng)的班級(jí)進(jìn)行班級(jí)注冊(cè)。5、成績查詢:分為歷史成績查詢和當(dāng)前成績查詢。教師可以查看考生的考試成績,并針對(duì)不同的課程進(jìn)行成績統(tǒng)計(jì),包括考試人數(shù)、最高分、最低分、

11、平均分以及各分?jǐn)?shù)段得分人數(shù)等。 對(duì)學(xué)生來說,包括考試中心、成績查詢、瀏覽公告、班級(jí)注冊(cè)。 1、考試中心:學(xué)生可以選試題進(jìn)行在線測(cè)試,考試結(jié)束后,系統(tǒng)會(huì)根據(jù)已有的標(biāo)準(zhǔn)答案進(jìn)行在線判卷,考生可以立刻知道考試成績。 2、成績查詢:學(xué)生可以在線查詢以前參加過的每門課程的考試相關(guān)信息。 3、瀏覽公告:學(xué)生可以瀏覽最新發(fā)布的考試信息及公告。 4、班級(jí)注冊(cè):學(xué)生選擇相應(yīng)的班級(jí)進(jìn)行注冊(cè)。對(duì)管理員來說,主要包括用戶管理、班級(jí)管理、公告管理。用戶管理:包括用戶添加、用戶刪除、批量添加、批量刪除。班級(jí)管理:包括添加班級(jí)、修改班級(jí)、刪除班級(jí)。公告管理:包括對(duì)公告、新聞的發(fā)布、刪除、修改;其中公告、新聞?dòng)晒芾韱T進(jìn)行增、

12、刪、改、查操作。對(duì)以上三類用戶都有對(duì)自己個(gè)人信息修改、查詢的功能,包括密碼修改。通過以上分析,將系統(tǒng)分為兩個(gè)子系統(tǒng):前臺(tái)考試子系統(tǒng)、后臺(tái)在線考試管理子系統(tǒng)。3.1.1學(xué)生考試界面模塊劃分前臺(tái)學(xué)生考試子系統(tǒng)在線考試瀏覽公告查詢成績注冊(cè)班級(jí)模塊需完成的功能描述如下: 前臺(tái)考試子系統(tǒng)中,學(xué)生可以選擇自己喜歡的方式進(jìn)行在線考試,并瀏覽考試公告,按規(guī)定進(jìn)行在線考試??荚囃瓿珊?,通過查看標(biāo)準(zhǔn)答案和成績了解自己的學(xué)習(xí)狀況。心中的疑惑或?qū)蠋煂?duì)試題管理的建議都可以在線留言,老師看到留言后,對(duì)學(xué)生留言進(jìn)行評(píng)論。老師和管理員后臺(tái)管理功能模塊劃分在線考試后臺(tái)管理子系統(tǒng)題庫管理試卷管理成績管理用戶管理信息管理班級(jí)管理

13、 各模塊需完成的功能如下:由于篇幅原因,現(xiàn)僅對(duì)后臺(tái)管理進(jìn)行分析題庫管理根本維護(hù)題型維護(hù)范圍維護(hù)科目維護(hù)試題維護(hù)其他維護(hù)試卷管理隨機(jī)出卷其他維護(hù)成績管理成績查詢成績維護(hù)用戶管理信息管理公告管理添加用戶刪除用戶班級(jí)管理添加班級(jí)刪除班級(jí)題型維護(hù):對(duì)試題的題型進(jìn)行增加、刪除、修改、查詢操作。在操作之后會(huì)自動(dòng)刷新主頁,以使信息更新。范圍維護(hù):對(duì)試題的應(yīng)用范圍進(jìn)行增加、刪除、修改、查詢操作。在操作之后會(huì)自動(dòng)刷新主頁,以使信息更新。科目維護(hù):對(duì)試題的科目進(jìn)行增加、刪除、修改、查詢操作。在操作之后會(huì)自動(dòng)刷新主頁,以使信息更新。試題維護(hù):對(duì)試題的根本信息進(jìn)行增加、刪除、修改、查詢操作。在操作之后會(huì)自動(dòng)刷新主頁,

14、以使信息更新。其他維護(hù):對(duì)試題信息的批量查詢,并可進(jìn)行數(shù)據(jù)導(dǎo)出、數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)。隨機(jī)出卷:用戶只需對(duì)試卷題型、數(shù)量、范圍進(jìn)行選擇后,選擇指定的科目章節(jié),自動(dòng)生成滿足教師要求的試卷。成績維護(hù):當(dāng)成績出錯(cuò)時(shí),對(duì)于有權(quán)限的人可以對(duì)成績進(jìn)行刪除、修改、查詢。用戶管理:對(duì)系統(tǒng)用戶增加、刪除、修改以及個(gè)人資料修改。班級(jí)管理:對(duì)班級(jí)信息的增加、刪除修改。公告管理:包括系統(tǒng)公告和考試公告,主要操作是對(duì)公告、新聞的發(fā)布、刪除、修改系統(tǒng)主要角色分析經(jīng)過上述的功能要求分析,可以確定出該系統(tǒng)的主要角色有:學(xué)生、管理員、教師學(xué)生:主要的屬性有:學(xué)號(hào)、姓名、所屬班級(jí)等信息管理員:用戶名、密碼等信息教師:編號(hào)、姓名、登

15、陸密碼等信息系統(tǒng)主要用例分析按照功能需求,可以確定主要有以下用例:學(xué)生在線考試的用例: 查看考試信息進(jìn)行統(tǒng)一考試查詢成績2、學(xué)生信息維護(hù)的用例3、教師進(jìn)行題庫管理的用例 題型維護(hù):包括對(duì)試題的題型進(jìn)行增、刪、改、查操作 范圍維護(hù):對(duì)試題的應(yīng)用范圍進(jìn)行增、刪、改、查操作??颇烤S護(hù):對(duì)科目維護(hù):試題的科目進(jìn)行增、刪、改、查操作。試題維護(hù):對(duì)試題的根本信息進(jìn)行增、刪、改、查操作。其他維護(hù):對(duì)試題信息的批量查詢,并可進(jìn)行數(shù)據(jù)導(dǎo)出、數(shù)據(jù)備份4、教師進(jìn)行發(fā)布考試的用例教師抽題學(xué)生抽題5、教師進(jìn)行成績管理的用例成績統(tǒng)計(jì)成績維護(hù):對(duì)出錯(cuò)的成績進(jìn)行修改6、教師進(jìn)行信息管理的用例個(gè)人信息管理學(xué)生信息查詢7、管理員

16、進(jìn)行用戶管理的用例 用戶信息的添加、刪除、修改8、管理員進(jìn)行權(quán)限管理的用例給不同的用戶分配不同的權(quán)限,包括添加、刪除、修改等操作9、管理員進(jìn)行公告管理的用例 公告管理用例,包括公告的添加、刪除、修改、更新等10 所有用戶的登錄驗(yàn)證用例11 所有用戶的退出系統(tǒng)用例用戶首先進(jìn)行登陸驗(yàn)證后才能進(jìn)入相應(yīng)的系統(tǒng)主界面。本處以教師所使用的用例來說明。首先教師登錄,系統(tǒng)驗(yàn)證成功后進(jìn)入教師登錄界面,教師可以進(jìn)行根本的信息管理,進(jìn)行個(gè)人信息更新,系統(tǒng)調(diào)用個(gè)人信息管理模塊用例,教師也可以查詢學(xué)生信息,當(dāng)教師需要修改刪除試題時(shí),首先要調(diào)用科目的信息,范圍信息,將該科目該范圍下的題目顯示,然后再對(duì)相應(yīng)的題目進(jìn)行修改。

17、當(dāng)要發(fā)布考試時(shí),系統(tǒng)根據(jù)教師信息,自動(dòng)顯示教師所能夠執(zhí)行的科目的考試,教師選擇抽題方式,進(jìn)行試卷規(guī)那么的制定,假設(shè)是教師抽題,那么生成一份試卷,存入數(shù)據(jù)庫,同時(shí)可以進(jìn)行預(yù)覽。假設(shè)是學(xué)生抽題,那么保存該試卷規(guī)那么。當(dāng)學(xué)生自測(cè)時(shí)調(diào)用該規(guī)那么 ,隨機(jī)生成一份試卷。 該系統(tǒng)用例圖如下:用例的實(shí)現(xiàn)主要對(duì)象 系統(tǒng)中主要的對(duì)象就是用戶:學(xué)生、教師、管理員。其中學(xué)生、教師、管理員分別與用戶是被包含關(guān)系。4.2.2時(shí)序圖 用戶登錄圖:用戶操作圖:定義術(shù)語本系統(tǒng)的體系結(jié)構(gòu)是表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層的三層模式的根底上進(jìn)行細(xì)化而得來的,在表示層和業(yè)務(wù)數(shù)據(jù)層之間加了WEB效勞層,并在數(shù)據(jù)庫層和業(yè)務(wù)邏輯層之間加了對(duì)象持

18、久化層,各層之間的關(guān)系和作用描述如下:表示層 :提供友好的用戶界面,主要用于向用戶顯示從業(yè)務(wù)邏輯層得到的數(shù)據(jù),并能接受用戶輸入的數(shù)據(jù)并對(duì)其輸入的數(shù)據(jù)進(jìn)行邏輯驗(yàn)證。Web Service 層: 該層主要用于進(jìn)行業(yè)務(wù)邏輯的控制。它向下訪問業(yè)務(wù)數(shù)據(jù)層,向上為表示層效勞。該層主要用Web Service 來實(shí)現(xiàn),Web Service是用于建立可互操作的分布式應(yīng)用程序平臺(tái)。業(yè)務(wù)數(shù)據(jù)層:是業(yè)務(wù)邏輯的一局部,向Web Service 層返回業(yè)務(wù)對(duì)象,它與下面要講到的持久化對(duì)象相當(dāng)于數(shù)據(jù)庫中的原始表和視圖的關(guān)系。數(shù)據(jù)訪問層:業(yè)務(wù)邏輯層的一局部,設(shè)置查詢邏輯和條件來通過對(duì)象持久化層得到持久化對(duì)象,并為上層的業(yè)

19、務(wù)邏輯層效勞。數(shù)據(jù)庫層:數(shù)據(jù)層,對(duì)應(yīng)于MYSQL 中的數(shù)據(jù)庫,進(jìn)行大量數(shù)據(jù)的管理和事務(wù)并發(fā)等管理。4.4數(shù)據(jù)庫設(shè)計(jì)根據(jù)前面的需求分析本系統(tǒng)的實(shí)體及屬性如下:Class( ID, ClassName)Course(ID, teacherID, coursename, courseID)Itembank(ID, QuestionTitle, QuestionItem, Answer,Questiontype)QuestionType ( ID , TypeName, Score)Role( ID, Rolename)StudentClasssID, Username, Password, Perm

20、ission, IP, LastLoginTime, Name, Photo, Sexy, E_mail, Count, LoginTime, classIDTest_Information(id, user_name, test_id, test_date, test_begin_time, test_end_time, user_answers, test_answers, total_mark, user_mark, user_ip, test_check_status, user_right_numbers, user_wrong_number) Test_Paper(id, test

21、_number, test_name, test_status, test_score, test_operater, test_add_date, test_edit_date, question_id, test_total_time, subject_id)Test_Status(id, paper_status)Test_Subject(id, test_subject,)Users(ID, Username, Password ,Permission, IP , LastLoginTime, Name, Photo, Sexy, E_mail, Count, LoginTime)數(shù)據(jù)

22、的存儲(chǔ)結(jié)構(gòu)也可以通過以下表來實(shí)現(xiàn)和反映出來:Class:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是ClassNamenvarchar40否Course:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是teacherIDint是coursenamenvarchar50否courseIDrint是Itembank:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是QuestionTitlentext否QuestionItemnvarcharmax否Answernvarcharmax否QuestionTypeInt是QuestionType:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是TypeNamenchar50

23、否Scoreint否Role:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是RoleNamenvarchar20否StudentClass:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是Usernamenvarchar20否Passwordnvarchar32否Permissionint否IPnvarchar40否LastLoginTimedatetime否Namenvarchar50否PhotoNvarchar100否SexyNchar2否E_mailNvarchar80否Countint否LoginTimeSmalldatetime否classIDint是Test_Information:字段數(shù)據(jù)

24、類型長度是否主外鍵備注idint是User_namenvarchar20否test_idInt否test_datevarchar50否test_begin_timevarchar50否test_end_timeVarchar50否user_answersvarchar100否test_answersvarchar100否total_markfloat否user_markfloat否user-ipvarchar50否test_check_statusVarchar50否user_right_numberint否user_wrong_numberint否Test_Paper:字段數(shù)據(jù)類型長度是否主

25、外鍵備注idint是test_numberInt否test_namevarchar200否test_statusint是test_scorefloat否test_operaterVarchar20否test_add_datevarchar50否test_edit_datevarchar50否question_idvarchar100否test_total_timevarchar50否subject_idint否Test_status:字段數(shù)據(jù)類型長度是否主外鍵備注idint是paper-statusvarchar20否Test_Subject:字段數(shù)據(jù)類型長度是否主外鍵備注idint是test

26、_subjectvarchar20否Users:字段數(shù)據(jù)類型長度是否主外鍵備注IDint是Usernamenvarchar20否Passwordnvarchar32否Permissionint否IPnvarchar40否LastLoginTimedatetime否Namenvarchar50否PhotoNvarchar100否SexyNchar2否E_mailNvarchar80否Countint否LoginTimeSmalldatetime否4.5包和對(duì)象的識(shí)別以及關(guān)聯(lián)通過以上分析系統(tǒng)所用到的包和類如下: cn.實(shí)體包.db數(shù)據(jù)庫操作包.filter過濾器包.service業(yè)務(wù)邏輯接口包接口

27、實(shí)現(xiàn)類的包.servletservlet包.test用來測(cè)試的包可刪除.tool自建組件包包之間的關(guān)聯(lián):主要的類有: bean包中的類:Class 定義:課程實(shí)體ClassRegister 定義:課程注冊(cè)實(shí)體SigleQuestion定義:試題實(shí)體User 定義:用戶信息db包中的類:DBConnection 實(shí)現(xiàn):與SQLSERVER2005數(shù)據(jù)庫的交互的類,其中包括連接屬性,獲得連接的方法,查詢數(shù)據(jù)方法等等。Entity 實(shí)現(xiàn):單表查詢組件。包含存儲(chǔ)數(shù)據(jù)字段名以及數(shù)據(jù)值的屬性,以及根據(jù)表名以及鍵值獲取數(shù)據(jù)的方法。SingleDB 實(shí)現(xiàn)filter包中的類:SetCharacterEncod

28、ingFilter :filter類。對(duì)WEB系統(tǒng)中所有的request以及response進(jìn)行過濾。service包中的類:addQuestion:添加試題接口AdminService:用戶登陸接口classmanage :課程管理接口。classRegist:課程注冊(cè)接口。Usermanage:用戶管理接口。Randzj: 隨機(jī)組卷接口包的類:AddSigleQuestion:實(shí)現(xiàn)單項(xiàng)選擇題、多項(xiàng)選擇題等試題的添加。AdminServiceImpl:實(shí)現(xiàn)用戶登陸的驗(yàn)證,以及用戶密碼的修改。classmanageImplclassregistimplusermanageImpl:實(shí)現(xiàn)用戶的添

29、加、修改以及批量添加和修改。RandzjImpl:實(shí)現(xiàn)自動(dòng)隨機(jī)組卷。servlet包的類:classAdd:處理課程添加的請(qǐng)求。ClassRegist:處理班級(jí)注冊(cè)地請(qǐng)求。LoginServlet:處理用戶登陸的請(qǐng)求。testAdd:根據(jù)request中的參數(shù),進(jìn)行試卷、試題的添加、修改刪除操作updateInfo:處理用戶修改信息請(qǐng)求。userDelete 負(fù)責(zé)刪除用戶的servletusermanege:處理添加新用戶請(qǐng)求。Randzj:處理組卷請(qǐng)求。tool包中類:Pagination:實(shí)現(xiàn)翻頁功能。Search:根據(jù)request中參數(shù)的格式,進(jìn)行相應(yīng)的查詢操作。Tool :工具類。包

30、括獲取隨機(jī)數(shù)、當(dāng)?shù)叵到y(tǒng)時(shí)間以及IP的方法本系統(tǒng)的設(shè)計(jì)用到了這兩個(gè)設(shè)計(jì)模式: DAO設(shè)計(jì)模式 MVC設(shè)計(jì)模式DAO是Data Access Object (數(shù)據(jù)訪問對(duì)象)的縮寫。J2EE 開發(fā)人員使用DAO設(shè)計(jì)模式,以便將低級(jí)別的數(shù)據(jù)訪問邏輯與高級(jí)別的業(yè)務(wù)邏輯別離。 一個(gè)典型的 DAO 實(shí)現(xiàn)有以下組件:一個(gè) DAO 工廠類 factory 一個(gè) DAO 接口 DAO 一個(gè)實(shí)現(xiàn)了 DAO 接口的具體類DAOImpl 數(shù)據(jù)傳輸對(duì)象(有時(shí)稱為值對(duì)象) VO DAO的工作原理:調(diào)用處DAO工廠具體子類 完成數(shù)據(jù)庫操作 具體子類的方法是在DAO接口中定義好的,一個(gè)DAO接口可能有多個(gè)類實(shí)現(xiàn)其方法MVC設(shè)計(jì)

31、模式MVC英文即Model-View-Controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行別離,這樣一個(gè)應(yīng)用被分成三個(gè)層模型層、視圖層、控制層。視圖(View)代表用戶交互界面,對(duì)于Web應(yīng)用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet。 模型(Model):就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)那么的制定。 控制(Controller)可以理解為從用戶接收請(qǐng)求, 將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。本系統(tǒng)運(yùn)用的開發(fā)手段是JSP+Servlet+JavaBean 該方式適用于團(tuán)隊(duì)開發(fā),用此模式開發(fā)速度相

32、對(duì)較慢,但可維護(hù)性高 以上提到的兩個(gè)設(shè)計(jì)模式的具體運(yùn)用: JSP實(shí)現(xiàn)MVC中的VviewServlet實(shí)現(xiàn)MVC中的CcontrolJavaBean實(shí)現(xiàn)MVC中的Mmodle,JavaBean負(fù)責(zé)所有的底層數(shù)據(jù)操作即DAO6.系統(tǒng)實(shí)現(xiàn)與測(cè)試本系統(tǒng)主要對(duì)象的實(shí)現(xiàn)算法有兩個(gè):隨機(jī)算法、頁面分發(fā)算法。隨機(jī)算法的實(shí)現(xiàn)主要表達(dá)在兩個(gè)方面:一、教師出題過程中對(duì)選擇題的操作,選擇題的答案有一個(gè)正確答案和七個(gè)備選答案,教師查詢題目是隨機(jī)在七個(gè)備選答案中選擇3個(gè)答案作為選擇題的錯(cuò)誤答案;二、學(xué)生在線測(cè)試時(shí),題目的選擇是根據(jù)學(xué)生對(duì)約束條件選擇確定后,系統(tǒng)根據(jù)隨機(jī)算法產(chǎn)生相對(duì)應(yīng)的題目。頁面分發(fā)算法:主要是根據(jù)不同的

33、約束條件如判斷語句跳轉(zhuǎn)到不同的頁面。本系統(tǒng)是基于B/S模式的WEB系統(tǒng),因此測(cè)試方法應(yīng)為基于WEB的測(cè)試方法,基于Web的系統(tǒng)測(cè)試與傳統(tǒng)的軟件測(cè)試不同,它不但需要檢查和驗(yàn)證是否按照設(shè)計(jì)的要求運(yùn)行,而且還要測(cè)試系統(tǒng)在不同用戶的瀏覽器端的顯示是否適宜。重要的是,還要從最終用戶的角度進(jìn)行平安性和可用性測(cè)試。然而,Internet和Web媒體的不可預(yù)見性使測(cè)試基于Web的系統(tǒng)變得困難。因此,我們必須為測(cè)試和評(píng)估復(fù)雜的基于Web的系統(tǒng)研究新的方法和技術(shù)。在本系統(tǒng)中主要從系統(tǒng)的功能和性能兩方面進(jìn)行測(cè)試。功能測(cè)試功能測(cè)試主要是通過按照系統(tǒng)的流程走一邊,測(cè)試系統(tǒng)運(yùn)行過程中是否出現(xiàn)錯(cuò)誤及誤差等的操作。數(shù)據(jù)庫連接

34、測(cè)試:主要通過從數(shù)據(jù)庫中查詢數(shù)據(jù)及向數(shù)據(jù)庫中插入、刪除數(shù)據(jù)確定數(shù)據(jù)連接的正常。在使用數(shù)據(jù)庫連接時(shí)可能發(fā)生兩種錯(cuò)誤,分別是數(shù)據(jù)一致性錯(cuò)誤和輸出錯(cuò)誤。當(dāng)出現(xiàn)以上兩種錯(cuò)誤時(shí),應(yīng)檢查數(shù)據(jù)編碼問題。頁面鏈接測(cè)試:系統(tǒng)的用戶分了三類,每類用戶所用的功能不同,因此頁面也相比照較復(fù)雜,所以要保證頁面跳轉(zhuǎn)的正確性,可從三個(gè)方面測(cè)試:首先,測(cè)試所有鏈接是否按指示的那樣確實(shí)鏈接到了該鏈接的頁面;其次,測(cè)試所鏈接的頁面是否存在;最后,保證Web應(yīng)用系統(tǒng)上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。算法正確性測(cè)試:本系統(tǒng)主要涉及到兩個(gè)算法:隨機(jī)算法-產(chǎn)生隨機(jī)數(shù),根據(jù)隨機(jī)數(shù)從數(shù)據(jù)

35、庫中查詢相應(yīng)的試題,主要比較產(chǎn)生的試題是否與數(shù)據(jù)庫中的試題編號(hào)相同;頁面分發(fā)算法-根據(jù)用戶對(duì)頁面中不同控件的操作,跳轉(zhuǎn)不同的頁面,測(cè)試同頁面鏈接測(cè)試。性能測(cè)試負(fù)載測(cè)試是為了測(cè)量WEB系統(tǒng)在某一負(fù)載級(jí)別上的性能,以保證WEB系統(tǒng)在需求范圍內(nèi)能正常工作。尤其是對(duì)于本系統(tǒng),在同一時(shí)刻進(jìn)行在線考試的用戶可能多達(dá)100多人,負(fù)載測(cè)試尤為重要。負(fù)載級(jí)別可以是某個(gè)時(shí)刻同時(shí)訪問Web系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量。例如:Web應(yīng)用系統(tǒng)能允許多少個(gè)用戶同時(shí)在線?如果超過了這個(gè)數(shù)量,會(huì)出現(xiàn)什么現(xiàn)象?WEB應(yīng)用系統(tǒng)能否處理大量用戶對(duì)同一個(gè)頁面的請(qǐng)求?對(duì)數(shù)據(jù)庫負(fù)載程度的測(cè)試,很明顯的一個(gè)事實(shí),大量的數(shù)據(jù)是

36、從數(shù)據(jù)庫中得到,當(dāng)用戶的數(shù)量相當(dāng)大時(shí),數(shù)據(jù)庫的處理能力將成為系統(tǒng)能否正常運(yùn)行的關(guān)鍵因素。但由于負(fù)載測(cè)試需要大量的客戶端主機(jī)同時(shí)連接數(shù)據(jù)庫,因此負(fù)載測(cè)試只有在系統(tǒng)投入使用后在實(shí)際的使用當(dāng)中測(cè)試。7.系統(tǒng)的部署系統(tǒng)完成后,在工程資源管理器中,右鍵單擊【learn】、【導(dǎo)出】、【導(dǎo)出為WAR文件】。將learn.war和數(shù)據(jù)庫Online_test.mdf、Online_test.log三個(gè)文件,以及apache-tomcat-.exe一并交付給用戶。在用戶的計(jì)算機(jī)上安裝apache-tomcat-.exe,并將C:Program FilesApache Software FoundationTom

37、cat conf下的Configure Tomcat發(fā)送到桌面快捷方式。將learn.war文件放置到Tomcat的安裝目錄C:Program FilesApache Software FoundationTomcat 下的webapps目錄下;同時(shí)將Online_test.mdf、Online_test.log附加到SqlServer2005數(shù)據(jù)庫引擎。單擊桌面上的Configure Tomcat,點(diǎn)擊【start】啟動(dòng)Tomcat在瀏覽器中輸入calhost:8080/learn/即可啟動(dòng)本系統(tǒng)8.運(yùn)行效果見4.3系統(tǒng)界面草圖。系統(tǒng)首頁學(xué)生首頁個(gè)人信息查看密碼修改考試中心試題管理試卷管理組

38、卷用戶管理9.總結(jié)總結(jié)系統(tǒng)存在的缺乏,以及下一步的改良想法,包括功能的完善,性能的改善方面,界面的友好性方面等由于時(shí)間的限制,本系統(tǒng)只完成了教師模塊的一些功能,不過將出題、試題維護(hù)這些最核心的功能都實(shí)現(xiàn)了,至于公告管理的功能,如果時(shí)間充足,應(yīng)該很快就能完成。前臺(tái)學(xué)生考試系統(tǒng)以及管理員的管理局部還未實(shí)現(xiàn)。界面方面,由于沒有充裕的時(shí)間,所以在界面的美觀方面沒花多大的心思,主要的工作重心還是放在了代碼實(shí)現(xiàn)上。對(duì)于以后的設(shè)計(jì),可以多學(xué)些JSP方面的知識(shí),來將頁面美化。在本次設(shè)計(jì)中充分運(yùn)用到了面向?qū)ο蟮乃枷?,將系統(tǒng)的用戶、考試、試題等實(shí)體都抽象為對(duì)象,方法與方法傳遞這些數(shù)據(jù)的時(shí)候都是傳遞相應(yīng)的對(duì)象。通過

39、本次課程設(shè)計(jì)我們小組的成員都進(jìn)一步地理解了面向?qū)ο蟪绦蛟O(shè)計(jì)的思想。10.附錄系統(tǒng)的核心功能的局部代碼:1. 數(shù)據(jù)庫連接package cn.ac.learn.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/* * category JDBC連接SQLSERVER數(shù)據(jù)庫 * author ancong * */public class DBConn

40、ection private final static String DRIVER =com.microsoft.jdbc.sqlserver.SQLServerDriver;/SQLSERVER驅(qū)動(dòng)private final static String URL=jdbc:sqlserver:/localhost:1433;Database=Online_test?useUnicode=true&characterEncoding=GB2312;/設(shè)置編碼是格式為GB2312否那么會(huì)出現(xiàn)亂碼private Connection con = null; /連接對(duì)象private Prepared

41、Statement pstmt = null; /連接對(duì)象private ResultSet rs = null;/連接public DBConnection() this.init();public void init() tryClass.forName(DRIVER);if (con = null)con = DriverManager.getConnection(URL,ancong,123);catch (Exception e) e.printStackTrace();/* * 獲得當(dāng)前連接對(duì)象 * return */public Connection getConnection(

42、)if (con = null)this.init();return con;/* * 返回查詢結(jié)果 * param sql,username * return */public ResultSet getQueryResultSet(String sql,String username) if (con != null)try pstmt = con.prepareStatement(sql);pstmt.setString(1, username);rs = pstmt.executeQuery(); catch (SQLException e) e.printStackTrace();r

43、eturn rs;/* * param sql * return */public int getUpdateCount(String sql) int count = 0;if (con != null)try pstmt = con.prepareStatement(sql);count = pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace();return count;/* * 關(guān)閉連接 * param con */public void close() try if (con != null)this.con

44、.close(); catch (SQLException e) e.printStackTrace();2. 查詢組件package cn.ac.learn.tool;import javax.servlet. . ServletRequest;import java.util.*;import java.io.UnsupportedEncodingException;/* * * author ancong * 查詢組件 */public class Search /* * * param request客戶端提交的請(qǐng)求 * return 根據(jù)提交請(qǐng)求參數(shù)的格式,得到查詢條件 * thro

45、ws UnsupportedEncodingException */SuppressWarnings(unchecked)public static String getSearch( ServletRequest request) throws UnsupportedEncodingException String condition = ;Enumeration field = request.getParameterNames();/獲取發(fā)送請(qǐng)求中的所有參數(shù)while (field.hasMoreElements()/如果field對(duì)象至少還有一個(gè)可提供的元素String fieldNa

46、me = (String) field.nextElement();/那么返回此枚舉的下一個(gè)元素。String fieldValue = request.getParameter(fieldName);if(fieldValue!=null) fieldValue=fieldValue.trim();if (fieldName.startsWith(search_) /如果fieldName以search_開頭fieldName = fieldName.substring(8, fieldName.length();/將serach后的內(nèi)容賦給fieldNameString list =fie

47、ldName.split(_);/將fieldName以分割開/list2根據(jù)不同的字符代表不同的意思if (list2.equals(e)list2 = =;else if (list2.equals(b)list2 = ;else if (list2.equals(s)list2 = =;else if (list2.equals(se)list2 = =;else if (list2.equals(ne)list2 = !=;else if (list2.equals(n)list2 = is null ;else if (list2.equals(nn)list2 = is not n

48、ull ;else if (list2.equals(l)list2 = like;else if (list2.equals(i)list2 = in;if (list2.equals(is null) | list2.equals(is not null)condition += + list0 + + list1 + list2;/獲取參數(shù)值if (fieldValue!=null&!fieldValue.equals()if (list3.equals(string) condition += + list0 + + list1 + + list2;if (list2.equals(l

49、ike) condition += % + fieldValue + % ; else if (list2.equals(in)condition += ( + fieldValue + );elsecondition += + fieldValue + ; else if(list3.equals(date) condition += + list0+ ;if (list2.equals(like)condition +=convert(varchar,+list1+,120) like % + fieldValue + % ; else if (list2.equals(in)condit

50、ion += ( + fieldValue + );elsecondition += + fieldValue;return condition;3.singgleDB組件:package cn.ac.learn.db;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.ArrayList;import java.util.Enumeration;import javax.servlet. . ServletRequest;/* *

51、* author ancong * */public class SingleDB private SingleDB() private static SingleDB obj = new SingleDB();public static SingleDB getInstance() return obj;SuppressWarnings(unchecked)public boolean Execute( ServletRequest request,String keyid) boolean f = false;String action=request.getParameter(do);/

52、字段定義 acct_String_fieldEnumeration field = request.getParameterNames();String keyfield = ; /主鍵字段String keyGen = ; /主鍵生成方法,或值String table = ; /表名ArrayList inFields = new ArrayList(); /insert語句的字段ArrayList ops = new ArrayList(); /設(shè)置類型ArrayList inValue = new ArrayList(); /insert的值while (field.hasMoreEle

53、ments() String fieldName = (String) field.nextElement();if (fieldName.startsWith(Online_test_) String fields = fieldName.split(_);if (fieldName.equals(Online_test_table) table = request.getParameter(fieldName);if (fieldName.equals(Online_test_key) keyfield = request.getParameter(fieldName);keyGen =

54、request.getParameter(keyfield); if(!fieldName.equals(Online_test_table)&!fieldName.equals(Online_test_key) ops.add(fields1);inFields.add(fields2);inValue.add(request.getParameter(fieldName);String sql =;if(action.equals(insert)String s1 =, v = ; /構(gòu)建squall語句for (String string : inFields) s1 += string

55、 + ,;v += ?+,;s1 = s1.substring(0, s1.lastIndexOf(,);v = v.substring(0, v.lastIndexOf(,);/*-如果進(jìn)行的是插入操作-*/if(keyfield.equals()sql = insert into + table + ( + s1 + ) values( + v + );elsesql = insert into + table + ( + s1 + ) values( + keyGen+ , + v + );/*-如果是更新操作-*/if(action.equals(update)String s1 =,

56、 v = ; /構(gòu)建sql語句for (String string : inFields) s1 += string + ,;v += ?+,;s1=s1.replace(, =?,);s1 = s1.substring(0, s1.lastIndexOf(,);sql = update + table + set + s1 + where +keyfield+=+keyGen+;/*-如果是刪除操作-*/if(action.equals(del)sql = delete from + table + where +keyfield+= + keyid + ;DBConnection conn

57、ect=new DBConnection();Connection conn =connect.getConnection();try PreparedStatement pstmt = conn.prepareStatement(sql);for (int i =0; i ops.size(); i+) if (ops.get(i).equals(String)pstmt.setString(i+1, (String) inValue.get(i);if (ops.get(i).equals(Float)pstmt.setFloat(i+1, Float.parseFloat(String)inValue.get(i);if (ops.get(i).equals(Date)pstmt.se

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論