畢業(yè)設(shè)計(論文)基于J2EE的試卷庫管理系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
畢業(yè)設(shè)計(論文)基于J2EE的試卷庫管理系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
畢業(yè)設(shè)計(論文)基于J2EE的試卷庫管理系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
畢業(yè)設(shè)計(論文)基于J2EE的試卷庫管理系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
畢業(yè)設(shè)計(論文)基于J2EE的試卷庫管理系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于j2ee的試卷庫管理系統(tǒng)的設(shè)計與實現(xiàn)理工學(xué)院 計算機(jī)科學(xué)與技術(shù)專業(yè) 050308008指導(dǎo)教師 副教授 【摘要】試卷庫管理系統(tǒng)是基于為泉州師范學(xué)院提供便捷而優(yōu)質(zhì)的試卷庫管理的背景而進(jìn)行開發(fā)的。本系統(tǒng)采用b/s開發(fā)模式,遵循j2ee規(guī)范,結(jié)合當(dāng)今流行的框架組合struts、hibernate、spring進(jìn)行項目開發(fā)。該系統(tǒng)用戶界面精美,性能穩(wěn)定,為本校的試卷管理工作提供一個良好的解決方案,減輕工作人員負(fù)擔(dān)?;赽/s結(jié)構(gòu)的web服務(wù),實現(xiàn)客戶端零維護(hù),基于網(wǎng)絡(luò),信息共享性好?!娟P(guān)鍵詞】ajax、j2ee、struts、spring、hibernate、jacob目 錄引言4第一章系統(tǒng)綜述4

2、1.1系統(tǒng)簡介41.2系統(tǒng)架構(gòu)41.3 系統(tǒng)目標(biāo)5第二章系統(tǒng)設(shè)計52.1 需求分析52.1.1 主要問題52.1.2 基本功能62.1.3系統(tǒng)用例62.2 系統(tǒng)數(shù)據(jù)庫設(shè)計72.3 系統(tǒng)訪問權(quán)限控制82.4 開發(fā)環(huán)境9第三章系統(tǒng)實現(xiàn)93.1 系統(tǒng)界面93.2 系統(tǒng)中文亂碼的解決方案123.3 整合struts、spring、hibernate框架133.3.1 struts整合spring143.3.3 hibernate整合spring163.3.3 web系統(tǒng)加載spring163.4 上傳試卷到數(shù)據(jù)庫163.5 批量安排課程183.6 系統(tǒng)定時更新試卷193.7 抽卷算法設(shè)計與實現(xiàn)203.

3、8 jacob操作word文檔243.9 批量打印試卷263.10基于角色的訪問權(quán)限控制27第四章系統(tǒng)部署284.1 部署環(huán)境284.2 系統(tǒng)部署284.3 注意事項30第五章總結(jié)30致謝31參考文獻(xiàn)31引 言近年來隨著學(xué)校的不斷發(fā)展擴(kuò)招,各級學(xué)院的專業(yè)和生源不斷發(fā)生變化,造成學(xué)校的試卷管理工作很繁瑣,如果沒有相應(yīng)的系統(tǒng),而僅僅以傳統(tǒng)的方式進(jìn)行管理,不但效率低下,而且往往得不到很好的效果。同時也給教師增加了額外的負(fù)擔(dān),不能實現(xiàn)試卷的重復(fù)利用。而在計算機(jī)普及的今天,人人都明白優(yōu)秀的管理離不開計算機(jī)的支持,教育也不外如此?;趈2ee的試卷庫管理系統(tǒng)就是針對此需求而開發(fā)的,這套系統(tǒng)可以使工作人員輕

4、松有條理的完成試卷管理的工作,而且其性能也十分穩(wěn)定,實現(xiàn)了高校試卷管理自動化。第一章 系統(tǒng)綜述1.1 系統(tǒng)簡介選擇j2ee構(gòu)建信息化平臺是一種長遠(yuǎn)的規(guī)劃,對于信息化而言這是一個不斷整合的過程,在未來的日子里可能會有不同的平臺、不同系統(tǒng)的異構(gòu)系統(tǒng)需要整合,j2ee應(yīng)用提供的跨平臺性、開放性及各種遠(yuǎn)程訪問的技術(shù),為異構(gòu)系統(tǒng)的良好整合提供了保證。而輕量級j2ee應(yīng)用是對經(jīng)典j2ee應(yīng)用的簡化,在保留經(jīng)典j2ee應(yīng)用的架構(gòu)、良好的可擴(kuò)展性、可維護(hù)性的基礎(chǔ)上,簡化了j2ee應(yīng)用的開發(fā),降低了j2ee應(yīng)用的部署成本。本系統(tǒng)是建立在互聯(lián)網(wǎng)基礎(chǔ)上的應(yīng)用系統(tǒng)??蛻舳酥恍枰粋€有瀏覽器的終端就可以使本校的試卷庫管

5、理不受地域和時間的限制,是基于輕量級j2ee框架進(jìn)行開發(fā)的一套b/s系統(tǒng)。系統(tǒng)主要流程:1、安排課程:管理員導(dǎo)入excel表格批量安排每學(xué)期的課程。2、上傳試卷:教師根據(jù)專業(yè)和課程添加試卷,等待試卷被管理員審核。3、審核試卷:管理員審核教師上傳的試卷,只有審核通過的試卷才能參與每一門課程的抽卷,每份試卷都有一個相應(yīng)的抽卷參與系數(shù)。4、手動抽卷:管理員可以對每學(xué)期的課程進(jìn)行抽卷以作為期末試卷,手動抽卷程序中可以先手動修改每份試卷的參與系數(shù)大小,然后再根據(jù)參與系數(shù)的大小從已經(jīng)審核通過的試卷中進(jìn)行抽卷,系數(shù)大的試卷被抽到的概率比較大,反之則比較小。5、自動抽卷:管理員可以對每學(xué)期的課程進(jìn)行自動抽卷,

6、試卷參與系數(shù)大小取默認(rèn)值。6、重新抽卷:管理員查看已經(jīng)被抽取的試卷的歷史記錄,不滿意則可以重新抽卷。7、批量打印試卷:打印員查詢已經(jīng)抽卷完畢的課程,然后批量打印該課程的試卷。8、自動打包試卷:管理員根據(jù)學(xué)年、學(xué)期、學(xué)院打包下載期末試卷,然后送往教務(wù)科存檔。1.2 系統(tǒng)架構(gòu)表示層struts-mvcstrutsaction、actionform、jsp 、struts-config.xml業(yè)務(wù)層spring事務(wù)transactionshibernate session管理業(yè)務(wù)邏輯類business services持久層datasource連接池sql語句hibernate serviceshi

7、bernatemysqldomain model business objects數(shù)據(jù)庫數(shù)據(jù)存儲daoservicesql圖1.1系統(tǒng)架構(gòu)圖l 表示層:管理用戶的請求,做出相應(yīng)的響應(yīng)提供一個控制器,委派調(diào)用業(yè)務(wù)邏輯和其它上層處理異常,拋給struts action,為顯示提供一個模型;l 業(yè)務(wù)層:一個典型web應(yīng)用的中間部分是業(yè)務(wù)層或者服務(wù)層,這層容易與程序代碼緊密偶合而使用spring可以很好的解偶;l 持久層:利用hibernate 為java提供的or持久化機(jī)制和查詢服務(wù),其對象是基于pojo和java collections;l 域模型層:hibernate允許你將數(shù)據(jù)庫中的信息存入由

8、實際需求中的業(yè)務(wù)組成的對象,也可以將對象中的信息存入數(shù)據(jù)庫中;l 數(shù)據(jù)庫:在本系統(tǒng)中采用mysql作為數(shù)據(jù)存儲服務(wù)器。1.3 系統(tǒng)目標(biāo)基于b/s模式的試卷庫管理系統(tǒng)可以使用戶在網(wǎng)上隨時對試卷庫進(jìn)行管理。管理員能在網(wǎng)上對本校的試卷庫和各部門信息進(jìn)行管理,無時間和地域限制。教師可以及時添加試卷作為期末考試抽卷使用。打印員可以輕松地批量打印試卷。本項目的設(shè)計與實現(xiàn),可以實現(xiàn)自動化管理試卷庫。希望它能夠在本校的試卷管理中發(fā)揮高效、便捷的作用,把老師、管理人員從繁重的工作中解放出來。第二章 系統(tǒng)設(shè)計2.1 需求分析2.1.1 主要問題(1)用戶身份級別要求即根據(jù)身份的不同對系統(tǒng)的使用權(quán)限有所不同。從權(quán)限

9、大小大致可以分為:管理員、教師、打印員。系統(tǒng)提供靈活的角色設(shè)定和權(quán)限的分配功能。l 管理員:是權(quán)限最大的管理員,擁有本系統(tǒng)的所有權(quán)限,主要負(fù)責(zé)管理學(xué)院、專業(yè)、班級、課程以及用戶,具有審核試卷的權(quán)限,可以針對課程進(jìn)行抽卷操作等。l 教師:查詢課程表信息,選擇專業(yè)和課程添加試卷,并可以對自己的試卷進(jìn)行管理。l 打印員:主要負(fù)責(zé)打印試卷,其中批量打印試卷對此項工作非常重要。(2)上傳試卷要求在高??荚囍校嚲淼谋C苄允潜仨毜?,在普通的文件上傳下載中,通常是把試卷直接放在服務(wù)器目錄下面,這樣導(dǎo)致試卷泄露率會比較大。為了更好的實現(xiàn)對試卷的保密措施,要求將試卷word文檔直接轉(zhuǎn)換成二進(jìn)制流存入mysql數(shù)

10、據(jù)庫的blob字段中,這樣就確保了只有獲取了系統(tǒng)的相應(yīng)權(quán)限后才能對試卷進(jìn)行查看。(3)抽取試卷算法要求抽卷算法對于如何合理的在一套試卷庫中抽取試卷,在以往的考試中,都是從a、b、c三份試卷中隨機(jī)抽取一份作為期末考試用?,F(xiàn)在為了實現(xiàn)試卷的重用性,往年的試卷也可以參與抽卷,這樣就有多份試卷參與抽卷,需要設(shè)計一個算法按每份試卷的概率大小進(jìn)行抽卷。(4)系統(tǒng)定時更改試卷參與系數(shù)在抽卷過程中,如果某份試卷被抽到作為考試用,則把該份試卷的參與系數(shù)設(shè)置成最小。但是為了更好的確保試卷的重用性,確保在以后的抽卷過程中,也能夠抽到它,要求系統(tǒng)定時增加每份試卷的參與系數(shù)大小,這樣就確保了試卷庫中每份試卷的重用性。2

11、.1.2 基本功能我們主要構(gòu)建一個基于b/s模式的試卷庫管理系統(tǒng),為本校的試卷庫管理提供一個良好的解決方案。系統(tǒng)的主要功能包括:(1)根據(jù)登錄者的身份提供不同的服務(wù)。(2)教師:管理個人信息、添加試卷及管理個人試卷、查詢用戶、查詢課程;(3)打印員:管理個人信息、查詢用戶、查詢課程、打印試卷管理(批量打印);(4)管理員: 管理個人信息、專業(yè)配置、班級配置、課程配置、審核試卷、查看試卷、刪除試卷、手動抽卷、自動抽卷、管理用戶、打包下載試卷。2.1.3系統(tǒng)用例圖1.2 系統(tǒng)用例圖2.2 系統(tǒng)數(shù)據(jù)庫設(shè)計該系統(tǒng)使用mysql數(shù)據(jù)庫,數(shù)據(jù)庫名稱是sjgl,以下是各個數(shù)據(jù)表的結(jié)構(gòu)表及說明。(1) 教師信

12、息表(teacher),用來記錄各系統(tǒng)用戶的基本信息。其中字段teaid為教師信息表的關(guān)鍵字,系統(tǒng)就是使用teaid來區(qū)分判斷用戶權(quán)限的。表2-1 teacher結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1教師工號teaidvarchar12yy2密碼teapwdvarchar32y3姓名teanamevarchar20y4性別teasexvarchar12y5學(xué)院teainsvarchar30y6專業(yè)teadeptvarchar30y7郵箱teaemailvarchar50y8電話teaphonevarchar20y9職稱teatitlevarchar20y10用戶級別tealevel

13、varchar30y(2) 學(xué)院表(ins),用來記錄各二級學(xué)院編號和名稱。表2-2 ins結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1學(xué)院編號ins_codevarchar12yy2學(xué)院名稱ins_namevarchar50y(3) 專業(yè)表(dept),用來記錄各二級學(xué)院隸屬專業(yè)的編號和名稱。表2-3 dept結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1專業(yè)編號dept_codevarchar12yy2專業(yè)名稱dept_namevarchar50y3學(xué)院編號ins_codevarchar12yins.ins_code(4) 班級表(classgrade),用來記錄各專業(yè)隸屬班級的

14、編號和名稱以及班級人數(shù)。表2-4 classgrade結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1班級編號class_codevarchar12yy2班級名稱class_namevarchar50y3專業(yè)編號dept_codevarchar12ydept.dept_code4班級人數(shù)classpersonint11y默認(rèn)為0(5) 課程信息表(course),記錄各個專業(yè)所有課程信息。表2-5 course結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1課程編號course_codevarchar12yy2課程名稱course_namevarchar50y3所屬專業(yè)dept_codev

15、archar12ydept.dept_code4考核方式exammethodvarchar10y5選課屬性propertyvarchar4y6抽卷標(biāo)志remarkvarchar8y(6) 課程表(classcourse),記錄詳細(xì)的課程表信息,包括班級、課程、學(xué)年、學(xué)期等等信息。表2-6 classcourse結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1編號idint11yy自動增一2課程編號course_codevarchar12ycourse.course_code3班級編號class_codevarchar12yclassgrade.class_code4學(xué)年yearvarchar

16、8y5學(xué)期termvarchar4y6上課人數(shù)papercountint11y7抽卷標(biāo)志remarkvarchar12n8打印標(biāo)志remark2varchar12n9試卷內(nèi)容papercontentlongblobn10試卷名稱papernamevarchar100n11抽卷歷史historytextn(7) 試卷表(paper),記錄試卷詳細(xì)信息,包括學(xué)院、專業(yè)、課程、上傳時間、指導(dǎo)老師等等。表2-7 paper結(jié)構(gòu)序號字段含義字段名類型寬度是否非空關(guān)鍵字備注1編號idint11yy自動增一2學(xué)院paperinsvarchar50y3專業(yè)paperdeptvarchar50y4課程paper

17、coursevarchar50y5試卷套數(shù)papernumint11y6上傳時間papertimevarchar30y7試卷內(nèi)容papercontentlongbloby8指導(dǎo)老師paperteavarchar20y9審核標(biāo)志remarkvarchar8y10參與系數(shù)factordouble4,2y11抽卷歷史historytextn12審核意見remarkideatextn2.3 系統(tǒng)訪問權(quán)限控制系統(tǒng)根據(jù)用戶權(quán)限進(jìn)入不同的管理后臺,權(quán)限控制圖詳細(xì)描述了這個過程。圖1.3 權(quán)限控制圖2.4 開發(fā)環(huán)境¨ jdk版本:1.5.0_04¨ j2ee容器:tomcat 5.0.28

18、¨ 數(shù)據(jù)庫:mysql 5.1.23¨ 系統(tǒng):windows xp profession¨ 開發(fā)工具:eclipse 3.2.1、myeclipse 5.1、dreamweaver8.0、fireworks8.0¨ 本系統(tǒng)使用的框架版本:struts1.2、spring2.0、hibernate3.0第三章 系統(tǒng)實現(xiàn)3.1 系統(tǒng)界面圖3.1 系統(tǒng)登錄界面圖3.2 管理員界面圖3.3 管理員打包下載試卷圖3.4 管理員手動抽卷圖3.5 教師查詢個人試卷圖3.6 打印員批量打印試卷3.2 系統(tǒng)中文亂碼的解決方案java的內(nèi)核和class文件是基于unicod

19、e的,這使java程序具有良好的跨平臺性,但也帶來了一些中文亂碼問題的麻煩。主要有兩方面,java和jsp文件本身編譯時產(chǎn)生的亂碼問題和java程序于其他媒介交互產(chǎn)生的亂碼問題。首先java(包括jsp)源文件中很可能包含有中文,而java和jsp源文件的保存方式是基于字節(jié)流的,如果java和jsp編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現(xiàn)亂碼。對于jsp:在文件頭加上<% page contenttype="text/html;charset=gbk"%>就能解決亂碼問題。對于交互產(chǎn)生的亂碼問題(例如:表單提取過程中的亂碼),解決

20、步驟如下:1、對于servlet應(yīng)該加上:response.setcharacterencoding("gbk");2、為系統(tǒng)添加一個過濾器(encodingfilter)代碼如下:public class encodingfilter implements filter private string charset = null;public void destroy() public void dofilter(servletrequest req, servletresponse resp,filterchain chain) throws ioexception,

21、servletexception req.setcharacterencoding(this.charset);chain.dofilter(req, resp);public void init(filterconfig arg0) throws servletexception this.charset = arg0.getinitparameter("charset");3、在web.xml中做如下設(shè)置:<filter><filter-name>encoding</filter-name><filter-class>qz

22、tc.paper.filter.encodingfilter</filter-class><init-param><param-name>charset</param-name><param-value>gbk</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern>&

23、lt;/filter-mapping>4、對數(shù)據(jù)庫進(jìn)行相應(yīng)設(shè)置(mysql)¨ 修改mysql數(shù)據(jù)庫的my.ini配置文件中client下的設(shè):default-character-set=gbk¨ 在建表的時候設(shè)置:engine=innodb default charset=gbk3.3 整合struts、spring、hibernate框架3.3.1 struts整合spring1、在struts配置文件struts-config.xml中主要配置:¨ 配置actionform bean¨ 配置全局轉(zhuǎn)發(fā)關(guān)系¨ 配置action映射

24、68; 配置消息資源¨ 配置validator插件<?xml version="1.0" encoding="utf-8"?><!doctype struts-config public "-/apache software foundation/dtd struts configuration 1.2/en" "/dtds/struts-config_1_2.dtd"><struts-config><data-sou

25、rces /><!- 配置formbean -><form-beans><form-bean name="indexform"type="qztc.paper.struts.form.indexform" /> 略</form-beans><global-exceptions /><global-forwards /><!- 配置action -><action-mappings><action attribute="indexform&

26、quot; input="/index.jsp"name="indexform" parameter="action" path="/index" scope="request"type="qztc.paper.struts.action.indexaction"><forward name="printerindex" path="/printer/main.jsp"></forward><forw

27、ard name="adminindex" path="/admin/main.jsp"></forward><forward name="teacherindex" path="/teacher/main.jsp"></forward><forward name="reg_success" path="/reg_success.jsp"></forward></action>略</actio

28、n-mappings><!-用spring中的delegatingrequestprocessor覆蓋struts中的requestprocessor -> <controllerprocessorclass="org.springframework.web.struts.delegatingrequestprocessor"></controller><!- 配置消息源 -><message-resourcesparameter="qztc.paper.struts.applicationresourc

29、es" /><!-配置struts自動驗證框架validator插件-><plug-in classname="org.apache.struts.validator.validatorplugin"><set-property property="pathnames"value="/web-inf/validator-rules.xml, /web-inf/validation.xml" /></plug-in><!- 使用 spring 的 contextloa

30、derplugin 將struts集成進(jìn)spring -><plug-inclassname="org.springframework.web.struts.contextloaderplugin"><set-property property="contextconfiglocation"value="/web-inf/applicationcontext.xml" /></plug-in></struts-config>2、在spring中注冊動作(applicationcon

31、text.xml)<?xml version="1.0" encoding="utf-8"?><!doctype beans public "-/spring/dtd bean/en" "/dtd/spring-beans.dtd"><!-首頁登陸驗證 -><bean name="/index" class="qztc.paper.struts.action.indexaction&qu

32、ot;><property name="indexdao"><ref bean="indexdaoimpl" /></property></bean><!-詳細(xì)配置參考源代碼-></beans>3.3.2 hibernate整合spring1、配置數(shù)據(jù)源<bean id="datasource"class="org.springframework.jndi.jndiobjectfactorybean"destroy-method=&

33、quot;close"><property name="jndiname"><value>java:comp/env/jdbc/sjgl</value></property></bean>2、配置sessionfactory<bean id="sessionfactory"class="org.springframework.orm.hibernate3.localsessionfactorybean"><property name=&quo

34、t;datasource"><ref bean="datasource" /></property><!- 為處理blob類型字段的句柄聲明 /-><property name="lobhandler" ref="lobhandler" /><property name="hibernateproperties"><props><prop key="hibernate.dialect">org.h

35、ibernate.dialect.mysqldialect</prop><!- 表示允許自動提交 -><prop key="hibernate.connection.autocommit">true</prop><!- 顯示sql語句 -><prop key="hibernate.show_sql">true</prop></props></property><!- 配置hibernate映射文件 -><property name

36、="mappingresources"><list><value>qztc/paper/vo/classcourse.hbm.xml</value>略 </list></property></bean>3、裝配dao在spring中注冊dao<bean id="indexdao" class="qztc.paper.dao.indexdao"abstract="true"></bean><bean id=&q

37、uot;indexdaoimpl" class="qztc.paper.dao.impl.indexdaoimpl"parent="indexdao"><property name="hibernatetemplate"><ref bean="hibernatetemplate" /></property></bean>4、裝配service層<bean name="/admin/admin"class="qztc.

38、paper.struts.action.adminaction"><property name="admindao"><ref bean="admindaoimpl" /></property></bean>3.3.3 web系統(tǒng)加載spring<context-param><param-name>contextconfiglocation</param-name><param-value>/web-inf/applicationcontext

39、.xml</param-value></context-param><servlet><servlet-name>context</servlet-name><servlet-class>org.springframework.web.context.contextloaderservlet</servlet-class><load-on-startup>1</load-on-startup></servlet>3.4 上傳試卷到數(shù)據(jù)庫本系統(tǒng)中為了實現(xiàn)試卷的保密性,需要把試卷

40、word文檔轉(zhuǎn)換成二進(jìn)制流存在數(shù)據(jù)庫blob字段中,在這里用三個框架ssh整合實現(xiàn)。1、在applicationcontext.xml配置文件中<!- lob字段的處理句柄配置 /-><bean id="lobhandler"class="org.springframework.jdbc.support.lob.defaultlobhandler"lazy-init="true"></bean><bean id="sessionfactory"class="org

41、.springframework.orm.hibernate3.localsessionfactorybean"><property name="datasource"><ref bean="datasource" /></property><!- 為處理blob類型字段的句柄聲明 /-><property name="lobhandler" ref="lobhandler" /></bean><!-定義事務(wù)bean-&g

42、t;<bean id="transactionmanager"class="org.springframework.orm.hibernate3.hibernatetransactionmanager"><property name="sessionfactory"><ref local="sessionfactory" /></property></bean><!-定義事務(wù)攔截器bean -><bean id="transac

43、tioninterceptor"class="erceptor.transactioninterceptor"><!-事務(wù)攔截器bean需要依賴注入一個事務(wù)管理器-><property name="transactionmanager" ref="transactionmanager" /><property name="transactionattributes"><!-下面定義事務(wù)傳播

44、屬性-><props><prop key="save*">propagation_required</prop><prop key="write">propagation_required,readonly</prop></props></property></bean><!- 定義beannameautoproxycreator-><beanclass="org.springframework.aop.framework.a

45、utoproxy.beannameautoproxycreator"><!- 指定對滿足哪些bean name的bean自動生成業(yè)務(wù)代理 -><property name="beannames"><!- 下面是所有需要自動創(chuàng)建事務(wù)代理的bean-><list><value>fileservice</value><!-此處可增加其他需要自動創(chuàng)建事務(wù)代理的bean-></list></property><!-下面定義beannameautoproxy

46、creator所需的事務(wù)攔截器-><property name="interceptornames"><list><value>transactioninterceptor</value><!- 此處可增加其他新的interceptor -></list></property></bean>2、在action中處理上傳的文件/ 上傳試卷public actionforward addpaper(actionmapping mapping, actionform form,h

47、ttpservletrequest request, httpservletresponse response)throws exception fileform fileform = (fileform) form;/ 保存試卷this.fileservice.save(fileform);return mapping.findforward("addpaperdo");3、調(diào)用的fileservice實現(xiàn)方法/ 用于將上傳的文件信息保存到數(shù)據(jù)庫public void save(fileform fileform) throws exception string pape

48、rcourse = fileform.getpapercourse();string paperdept = fileform.getpaperdept();string paperins = fileform.getpaperins();integer maxpapernum=this.filedao.querymaxpapernum(paperins, paperdept, papercourse);if(maxpapernum=null)maxpapernum=0;integer papernum=maxpapernum+1;paper paper=new paper();string

49、papertea = fileform.getpapertea();simpledateformat format = new simpledateformat("yyyy-mm-dd hh:mm:ss");date d = new date();string papertime = format.format(d);paper.setpapercourse(papercourse);paper.setpaperdept(paperdept);paper.setpaperins(paperins);paper.setpapertea(papertea);paper.setp

50、apertime(papertime);paper.setpapernum(papernum);paper.setremark("未審核");paper.setfactor(1.0);paper.setpapercontent(fileform.getpaperfile().getfiledata();this.filedao.save(paper);3.5 批量安排課程管理員根據(jù)每個班級能選擇的課程進(jìn)行安排課程,先下載課程表模板,然后填寫好數(shù)據(jù)直接上傳,使用poi組件實現(xiàn)讀取excel文件的數(shù)據(jù),并存入數(shù)據(jù)庫課程表中相應(yīng)的字段。核心功能代碼如下:/添加課程表public

51、void saveclasscourse(fileform fileform) throws exception file file = fileform.getfile();system.out.print(file);hssfworkbook workbook = new hssfworkbook(new fileinputstream(file); / 得到excel對象hssfsheet sheet = workbook.getsheetat(0); / 得到第一個sheetint rows = sheet.getphysicalnumberofrows(); / 得到行數(shù)for (i

52、nt i = 1; i < rows; i+) hssfrow row = sheet.getrow(i);classcourse classcourse = new classcourse();classgrade classgrade = new classgrade();course course = new course();hssfcell cell = row.getcell(short) 0); / 得到列1(下標(biāo)0,為第一列)string coursecode=cell.getstringcellvalue(); course=filedao.persistencecou

53、rse(coursecode);classcourse.setcourse(course);system.out.println("課程號:" + course.getdept().getdeptcode();cell = row.getcell(short) 1); / 得到列2string classcode=cell.getstringcellvalue();classgrade=filedao.persistenceclassgrade(classcode);classcourse.setclassgrade(classgrade);system.out.print

54、ln("班級號:" + classcourse.getclassgrade().getclasscode();cell = row.getcell(short) 2); / 得到列3classcourse.setyear(cell.getstringcellvalue();system.out.println("學(xué)年:" + classcourse.getyear();cell = row.getcell(short) 3);/ 得到列4classcourse.setterm(cell.getstringcellvalue();system.out.pr

55、intln("學(xué)期:" + classcourse.getterm();cell = row.getcell(short) 4);/ 得到列4double papercount=cell.getnumericcellvalue();int papercount2=(int)papercount/1;integer papercount3=integer.valueof(papercount2);system.out.print(papercount3);classcourse.setpapercount(papercount3);system.out.println(&qu

56、ot;上課人數(shù):" + classcourse.getpapercount();classcourse.setremark("未抽卷");classcourse.setremark2("未打印");this.filedao.saveclasscourse(classcourse);3.6 系統(tǒng)定時更新試卷在抽卷過程中,如果某份試卷被抽到作為考試用,則把該份試卷的參與系數(shù)設(shè)置成最小。但是為了更好的確保試卷的重用性,確保在以后的抽卷過程中,也能夠抽到它,要求系統(tǒng)定時增加每份試卷的參與系數(shù)大小,這樣就確保了試卷庫中每份試卷的重用性。1、 在web.x

57、ml配置文件中<?xml version="1.0" encoding="utf-8"?><web-app xmlns="xmlns:xsi="/2001/xmlschema-instance" version="2.4"xsi:schemalocation=" <listener> <listener-class>qztc.paper.util.mylistener</listener-class> </listener> 2、 系統(tǒng)設(shè)定開始時間和間隔時間package qztc.paper.util;import java.util.timer; import javax.

溫馨提示

  • 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

提交評論