在線考試系統(tǒng)論文1.doc
《在線考試系統(tǒng)論文1.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《在線考試系統(tǒng)論文1.doc(38頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、本科畢業(yè)論文基于B/S架構(gòu)的Java考試系統(tǒng)的設(shè)計(jì)DESIGN OF JAVA EXAMINATION SYSTEM BASED ON B/S STRUCTUREXXX2004001342專 業(yè) 名 稱 軟件工程 申請(qǐng)學(xué)士學(xué)位所屬學(xué)科 工 學(xué) 指導(dǎo)教師姓名、職稱 XXX 講師 2008 年 5 月 1日摘要摘 要近年來,隨著因特網(wǎng)技術(shù)的發(fā)展,在線考試系統(tǒng)成為網(wǎng)絡(luò)應(yīng)用研究的熱點(diǎn)之一,在線考試能很好地解決傳統(tǒng)考試中存在的成本高、管理不方便等問題。Web開發(fā)語言的發(fā)展,也為在線考試系統(tǒng)提供一個(gè)可靠的技術(shù)支持。在線考試系統(tǒng)本身是一個(gè)很大的系統(tǒng),完成一個(gè)真正可以使用的在線考試系統(tǒng)還需要更深入的研究和開發(fā)
2、,本文主要是通過建立一個(gè)在線考試的原型系統(tǒng),來討論如何實(shí)現(xiàn)考試系統(tǒng)中的管理考題、考卷、考試以及成績(jī)的功能。本系統(tǒng)涉及到兩類用戶:教師和學(xué)生。教師負(fù)責(zé)出卷,考試負(fù)責(zé)考試??荚囃瓿珊?,由系統(tǒng)評(píng)定學(xué)生成績(jī)供教師和學(xué)生查看。本論文首先分析在線考試系統(tǒng)的優(yōu)勢(shì),然后闡述如何運(yùn)用Java技術(shù)實(shí)現(xiàn)基于B/S架構(gòu)的在線考試系統(tǒng),同時(shí)闡述Dojo這一開源JS框架在Java系統(tǒng)中的應(yīng)用。關(guān)鍵詞:考試系統(tǒng),Java,Dojo,B/SIAbstractABSTRACTIn recent years,with the development of the Internet,online examination has b
3、ecome one of the hotspot for the network application.Online examinations solve many problems that existed in traditional exams, such as high costs and inconvenience in management. The development in web language also provides some reliable techical support for online examination systems.Online exami
4、nation system itself is a great system. The completion of an online examination system which is truely useful needs in-depth research and explorement.This paper mainly discusses the question of how to achieve the function of managing examination tests, examination papers and examinations in the exam
5、ination system by establishing an online examination of the prototype system. This system involves two categories of users: teachers and students. Teachers are responsible for the examination papers, and students are responsible for the examination. After the examination completed, the system can ev
6、anulate the result of students examinations, and it is convenient for both teachers and students to check the results.This paper firstly analizes the advantage of the system of online exam, and then states how to used java technologies to develop system of online exam on the basis of the B/S frame.
7、At the same time, it introduces the application of Dojo, the open source JS frame in a Java application system.Key words: Examination System,Java,Dojo,B/SIV目錄目 錄1 引言12 在線考試系統(tǒng)的優(yōu)勢(shì)13 考試系統(tǒng)的分析和設(shè)計(jì)23.1 相關(guān)技術(shù)介紹23.2設(shè)計(jì)思想33.3運(yùn)行環(huán)境43.4開發(fā)工具43.5業(yè)務(wù)構(gòu)架43.6系統(tǒng)構(gòu)架53.7實(shí)體對(duì)象分析63.8數(shù)據(jù)庫(kù)設(shè)計(jì)分析84 考試系統(tǒng)的具體實(shí)現(xiàn)104.1 Dojo工具包的引入104.2系統(tǒng)各模塊
8、具體實(shí)現(xiàn)124.2.1數(shù)據(jù)庫(kù)連接模塊124.2.2登錄模塊144.2.3教師模塊184.2.4學(xué)生模塊285 結(jié)束語31參考文獻(xiàn)32致 謝33INDEX1 Introduction12 Advantage of Online Examnation System13 Online Examnation Analysis And Design23.1 Related Technology23.2 System Design Thought33.3 Runntime Environment43.4 Devlop Tools43.5 Operation Architecture43.6 System
9、Architecture53.7 Entity-Relation Analysis63.8 Database Design84 Examination System to Achieve the Specific104.1 Import Dojo Toolkit104.2 Implement of Every Module124.2.1 Database Connection Module124.2.2 Login Module144.2.3 Teachers Module184.2.4 Students Module285 Tag31References32Thanks33泰山學(xué)院本科畢業(yè)論
10、文1 引言網(wǎng)絡(luò)的腳印早已遍布全球的每個(gè)角落,也滲入了人們生活的方方面面,在線繳費(fèi)、在線業(yè)務(wù)辦理早已不是陌生的東西,在互聯(lián)網(wǎng)上,人們可以很方便的處理各種事務(wù),網(wǎng)絡(luò)的優(yōu)勢(shì)不言而喻。同樣,便捷的網(wǎng)絡(luò)也為在線考試系統(tǒng)實(shí)施提供了良好的環(huán)境。在線考試作為網(wǎng)上遠(yuǎn)程教育的重要組成部分,己經(jīng)在國(guó)外一些發(fā)達(dá)國(guó)家得到蓬勃發(fā)展,學(xué)生選學(xué)課程和考試都是通過網(wǎng)絡(luò)來進(jìn)行。在因特網(wǎng)普及的今天,構(gòu)筑在線考試平臺(tái),從技術(shù)條件上己經(jīng)很成熟。Sun公司的Java認(rèn)證考試,思科公司的CCNA考試都是基于在線考試的。在國(guó)內(nèi),在線考試還未形成規(guī)模,更多的只是局限于在線報(bào)名和成績(jī)查詢。而在國(guó)外,網(wǎng)上提交作業(yè)和網(wǎng)上考試已經(jīng)相當(dāng)普及了。傳統(tǒng)的考
11、試方式已經(jīng)不能適應(yīng)現(xiàn)代考試的需要,在線考試成為一個(gè)必要。隨著國(guó)內(nèi)網(wǎng)絡(luò)教育的興起,國(guó)內(nèi)也涌現(xiàn)部分優(yōu)秀的考試平臺(tái)系統(tǒng),如科教2000在線考試平臺(tái),該系統(tǒng)適用于局域網(wǎng)和Internet,無需安裝客戶端,即可實(shí)現(xiàn)網(wǎng)上考試和作業(yè)、自動(dòng)判分、成績(jī)查詢和結(jié)果分析等功能。該系統(tǒng)還可自動(dòng)出卷并輸出至Word文檔中,可以同時(shí)滿足傳統(tǒng)考試的需要。目前,電腦閱卷在主觀題的判定方面還存在一定的困難,所以本系統(tǒng)主要是基于客觀題(選擇題)的考試。2 在線考試系統(tǒng)的優(yōu)勢(shì) 目前在各類考試中,傳統(tǒng)的考試方式還是占主流。傳統(tǒng)考試是基于紙質(zhì)試卷,一次考試基本是由以下幾個(gè)過程組成:教師出卷、復(fù)印考卷、學(xué)生考試、教師閱卷、統(tǒng)計(jì)分析成績(jī)。
12、教師出卷后,需要復(fù)印考卷,這對(duì)于用電子試卷的在線考試來說,這根本不會(huì)存在的,電子試卷不僅保存方便,更節(jié)省紙質(zhì)材料,為保護(hù)森林做貢獻(xiàn),同時(shí)也節(jié)省復(fù)印所需的油墨等耗材。紙質(zhì)試卷在分發(fā)過程也存在諸多不便,國(guó)家級(jí)的考試,試卷需要從中央分發(fā)到全國(guó)各地,中間難免消耗大量財(cái)力物力,也不能保證運(yùn)送準(zhǔn)時(shí)和安全,而電子試卷無需分發(fā),各地只要登錄某個(gè)網(wǎng)站就能直接開始考試。在考試環(huán)節(jié),使用電子試卷可以隨機(jī)抽取試卷給學(xué)生,相鄰學(xué)生的試卷重復(fù)概率減少,減少舞弊現(xiàn)象。教師閱卷過程,這一環(huán)節(jié)相當(dāng)辛苦,老師們要奮斗很多個(gè)夜晚,人工閱卷過程出現(xiàn)錯(cuò)誤和主觀判斷也是難免的。使用電子試卷的話,情況大不一樣了,閱卷這一艱難的任務(wù)就交給電
13、腦了,電腦基本能在學(xué)生交卷后馬上閱卷完畢,閱卷過程也相當(dāng)準(zhǔn)確,也不會(huì)出現(xiàn)主觀判斷的錯(cuò)誤,減少閱卷過程出現(xiàn)的錯(cuò)誤。統(tǒng)計(jì)分析成績(jī),這也是個(gè)相當(dāng)累人的體力活,統(tǒng)計(jì)每一張?jiān)嚲?,再用公式?jì)算統(tǒng)計(jì)結(jié)果,效率低,成本高,也很容易出錯(cuò),電子試卷統(tǒng)計(jì)相當(dāng)快捷準(zhǔn)確,能更好的反映考試結(jié)果,方便考生和教師查看考試結(jié)果??偟膩碚f,在線考試與傳統(tǒng)考試相比有這幾個(gè)優(yōu)點(diǎn):節(jié)約成本,方便快捷,公正客觀。3 在線考試系統(tǒng)的分析和設(shè)計(jì)3.1 相關(guān)技術(shù)介紹1、DojoDojo是基于JavaScript語言開發(fā)的Ajax開源開發(fā)包,2004年9月完成了第一個(gè)版本的Dojo代碼,Dojo的目標(biāo)是解決DHTML開發(fā)過程中長(zhǎng)期困擾人們的問題
14、(如:跨瀏覽器問題等),它是 Ajax 開發(fā)框架中的重量級(jí)產(chǎn)品,適合企業(yè)級(jí)應(yīng)用。Dojo基金會(huì)得到了IBM、AOL、SUN這些大公司的支持,同時(shí),WebWork、Tapestry、OpenLaszlo等開源團(tuán)隊(duì)都是dojo基金會(huì)的成員,雄厚的后盾保證了Dojo可以持續(xù)地發(fā)展下去。2、JDBCJDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為數(shù)據(jù)庫(kù)開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級(jí)的接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠用純 J
15、ava API 編寫數(shù)據(jù)庫(kù)應(yīng)用程序。 3.2設(shè)計(jì)思想1、B/S結(jié)構(gòu)開發(fā)思想基于瀏覽器和服務(wù)器的開發(fā)模式,邏輯上一般分三次:客戶端層、服務(wù)端層、數(shù)據(jù)庫(kù)層。只需把應(yīng)用安裝在服務(wù)端,客戶端通過操作系統(tǒng)自帶的瀏覽器,訪問服務(wù)端地址,就能訪問服務(wù)端應(yīng)用,再由服務(wù)端操作數(shù)據(jù)庫(kù),并將相應(yīng)的信息返回給客戶端??蛻舳藷o需安裝其他軟件,升級(jí)軟件也只需升級(jí)服務(wù)端應(yīng)用即可,節(jié)省成本,與C/S開發(fā)模式相比,具有相當(dāng)?shù)膬?yōu)勢(shì)。2、面向?qū)ο笤O(shè)計(jì)思想面向?qū)ο笤O(shè)計(jì)思想主要是抽象出系統(tǒng)中的對(duì)象,圍繞這對(duì)象定義的接口來組織程序。面向?qū)ο蟮哪P驮诮M織方式上有:抽象、封裝、繼承和多態(tài)的好處。在系統(tǒng)確定需求后,開始抽象系統(tǒng)所需要的類,本系
16、統(tǒng)涉及的類主要有學(xué)生類、試題類、試卷類、考試類和成績(jī)類等。3、代碼分層思想在利用Java語言開發(fā)Web應(yīng)用程序中,主要用到這三個(gè)技術(shù):JSP、servlet、Java Bean,JSP主要負(fù)責(zé)展現(xiàn),將返回的結(jié)果返回給用戶,并將用戶的請(qǐng)求提交到服務(wù)器,JSP屬于展現(xiàn)層,也就是View層。Servlet是中間層,負(fù)責(zé)把請(qǐng)求交給相應(yīng)的Java Bean來處理,并將返回的結(jié)果交給JSP展現(xiàn),屬于控制層。Java Bean就屬于模式層,主要處理servlet提交過來的請(qǐng)求??紤]到系統(tǒng)的大小,本系統(tǒng)中主要采用JSP和Java Bean層。3.3運(yùn)行環(huán)境1、客戶端環(huán)境:瀏覽器:Microsoft Inter
17、net Explorer 6.0或更高版本2、服務(wù)端環(huán)境:數(shù)據(jù)庫(kù):MySQL 5.0或更高版本服務(wù)器:Tomcat 5.0.28 或更高版本3.4開發(fā)工具Java文件編輯工具:Eclipse 3.2Jsp 文件編輯工具:UltraEdit 14.03.5業(yè)務(wù)構(gòu)架本系統(tǒng)構(gòu)的業(yè)務(wù)構(gòu)架圖如圖3-1所示。系統(tǒng)登錄教師登錄學(xué)生登陸試題管理增加試卷考生管理成績(jī)查詢?cè)嚲砉芾砜荚嚬芾磉M(jìn)入考試成績(jī)管理修改密碼刪除試題增加試題增加考試增加考生刪除試卷刪除考生刪除考試選擇考試圖3-1 業(yè)務(wù)框架系統(tǒng)有兩個(gè)登錄入口:教師登錄和學(xué)生登錄。教師作為系統(tǒng)的管理員,可以對(duì)試題、試卷、考試、考試進(jìn)行增加、刪除等操作,可以查詢所有
18、學(xué)生的成績(jī)。學(xué)生可以進(jìn)行考試、查詢成績(jī)、修改密碼的操作??荚嚂r(shí)可以選擇不同的考試進(jìn)行考試,查看成績(jī)時(shí)只能查看到本人的成績(jī)。3.6系統(tǒng)構(gòu)架本系統(tǒng)構(gòu)的系統(tǒng)構(gòu)架圖如圖3-2所示??蛻舳藶g覽器(教師和考生通過瀏覽器訪問系統(tǒng))服務(wù)端Servlet容器(Tomcat)控制器(Jsp或Servlet,包括教師登錄頁面、學(xué)生考試頁面等)視圖Jsp(展現(xiàn)返回的數(shù)據(jù),如試卷內(nèi)容、試卷列表、提示信息等)模型 (JavaBean,包括試題類、試卷類、考試類等)Web 數(shù)據(jù)庫(kù)(MySQL數(shù)據(jù)庫(kù))模型 (JavaBean)(JavaBean,包括試題類、試卷類、考試類等)圖3-2 系統(tǒng)框架首先由客戶端瀏覽器發(fā)起請(qǐng)求,服務(wù)
19、端的Servlet響應(yīng)請(qǐng)求,將請(qǐng)求交予控制器,控制器再調(diào)用相應(yīng)的模型,來訪問Web數(shù)據(jù)庫(kù),模型取得數(shù)據(jù)后,再交由Jsp展現(xiàn),服務(wù)器將Jsp的效果返回到發(fā)出請(qǐng)求的客戶端。3.7實(shí)體對(duì)象分析1、數(shù)據(jù)庫(kù)連接對(duì)象圖3-3 數(shù)據(jù)庫(kù)連接對(duì)象類圖作用:負(fù)責(zé)連接數(shù)據(jù)庫(kù),執(zhí)行相應(yīng)的增刪改查操作。6屬性:無方法:getConn 獲得連接close 關(guān)閉連接2、學(xué)生對(duì)象圖3-4 學(xué)生對(duì)象類圖屬性:userName 用戶名password 密碼方法:Save 保存一條學(xué)生記錄Delete 刪除一條學(xué)生記錄getStudents 獲得所有學(xué)生列表checkPassword 修改密碼時(shí)判斷原始密碼是否正確3、試題對(duì)象圖3
20、-5 試題對(duì)象類圖7屬性:Context 題干A 選項(xiàng)a的內(nèi)容B 選項(xiàng)b的內(nèi)容C 選項(xiàng)c的內(nèi)容D 選項(xiàng)d的內(nèi)容Key 答案方法:Sava 保存一道試題Delete 刪除一道試題delAble 判斷試題能否被刪除getQuestions 獲得所有試題列表getQuestionById 通過id來獲得某道試題4、試卷對(duì)象圖3-6 試卷對(duì)象類圖屬性:Name 試卷名稱Questions 屬于本試卷的試題列表QuestionIds 屬于本試卷的試題Id列表方法:getPapers 獲得所有的試卷列表save 保存一條試卷記錄delete 刪除一條試卷記錄delAble 判斷試卷能否被刪除getPape
21、rById 通過Id獲得某試卷5、考試對(duì)象圖3-7 考試對(duì)象類圖8屬性:Name 考試名稱paperIds 屬于本考試的試卷Id列表papers 屬于本考試的試卷對(duì)象列表方法:Save 保存一條考試記錄Delete 刪除一條考試記錄getQuestions 獲得本考試的所有試題getExamById 通過Id獲得一條考試記錄6、成績(jī)對(duì)象圖3-8 成績(jī)對(duì)象類圖屬性:studentId 學(xué)生IdexamId 考試Idmark 分?jǐn)?shù)方法:Save 保存一條成績(jī)記錄getMarks 獲得所有成績(jī)記錄getMarksByStudentId 通過學(xué)生Id獲得學(xué)生的所有考試成績(jī)3.8數(shù)據(jù)庫(kù)設(shè)計(jì)分析1、教師表
22、(teacher)表3-1 教師表字段名稱數(shù)據(jù)類型說明是否為主鍵IdIntId是UsernameVarchar用戶名NameVarchar教師姓名PasswordVarchar密碼2、學(xué)生表(student)表3-2 學(xué)生表字段名稱數(shù)據(jù)類型說明是否為主鍵IdIntId是UsernameVarchar用戶名NameVarchar教師姓名PasswordVarchar密碼3、試題表(question)表3-3 試題表字段名稱數(shù)據(jù)類型說明是否為主鍵IdIntId是ContextVarchar試題題干內(nèi)容AVarchar選項(xiàng)A內(nèi)容BVarchar選項(xiàng)B內(nèi)容CVarchar選項(xiàng)C內(nèi)容DVarchar選項(xiàng)
23、D內(nèi)容KeyChar正確答案,所填的內(nèi)容為a,b,c,d中的一個(gè)4、試卷表(paper)表3-4 試卷表字段名稱數(shù)據(jù)類型說明是否為主鍵IdIntId是NameVarchar試卷名稱qestionIdsVarchar試題Id列表,以“,”隔開5、考試表(exam)表3-5 考試表字段名稱數(shù)據(jù)類型說明是否為主鍵IdIntId是NameVarchar考試名稱paperIdsVarchar試卷Id列表,以“,”隔開6、成績(jī)表(mark)表3-6 成績(jī)表字段名稱數(shù)據(jù)類型說明是否為主鍵IdIntId是studentIdVarchar學(xué)生IdexamIdVarchar考試IdMarkFloat分?jǐn)?shù)以上各表均
24、是基于單表設(shè)計(jì),各表之間沒有通過外鍵等進(jìn)行關(guān)聯(lián),各實(shí)體間相互獨(dú)立,故不做E-R圖的分析。4 在線考試系統(tǒng)的具體實(shí)現(xiàn)4.1 Dojo工具包的引入本系統(tǒng)使用Dojo最為前臺(tái)組件,要在系統(tǒng)中使用Dojo工具包,首先需要從Dojo的官網(wǎng)(http:/dojotoolkit.org/)下載該開發(fā)包。本系統(tǒng)選用的是Dojo 0.4.3 版本。在下載頁面中能看到如圖4-1所示信息:圖4-1 Dojo下載頁面每個(gè)文件名都有兩個(gè)“-”號(hào),第一個(gè)“-”之后的內(nèi)容是版本號(hào),第二個(gè)“-”之后的內(nèi)容是這個(gè)開發(fā)包所包含的組建,具體對(duì)應(yīng)關(guān)系如表4-1所示:表4-1 Dojo版本與組件對(duì)照表Dojo-0.4.3-ajax包含
25、事件系統(tǒng),I/O,用戶界面Dojo-0.4.3-kitchen包含所有功能Dojo-0.4.3-event僅包含事件系統(tǒng)Dojo-0.4.3-minimal最小版本Dojo-0.4.3-widget包含widget版本開發(fā)的時(shí)候可以選擇kitchen版本,它包含了dojo所有的功能,但是在發(fā)布的時(shí)候要選擇合適的包,節(jié)省網(wǎng)絡(luò)流量。如果發(fā)布用的是kitchen 版本,而客戶端沒安裝Flash的話,客戶端會(huì)一直出現(xiàn)正在加載頁面,影響用戶體驗(yàn)。本系統(tǒng)中是用的是Dojo-0.4.3-ajax,下載后解壓到應(yīng)用的根目錄下,并將文件夾名稱改成dojo。Dojo是在Jsp頁面和html頁面中引用的,引用方式如
26、下所示:var djConfig = isDebug: false;dojo.require(“dojo.widget.Button”)dojo.require(dojo.widget.*);其中 var djConfig = isDebug: false;作用是設(shè)置Dojo運(yùn)行參數(shù),這里設(shè)置不顯示調(diào)試信息?!皊rc” 所指向的就是Dojo核心代碼dojo.js的路徑,要使用Dojo工具包,必須把它引入頁面。dojo.require(“dojo.widget.Button”)上一句的實(shí)際是將src / widget / Button.js 這個(gè)文件引入頁面中,這樣就可以在頁面中使用Dojo的B
27、utton組件,該語句類似Java語言中的import語句。至于dojo.require(dojo.widget.*);實(shí)際上Dojo會(huì)依照_package_.js 這個(gè)文件中定義的通配符代替的語句, 根據(jù)當(dāng)時(shí)的環(huán)境而決定加載所需的模塊。4.2系統(tǒng)各模塊具體實(shí)現(xiàn)4.2.1數(shù)據(jù)庫(kù)連接模塊本系統(tǒng)采用JDBC連接MySQL數(shù)據(jù)庫(kù),連接步驟如下:1. 得到數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序MySQL的JDBC驅(qū)動(dòng)程序名稱是com.mysql.jdbc.Driver,通過Class.forName(com.mysql.jdbc.Driver);注冊(cè)這個(gè)驅(qū)動(dòng)程序。這樣就能使用這個(gè)驅(qū)動(dòng)來連接MySQL數(shù)據(jù)庫(kù)。2. 創(chuàng)建數(shù)據(jù)庫(kù)連
28、接數(shù)據(jù)庫(kù)連接是由DriverManager這個(gè)工廠類的getConnection方法獲得的。getConnection方法在獲得連接過程中,需要數(shù)據(jù)庫(kù)連接字符串、用戶名和密碼,MySQL數(shù)據(jù)庫(kù)的連接字符串格式如下:jdbc:mysql:/dbip:port/databasename其中dpip是數(shù)據(jù)庫(kù)所在主機(jī)的ip,如果在本機(jī),可以填寫localhost或127.0.0.1port 是數(shù)據(jù)庫(kù)的端口,MySQL默認(rèn)端口是3306dabatasename 是所用的數(shù)據(jù)庫(kù)實(shí)例名稱3. 執(zhí)行SQL語句得到數(shù)據(jù)庫(kù)連接后,可以通過連接對(duì)象的createStatement方法來創(chuàng)建一個(gè)Statement對(duì)象
29、,Statement是用于執(zhí)行SQL語句的接口。有了Statement對(duì)象后,可以調(diào)用executeQuery或execute方法執(zhí)行給定的SQL語句。4. 得到結(jié)果集Statement執(zhí)行executeQuery或execute方法后,返回一個(gè)Resultset對(duì)象,Resultset是用于指向結(jié)果集對(duì)象的接口,遍歷該對(duì)象就能遍歷結(jié)果集。5. 對(duì)結(jié)果集做相應(yīng)的處理這一步驟主要是遍歷結(jié)果集取出相應(yīng)的記錄,根據(jù)業(yè)務(wù)需要對(duì)這些記錄進(jìn)行展現(xiàn)等處理。6. 關(guān)閉結(jié)果集,關(guān)閉Statement,關(guān)閉連接當(dāng)連接完成了,就要關(guān)閉相應(yīng)的資源以釋放內(nèi)存,后打開的資源應(yīng)該先關(guān)閉,所以關(guān)閉順序?yàn)椋航Y(jié)果集 Statem
30、ent 數(shù)據(jù)庫(kù)連接。使用JDBC連接MySQL數(shù)據(jù)庫(kù)具體實(shí)現(xiàn)主要代碼如下:Connection conn = null;Statement stmt = null;ResultSet rs = null;Class.forName(com.mysql.jdbc.Driver);conn = DriverManager.getConnection(jdbc:mysql:/localhost/lindent, root, );stmt = conn.createStatement();rs = stmt.executeQuery(Select * from student);while (rs.n
31、ext() System.out.println(rs.getString(id);rs.close();stmt.close();conn.close();4.2.2登錄模塊1、主要界面系統(tǒng)登錄界面如圖4-2所示。圖4-2 登錄界面登錄模塊的作用是根據(jù)用戶選擇的登錄通道,相應(yīng)展現(xiàn)輸入用戶名和密碼的頁面,再根據(jù)用戶提供的用戶名和密碼到系統(tǒng)中驗(yàn)證用戶身份是否合法,合法的話將根據(jù)用戶身份轉(zhuǎn)向相應(yīng)的操作頁面,不合法的話將跳轉(zhuǎn)回登錄頁面,讓用戶重現(xiàn)登錄。2、視圖層設(shè)計(jì)和實(shí)現(xiàn)登錄模塊的主頁面是Login.jsp。登錄模塊提供了兩個(gè)登錄通道:教師登錄通道和學(xué)生登錄通道。頁面中隱藏著學(xué)生登錄窗口和教師登錄窗
32、口,當(dāng)點(diǎn)擊頁面中的學(xué)生登錄按鈕,將展現(xiàn)學(xué)生登錄頁面,同時(shí)主頁面將失去焦點(diǎn)。當(dāng)取消登錄時(shí),焦點(diǎn)回到主頁面,可以重現(xiàn)選擇登錄通道。由于一個(gè)頁面中隱藏了兩個(gè)登錄通道,為了保證系統(tǒng)的友好性,需要在不同的登錄通道中,加入了不同的提示。登錄時(shí),用戶名和密碼均是必填項(xiàng),這就需要在用戶確定登錄時(shí)進(jìn)行用戶名和密碼是否為空的驗(yàn)證,當(dāng)用戶名或密碼為空時(shí)將給出相應(yīng)的提示,并將光標(biāo)移動(dòng)到相應(yīng)的位置,用戶不用再手動(dòng)定位到相應(yīng)的位置,為用戶完善登錄信息提供方便。同時(shí),這種驗(yàn)證是在客戶端瀏覽器進(jìn)行的,不涉及服務(wù)端,前臺(tái)的這種初步驗(yàn)證減輕了系統(tǒng)后臺(tái)和數(shù)據(jù)庫(kù)的負(fù)擔(dān),從一定程度上提高了系統(tǒng)性能。登錄通道的主要代碼如下:學(xué)生登錄教師
33、登錄點(diǎn)擊不同的登錄按鈕,可以通過執(zhí)行以下代碼分別進(jìn)入不同的登錄通道:/顯示學(xué)生登錄頁面function sLogin()dlg0.show();document.all(logTitle).innerHTML=學(xué)生登錄;document.all(logrole).value=student;document.all(userName).value=;document.all(password).value=;/顯示教師登錄頁面function tLogin()dlg0.show();document.all(logTitle).innerHTML=教師登錄;document.all(logro
34、le).value=teacher;document.all(userName).value=;document.all(password).value=;其中 dlg0 是Dojo的一個(gè)對(duì)話框組建。Logorole 是登錄表單中的一個(gè)隱藏域,用于標(biāo)識(shí)是學(xué)生登錄還是教師登錄。在登錄頁面中填寫了用戶名和密碼后,按回車鍵或點(diǎn)擊登錄按鈕,將執(zhí)行是否為空的校驗(yàn)工作。function keyDown() /響應(yīng)按下回車事件if(event.keyCode=13|event.keyCode=42) /回車doLogin();設(shè)置回車鍵后,用戶通過鍵盤輸入用戶名和密碼后不用再離開鍵盤再去移動(dòng)鼠標(biāo),提高系統(tǒng)友
35、好性,這種回車鍵在搜索引擎、郵箱登錄中應(yīng)用相當(dāng)廣泛。用戶名和密碼是否為空的驗(yàn)證代碼如下:function doLogin()var vuserName=document.forms0.userName;var vPassword =document.forms0.password;if(vuserName.value=)alert(請(qǐng)輸入用戶名);vuserName.focus();return; if(vPassword.value=)alert(請(qǐng)輸入密碼);vPassword.focus();return; document.forms0.submit();是否為空的驗(yàn)證放到前臺(tái)完成,不
36、用向應(yīng)用服務(wù)器提交和發(fā)送到數(shù)據(jù)庫(kù)驗(yàn)證,減少應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)的負(fù)擔(dān),同時(shí)也減少用戶等待時(shí)間?,F(xiàn)在應(yīng)用當(dāng)中,用戶體驗(yàn)越來越被重視,本系統(tǒng)的登錄頁面中增加了另一個(gè)登錄入口,用戶可以點(diǎn)擊頁面頂部的Fisheye按鈕來進(jìn)入學(xué)生登錄窗口或教師登窗口。Fisheye是dojo的一個(gè)特效組件,通過簡(jiǎn)單的代碼就可以構(gòu)建出類似Mac操作系統(tǒng)中的fisheye效果,其中構(gòu)建dojo fisheye效果的代碼如下:當(dāng)密碼和用戶名不為空時(shí),表單提交到 檢查用戶名和密碼的頁面(checkUser.jsp)。進(jìn)入該頁面后,首先進(jìn)行用戶名、密碼和登錄角色這三個(gè)參數(shù)的獲取。獲得參數(shù)的代碼如下:String message=,
37、 logrole=,userName=,password=;logrole=request.getParameter(logrole);if(logrole=null) logrole=;logrole=codeString(logrole);userName=request.getParameter(userName);if(userName=null) userName=; userName=codeString(userName);password=request.getParameter(password);if(password=null) password=;password=co
38、deString(password);checkUser.jsp頁面中調(diào)用了checkUser這個(gè)類,checkUser這個(gè)類的作用是根據(jù)提供的用戶名、密碼以及登錄角色來返回登錄信息。調(diào)用checkuser這個(gè)類的代碼如下:checkUser.jsp取得參數(shù)后,將參數(shù)傳給checkUser類,checkUser類獲得參數(shù)后,根據(jù)不同的登錄角色,從不同的數(shù)據(jù)庫(kù)表中查詢是否有同時(shí)符合用戶名和密碼的記錄,查詢結(jié)果不為空的話,就證明用戶名和密碼正確,并返回用戶名和密碼正確的信息給checkUser.jsp,否則返回登錄失敗的信息。checkUser類的主要代碼如下:if(logrole.equals(
39、teacher) sql = select * from teacher where username= + userName + + and password = + + password + ; else sql = select * from student where username= + userName + + and password = + + password + ; rs = stmt.executeQuery(sql); System.out.println(sql= + sql); if(rs.next() message = OK; name = String.va
40、lueOf(rs.getString(name); id=String.valueOf(rs.getShort(id); else message = u8F93u5165u7684u7528u6237u540Du6216u5BC6u7801u4E0Du6B63u786E; checkUser.jsp取得相應(yīng)的驗(yàn)證信息后,開始判斷驗(yàn)證是否通過,通過的話,將根據(jù)用戶角色轉(zhuǎn)向不同的頁面,如果登錄失敗將轉(zhuǎn)向登錄頁面,要求用戶重新登錄。轉(zhuǎn)向主要代碼如下:if(logrole.equals(teacher)response.sendRedirect(teacher/index-frames.jsp);
41、else if(logrole.equals(student) response.sendRedirect(student/studentMain.jsp); alert(用戶名或密碼錯(cuò)誤,請(qǐng)重新登錄);window.location = login.jsp;登錄角色為教師的話,將轉(zhuǎn)向teacher/index-frames.jsp 頁面,如果登錄角色是學(xué)生的話,將轉(zhuǎn)向student/studentMain.jsp頁面。4.2.3教師模塊1、總體頁面框架設(shè)計(jì)教師登錄成功后,將進(jìn)入如圖4-3所示界面:圖4-3 教師主界面頁面采用左右分欄模式,右分欄中又分上下分欄。左分欄用于展現(xiàn)教師所具有的操作列
42、表;右上分欄用于展示各操作項(xiàng)的詳細(xì)列表;右下分欄的作用是展現(xiàn)新增操作的頁面。該分欄模式采用的Dojo中的分欄框架,三個(gè)分欄是同一個(gè)頁面,不是像傳統(tǒng)的frameSet或iframe那樣將三個(gè)不同的頁面嵌入一個(gè)頁面中。該分欄框架支持Ajax,在拉動(dòng)左右或上下分界線時(shí),將發(fā)現(xiàn)頁面局部重新加載。教師主要職能是對(duì)整個(gè)考試系統(tǒng)的管理,包括對(duì)以下五個(gè)方面的管理:試題管理、試卷管理、考試管理、成績(jī)管理、考生管理。管理過程主要是對(duì)各項(xiàng)的增加和刪除。增加過程是先增加試題,再增加試卷,最后增加考試。因?yàn)樵嚲硎怯稍囶}構(gòu)成的,增加試卷過程,需要選取必要的考題,所以在增加試卷前,需要先有試題,沒有試題的試卷也就沒意義。同
43、理,考試需要試卷,在增加考試時(shí),需要選取該考試需要的試卷,所以在增加考試前要先增加試卷。至于刪除,要先從考試刪除起,再刪除試卷,最后刪除考題。如果先從試題刪除起,使用了該考題的試卷在讀取考題時(shí)將出現(xiàn)所要讀取的試題不存在的錯(cuò)誤。所以在刪除考題和試卷時(shí),系統(tǒng)都要進(jìn)行判斷,判斷該考試或試卷是否使用中,使用的話將不予刪除。2、試題管理功能點(diǎn)試題管理的作用是查詢所有的試題列表、增加新的試題和刪除不用的試題。目前的設(shè)計(jì)思考思路是,試題僅支持選擇題,這是出于評(píng)分公正性考慮,語義學(xué)剛剛起步,對(duì)于漢語語義的識(shí)別存在很大的困難,所以目前主觀題的評(píng)分還不成熟,本系統(tǒng)也主要是進(jìn)行客觀題的考試,試題管理也主要是對(duì)客觀題
44、的管理。進(jìn)入試題管理頁面時(shí),系統(tǒng)將展現(xiàn)所有的試題列表,展現(xiàn)內(nèi)容包括每道試題的題目、四個(gè)選項(xiàng)的內(nèi)容以及試題的答案。在每條試題記錄前都有一個(gè)dojo的復(fù)選按鈕,當(dāng)選中某條記錄是,可以對(duì)本條記錄進(jìn)行操作。對(duì)試題的操作主要是增加和刪除。點(diǎn)擊增加按鈕時(shí),右下將展現(xiàn)增加操作界面。在增加頁面中可以輸入試題的題目、各個(gè)選項(xiàng),以及從下拉選擇框中選中相應(yīng)的答案。在試題列表頁面中選中一條記錄后,點(diǎn)擊刪除按鈕,系統(tǒng)將判讀該試題是否在某張?jiān)嚲硎褂?,如果未被使用,可以刪除,否則不予刪除。查詢?cè)囶}所有列表頁面(questionList.jsp)主要代碼如下:questionList.jsp 中首先引入 question 類
45、,如下代碼所示:然后調(diào)用question類的getQuestions()方法,調(diào)用過程如下所示:List questions = Question.getQuestions();Question類的getQuestions()的作用的從數(shù)據(jù)庫(kù)的question表中查詢出所有的記錄,然后通過每條記錄來構(gòu)建Question對(duì)象,最后將這些試題集合保存到List中。getQuestions()的主要代碼如下所示:public static List getQuestions() List questions = new ArrayList();DBConn dbconn = new DBConn()
46、;Connection conn = dbconn.getConn();String sql = select * from question;Statement stmt = DBConn.getStatement(conn);ResultSet rs = DBConn.getResultSet(stmt, sql);try while (rs.next() Question q = new Question();q.setId(rs.getInt(id);q.setContext(rs.getString(context);q.setA(rs.getString(a);q.setB(rs.
47、getString(b);q.setC(rs.getString(c);q.setD(rs.getString(d);q.setKey(rs.getString(key);questions.add(q); catch (SQLException e) e.printStackTrace(); finally DBConn.close(rs);DBConn.close(stmt);DBConn.close(conn);return questions;取得所要查詢的試題列表后,questionList.jsp頁面遍歷List,取出List中的每個(gè)quesiton對(duì)象,將對(duì)象的各個(gè)值用表格的形式
48、展現(xiàn),展現(xiàn)過程的代碼如下所示:%for(int i=0;iinput type=checkbox dojoType=Checkbox value=至此,完成了試題列表的展現(xiàn)部分。在試題列表展現(xiàn)頁面中,教師可以對(duì)增加試題和刪除試題。點(diǎn)擊增加試題按鈕時(shí),分欄框架的右下將展現(xiàn)試題增加頁面。試題增加頁面主要展示試題輸入頁面和保存試題,它通過獲得頁面中的一個(gè)隱藏域來識(shí)別,如下所示:如果是填好考題信息后點(diǎn)保存,該頁面獲取這個(gè)參數(shù)時(shí)將為add,將執(zhí)行考題的保存操作,如果獲得該參數(shù)不為add時(shí),將執(zhí)行展現(xiàn)試題輸入框的操作,所以在打開頁面時(shí),會(huì)先進(jìn)行這個(gè)參數(shù)的獲取并判斷該執(zhí)行哪個(gè)操作,如下所示:String a
49、ction = request.getParameter(action);if(action != null & action.trim().equals(add)因?yàn)樵囶}中難免包含中文,所以在頁面提交后還要執(zhí)行設(shè)置編碼為gb2313,代碼如下所示:request.setCharacterEncoding(gb2312);當(dāng)輸入完考題信息點(diǎn)擊保存后,頁面的action參數(shù)將被設(shè)置成add,此時(shí)將執(zhí)行試題的保存操作,主要實(shí)現(xiàn)代碼如下:if(action != null & action.trim().equals(add) String context = request.getParamete
50、r(context);String a = request.getParameter(a);String b = request.getParameter(b);String c = request.getParameter(c);String d = request.getParameter(d);String key = request.getParameter(key);Question q = new Question();q.setContext(context);q.setA(a);q.setB(b);q.setC(c);q.setD(d);q.setKey(key);q.save
51、();out.println(添加試題成功!恭喜!);return;該過程先獲取填寫的表達(dá)參數(shù),然后構(gòu)建一個(gè)Question對(duì)象,將相應(yīng)的值賦給這個(gè)Question對(duì)象,然后調(diào)用Question對(duì)象的save方法,將值寫入數(shù)據(jù)庫(kù)的question表。Question對(duì)象的save方法代碼如下:public void save() DBConn dbconn = new DBConn();Connection conn = dbconn.getConn();String sql = insert into question values (null, ?, ?, ?, ?, ?, ?);Prep
52、aredStatement pstmt = DBConn.prepare(conn, sql);try pstmt.setString(1,context );pstmt.setString(2, a);pstmt.setString(3, b);pstmt.setString(4, c);pstmt.setString(5, d);pstmt.setString(6, key);pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace(); finally DBConn.close(pstmt);DBConn.close(
53、conn);至此,完成了試題的保存。教師還能刪除試題,在試題列表頁面中選中一條試題記錄后,點(diǎn)擊刪除,將執(zhí)行試題的刪除操作。刪除操作在questioDel.jsp頁面完成的。選中試題后,點(diǎn)擊刪除按鈕,questioDel.jsp頁面獲得上個(gè)頁面?zhèn)鬟f過來的試題Id號(hào),調(diào)用question類的delete方法,刪除數(shù)據(jù)庫(kù)中的相應(yīng)記錄,questioDel.jsp頁面的主要代碼如下所示:int id = Integer.parseInt(request.getParameter(questionId);Question q = new Question();boolean isDelSucess =
54、q.delete(id);String result=isDelSucess?提示:刪除成功!:試題已被使用,不允許刪除!;如上代碼所示,questioDel.jsp頁面將調(diào)用Question類的delete方法,Question類的delete方法的代碼如下所示:public boolean delete(int id) if (!delAble(id) return false; boolean b = false;DBConn dbconn = new DBConn();Connection conn = dbconn.getConn();String sql = delete from question where id = + id;Statement stmt = DBConn.getStatement(conn);try DBConn.executeUpdate(stmt, sql);b = true; finally DBConn.close(stmt);DBConn.close(conn);return b;在刪除試題之前先通過delAble()判斷該試題能否被刪除,delAble方法先獲得試題的Id,再到試卷表里查詢出所有試卷用到的試題Id的集合,然后遍歷這些試題Id的集合,查找是否包含傳入的那個(gè)Id,如果未包含,則表明該試題為被使用,可以執(zhí)行刪
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雅馬哈ts-x_ts-s使用說明課件
- 多元函數(shù)的微積分
- 商業(yè)保險(xiǎn)與社會(huì)保險(xiǎn)的區(qū)別
- HL-X6280終端培訓(xùn)手冊(cè)
- 汽車電路原理
- 通信網(wǎng)絡(luò)演進(jìn)及LTE關(guān)鍵技術(shù)教材
- 借助展業(yè)夾提升平安福簽單率廣東葉華東終稿[1]課件
- (精品)珠江國(guó)際城代管人員2
- 零售-7-11經(jīng)營(yíng)模式分析
- 電子病歷簡(jiǎn)介及門診醫(yī)生工作站[1]課件
- 食管癌術(shù)后早期營(yíng)養(yǎng)支持相關(guān)研究
- LHQ電纜層保護(hù)器相關(guān)型號(hào)列表參數(shù)
- 大腦前動(dòng)脈動(dòng)脈瘤用
- 甲真菌病各藥物特點(diǎn)教學(xué)課件
- 滑輪組機(jī)械效率