JAVA考試系統(tǒng)畢業(yè)設(shè)計(jì)論文_第1頁
JAVA考試系統(tǒng)畢業(yè)設(shè)計(jì)論文_第2頁
JAVA考試系統(tǒng)畢業(yè)設(shè)計(jì)論文_第3頁
JAVA考試系統(tǒng)畢業(yè)設(shè)計(jì)論文_第4頁
JAVA考試系統(tǒng)畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于java實(shí)現(xiàn)的計(jì)算機(jī)考試系統(tǒng)畢業(yè)設(shè)計(jì)(論文)網(wǎng):PAGE76浙江理工大學(xué)信息電子學(xué)院本科畢業(yè)論文(設(shè)計(jì))基于java實(shí)現(xiàn)的計(jì)算機(jī)考試系統(tǒng)摘要 無紙化考試系統(tǒng)是現(xiàn)代教育的重要標(biāo)志,讓考試的結(jié)果更加的合理、公正、公平,也可以節(jié)約人力成本。高校在線考試系統(tǒng),常用客戶機(jī)/服務(wù)器(C/S)型的MIS型架構(gòu),或基于Web使用瀏覽器/服務(wù)器(B/S)的架構(gòu)。C/S架構(gòu)的在線考試系統(tǒng),試題存放在遠(yuǎn)程服務(wù)器上,客戶端安裝考試應(yīng)用程序和數(shù)據(jù)庫客戶機(jī)配置,每次考試時需對客戶端進(jìn)行安裝、配置。而采用B/S架構(gòu)的考試系統(tǒng),通過與B/S結(jié)構(gòu)的數(shù)據(jù)庫管理系統(tǒng)結(jié)合可實(shí)現(xiàn)瘦客戶機(jī),系統(tǒng)維護(hù)僅需在服務(wù)器端進(jìn)行。故開發(fā)了基于B/S的在線考試系統(tǒng)。網(wǎng)絡(luò)應(yīng)用軟件運(yùn)行的模式主要有兩類:C/S和B/S模式。前者主要的缺點(diǎn)是維護(hù)、升級相對比較麻煩,費(fèi)用也比較高;B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。這樣大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本。 本論文的內(nèi)容就是設(shè)計(jì)一個基于java的B/S結(jié)構(gòu)的計(jì)算機(jī)考試系統(tǒng),可以基本實(shí)現(xiàn)學(xué)生、教師以及管理員所需要的功能。在這個B/S結(jié)構(gòu)的設(shè)計(jì)中,學(xué)生通過計(jì)算機(jī)網(wǎng)絡(luò)登入系統(tǒng),實(shí)時提交解答。系統(tǒng)能保存結(jié)果,供教師披閱,并能自動根據(jù)條件對客觀題進(jìn)行判分,還能對分?jǐn)?shù)進(jìn)行統(tǒng)計(jì)、管理,協(xié)助教師找出教學(xué)中存在的問題,滿足任何授權(quán)的考生隨時隨地考試并迅速獲得成績的需求,同時也大大減輕了教師出題、監(jiān)考和判卷等繁重的工作量。關(guān)鍵字:J2EE;java;MVC;在線;考試系統(tǒng)

Abstract Paperlessexamisanimportantsymbolofmoderneducationforthiskindofexammaketheresultmorereasonable,morejust,andreleasehumanresource.Theonlineexamsystemofuniversity,usuallyusestheC/SMISarchitecture,orbasedwebuseB/Sarchitecture.IntheexamsystemofC/Sarchitecture,wherethepapersarestoredintheremoteServerandtheClientmustsetuptheexamapplicationandconfigurethedatabase,wemustsetupandconfiguretheClienteverytimewhendoexam.However,theexamsystemusingtheB/SarchitecturecanimplementthinClientbycombiningtheManagementInformationSystem.Assystemmaintenanceisonlynecessaryattheseverend,ourdevelopedexamsystemisbasedonB/Sarchitecture.WEBapplicationsoftwareiseitherofC/SorB/Smodes.Themaindisadvantageofthepreviousmodeisthetroubleofmaintenanceandupdate,andthusthechargeishigher;theB/SarchitectureiscomposedofBrowserandServer.Inthisarchitecture,theuserinterfaceisjustimplementedonWWWBrowser,alittlepartofthetransactionsisimplementedinBrowser,andthemainpartoftransactionsisimplementedinServer.SotheloadofClientisreduced,andthusreducethecostofmaintenanceandupdate,soasthewholecost. ThisgraduateprojectisabouttheexamsystembasedonjavaandB/Sarchitecture.Ithasimplementedthebasicfunctionneededbythestudent,teacherandadministrator.InthisB/Sarchitectureproject,studentsloginthesystemthroughweb,andcommittheanswersinreal-time.Thesystemcanjudgethepaperandsavetheresult,statistic,managethepoints;helptheteachertofindtheprobleminteaching.Itallowsanystudentwhichisauthorizedtosubscribetoexamandgaintheresultatanytimeoranywhere,andreducetheworkloadoftheteacherforgivingquestion,invigilationandjudgingpaper.keywords:J2EE;java;MVC;web;examsystem

目錄第1章緒論 91.1項(xiàng)目背景 91.2計(jì)算機(jī)考試系統(tǒng)發(fā)展及現(xiàn)狀 91.3國內(nèi)外發(fā)展現(xiàn)狀 91.4研究開發(fā)的目標(biāo)和基本內(nèi)容 101.4.1系統(tǒng)開發(fā)的主要任務(wù)和目標(biāo) 101.4.2系統(tǒng)開發(fā)的基本內(nèi)容 111.5技術(shù)研究背景 11第2章系統(tǒng)技術(shù)介紹及應(yīng)用 132.1JSP技術(shù)概述及工作原理 132.1.1JSP技術(shù)概要 132.1.2JSP的工作原理 142.1.3JSP與ASP的比較 142.2JDBC介紹 162.3MVC模式介紹 182.4Struts技術(shù)概述及工作原理 192.4.1Struts技術(shù)概述 192.4.2Struts的工作原理 202.5Hibernate技術(shù)概述及工作原理 212.5.1Hibernate技術(shù)概述 212.5.2Hibernate工作原理 222.6Tomcat應(yīng)用服務(wù)器介紹 232.7MySQL數(shù)據(jù)庫介紹 252.7.1數(shù)據(jù)庫的歷史和發(fā)展 252.7.2MySQL介紹 252.7.3MySQL的主要特性 26第3章系統(tǒng)需求分析 283.1系統(tǒng)功能概述 283.2權(quán)限與控制 283.3系統(tǒng)業(yè)務(wù)流程分析 293.3.1業(yè)務(wù)術(shù)語 293.3.2業(yè)務(wù)流程 293.4系統(tǒng)模塊簡介 333.4.1登錄模塊 333.4.2系統(tǒng)管理模塊 333.4.3科目管理模塊 343.4.4題庫管理模塊 353.4.5試卷管理模塊 353.4.6帳戶管理模塊 353.4.7考試管理模塊 363.4.8信息查詢模塊 363.5系統(tǒng)開發(fā)環(huán)境 36第4章系統(tǒng)設(shè)計(jì) 374.1系統(tǒng)整體架構(gòu)設(shè)計(jì) 374.2系統(tǒng)管理設(shè)計(jì) 374.3題庫管理設(shè)計(jì) 434.4科目管理設(shè)計(jì) 444.5試卷管理設(shè)計(jì) 454.6帳戶管理設(shè)計(jì) 454.7考試管理設(shè)計(jì) 464.8信息查詢設(shè)計(jì) 474.9數(shù)據(jù)庫設(shè)計(jì) 48第5章系統(tǒng)實(shí)現(xiàn) 515.1系統(tǒng)Model層實(shí)現(xiàn) 515.1.1類AdminBean: 515.1.2類SchoolBean: 515.1.3類CollegeBean: 525.1.4類ClassBean: 525.1.5類TeacherBean: 535.1.6類StudentBean: 535.1.7類ExamBean: 545.1.8類PaperBean: 555.1.9類SubjectBean: 565.1.10類TiankongBean: 565.1.11類XuanzeBean: 575.2系統(tǒng)數(shù)據(jù)訪問對象DAO層實(shí)現(xiàn) 585.2.1類AdminBeanDAO: 585.2.2類SchoolBeanDAO: 585.2.3類CollegeBeanDAO: 595.2.4類ClassBeanDAO: 595.2.5類TeacherBeanDAO: 595.2.6類StudentBeanDAO: 605.2.7類ExamBeanDAO: 605.2.8類PaperBeanDAO: 605.2.9類SubjectBeanDAO: 605.2.10類TiankongBeanDAO: 615.2.11類XuanzeBeanDAO: 615.3系統(tǒng)中的ACTION類 615.3.1類AccountAction: 615.3.2類AccountManageAction: 625.3.3類SchoolAction: 625.3.4類CollegeAction: 635.3.5類ClassAction: 645.3.6類TeacherAction: 645.3.7類StudentAction: 655.3.8類ExamAction: 655.3.9類PaperAction: 665.3.10類SubjectAction: 675.3.11類QuestionAction: 685.4系統(tǒng)中的視圖層 69第6章總結(jié) 77

第1章緒論1.1項(xiàng)目背景 無紙化考試系統(tǒng)是現(xiàn)代教育的重要標(biāo)志,這樣的考試讓考試的結(jié)果更加的合理,更加的公正、公平。也讓不必要的人力從中解脫出來,去完成其它的一些事情。學(xué)生通過計(jì)算機(jī)網(wǎng)絡(luò)登入系統(tǒng),實(shí)時提交解答。系統(tǒng)能保存結(jié)果,供教師披閱,并能自動根據(jù)條件對客觀題進(jìn)行判分,還能對分?jǐn)?shù)進(jìn)行統(tǒng)計(jì)、管理,協(xié)助教師找出教學(xué)中存在的問題,滿足任何授權(quán)的考生隨時隨地考試并迅速獲得成績的需求,同時也大大減輕了教師出題、監(jiān)考和判卷等繁重的工作量。 鑒于現(xiàn)在大多數(shù)學(xué)校的計(jì)算機(jī)考試系統(tǒng)基本上都是C/S結(jié)構(gòu),對時間、地點(diǎn)以及考試規(guī)模都有很大的限制,而現(xiàn)在的大學(xué)里基本上的學(xué)生都人手一臺電腦。如果將考試系統(tǒng)做成B/S結(jié)構(gòu)的話就可以將沒有這些方面的限制,可以進(jìn)行大規(guī)模同時的考試,而且計(jì)算機(jī)可以方便的進(jìn)行考試,不需要進(jìn)行任何的客戶端安裝,只需要有一個瀏覽器。1.2計(jì)算機(jī)考試系統(tǒng)發(fā)展及現(xiàn)狀 20世紀(jì)50年代,電子計(jì)算機(jī)和光電閱讀機(jī)在大規(guī)??荚囍械膹V泛運(yùn)用促進(jìn)了標(biāo)準(zhǔn)化考試的推廣和普及。然而應(yīng)當(dāng)指出,這時的考試方法仍是傳統(tǒng)的紙筆考試形式。到了2O世紀(jì)末,隨著測試?yán)碚摰耐晟?、?jì)算機(jī)的普及、多媒體技術(shù)的運(yùn)用和經(jīng)濟(jì)的增長,測試界已清楚地看到單一的紙筆考試弊大于利。那么紙筆考試所暴露出來的問題該如何解決?標(biāo)準(zhǔn)化考試還要不要推行?于是專家們開始在測試的方法和手段上下工夫,國外的TOEFL如此,國內(nèi)的CET亦然。這一變化競來得如此之快,可以說是在向一個時代告別,即:計(jì)算機(jī)化考試時代的到來[1]。1.3國內(nèi)外發(fā)展現(xiàn)狀現(xiàn)在國內(nèi)外都有許多的計(jì)算機(jī)考試系統(tǒng),而CAT(computerizedAdaptiveTesting,計(jì)算機(jī)自適應(yīng)考試系統(tǒng))是近年來測驗(yàn)研究中引人注目并取得了重大發(fā)展的領(lǐng)域。計(jì)算機(jī)化白適應(yīng)測驗(yàn)(簡稱CAT)是在項(xiàng)目反應(yīng)理論的基礎(chǔ)上,建立題庫,然后計(jì)算機(jī)根據(jù)被試的能力水平自動地選擇測試題目,并對被試的所達(dá)到的能力的水平做出判斷的一種全新的測驗(yàn)形式[2]。所謂自適應(yīng)測驗(yàn)它的基本思想是“因人施測”,使不同水平被試者都能接受一組跟自己特質(zhì)水平相適應(yīng)的試題。所謂“自適應(yīng)”就是測驗(yàn)本身要自動地適應(yīng)被試的具體情況,在被試作答過程中及時根據(jù)作答資料估出被試的可能水平,并針對這一水平迅速決策,從大型題庫中調(diào)取難度恰當(dāng)、性能優(yōu)良的題目繼續(xù)施測。直到施測的題目足夠多,測驗(yàn)信息量累計(jì)和達(dá)到指定值為止。如今在美國,CAT已經(jīng)在教育測驗(yàn)、職業(yè)測量、人事測評等領(lǐng)域中大顯身手,如美國研究生入學(xué)考試(GraduateRecordExamination)、工商管理類研究生入學(xué)考試(GraduateforManagementandAdministrationTest)以及全美護(hù)士國家委員會資格考試(NurseNationalCommitteeLicenseTest)等都已采取了CAT的方式。在信息產(chǎn)業(yè)中,美國Novell公司于1991年成功的應(yīng)用了CAT進(jìn)行認(rèn)證考試,使參加Novell自適應(yīng)考試的人數(shù)超過1,000,000人次。在我國,已經(jīng)出現(xiàn)一些應(yīng)用型的研究,自行編制了一些CAT測驗(yàn),并取得了實(shí)際的運(yùn)用效果,上海電大在上海市計(jì)算機(jī)應(yīng)用能力的考試項(xiàng)目“VB6.0程序設(shè)計(jì)”中已采用了CAT的考試設(shè)計(jì)方法。江西師大小學(xué)數(shù)學(xué)CAT研究、華南理工大的“數(shù)據(jù)結(jié)構(gòu)”自適應(yīng)測試系統(tǒng)的研究也取得了一定的成果。自上世紀(jì)九十年代初期開始,全國大學(xué)英語四、六級考試委員會一直致力于項(xiàng)目反應(yīng)理論和“計(jì)算機(jī)自適應(yīng)測驗(yàn)”的研究和開發(fā)。1.4研究開發(fā)的目標(biāo)和基本內(nèi)容1.4.1系統(tǒng)開發(fā)的主要任務(wù)和目標(biāo) 1、實(shí)現(xiàn)保存試題的數(shù)據(jù)庫系統(tǒng)2、實(shí)現(xiàn)在線考試系統(tǒng)的服務(wù)器端及客戶端3、了解試卷批改規(guī)則,實(shí)現(xiàn)客觀題的自動判分4、實(shí)現(xiàn)系統(tǒng)成績查詢功能1.4.2系統(tǒng)開發(fā)的基本內(nèi)容1、提供數(shù)據(jù)庫訪問權(quán)限給不同人員進(jìn)行試題庫添加、管理,試卷批改,答案輸入;2、從試題庫中生成難度的合理試卷;3、通過網(wǎng)絡(luò)實(shí)現(xiàn)與考生的互動,隨時增減試題難度,以便最大限度地考察學(xué)生水平;4、結(jié)合試題難度系數(shù)協(xié)助教師判分。1.5技術(shù)研究背景 J2EE是適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)的Java2平臺企業(yè)版Java2PlatformEnterpriseEdition,J2EE),該技術(shù)的基礎(chǔ)就是核心Java平臺或Java2平臺的標(biāo)準(zhǔn)版,J2EE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如“編寫一次、隨處運(yùn)行”的特性,方便存取數(shù)據(jù)庫的JDBCAPI、CORBA技術(shù)以及能夠在Intemet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時還提供了對EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages)以及XML技術(shù)的全面支持[3]。J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個應(yīng)用組件根據(jù)他們所在的層面分布在不同的機(jī)器上,解決了兩層模式(client/server)的弊端.在傳統(tǒng)模式中,客戶端擔(dān)當(dāng)了過多的角色,可能第一次部署時比較容易,但難于升級,可伸展性也不理想,經(jīng)常是基于某種專有的協(xié)議(通常是某種數(shù)據(jù)庫協(xié)議),重用業(yè)務(wù)邏輯和界面邏輯非常困難.現(xiàn)在J2EE的多層企業(yè)級應(yīng)用模型將兩層化模型中的不同層面切分成許多層,每個多層化應(yīng)用能夠?yàn)椴煌姆?wù)提供一個獨(dú)立的層面[4]。本系統(tǒng)采用J2EE進(jìn)行開發(fā),J2EE特別適用于WEB開發(fā),現(xiàn)在最流行的WEB開發(fā)模式是SSH(Struts+Spring+Hibernate)模式,Struts作為視圖層,Spring作為控制層,Hibernate為模型層。這樣寫的程序有很清晰的分層,耦合度低,有利于開發(fā)和維護(hù)。 這些框架可以為開發(fā)者提供一個簡單易用的模型,采用一個經(jīng)過良好設(shè)計(jì)的開源框架有很多好處:開發(fā)者只需要寫一些必須的代碼。他們不需要直接接觸底層的API。經(jīng)過良好設(shè)計(jì)的框架可以為程序提供清晰的結(jié)構(gòu)并且提高程序的內(nèi)聚性。清晰的結(jié)構(gòu)使得其他人很容易加入項(xiàng)目。一個容易適用的框架可以通過一些例子和文檔為用戶提供最佳實(shí)踐。使用成功的框架的代碼比自己的代碼容易測試??蚣軕?yīng)該在需要的時候才使用,不要為了使用框架而使用框架。所為我的這個系統(tǒng)使用的是Struts+Hibernate,這兩個都是比較成熟的開源框架,通過Hibernate做OR映射和對數(shù)據(jù)庫的訪問。Struts做視圖層,Struts的ActionServlet做控制層。

第2章系統(tǒng)技術(shù)介紹及應(yīng)用2.1JSP技術(shù)概述及工作原理2.1.1JSP技術(shù)概要在開始介紹JSP之前,我先要介紹兩個名詞:組件和容器還有servlet。 組件: 組件是你的應(yīng)用程序的的組體構(gòu)件。它包括servlets、JavaBeans、JSP、HTML頁面、EJBs以及其它類似的東西。 容器: 容器是那些執(zhí)行組件的應(yīng)用程序。如果你的應(yīng)用程序由JSP和servlet組件構(gòu)成的,那么你就需要一個具有JSP支持的servlet容器(正式名稱是servlet引擎);如果你的應(yīng)用程序是有EJBs構(gòu)成的,那就需要一個EJB容器。 servlet: servlet是一種獨(dú)立于平臺和協(xié)議的服務(wù)器端的Java應(yīng)用程序,可以動態(tài)的生成WEB頁面。servlet由WEB服務(wù)器進(jìn)行加載,該WEB服務(wù)器必須包含支持servlet的java虛擬機(jī)。 JSP: JSP(javaserverpages)是由SUN公司在servlet基礎(chǔ)上開發(fā)出來的一種動態(tài)網(wǎng)頁制作技術(shù),其可使您可以將網(wǎng)頁中的動態(tài)部分和靜態(tài)的HTML相分離。您可以使用平常得心應(yīng)手的工具并按照平常的方式來書寫HTML語句。然后,將動態(tài)部分用特殊的標(biāo)記嵌入即可,這些標(biāo)記常常以“<%”開始并以“%>”結(jié)束。通常,您要將文件以“.jsp”為擴(kuò)展名,并將它放置到任何您可以放置普通WEB頁面的路徑下。盡管JSP文件看起來更象是HTML文件而不是Servlet文件,但,事實(shí)上,它恰恰將轉(zhuǎn)換為Servlet文件,其中的靜態(tài)HTML僅僅用來輸出Servlet服務(wù)方法返回的信息。如果JSPpages已經(jīng)被轉(zhuǎn)換為Servlet且Servlet被編譯進(jìn)而被裝載(在第一次被Request時),當(dāng)您再次Request此JSP頁面時,將察覺不到一瞬的延遲。 JSP有4個關(guān)鍵成分:指令(directive)、動作(action)、scriptlet和標(biāo)記庫(taglibrary)。指令是指那些發(fā)送給JSP容器的消息,它使程序能夠指定頁面的設(shè)置、包含其它資源中的內(nèi)容和指定JSP中使用的定制標(biāo)記庫。動作將功能封裝在預(yù)定義的標(biāo)記中,然后程序員可以將它們(預(yù)定義標(biāo)記)嵌入JSP中。通常根據(jù)發(fā)送給服務(wù)器的特定客戶請求中的信息來執(zhí)行動作。它們還可以創(chuàng)建在JSPscriptlet中使用Java對象。Scriptlet,即腳本元素(scriptingelement),使程序員能夠插入與JSP中的組件(和其它Web應(yīng)用程序組件)進(jìn)行交互的Java代碼,以處理請求。標(biāo)記庫是標(biāo)記擴(kuò)展機(jī)制的一部分,它使程序員能夠創(chuàng)建定制的標(biāo)記,這種標(biāo)記使得程序員能夠操作JSP內(nèi)容。[5]畢業(yè)設(shè)計(jì)(論文)網(wǎng)QQ:306826066優(yōu)秀畢業(yè)設(shè)計(jì)網(wǎng)計(jì)算機(jī)畢業(yè)設(shè)計(jì)網(wǎng)畢業(yè)設(shè)計(jì)資料網(wǎng)畢業(yè)設(shè)計(jì)論文網(wǎng)2.1.2JSP的工作原理 當(dāng)用戶第一次請求或者刷新一個JSP頁面時,JSP容器首先是要找到這個JSP頁面的源代碼文件,然后開始處理,把這個JSP源文件翻譯成java代碼文件。當(dāng)用戶請求這個文件時,需要JSP容器來處理這個文件。[6]2.1.3JSP與ASP的比較 一般說來,Sun公司的JavaServerPages(JSP)和Microsoft的ActiveServerPages(ASP)在技術(shù)方面有許多相似之處。兩者都為動態(tài)網(wǎng)頁的技術(shù),并且雙方都能夠替代CGI技術(shù),使網(wǎng)站的開發(fā)時程能夠大大縮短,在性能上也有較高的表現(xiàn),更重要的一點(diǎn)是,兩者都能夠?yàn)槌绦騿T提供組件設(shè)計(jì)的功能,通過組件設(shè)計(jì),將網(wǎng)頁中邏輯處理部分交由組件負(fù)責(zé)處理(ASP使用COM組件、JSP則有JavaBean組件),而和網(wǎng)頁上的排版、美工分離。盡管JavaServerPages技術(shù)和ActiveServerPages(ASP)在許多方面都很相似,但仍然存在很多不同之處,其中本質(zhì)上的區(qū)別在于:兩者是來源于不同的技術(shù)規(guī)范組織。以下就來比較兩大技術(shù)有哪些不同點(diǎn),而又為各自帶來哪些優(yōu)勢。 平臺和服務(wù)器的彈性 ASP(ActiveServerPages)技術(shù)主要在微軟(Microsoft)公司的Windows平臺上運(yùn)行,其中包括Windows2000、WindowsXP和Windows2003,并且搭配其WEB服務(wù)器IIS(InternetInformationServices)。但是,在其他的平臺運(yùn)行時,不是性能低落,就是根本不支持,因此,當(dāng)在開發(fā)網(wǎng)站系統(tǒng)時,選擇NT+IIS+ASP的體系結(jié)構(gòu)時,未來當(dāng)系統(tǒng)無法負(fù)荷時,也只能繼續(xù)選擇Windows平臺的服務(wù)器,無法改寫在性能表現(xiàn)相當(dāng)優(yōu)異的UNIX平臺上。 JSP(JavaServerPages)技術(shù)主要運(yùn)行在操作系統(tǒng)上的一個JavaVirtualMachine(JVM)虛擬機(jī)器上,因此,它能夠跨越所有的平臺,例如:NT、Windows2000、Solaris、Linux、OS/390、AIX、HP-UX,等等,除了能在各式各樣的操作系統(tǒng)上執(zhí)行,并且能搭配現(xiàn)有的WEB服務(wù)器:Apache、IIS、NetscapeEnterpriseServer,等等,將靜態(tài)的HTML網(wǎng)頁交由執(zhí)行速度較快的WebServer處理,而動態(tài)產(chǎn)生網(wǎng)頁的部分,就交由JSPContainer來執(zhí)行。由上述可知,JSP(JavaServerPages)技術(shù)在跨平臺的表現(xiàn)比ASP來得更有彈性。 WEB網(wǎng)頁程序員未來在開發(fā)電子商務(wù)平臺時,就不需要再考慮客戶廠商的操作系統(tǒng)平臺,可更專心于系統(tǒng)功能的開發(fā)。相應(yīng)地,廠商在使用JavaServerPages技術(shù)開發(fā)的系統(tǒng)平臺時,不再需要擔(dān)心未來在擴(kuò)充軟、硬件時,是否產(chǎn)生不兼容的問題。光這一點(diǎn),就能為企業(yè)省下一大筆的費(fèi)用,這是JSP的主要優(yōu)點(diǎn)。 開放的開發(fā)環(huán)境 自從1995年,Sun公司已經(jīng)開放技術(shù)與國際Java組織合作開發(fā)和修改Java技術(shù)與規(guī)范。JSP應(yīng)用程序接口(API)毫無疑問已經(jīng)取得成功,并隨著Java組織不斷擴(kuò)大其應(yīng)用的范圍,目前全力發(fā)展Java技術(shù)的廠商不勝枚舉,例如:最近IBM公司強(qiáng)力推廣的WebSphere家族,正是完全支持J2EE標(biāo)準(zhǔn)而開發(fā)。數(shù)據(jù)庫廠商Oracle也發(fā)展自己的ApplicationServer來和自己公司本身數(shù)據(jù)庫產(chǎn)品Oracle9i做一緊密的結(jié)合。那也更不用提Amazon系統(tǒng)的供貨商BEA公司,它的產(chǎn)品WebLogic也是完全支持JavaServerPages技術(shù)和J2EE規(guī)范的。 相反,ASP技術(shù)僅依靠微軟本身的推動,其發(fā)展建立在獨(dú)占、封閉的基礎(chǔ)之上,并且微軟本身的技術(shù)又只允許在微軟相關(guān)平臺的服務(wù)器上執(zhí)行,因此,在標(biāo)準(zhǔn)方面顯得有點(diǎn)力不從心。 執(zhí)行性能表現(xiàn) ASP和JSP在執(zhí)行性能的表現(xiàn)上,有一段顯著的差距,JSP除了在一開始加載的時間會比較久外,之后的表現(xiàn)就遠(yuǎn)遠(yuǎn)比ASP的表現(xiàn)來得好。原因在于:JSP在一開始接受到請求時,會產(chǎn)生一份Servlet實(shí)體(instance),它會先被暫存在內(nèi)存中,我們稱之為持續(xù)(Persistence),當(dāng)再有相同請求時,這實(shí)體會產(chǎn)生一個線程(thread)來服務(wù)它。如果過了一段時間都不再用到此實(shí)體時,Container會自動將其釋放,至于時間的長短,通常都是可以在Container上自行設(shè)定的。 而ASP在每次接收到請求時,都必須要重新編譯,因此,JSP的執(zhí)行比每次都要編譯執(zhí)行的ASP要快,尤其是程序中存在循環(huán)操作時,JSP的速度要快上1到2倍。不過,ASP在這部分的缺陷,將隨ASP+的出現(xiàn)有所改觀,在新版的ASP+技術(shù)中,性能表現(xiàn)上有很大的突破。[7]2.2JDBC介紹 JDBC(JavaDataBaseConnectivity),是用于執(zhí)行SQL語句的Java應(yīng)用程序接口,是一套API集合,在這個集合中設(shè)置了許多允許Java程序連接數(shù)據(jù)庫的框架。JDBC由一組用Java語言寫成的類和接口組成,是一種連接不同數(shù)據(jù)庫的規(guī)范,其宗旨是讓各數(shù)據(jù)庫開發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫訪問類和接口。JDBC與Java結(jié)合,使用戶可以很容易的把SQL語句傳送到任何關(guān)系型數(shù)據(jù)庫中,程序員用它編寫的數(shù)據(jù)庫應(yīng)用程序,可以在各種數(shù)據(jù)庫系統(tǒng)上運(yùn)行。[8]這是真正的可移植性的軟件所必須具備的一個特點(diǎn)。JDBC已經(jīng)被業(yè)界普遍采用,而且是在Java在服務(wù)器端成功的主要貢獻(xiàn)因素。JDBC驅(qū)動程序是依靠獨(dú)立的軟件公司開發(fā)的。JDBC驅(qū)動程序適合特定的數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)訪問模型,主要的那些數(shù)據(jù)庫系統(tǒng)都有對應(yīng)的的驅(qū)動程序,例如Microsoft、oracle、Informix、Sybase、Postgress、MySQL等等。JDBC與java應(yīng)用程序和數(shù)據(jù)庫的關(guān)系如圖2.2所示. 圖2.2JDBC與java應(yīng)用程序和數(shù)據(jù)庫的關(guān)系JDBC中的主要對象包括: class:-DriverManager-驅(qū)動管理,獲得連接 interface: -Connection–連接對象 -Statement–執(zhí)行SQL語句 -PrepareStatement–執(zhí)行SQL語句,預(yù)編譯,可帶參數(shù) -CallableStatement–執(zhí)行存儲過程 ResultSet–查詢結(jié)果記錄集 ResultSetMetaData–記錄集的元信息 2.3MVC模式介紹 MVC是一種體系結(jié)構(gòu)模式,代表Model—View—Controller,是應(yīng)用于交互式系統(tǒng)的一種體系結(jié)構(gòu)模式。MVC產(chǎn)生于20世紀(jì)70年代Palo—Alto實(shí)驗(yàn)室的Smalltalk編程環(huán)境。MVC模式指導(dǎo)模塊的職責(zé)分配和模塊之間的通信協(xié)議。職責(zé)分配是面向?qū)ο蠓治龊驮O(shè)計(jì)中最重要的工作,協(xié)議設(shè)計(jì)則是相當(dāng)困難的工作。MVC為這兩項(xiàng)工作提供了指導(dǎo),所以意義重大。 Model是應(yīng)用程序?qū)ο螅簿褪前瑧?yīng)用程序數(shù)據(jù)和業(yè)務(wù)邏輯的對象。Model對外表現(xiàn)為一個對象,實(shí)際上可以也應(yīng)該是一組子對象的集合。 傳統(tǒng)意義上的View是屏幕對象,負(fù)責(zé)向用戶顯示交互界面。這個意義可以進(jìn)行擴(kuò)展,將View視為向外界展現(xiàn)應(yīng)用程序狀態(tài)的接口和界面。 所有的用戶輸入都由Controller負(fù)責(zé)處理。在交互式系統(tǒng)中,Controller是導(dǎo)致Model發(fā)生變化的唯一原因,是導(dǎo)致View發(fā)生變化的兩個原因之一,因此是控制中心。 Controller將用戶事件翻譯成為請求,而不是命令。如果機(jī)械地遵循MVC的規(guī)則,Controller的邏輯將十分復(fù)雜。Controller通常需要查詢View和Model才知道如何處理用戶輸入。不要把所有邏輯寫在Controller里。View和Model都是有智能的對象??梢酝ㄖ鼈儯伤鼈冏约簺Q定應(yīng)對的方式。一個應(yīng)用程序或者組件只能有一個Model,但是這個Model可以對應(yīng)多個View。View向Model注冊,要求在Model的數(shù)據(jù)發(fā)生變化時獲得通知消息。View得到通知消息之后,獲取Model的相應(yīng)數(shù)據(jù),更新自己的顯示。View不向Model發(fā)送消息。一個View對應(yīng)一個Controller。View負(fù)責(zé)創(chuàng)建和初始化Controller,這也是View和Controller關(guān)系密切的原因之一。Controller接收用戶輸入,如果有與應(yīng)用程序數(shù)據(jù)無關(guān),而只涉及顯示變化的用戶輸入,Controller直接通知View。 Controller和View關(guān)系密切的另一個原因是現(xiàn)代應(yīng)用程序界面復(fù)雜,靈活多變。因此Controller需要大量了解View的情況,大量查詢View的信息,距離太遠(yuǎn)不利于效率和靈活性,協(xié)議也很難設(shè)計(jì),所以經(jīng)常捆綁在一起。例如,目前基于控件的圖形界面,很多控件實(shí)際上是一個封裝好的MVC實(shí)體,通過屬性、事件和方法與外界協(xié)同工作,強(qiáng)行拆分反而適得其反。 因?yàn)橐粋€Model對應(yīng)多個View,一個View對應(yīng)一個Controller,所以一個Model對應(yīng)多個Controllers。Controller接收外部輸入,是導(dǎo)致Model發(fā)生變化的唯一原因。同時,Model的變化可能導(dǎo)致Controller行為的變化。[9] MVC模式如圖2.3所示。圖2.3MVC模式圖2.4Struts技術(shù)概述及工作原理2.4.1Struts技術(shù)概述Struts最初是由CraigR.McClanahan創(chuàng)建的,然后在2000年用于ApacheSoftwareFoundation(ASF)的Jakarta項(xiàng)目。2001年6月,Struts1.0發(fā)布。那以后,很多人在源代碼和文檔方面對該項(xiàng)目做出過貢獻(xiàn),Struts得到迅速的發(fā)展。在CraigR.McClanahan將Struts用于ApacheJakarta項(xiàng)目的時候,Struts就成為了開放源代碼軟件,任何人都可以通過/struts下載到源代碼。Struts是構(gòu)建基于java的Web應(yīng)用程序的首選框架。通過采用模型-視圖-控制器(MVC)設(shè)計(jì)模式,使用Struts可以開發(fā)使用JavaServlets和JavaServerPages的高性能、面向事務(wù)的Web應(yīng)用程序,并可以解決諸多相關(guān)問題。首先,需要認(rèn)識到Struts帶來的不僅僅是編程的便利性,Struts還從根本上為Web編程人員構(gòu)思和構(gòu)建Web應(yīng)用程序提供了一種新的方式。在MVC體系結(jié)構(gòu)中,中心Servlet(被稱為控制器)接收所有應(yīng)用程序的請求。然后控制器將對請求進(jìn)行處理,同時準(zhǔn)備視圖(通常是JSP)所需要的任何數(shù)據(jù),并將此數(shù)據(jù)發(fā)給JSP。接著JSP使用由控制器準(zhǔn)備的數(shù)據(jù)生成瀏覽器響應(yīng)。本體系結(jié)構(gòu)中,事務(wù)邏輯和顯示邏輯彼此相互獨(dú)立。[10]在struts框架中,模型分為兩個部分:·系統(tǒng)的內(nèi)部狀態(tài)·可以改變狀態(tài)的操作(事務(wù)邏輯)內(nèi)部狀態(tài)通常由一組ActinFormJavaBean表示。根據(jù)設(shè)計(jì)或應(yīng)用程序復(fù)雜度的不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時才獲得數(shù)據(jù)(從某個數(shù)據(jù)庫)。大型應(yīng)用程序通常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的bean調(diào)用。比如購物車bean,它擁有用戶購買商品的信息,可能還有checkOut()方法用來檢查用戶的信用卡,并向倉庫發(fā)定貨信息。小型程序中,操作可能會被內(nèi)嵌在Action類,它是struts框架中控制器角色的一部分。當(dāng)邏輯簡單時這個方法很適合。建議用戶將事務(wù)邏輯(要做什么)與Action類所扮演的角色(決定做什么)分開。[11]2.4.2Struts的工作原理 Struts應(yīng)用程序的執(zhí)行流如圖2.4圖2.41.瀏覽器向Struts應(yīng)用程序發(fā)出請求,ActionServlet(控制器)對該請求進(jìn)行處理。2.ActionServlet(控制器)用HTML表單填充ActionForm(視圖)對象,并調(diào)用其validate()方法。3.ActionServlet(控制器)執(zhí)行Action對象(控制器)。4.Action(控制器)與模型組件一起為視圖準(zhǔn)備數(shù)據(jù)。5.Action(控制器)將控制權(quán)交給JSP(視圖)。6.JSP(視圖)使用模型數(shù)據(jù)生成對瀏覽器的響應(yīng)。2.5Hibernate技術(shù)概述及工作原理2.5.1Hibernate技術(shù)概述 現(xiàn)今的應(yīng)用系統(tǒng)設(shè)計(jì)中,MVC作為主流系統(tǒng)架構(gòu)模式之一,貫穿了整個設(shè)計(jì)流程。MVC中的M,也就是所謂的Model,則可以說是與業(yè)務(wù)邏輯和數(shù)據(jù)邏輯關(guān)聯(lián)最為緊密的部分。而持久層作為Model層中的主要組成,其設(shè)計(jì)的優(yōu)劣勢必對系統(tǒng)的整體表現(xiàn)產(chǎn)生至關(guān)重要的影響。 說到持久層設(shè)計(jì)就必須說到持久層框架,現(xiàn)在有很多優(yōu)秀的實(shí)現(xiàn)版本,其中ORM持久層框架,則是未來的主流。 所謂ORM—Object/RelationalMapper,從字面上理解是:對象—關(guān)系型數(shù)據(jù)映射組件。 在java發(fā)展的初級階段,直接調(diào)用JDBC幾乎是數(shù)據(jù)庫訪問的唯一手段。隨著近年來設(shè)計(jì)思想和Java技術(shù)本身的演化,出現(xiàn)了許多JDBC的封裝技術(shù),這些技術(shù)為我們的數(shù)據(jù)庫訪問層實(shí)現(xiàn)提供了更多的選擇,目前主流的JDBC封裝框架包括:Hibernate、ApacheOJB、iBatis,JDO以及J2EE框架中的CMP等。這些框架以優(yōu)良的設(shè)計(jì)大大提高了數(shù)據(jù)庫訪問層的開發(fā)效率,并且通過對數(shù)據(jù)訪問中各種資源和數(shù)據(jù)的緩存調(diào)度,實(shí)現(xiàn)了更佳的性能。 Hibernate提供了強(qiáng)大、高性能的對象到關(guān)系型數(shù)據(jù)庫的持久化服務(wù)。利用Hibernate,開發(fā)人員可以按照J(rèn)ava的基礎(chǔ)語義(包括關(guān)聯(lián)、繼承、多態(tài)、組合以及Java的集合架構(gòu))進(jìn)行持久化開發(fā)。Hibernate提供的HQL(HibernateQueryLanguage)是面向?qū)ο蟮牟樵冋Z言,它在對象型數(shù)據(jù)和關(guān)系型數(shù)據(jù)庫之間構(gòu)建了一條快速、高效、便捷的溝通渠道。 2001年末,Hibernate第一個正式版本對外發(fā)布,之后兩年作者GavinKing以靈活快速的迭代發(fā)布,使得Hibernate快速發(fā)展起來。 2003年6月8日,Hibernate2發(fā)布,提供了對大多數(shù)主流數(shù)據(jù)庫的良好支持,提供了完善的數(shù)據(jù)關(guān)聯(lián)、事務(wù)處理、緩存管理、延遲加載機(jī)制實(shí)現(xiàn),同時堪稱典范的開發(fā)文檔(HibernateReference)也為廣大用戶提供了一份清晰易懂的參考手冊。2003年末,Hibernate獲得了Jolt2004大獎并且Hibernate被業(yè)內(nèi)知名的開源組織JBoss收納,成為從屬于JBoss組織的子項(xiàng)目之一。這兩個時間確立了Hibernate在JavaORM架構(gòu)中的主導(dǎo)地位。[12]2.5.2Hibernate工作原理 Hibernate的基礎(chǔ)代碼包括POJO和Hibernate映射文件。 POJO在Hibernate語義中理解為數(shù)據(jù)庫表所對應(yīng)的DomainObject。這里的POJO是所謂的“PlainOrdinaryJavaObject”,指無格式普通Java對象,可以簡單地理解為一個不包含邏輯代碼的值對象,這樣的類只包含字段的get和set方法。 Hibernate是一種“對象—關(guān)系型數(shù)據(jù)映射組件”,它使用映射文件將對象和關(guān)系型數(shù)據(jù)相關(guān)聯(lián)。在Hibernate中,映射文件通常以“.hbm.xml”作為后綴。 Hibernate配置文件主要用于配置數(shù)據(jù)庫連接和運(yùn)行時所需要的各種屬性。主要配置內(nèi)容為:SessionFactory中的數(shù)據(jù)庫URL配置、數(shù)據(jù)庫JDBC驅(qū)動配置、數(shù)據(jù)庫用戶名配置、數(shù)據(jù)庫用戶密碼配置、數(shù)據(jù)庫適配器配置,映射文件配置等等。 由于Hibernate對JDBC進(jìn)行的很好的封裝,所以我們并不需要直接通過JDBC操作數(shù)據(jù)庫表,而是通過Hibernate間接使用。首先通過Configurationconfig=newConfiguration().configure();得到Configuration類,Configuration類負(fù)責(zé)管理Hibernate的配置信息。再通過SessionFactorysessionFactory=config.buildSessionFactory();得到sessionFactory,SessionFactory中保存了對應(yīng)當(dāng)前數(shù)據(jù)庫配置的所有映射關(guān)系,同時負(fù)責(zé)維護(hù)當(dāng)前二級數(shù)據(jù)緩存和StatementPool。Session是Hibernate持久化操作的基礎(chǔ)。這里的Session與傳統(tǒng)意義上的Web層HttpSession沒有什么關(guān)系。HibernateSession之與Hibernate,相當(dāng)于JDBCConnection之與JDBC。Session通過Sessionsession=sessionFactory.openSession();得到,Session作為貫穿Hibernate的持久化管理器核心,提供了眾多持久化方法,如save、update、delete,find等。通過這些方法我們就可以操作數(shù)據(jù)庫了。Session是一個輕量級對象。通常每一個Session實(shí)例和一個數(shù)據(jù)庫事務(wù)綁定,也就是說,每執(zhí)行一個數(shù)據(jù)庫事務(wù),都應(yīng)該先創(chuàng)建一個新的Session實(shí)例。如果事務(wù)執(zhí)行中出現(xiàn)異常,應(yīng)該撤銷事務(wù)。不論事務(wù)執(zhí)行成功與否,最后都應(yīng)該調(diào)用Session的close()方法,從而釋放Session實(shí)例占用的資源。[13]2.6Tomcat應(yīng)用服務(wù)器介紹 學(xué)習(xí)Servlet技術(shù),首先需要有一個Servlet運(yùn)行環(huán)境,也就是需要有一個Servlet容器,這里介紹Tomcat。Tomcat服務(wù)器是一個免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,它是Apache軟件基金會(ApacheSoftwareFoundation)的Jakarta項(xiàng)目中的一個核心項(xiàng)目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn)。因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器 Tomcat很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。Tomcat是一個小型的輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。對于一個初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺機(jī)器上配置好Apache服務(wù)器,可利用它響應(yīng)對HTML頁面的訪問請求。實(shí)際上Tomcat部分是Apache服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat時,它實(shí)際上作為一個與Apache獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。[14] 圖2.6是Tomcat服務(wù)器接受客戶請求并做出響應(yīng)的過程。 圖2.6Tomcat服務(wù)器接受客戶請求并做出響應(yīng)的過程1客戶端(通常都是瀏覽器)訪問Web服務(wù)器,發(fā)送HTPP請求。2Web服務(wù)器接收到請求后,傳遞給Servlet容器。3Servlet容器加載Servlet,產(chǎn)生Servlet實(shí)例后,向其傳遞表示請求和響應(yīng)的對象。4Servlet實(shí)例使用請求對象得到客戶端的請求信息,然后進(jìn)行相應(yīng)的處理。5Servlet實(shí)例將處理結(jié)果通過響應(yīng)對象發(fā)送回客戶端,容器負(fù)責(zé)確保響應(yīng)正確送出,同時將控制返回給Web服務(wù)器。[15]2.7MySQL數(shù)據(jù)庫介紹2.7.1數(shù)據(jù)庫的歷史和發(fā)展 在當(dāng)前信息時代,作為信息管理的主要工具——數(shù)據(jù)庫技術(shù)得到了廣泛的應(yīng)用。數(shù)據(jù)庫一詞起源于20世紀(jì)50年代,當(dāng)時美國的研究人員為了戰(zhàn)爭的需要,把各種情報(bào)集中在一起存儲在計(jì)算機(jī)中,稱為InformationBase或DataBase。半個世紀(jì)以來,數(shù)據(jù)庫技術(shù)已經(jīng)成為計(jì)算機(jī)領(lǐng)域中最重要的技術(shù)之一,它是軟件學(xué)科中一個獨(dú)立的分支。數(shù)據(jù)庫技術(shù)的出現(xiàn)使得計(jì)算機(jī)應(yīng)用滲透到工業(yè)、農(nóng)業(yè)、商業(yè)、行政、科研、工程、國防、軍事、文化教育等各個部門,滲透到社會的每個角落,并且正改變著人們的工作和生活方式。管理信息系統(tǒng)、辦公自動化系統(tǒng)、決策支持系統(tǒng)等都是使用的數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)應(yīng)用系統(tǒng)。數(shù)據(jù)庫技術(shù)已經(jīng)成為了信息高速公路的核心組件技術(shù)[16]。當(dāng)前主要的數(shù)據(jù)庫產(chǎn)品有IBM的DB2當(dāng)前版本為9,Microsoft的SQLServer當(dāng)前版本為2005,Oracle數(shù)據(jù)庫當(dāng)前版本為11g,和開源社區(qū)的MySQL當(dāng)前版本為5.1。2.7.2MySQL介紹 MySQL: MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQLAB開發(fā)、發(fā)布和支持。MySQLAB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結(jié)合開源價值和方法論的第二代開源公司。MySQL是MySQLAB的注冊商標(biāo)。MySQL網(wǎng)站()提供了關(guān)于MySQL和MySQLAB的最新的消息。MySQL是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)關(guān)系數(shù)據(jù)庫把數(shù)據(jù)存放在分立的表格中,這比把所有數(shù)據(jù)存放在一個大倉庫中要好得多,這樣做將增加你的速度和靈活性?!癕ySQL”中的SQL代表“StructuredQueryLanguage”(結(jié)構(gòu)化查詢語言)。SQL是用于訪問數(shù)據(jù)庫的最通用的標(biāo)準(zhǔn)語言,它是由ANSI/ISO定義的SQL標(biāo)準(zhǔn)。SQL標(biāo)準(zhǔn)發(fā)展自1986年以來,已經(jīng)存在多個版本:SQL-86,SQL-92,SQL:1999,SQL:2003,其中SQL:2003是該標(biāo)準(zhǔn)的當(dāng)前版本。MySQL是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言。MySQL是以一個客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫組成。SQL是一種標(biāo)準(zhǔn)化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個網(wǎng)站檢索產(chǎn)品信息及存儲顧客信息,同時MySQL也足夠快和靈活以允許你存儲記錄文件和圖像。[17]MySQL主要目標(biāo)是快速、健壯和易用。最初是因?yàn)槲覀冃枰@樣一個SQL服務(wù)器,它能處理與任何可不昂貴硬件平臺上提供數(shù)據(jù)庫的廠家在一個數(shù)量級上的大型數(shù)據(jù)庫,但速度更快,MySQL就開發(fā)出來。2.7.3MySQL的主要特性·使用核心線程的完全多線程。這意味著它能很容易地利用多CPU?!、C++、Eiffel、Java、Perl、PHP、PythonAPI·可運(yùn)行在不同的平臺上?!ざ喾N列類型:1、2、3、4、和8字節(jié)長度的有符號/無符號整數(shù)、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET和ENUM類型。·利用一個優(yōu)化的一遍掃描多重聯(lián)結(jié)(one-sweepmulti-join)非??焖俚剡M(jìn)行聯(lián)結(jié)(join)?!ねㄟ^一個高度優(yōu)化的類庫實(shí)現(xiàn)SQL函數(shù)庫并且像他們能達(dá)到的一樣快速,通常在查詢初始化后不應(yīng)該有任何內(nèi)存分配?!ひ粋€非常快速的基于線程的內(nèi)存分配系統(tǒng)?!ず瘮?shù)名不會與表或列名沖突。例如ABS是一個有效的列名字。對函數(shù)調(diào)用的唯一限制是函數(shù)名與隨后的“(”不能有空格·支持ANSISQL的LEFTOUTERJOIN和ODBC語法?!に蠱ySQL程序可以用選項(xiàng)--help或-?獲得聯(lián)機(jī)幫助?!し?wù)器能為客戶提供多種語言的出錯消息

第3章系統(tǒng)需求分析3.1系統(tǒng)功能概述 隨著網(wǎng)絡(luò)的發(fā)展,越來越多的應(yīng)用被移植到網(wǎng)絡(luò)上,有人預(yù)言網(wǎng)絡(luò)操作系統(tǒng)將會替代現(xiàn)在的桌面操作系統(tǒng)。采用B/S結(jié)構(gòu)的WEB應(yīng)用程序具有瘦客戶端的特點(diǎn),它不需要像C/S結(jié)構(gòu)的桌面應(yīng)用程序那樣進(jìn)行繁瑣和費(fèi)時的安裝,你只需要一個瀏覽器便可以使用WEB應(yīng)用程序。但是WEB應(yīng)用程序也有一定的局限性,因?yàn)樗鼘⒋罅康牟僮饔煞?wù)器完成,這將大大加重服務(wù)器的負(fù)擔(dān),因此大型的WEB應(yīng)用程序需要強(qiáng)大服務(wù)器支持。 本系統(tǒng)采用B/S結(jié)構(gòu)設(shè)計(jì)開發(fā),旨在讓用戶通過網(wǎng)絡(luò)瀏覽器實(shí)現(xiàn)對系統(tǒng)的訪問。可以大大減少各個用戶在時間和空間上的限制。不同級別的用戶可以對系統(tǒng)進(jìn)行不同的管理和操作。這個系統(tǒng)主要目的是可以讓考試變得更方便,讓改卷變得更輕松,讓管理變得更容易。有了這個系統(tǒng),學(xué)生可以拿到一臺計(jì)算機(jī)就可以考試,不必?fù)?dān)心這臺機(jī)器上是否裝有考試系統(tǒng)。3.2權(quán)限與控制 用戶按照不同的角色進(jìn)行分類,分為管理員(admin)、學(xué)生(student)和教師(teacher)三類,每個角色對應(yīng)不同的權(quán)限。admin帳號為系統(tǒng)產(chǎn)生是存在。student和teacher帳號不能注冊,必須由管理員進(jìn)行錄入,產(chǎn)生相應(yīng)的帳號和密碼在告訴學(xué)生和教師,學(xué)生和教師可登錄系統(tǒng)進(jìn)行密碼的修改。admin主要職責(zé)是維護(hù)、管理和添加各種數(shù)據(jù)。teacher主要職責(zé)是管理題庫、試卷庫、查看學(xué)生的考試信息。student主要職責(zé)是考試和查看自己的考試信息。3.3系統(tǒng)業(yè)務(wù)流程分析3.3.1業(yè)務(wù)術(shù)語名稱說明角色系統(tǒng)中包括管理員(admin)學(xué)生(student)教師(teacher)三種角色帳號登錄時需要,唯一區(qū)別每個用戶的。密碼登錄時必須輸入。3.3.2業(yè)務(wù)流程登錄:圖登錄流程圖

管理員登錄:圖管理員登錄流程圖

教師登錄:圖教師登錄流程圖

學(xué)生登錄:圖學(xué)生登錄流程圖

3.4系統(tǒng)模塊簡介 根據(jù)對計(jì)算機(jī)考試系統(tǒng)的分析和理解,本系統(tǒng)應(yīng)該包含以下幾個功能:3.4.1登錄模塊 登錄頁面上有一個角色下拉框,兩個文本框分別是輸入帳號和密碼。登錄前選擇登錄的角色,輸入帳號和密碼,如果相應(yīng)的數(shù)據(jù)庫表中與輸入的帳號密碼相同則登錄成功,否則頁面上顯示錯誤信息。3.4.2系統(tǒng)管理模塊 系統(tǒng)管理模塊是只有管理員可見的模塊,它包括5個小模塊,分別是:學(xué)校數(shù)據(jù)模塊、學(xué)院數(shù)據(jù)模塊、班級數(shù)據(jù)模塊、教師數(shù)據(jù)模塊、學(xué)生數(shù)據(jù)模塊。 (1)學(xué)校數(shù)據(jù)模塊學(xué)校數(shù)據(jù)模塊首先在頁面中列出相關(guān)的學(xué)校數(shù)據(jù),它的功能包括對學(xué)校數(shù)據(jù)的增加、刪除和修改,增加操作將跳轉(zhuǎn)到一個增加頁面填入相應(yīng)的字段驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。(2)學(xué)院數(shù)據(jù)模塊 學(xué)院數(shù)據(jù)模塊首先在頁面中列出相關(guān)的學(xué)院數(shù)據(jù),它的功能包括對學(xué)院數(shù)據(jù)的增加、刪除和修改,增加操作將跳轉(zhuǎn)到增加頁面,頁面中有一個所在學(xué)校的字段時一個下拉框,內(nèi)容為學(xué)校數(shù)據(jù)中增加進(jìn)去的學(xué)校,選擇一個學(xué)校填入其他數(shù)據(jù)驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。 (3)班級數(shù)據(jù)模塊 班級數(shù)據(jù)模塊首先在頁面中列出相關(guān)的班級數(shù)據(jù),它的功能包括對班級數(shù)據(jù)的增加、刪除和修改,增加操作將跳轉(zhuǎn)到增加頁面,頁面中有兩個下拉框一個是所在學(xué)校,一個是所在學(xué)院,這兩個為二級聯(lián)動的下拉框,選中所在學(xué)校后,學(xué)院下拉框中顯示相應(yīng)學(xué)校的學(xué)院,填入其他數(shù)據(jù)驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。(4)教師數(shù)據(jù)模塊 教師數(shù)據(jù)模塊首先在頁面總列出相關(guān)的教師數(shù)據(jù),它的功能包括對教師數(shù)據(jù)的增加、刪除和修改,增加操作將跳轉(zhuǎn)到增加頁面,頁面中有兩個下拉框一個是所在學(xué)校,一個是所在學(xué)院,這兩個為二級聯(lián)動的下拉框,選中所在學(xué)校后,學(xué)院下拉框中顯示相應(yīng)學(xué)校的學(xué)院,填入其他數(shù)據(jù)驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。 (5)學(xué)生數(shù)據(jù)模塊 學(xué)生數(shù)據(jù)模塊首先在頁面中列出相關(guān)的學(xué)生數(shù)據(jù),它的功能包括對學(xué)生數(shù)據(jù)的增加、刪除和修改,增加操作將跳轉(zhuǎn)到增加頁面,頁面中有三個下拉框一個為所在學(xué)校,一個為所在學(xué)院,一個為所在班級,這三個為三級聯(lián)動的下拉框,選擇相應(yīng)的學(xué)校、學(xué)院、班級后,填入其他數(shù)據(jù)驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。3.4.3科目管理模塊 科目管理模塊頁面首先顯示大學(xué)一年級的科目列表,頁面上有大學(xué)一年級、大學(xué)二年級、大學(xué)三年級、大學(xué)四年級鏈接,點(diǎn)擊分別顯示不同年級的科目列表。模塊功能包括對科目數(shù)據(jù)的增加、刪除和修改,增加操作是只要選擇一個年級然后填入科目名稱驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。3.4.4題庫管理模塊題庫管理模塊頁面上包括列出各年級科目,列出題型,列出題目列表,默認(rèn)為選擇題。題庫管理模塊功能包括對題庫數(shù)據(jù)的增加、刪除、修改和產(chǎn)生試卷、試卷重置。增加操作是進(jìn)入某個科目和某種題型的頁面后點(diǎn)擊增加到題目鏈接后進(jìn)入增加題目的頁面,填入相應(yīng)的數(shù)據(jù)驗(yàn)證通過后保存到數(shù)據(jù)庫。刪除一條記錄時則需要考慮這條記錄是否被后面的數(shù)據(jù)所使用,要是被使用則提示無法刪除。修改一條記錄時跳轉(zhuǎn)到修改頁面,對一些可修改的字段進(jìn)行修改,驗(yàn)證通過后保存。手動產(chǎn)生試卷首先要選擇(將記錄前面的checkBox打勾)需要加入到試卷的題目,點(diǎn)擊將題目加入到試卷的鏈接后題目信息被保存到cookie中,等到各種題型的題目都選擇好并加入到試卷后,可以進(jìn)行試卷預(yù)覽、試卷重置或者直接生成試卷,試卷預(yù)覽是以考試試卷的形式跳出一個新頁面,試卷重置是將保存到cookie中的題目信息清除,生成試卷時首先要進(jìn)入預(yù)覽,填入試卷名和考試時間后按確定將試卷保存到數(shù)據(jù)庫。用戶可到試卷管理模塊查看生成的試卷信息。3.4.5試卷管理模塊試卷管理頁面上列出了各年級的科目,和科目的試卷列表。點(diǎn)擊試卷名稱可以查看試卷的信息,點(diǎn)擊刪除可以將此試卷從數(shù)據(jù)庫中刪除。3.4.6帳戶管理模塊 帳戶管理模塊主要分為帳戶信息、帳戶信息修改和帳戶密碼修改3個子模塊。帳戶管理頁面首先顯示帳戶信息,點(diǎn)擊帳戶信息修改鏈接進(jìn)入帳戶信息修改頁面,顯示帳戶信息的各個字段,修改可修改的字段(角色和帳號為不可修改)按確定進(jìn)行修改。點(diǎn)擊帳戶密碼修改進(jìn)入密碼修改頁面帳號為不可修改,需要輸入舊密碼和輸入兩次新密碼,舊密碼必須正確且兩次新密碼必須相同,滿足則點(diǎn)擊確定修改成功。3.4.7考試管理模塊 考試管理模塊分為考試新聞、進(jìn)入考試和信息查詢,考試管理模塊首先顯示考試新聞,這個頁面顯示一些新聞或者公告。點(diǎn)擊進(jìn)入考試鏈接進(jìn)入另一個頁面,頁面顯示有年級、科目和試卷三個級聯(lián)下拉框供選擇,點(diǎn)擊下一步進(jìn)入考試頁面,顯示試卷,開始計(jì)時,答題完成后點(diǎn)擊提交,后臺進(jìn)行改卷并保存。點(diǎn)擊信息查詢可以查詢考試記錄,點(diǎn)擊相關(guān)記錄可以查看詳細(xì)信息。3.4.8信息查詢模塊 信息查詢模塊不同與考試管理中的信息查詢子模塊,考試管理中的信息查詢是讓考試學(xué)生查詢自己的考試信息用的。而這個信息查詢則是為了讓教師用戶查詢某個班級、某個名字或者某個學(xué)號的學(xué)生的考試信息。頁面上有一個下拉框顯示教師所在學(xué)院的班級,兩個文本框,一個輸入學(xué)生姓名,一個輸入學(xué)號,輸入查詢條件后點(diǎn)擊查詢按鈕在頁面中列出相應(yīng)的查詢結(jié)果。點(diǎn)擊某個學(xué)生可以進(jìn)入此學(xué)生的考試信息。3.5系統(tǒng)開發(fā)環(huán)境 操作系統(tǒng):MicrosoftWindowsXPprofessional 程序開發(fā)環(huán)境:MyEclipse6.0 應(yīng)用服務(wù)器:Tomcat6 數(shù)據(jù)庫:MySql5.1

第4章系統(tǒng)設(shè)計(jì)4.1系統(tǒng)整體架構(gòu)設(shè)計(jì) 計(jì)算機(jī)考試系統(tǒng)的功能總體結(jié)構(gòu)圖如圖4.1所示:圖4.1系統(tǒng)整體架構(gòu)設(shè)計(jì)4.2系統(tǒng)管理設(shè)計(jì) 系統(tǒng)管理分為5個子模塊,分別是學(xué)校數(shù)據(jù)管理,學(xué)院數(shù)據(jù)管理,班級數(shù)據(jù)管理,教師數(shù)據(jù)管理,學(xué)生數(shù)據(jù)管理。學(xué)校數(shù)據(jù)管理流程如圖4.2.1所示:圖4.2.1學(xué)校數(shù)據(jù)管理流程圖

學(xué)院數(shù)據(jù)管理流程圖如圖4.2.2所示:圖4.2.2學(xué)院管理數(shù)據(jù)流程圖

班級數(shù)據(jù)管理流程圖如圖4.圖4.2.3班級數(shù)據(jù)管理流程圖

教師數(shù)據(jù)管理流程圖如圖4.2.4所示:圖4.2.4教師數(shù)據(jù)管理流程圖

學(xué)生數(shù)據(jù)流程圖如圖4.2.5所示:圖4.2.5學(xué)生數(shù)據(jù)管理流程圖

4.3題庫管理設(shè)計(jì) 題庫管理可以讓管理員或者教師管理題目,完成對題目的增加、刪除和修改操作,對于生成的題目可以選擇需要的生成試卷。題庫管理流程圖如圖4.3所示:圖4.3題庫管理流程圖

4.4科目管理設(shè)計(jì) 科目管理可以讓管理員或者是

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論