日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

基于java的科研信息管理平台

發(fā)布時(shí)間:2025/3/15 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于java的科研信息管理平台 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎添加微信互相交流學(xué)習(xí)哦!

項(xiàng)目源碼:https://gitee.com/oklongmm/biye

摘要:隨著計(jì)算機(jī)應(yīng)用水平的提高和科研管理的規(guī)范化和制度化,建立一套適用于高??蒲泄芾砉ぷ鞴芾硇畔⑾到y(tǒng),已經(jīng)成為各大高校較為迫切的需求??蒲行畔⒐芾砥脚_(tái)主要實(shí)現(xiàn)對(duì)高校科研情況的有效管理以及對(duì)科研活動(dòng)的全程跟蹤。通過(guò)科研管理信息化平臺(tái),可以實(shí)現(xiàn)科研工作的網(wǎng)絡(luò)化管理,形成一個(gè)及時(shí)更新的科研數(shù)據(jù)中心和科研管理溝通平臺(tái),全面、實(shí)時(shí)、準(zhǔn)確提供學(xué)校的有關(guān)科研信息,為學(xué)校領(lǐng)導(dǎo)有關(guān)科研決策提供輔助支持,為學(xué)校教師開展科研活動(dòng)提供方便快捷的服務(wù),為科研管理人員開展工作提供極大的便利。科研信息管理平臺(tái)以科研項(xiàng)目管理為中心,包括人員檔案、成果管理、設(shè)備管理、項(xiàng)目申報(bào)、科研評(píng)估等多項(xiàng)信息管理職能,涵蓋計(jì)劃、合同、成果、專利、資金、人員、設(shè)備等方面,提供科研信息維護(hù)、科研信息查詢與統(tǒng)計(jì)、設(shè)備日常管理和維護(hù)、校級(jí)課題申報(bào)、審批、合同簽定、結(jié)題、其它處理等操作。
本系統(tǒng)是根據(jù)目前網(wǎng)絡(luò)開發(fā)中流行的MVC軟件工程思想,采用struts框架,通過(guò)JSP實(shí)現(xiàn)的B/S模式結(jié)構(gòu)的信息平臺(tái)。成功實(shí)現(xiàn)了WEB系統(tǒng)開發(fā)的M-V-C的分離,提高了系統(tǒng)開發(fā)的效率,為以后系統(tǒng)的維護(hù)和擴(kuò)展帶來(lái)了方便。系統(tǒng)信息資源通過(guò)SQL SERVER數(shù)據(jù)庫(kù)進(jìn)行管理,經(jīng)由 TOMCAT服務(wù)器對(duì)外發(fā)布,實(shí)現(xiàn)了科研信息的發(fā)布和維護(hù),人員基本信息的管理和注冊(cè),設(shè)備信息的管理,項(xiàng)目的申報(bào)、審批、結(jié)題、鑒定等一系列功能。

關(guān)鍵詞:JSP ?MVC ?Struts ?科研管理 ?項(xiàng)目管理


Management Information System of Scientific Research Based On MVC
? ? ? ? ? Student name: ? ? ? ? ?Class:05806101
Supervisor:
Abstract: Along with calculator application level of exaltation and research management of the norm turn with systemize, establishment 1 set be applicable to a university research management work management information system, have already become each university more urgent of need. Management information system of scientific research mainly realize scientific research in colleges and universities,as well as realize the management of research activities on track. Management information through scientific research platform, you can achieve the network-based research management, a timely update of the scientific research and scientific management of data center communication platform, a comprehensive, real-time, providing accurate scientific information on schools. For school leaders on the scientific research to support decision-making aids for school teachers to carry out research to provide convenient and efficient service, for research managers to work to provide a great convenience. Management information system of scientific research to manage research projects as the center, including personnel files, results-based management, equipment management, project reporting, scientific research to assess a wide range of information management functions, covering the planning, contracting, results, patents, capital, personnel, equipment, etc., to provide scientific information to maintain, research and statistical information, equipment management and maintenance of day-to-day, colonel issue declaration, examination and approval, contract signing, finished, and other processing operations.?? ?
According to the current popular thinking of the MVC software engineering, the system use struts framework, and through JSP achieved the B / S model of the structure of the information platform. The M-V-C separation of the WEB system development has successfully realized. Enhanced the system development efficiency and for the system test, as well as the later maintenance and the expansion is convenient. The system information resource database carries on the management through the SQL SERVER ,by way of TOMCAT server foreign issue. The realization of the scientific information, and maintenance, management of basic information and registration, equipment, information management, project reporting, approved and finished, to identify a series of functions.

Key Words: JSP ?MVC ?Struts ?management of scientific research ?project management

?
?

目錄
畢業(yè)設(shè)計(jì)(論文)?? ?1
摘要?? ?2
Abstract?? ?3
1 前言?? ?5
1.1科研信息管理系統(tǒng)的介紹?? ?5
1.2科研信息管理系統(tǒng)的特點(diǎn)?? ?5
1.3 關(guān)于本課題?? ?5
2 相關(guān)技術(shù)介紹?? ?5
2.1 開發(fā)平臺(tái)?? ?5
? ?2.1.1 ?Myeclipse?? ?5
? ?2.1.2 ?TOMCAT?? ?5
? ?2.1.3 ?JDK?? ?5
2.2 開發(fā)技術(shù)?? ?5
? ?2.2.1 ?JSP?? ?5
? ?2.2.2 ?MVC?? ?5
? ?2.2.3 ?Struts?? ?5
3 需求分析?? ?5
3.1 功能需求?? ?5
? ?3.1.1 ?人員管理模塊?? ?5
? ?3.1.2 ?論文管理模塊?? ?5
? ?3.1.3 ?著作管理模塊?? ?5
? ?3.1.4 ?科研項(xiàng)目管理模塊?? ?5
? ?3.1.5 ?設(shè)備管理模塊?? ?5
3.2 運(yùn)行環(huán)境需求?? ?5
? ?3.2.1 ?系統(tǒng)軟件環(huán)境的建議配置?? ?5
? ?3.2.2 ?系統(tǒng)硬件環(huán)境的建議配置?? ?5
3.3 界面設(shè)計(jì)?? ?5
? ?3.3.1 ?界面操作需求?? ?5
? ?3.3.2 ?界面功能需求?? ?5
4 數(shù)據(jù)庫(kù)設(shè)計(jì)?? ?5
4.1 ?概念結(jié)構(gòu)設(shè)計(jì)?? ?5
4.2 ?邏輯結(jié)構(gòu)設(shè)計(jì)?? ?5
4.3 ?數(shù)據(jù)庫(kù)實(shí)施?? ?5
5系統(tǒng)實(shí)現(xiàn)?? ?5
5.1 ?數(shù)據(jù)庫(kù)的連接?? ?5
5.2 ?數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)?? ?27
5.3 ?功能模塊的實(shí)現(xiàn)?? ?29
5.4 ?系統(tǒng)安全?? ?33
6 總結(jié)?? ?5
7 參考文獻(xiàn)?? ?5
8 致 ?謝?? ?36

?
1 前言
1.1科研信息管理系統(tǒng)的介紹
當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代,在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)環(huán)境原因。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。
高校的科研水平和科研規(guī)模日益成為反映高校綜合實(shí)力的重要指標(biāo)。隨著國(guó)家對(duì)高??蒲械耐度氩粩嘣黾?#xff0c;各高校也越來(lái)越重視自身的科研管理。每年高校在科研活動(dòng)中產(chǎn)生的論文、著作、專利、項(xiàng)目、獲獎(jiǎng)等科研管理數(shù)據(jù)不斷變得龐大。傳統(tǒng)的依賴手工或者借助Excel等辦公軟件所進(jìn)行的科研管理變得日益艱難。以往,科研人員對(duì)文章、文件處理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對(duì)于科研人員的基本情況的記錄往往采用手工的記錄來(lái)進(jìn)行,對(duì)科研信息的處理也是通過(guò)人工計(jì)算、統(tǒng)計(jì)、查詢、手抄等來(lái)進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩?lái)說(shuō),缺乏系統(tǒng)、規(guī)范的信息管理手段。盡管有的高校里有計(jì)算機(jī),但是都是獨(dú)自為體,尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,于是高??蒲泄芾淼男畔⒒ㄔO(shè)被提高了日程上來(lái)。
科研活動(dòng)是高校一項(xiàng)非?;钴S的內(nèi)容??蒲信c教學(xué)工作向來(lái)是相輔相成的,以科研促教學(xué),以科研拉動(dòng)學(xué)校、學(xué)科的發(fā)展已成為高等院校辦學(xué)的一項(xiàng)基本戰(zhàn)略,它體現(xiàn)了高校發(fā)展的綜合實(shí)力。因此,科研管理信息化是高校管理信息化的重要組成部分。
顯然,需要有一套行之有效的手段來(lái)對(duì)高校的科研項(xiàng)目及發(fā)表論文進(jìn)行管理。到目前為止,高校的科研管理一直采用人工管理的方式,并無(wú)一套成文的管理規(guī)范,也沒有相應(yīng)的專職管理人員,只有當(dāng)上級(jí)部門發(fā)文要求統(tǒng)計(jì)項(xiàng)目或論文情況時(shí)才由有關(guān)人員查閱本校的各種相關(guān)文檔,人工進(jìn)行統(tǒng)計(jì)并制作報(bào)表。這種落后管理的弊端是顯而易見的。高校科研管理系統(tǒng)優(yōu)化科研環(huán)境和資源配置,使科研成本最小而效益最大化,從而提高科研實(shí)力和競(jìng)爭(zhēng)力,培養(yǎng)高層次人才,服務(wù)社會(huì)經(jīng)濟(jì)發(fā)展。
高??蒲泄芾硇畔⑾到y(tǒng)通常包括科研人員信息管理、科研項(xiàng)目管理、科研成果管理、學(xué)術(shù)交流管理、業(yè)績(jī)考核管理等,實(shí)現(xiàn)系統(tǒng)性、關(guān)聯(lián)性、即時(shí)性、針對(duì)性等特點(diǎn)。為用戶提供針對(duì)各項(xiàng)目進(jìn)行管理的操作,提高了信息檢索的效率,實(shí)現(xiàn)靈活的查詢;減輕管理人員手工制作報(bào)表、統(tǒng)計(jì)分析的負(fù)擔(dān);提高了高校管理科研管理的效率。它將有助于管理人員從煩瑣的管理工作中解脫出來(lái),使管理系統(tǒng)化、條理化,能迅速獲得感興趣的信息,從而提高管理水平。
1.2科研信息管理系統(tǒng)的特點(diǎn)
1、基于Struts模式下的WEB信息系統(tǒng),具有良好的可擴(kuò)展性,以滿足將來(lái)管理系統(tǒng)的發(fā)展需求。
2、廣泛的科研資源信息共享,為用戶提供高效、簡(jiǎn)便的電子化辦公,足不出戶便可查閱信息,實(shí)時(shí)了解科研情況。
3、需要大量的處理信息資源,包含很多的信息數(shù)據(jù)的管理,同時(shí)對(duì)科研信息進(jìn)行計(jì)算、統(tǒng)計(jì)和查詢。
4、具有較高的安全性和易維護(hù)性。
1.3 關(guān)于本課題
本系統(tǒng)主要包括以下幾個(gè)功能模塊:人員管理、著作管理、論文管理、項(xiàng)目管理、設(shè)備管理。用戶和管理員成功登錄后,根據(jù)相應(yīng)的權(quán)限,進(jìn)行數(shù)據(jù)的錄入、刪除及更新,錄入和更新時(shí)包括對(duì)數(shù)據(jù)的正確性校驗(yàn);據(jù)各種查詢條件進(jìn)行模糊查詢;任意一個(gè)業(yè)務(wù)成功辦理以后,系統(tǒng)會(huì)提示業(yè)務(wù)辦理成功。
?
圖1 ?科研信息管理功能結(jié)構(gòu)圖
2 相關(guān)技術(shù)介紹
2.1 開發(fā)平臺(tái)
2.1.1 ?MyEclipse
MyEclipse企業(yè)級(jí)工作平臺(tái)(MyEclipse Enterprise Workbench ,簡(jiǎn)稱MyEclipse)是對(duì)Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的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)用程序服務(wù)器的連接器
?5. J2EE項(xiàng)目部署服務(wù)
?6. 數(shù)據(jù)庫(kù)服務(wù)
?7. MyEclipse整合幫助
? ? 對(duì)于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過(guò)一系列的插件來(lái)實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。
簡(jiǎn)單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測(cè)試以及除錯(cuò)。MyEclipse是一個(gè)專門為Eclipse設(shè)計(jì)的商業(yè)插件和開源插件的完美結(jié)合,MyEclipse為Eclipse提供了一個(gè)大量私有和開源的Java工具的集合,很大程度上解決了各種開源工具的不一致和缺點(diǎn)問(wèn)題,并大大提高了Java和JSP應(yīng)用開發(fā)的效率。MyEclipse的實(shí)際價(jià)值來(lái)自其發(fā)布的大量的可視化開發(fā)工具和實(shí)用組件。
2.1.2 ?TOMCAT
Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的運(yùn)行環(huán)境(servlet容器),Tomcat是一個(gè)JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基礎(chǔ)上發(fā)展起來(lái)的一個(gè)JSP和Servlet規(guī)范的標(biāo)準(zhǔn)實(shí)現(xiàn),使用Tomcat可以體驗(yàn)JSP和Servlet的最新規(guī)范。Tomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web 應(yīng)用服務(wù)器,可以和大部分主流HTTP服務(wù)器一起工作,它是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開發(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)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。
? ? ?Tomcat服務(wù)器不但支持運(yùn)行Servlet和JSP而且還具備了作為商業(yè)Java Web應(yīng)用容器的特征,除了能夠運(yùn)行Servlet和JSP外,還具備了作為WEB服務(wù)器的特有功能。
? ? ?Servlet容器它是一個(gè)組件,這個(gè)組件運(yùn)行在服務(wù)器上(運(yùn)行在服務(wù)器上做什么?常見的是擴(kuò)展此服務(wù)器的功能,提供CGI替代品),并且這個(gè)服務(wù)器支持JAVA語(yǔ)言,Servlet容器是一個(gè)動(dòng)態(tài)加載的模塊,為WEB客戶請(qǐng)求提供服務(wù)。Tomcat作為Servlet容器,它就成了WEB客戶和Servlet兩者中間的橋,即:Tomcat把客戶請(qǐng)求,傳給Servlet,Servlet處理用戶請(qǐng)求,把結(jié)果給Tomcat,Tomcat再把結(jié)果傳給客戶.
? ? ?Tomcat 很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。
2.1.3 ?JDK
JDK 是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Envirnment),一堆Java工具和Java基礎(chǔ)的類庫(kù)(rt.jar)。它是一個(gè)寫Java的applet和應(yīng)用程序的程序開發(fā)環(huán)境。它由一個(gè)處于操作系統(tǒng)層之上的運(yùn)行環(huán)境還有開發(fā)者編譯,調(diào)試和運(yùn)行用Java語(yǔ)言寫的applet和應(yīng)用程序所需的工具組成。
? ? JDK(Java Development Kit)是Sun Microsystems針對(duì)Java開發(fā)員的產(chǎn)品,是開發(fā)Java的應(yīng)用基礎(chǔ),Eclipse的運(yùn)行也要依賴它。
JDK包含的基本組件包括:
? 1、javac – 編譯器,將源程序轉(zhuǎn)成字節(jié)碼?
? 2、jar – 打包工具,將相關(guān)的類文件打包成一個(gè)文件?
? 3、javadoc – 文檔生成器,從源碼注釋中提取文檔?
? 4、jdb – debugger,查錯(cuò)工具
2.2 開發(fā)技術(shù)
2.2.1 ?JSP
JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺(tái)的,即能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。
  JSP技術(shù)使用Java編程語(yǔ)言編寫類XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪問(wèn)存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。?
  Web服務(wù)器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)等,以實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)頁(yè)所需要的功能。JSP與Java Servlet一樣,是在服務(wù)器端執(zhí)行的,通常返回該客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。?
  JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡(jiǎn)單易用,完全的面向?qū)ο?#xff0c;具有平臺(tái)無(wú)關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。
2.2.2 ?MVC
2.2.2.1 ?MVC模式簡(jiǎn)介
MVC(Model-View-Controller,模型—視圖—控制器模式)用于表示一種軟件架構(gòu)模式。它把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model),視圖(View)和控制器(Controller)。
MVC由Trygve Reenskaug提出,是Xerox PARC在20世紀(jì)80年代為程序語(yǔ)言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式。模型—視圖—控制器模式的目的是實(shí)現(xiàn)一種動(dòng)態(tài)的程式設(shè)計(jì),使后續(xù)對(duì)程序的修改和擴(kuò)展簡(jiǎn)化,并且使程序某一部分的重復(fù)利用成為可能。除此之外此模式通過(guò)對(duì)復(fù)雜度的簡(jiǎn)化使程序結(jié)構(gòu)更加直觀。軟件系統(tǒng)通過(guò)對(duì)自身基本部份分離的同時(shí)也賦予了各個(gè)基本部分應(yīng)有的功能。專業(yè)人員可以通過(guò)自身的專長(zhǎng)分組:控制器- 程序員編寫程序應(yīng)有的功能(實(shí)現(xiàn)算法等等);視圖 - 界面設(shè)計(jì)人員進(jìn)行圖形界面設(shè)計(jì);模型 - 數(shù)據(jù)庫(kù)專家進(jìn)行數(shù)據(jù)管理和數(shù)據(jù)庫(kù)設(shè)計(jì)。
2.2.2.2 ?MVC模式工作原理
模型(Model):“數(shù)據(jù)模型”(Model)用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法?!澳P汀庇袑?duì)數(shù)據(jù)直接訪問(wèn)的權(quán)利,例如對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)?!澳P汀辈灰蕾嚒耙晥D”和“控制器”,也就是說(shuō),模型不關(guān)心它會(huì)被如何顯示或是如何被操作。但是模型中數(shù)據(jù)的變化一般會(huì)通過(guò)一種刷新機(jī)制被公布。為了實(shí)現(xiàn)這種機(jī)制,那些用于監(jiān)視此模型的視圖必須事先在此模型上注冊(cè),從而,視圖可以了解在數(shù)據(jù)模型上發(fā)生的改變。
視圖(View):視圖層能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示。在視圖中一般沒有程序上的邏輯。為了實(shí)現(xiàn)視圖上的刷新功能,視圖需要訪問(wèn)它監(jiān)視的數(shù)據(jù)模型(Model),因此應(yīng)該事先在被它監(jiān)視的數(shù)據(jù)那里注冊(cè)。
控制器(Controller):控制器起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng)。“事件”包括用戶的行為和數(shù)據(jù)模型上的改變。

?
圖2. MVC設(shè)計(jì)模型
2.2.3 ?Struts
Struts是Apache 基金會(huì)Jakarta 項(xiàng)目組的一個(gè)Open Source 項(xiàng)目,它采用MVC模式,能夠很好地幫助java 開發(fā)者利用J2EE開發(fā)Web應(yīng)用。和其他的java架構(gòu)一樣,Struts也是面向?qū)ο笤O(shè)計(jì),將MVC模式"分離顯示邏輯和業(yè)務(wù)邏輯"的能力發(fā)揮得淋漓盡致。Struts 是MVC的一種實(shí)現(xiàn),它將 Servlet和 JSP 標(biāo)記(屬于 J2EE 規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。
?
圖3. Struts的工作原理
在Struts的體系結(jié)構(gòu)中,模型分為兩個(gè)部分:系統(tǒng)的內(nèi)部狀態(tài)和可以改變狀態(tài)的操作(事務(wù)邏輯)。內(nèi)部狀態(tài)通常由一組ActinForm Bean表示。根據(jù)設(shè)計(jì)或應(yīng)用程序復(fù)雜度的不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時(shí)才獲得數(shù)據(jù)(從某個(gè)數(shù)據(jù)庫(kù))。大型應(yīng)用程序通常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的bean調(diào)用。小型程序中,操作可能會(huì)被內(nèi)嵌在Action類,它是struts框架中控制器角色的一部分。當(dāng)邏輯簡(jiǎn)單時(shí)這個(gè)方法很適合。 建議用戶將事務(wù)邏輯(要做什么)與Action類所扮演的角色(決定做什么)分開。
視圖主要由JSP建立,struts包含擴(kuò)展自定義標(biāo)簽庫(kù)(TagLib),可以簡(jiǎn)化創(chuàng)建完全國(guó)際化用戶界面的過(guò)程。目前的標(biāo)簽庫(kù)包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。
在struts中,基本的控制器組件是ActionServlet類中的實(shí)例servelt,實(shí)際使用的servlet在配置文件中由一組映射(由ActionMapping類進(jìn)行描述)進(jìn)行定義。對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成的,其中Action扮演了真正的業(yè)務(wù)邏輯的實(shí)現(xiàn)者,ActionMapping與ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。struts-config.xml 文件配置控制器。
3 需求分析
3.1 功能需求
3.1.1 ?人員管理模塊
人員管理模塊包含了添加職工信息、修改職工信息、刪除職工信息、職工信息查詢和密碼修改等子功能模塊。
教師、科研人員以職工號(hào)和密碼登陸系統(tǒng)后,只能管理本人的信息,可以對(duì)本人的信息進(jìn)行查看和修改密碼。用戶修改密碼時(shí)若輸入的舊密碼不正確、兩次輸入的新密碼不一致、驗(yàn)證碼輸入錯(cuò)誤則無(wú)法修改密碼。
管理員添加和修改用戶信息時(shí)必須填入職工號(hào)、職工姓名、性別、部門、聯(lián)系電話等信息,若添加的職工號(hào)或聯(lián)系電話數(shù)據(jù)庫(kù)中已存在,則添加信息失敗,反之成功添加,登陸密碼為123456。管理員可刪除已離職職工信息,亦可根據(jù)查詢條件模糊查詢?nèi)B毠さ男畔ⅰ?br /> 3.1.2 ?論文管理模塊
論文管理模塊包含了發(fā)表論文、修改論文信息、刪除論文信息、查詢論文信息等子功能模塊。
教師、科研人員可以發(fā)表論文,其中論文名稱和所發(fā)表期刊的名稱不能為空,發(fā)表論文成功后,數(shù)據(jù)庫(kù)中作者發(fā)表的論文次數(shù)加一;可以修改個(gè)人的論文信息和刪除個(gè)人的論文;可模糊查詢校內(nèi)的論文信息。
管理員可以對(duì)教師、科研人員所發(fā)表的論文信息進(jìn)行修改、刪除和查詢等操作,但不能修改論文的作者信息。
3.1.3 ?著作管理模塊
著作管理模塊包含了添加著作信息、修改著作信息、刪除著作信息、查詢著作信息等子功能模塊。
教師、科研人員可以錄入著作的基本信息,其中著作名稱、著作編號(hào)、出版社不能為空,發(fā)表著作成功后,數(shù)據(jù)庫(kù)中作者發(fā)表的著作次數(shù)加一;可以修改個(gè)人的著作信息和刪除個(gè)人的著作;可模糊查詢校內(nèi)的著作信息。
管理員可以對(duì)教師、科研人員所發(fā)表的著作信息進(jìn)行修改、刪除和查詢等操作,但不能修改著作的作者信息。
3.1.4 ?科研項(xiàng)目管理模塊
科研項(xiàng)目管理模塊包含了申報(bào)項(xiàng)目、審核項(xiàng)目、項(xiàng)目結(jié)題、項(xiàng)目鑒定、刪除未批準(zhǔn)項(xiàng)目、項(xiàng)目信息查詢等子功能模塊。
教師、科研人員可以申報(bào)項(xiàng)目,必須填寫項(xiàng)目編號(hào)、項(xiàng)目名稱、項(xiàng)目類別、立項(xiàng)時(shí)間、完成時(shí)間、申請(qǐng)經(jīng)費(fèi)等基本信息,申請(qǐng)人即為負(fù)責(zé)人,添加項(xiàng)目組成員信息時(shí)若為校內(nèi)人員必須填寫職工號(hào),如果查無(wú)此職工號(hào)則添加失敗,可添加多個(gè)小組成員;項(xiàng)目未批準(zhǔn)時(shí)可刪除個(gè)人申報(bào)的項(xiàng)目信息;可模糊查詢校內(nèi)的項(xiàng)目信息。
管理員可以查詢校內(nèi)的項(xiàng)目信息;審核未批準(zhǔn)的項(xiàng)目,項(xiàng)目一旦立項(xiàng)后不可刪除;填寫項(xiàng)目結(jié)題信息;完成項(xiàng)目的鑒定。
3.1.5 ?設(shè)備管理模塊
設(shè)備管理模塊包含了添加設(shè)備信息、修改設(shè)備信息、刪除設(shè)備信息、查詢?cè)O(shè)備信息等子功能模塊。
管理員可以添加設(shè)備信息,必須填寫設(shè)備編號(hào)、設(shè)備名稱、型號(hào)、購(gòu)入地、購(gòu)入時(shí)間等基本信息;可查詢校內(nèi)的設(shè)備信息狀況;可修改設(shè)備的信息;可刪除已壞設(shè)備的信息。
3.2 運(yùn)行環(huán)境需求
3.2.1 ?系統(tǒng)軟件環(huán)境的建議配置
軟件環(huán)境如下表所示:
軟件名稱?? ?要 ?求
操作系統(tǒng)?? ?Windows XP
Web服務(wù)器?? ?Tomcat 5.5
數(shù)據(jù)庫(kù)?? ?SQLSever 2000
JDK?? ?JDK 5.0
Web瀏覽器?? ?Microsoft Internet Explorer 6.0
3.2.2 ?系統(tǒng)硬件環(huán)境的建議配置
硬件環(huán)境如下表所示:
硬件名稱?? ?要 ?求
CPU?? ?使用586或更高級(jí)別的處理器
內(nèi)寸?? ?128M或更高
硬盤?? ?80G以上
顯示器?? ?VGA顯示器
分辨率?? ?1024 * 768
以上只是基本的配置,建議在運(yùn)行系統(tǒng)時(shí)使用當(dāng)前中等級(jí)以上的計(jì)算機(jī),這樣配置運(yùn)行效果為佳。
3.3界面設(shè)計(jì)
3.3.1 ?界面操作需求
考慮到科研信息管理系統(tǒng)有大量的科研信息需要處理、統(tǒng)計(jì),用戶使用和管理界面整體要美觀、簡(jiǎn)潔和實(shí)用,管理信息顯示清晰明白。用戶的操作要簡(jiǎn)易方便,過(guò)程簡(jiǎn)單,不會(huì)因操作麻煩而引起嚴(yán)重的錯(cuò)誤。
3.3.2 ?界面功能需求
本系統(tǒng)主要實(shí)現(xiàn)的界面如下:
1.職工登陸界面
2.添加、修改、刪除、分頁(yè)顯示職工信息和修改密碼的界面
3.添加、修改、刪除、分頁(yè)顯示論文信息的界面
4.添加、修改、刪除、分頁(yè)顯示著作信息的界面
5.添加、刪除、分頁(yè)顯示項(xiàng)目信息和管理項(xiàng)目的界面
6.添加、修改、刪除、分頁(yè)顯示設(shè)備信息的界面
7.操作成功提示界面
4 數(shù)據(jù)庫(kù)設(shè)計(jì)
4.3 數(shù)據(jù)庫(kù)實(shí)施?
4.3.1?? ?創(chuàng)建觸發(fā)器
1.?? ?于employee表上分別創(chuàng)建creatlogin和deletelogin觸發(fā)器,creatlogin觸發(fā)器用于新增職工信息時(shí)在登錄表中插入職工的登錄信息,初始密碼123456;deletelogin觸發(fā)器用于刪除離職職工信息時(shí)同時(shí)從login表中刪除該職工的扥錄信息;具體語(yǔ)句如下:
CREATE TRIGGER [creatlogin] ON [dbo].[employee]?
AFTER INSERT?
AS
BEGIN
? ? ? ? ? ? declare @emno varchar(8)
?? ?select @emno=inserted.eid from inserted
?? ?INSERT INTO login VALUES(@emno,'25D55AD283AA400AF464C76D713C07AD','3');
END;
CREATE TRIGGER [deletelogin] ON [dbo].[employee]?
AFTER DELETE?
AS
BEGIN
? ? ? ? ? ? declare @emno varchar(8)
? ? ? ? ? ? select @emno=deleted.eid from deleted
?? ?DELETE FROM login WHERE eid = @emno;
END;
2.?? ?于paper表上分別創(chuàng)建addamount和deletepaper觸發(fā)器,分別用于作者發(fā)表論文或刪除論文時(shí)其個(gè)人信息的論文數(shù)量相應(yīng)增1或剪1,具體語(yǔ)句如下:
CREATE TRIGGER [addamount] ON dbo.paper?
AFTER INSERT
AS
BEGIN
? ? ? ? ? ? declare @emno varchar(8)
? ? ? ? ? ? select @emno=inserted.author from inserted
? ? ? ? ? ? UPDATE ?employee SET pamount = pamount+1 WHERE eid = @emno;
END;

CREATE TRIGGER [deletepaper] ON dbo.paper?
AFTER DELETE?
AS
BEGIN
? ? ? ? ? ? declare @emno varchar(8)
? ? ? ? ? ? select @emno=deleted.author from deleted
? ? ? ? ? ? UPDATE employee SET pamount = pamount-1 WHERE eid = @emno;
END;
3.?? ?于book表上分別創(chuàng)建addbook和deletebook觸發(fā)器,分別用于作者發(fā)表著作或刪除著作時(shí)其個(gè)人信息的著作數(shù)量相應(yīng)增1或剪1,具體語(yǔ)句如下:
CREATE TRIGGER [addbook] ON [dbo].[book]?
AFTER INSERT
AS
BEGIN
? ? ? ? ? ? declare @emno varchar(8)
? ? ? ? ? ? select @emno=inserted.author from inserted
? ? ? ? ? ? UPDATE ?employee SET bamount = bamount+1 WHERE eid = @emno;
END;

CREATE TRIGGER [deletebook] ON [dbo].[book]?
AFTER DELETE?
AS
BEGIN
? ? ? ? ? ? declare @emno varchar(8)
? ? ? ? ? ? select @emno=deleted.author from deleted
? ? ? ? ? ? UPDATE employee SET bamount = bamount-1 WHERE eid = @emno;
END;
5 系統(tǒng)實(shí)現(xiàn)
5.1數(shù)據(jù)庫(kù)的連接
經(jīng)公共類SqlConn的Getconnection()方法與數(shù)據(jù)庫(kù)連接。
public class SqlConn {
?? ?private static final String driver="sun.jdbc.odbc.JdbcOdbcDriver";
?? ?private static final String datasource="jdbc:odbc:jin";
?? ? public static Connection Getconnection()throws SQLException{
?? ??? ? Connection conn=null;
?? ? ? ??? ?try{
?? ??? ??? ??? ?Class.forName(driver);
?? ??? ??? ?}catch(ClassNotFoundException ce)
?? ??? ??? ?{
?? ??? ??? ??? ?System.out.println(ce.getMessage());
?? ??? ??? ?}
?? ? ? ? ? ?try{
?? ? ? ? ? ??? ?conn=DriverManager.getConnection(datasource); ?? ?
?? ? ? ? ? ?}catch(SQLException e){
?? ? ? ??? ??? ?System.out.println(e.getMessage());
?? ? ? ??? ?}
?? ??? ??? ?return conn;
?? ? }
}
5.2 數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn)
以項(xiàng)目管理模塊為例,ItemInfoDAO抽象接口,高度抽象并僅提供有限的幾個(gè)公有方法,涵蓋所有對(duì)項(xiàng)目表item內(nèi)數(shù)據(jù)的存取操作,包括新增、查詢、更新、刪除。
public interface ItemInfoDAO {
?? ?
?? ?public abstract boolean Update(ItemInfoVo iiv);
? ?//update涵蓋了所有對(duì)項(xiàng)目表item的更新操作,不同的操作由iiv指定并
//由相應(yīng)接口實(shí)現(xiàn)
public abstract ArrayList<ItemInfoVo> Search(InfoSearchVo isv);
?? ?//search涵蓋了所有對(duì)項(xiàng)目表item的查詢操作,以isv指定的查詢條件查
//詢,返回 ArrayList結(jié)果
?? ?public abstract boolean Delete(ItemInfoVo iiv);
?? ?//delete所有對(duì)項(xiàng)目表item的刪除操作
?? ?public abstract int checkadd(ItemInfoVo iiv);
?? ?//checkadd涵蓋了所有對(duì)項(xiàng)目表item的檢查數(shù)據(jù)是否合法,若合法則插
//入的操作
}
類ItemInfoDAOImpl實(shí)現(xiàn)了ItemInfoDAO抽象接口,實(shí)現(xiàn)了接口的所有抽象方法。
申報(bào)項(xiàng)目時(shí)AddItemInfoAction調(diào)用DaoFactory.getItemInfoDAOInstance.checkadd(iiv)進(jìn)行新增操作,并據(jù)返回的值判定數(shù)據(jù)是否成功插入,轉(zhuǎn)入相應(yīng)的界面,其中iiv為ItemInfoVo類對(duì)象,ItemInfoVo封裝了項(xiàng)目item表內(nèi)的所有字段。
public class AddItemInfoAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
?? ??? ??? ?HttpServletRequest request, HttpServletResponse response) {
….
? ? int message=DAOFactory.getItemInfoDAOInstance().checkadd(iiv);
?? ??? ?//信息檢查是否合法
?? ??? ?if(message==0)//信息合法
?? ??? ?{
?? ??? ??? ?request.getSession().setAttribute("iid",iiv.getIid());
?? ??? ??? ?return mapping.findForward("addmemberinfo");
?? ??? ?}
?? ??? ?else if(message==1)//項(xiàng)目編號(hào)已存在
?? ??? ?{
?? ??? ??? ?errors.add("iid", new ActionMessage("iid.error"));
?? ??? ??? ?saveErrors(request,errors);
?? ??? ??? ?return mapping.findForward("additeminfofail");
?? ??? ?}
?? ??? ?else if(message==2)//項(xiàng)目名稱已存在
?? ??? ?{
?? ??? ??? ?errors.add("iname", new ActionMessage("iname.error"));
?? ??? ??? ?saveErrors(request,errors);
?? ??? ??? ?return mapping.findForward("additeminfofail");
?? ??? ?}
?? ??? ?else//其他錯(cuò)誤
?? ??? ?{
?? ??? ??? ?errors.add("all", new ActionMessage("all.error"));
?? ??? ??? ?saveErrors(request,errors);
?? ??? ??? ?return mapping.findForward("additeminfofail");
?? ??? ?}
其中DaoFactory類也可獲得其它實(shí)現(xiàn)了抽象接口的工廠類,可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中的其他的表進(jìn)行數(shù)據(jù)操作,如新增、查詢、更新、刪除。
public class DAOFactory {
?? ?
..….
public static PersonDAO getPersonDAOInstance()
?? ?{
?? ??? ?return new PersonDAOImpl() ;
?? ?}
?? ?
?? ?public static BookInfoDAO getBookInfoDAOInstance()
?? ?{
?? ??? ?return new BookInfoDAOImpl() ;?? ?
?? ?}
?? ?
?? ?public static ItemInfoDAO getItemInfoDAOInstance()
?? ?{
?? ??? ?return new ItemInfoDAOImpl();
?? ?}
?? ?
}
5.3 功能模塊的實(shí)現(xiàn)
5.3.1 ?登陸
用戶經(jīng)如登陸界面login.jsp填寫職工號(hào)、密碼、登陸類型和驗(yàn)證碼,登陸表單提交之前,調(diào)用LoginForm的validate進(jìn)行表單驗(yàn)證,若數(shù)據(jù)合法則轉(zhuǎn)向相應(yīng)的LoginAction,反之轉(zhuǎn)向登陸頁(yè)面顯示錯(cuò)誤信息。
public ActionErrors validate(ActionMapping mapping,
?? ??? ??? ?HttpServletRequest request) {
?? ??? ?ActionErrors errors = new ActionErrors();
?? ??? ?String random2 = request.getSession().getAttribute("random").toString();
?? ??? ?if (this.eid == null || "".equals(this.eid)) {
?? ??? ??? ?errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("eid.null"));

?? ??? ?} else if (this.eid.length() != 8) {
?? ??? ??? ?errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("eid.length"));
?? ??? ?} else if (this.pwd == null || "".equals(this.pwd)) {
?? ??? ??? ?errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(pwd.null"));

? ? ? ? } else if (this.pwd.length() < 5 || this.pwd.length() > 16) {
?? ? ? ? ? ?errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("pwd.length"));
? ? ? ? } else if (this.random == null || "".equals(this.random)) {
? ? ? ? ? ? errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("random.null"));
….
LoginAction據(jù)用戶所填寫的表單數(shù)據(jù),調(diào)用DAOFactory.getPersonDAOInstance().Login(per),查詢數(shù)據(jù)庫(kù)中用戶是否具有合法身份,若合法則轉(zhuǎn)向相應(yīng)權(quán)限的界面,否則轉(zhuǎn)向錯(cuò)誤提示界面。
public ActionForward execute(ActionMapping mapping, ActionForm form,
?? ??? ??? ?HttpServletRequest request, HttpServletResponse response) {
?? ??? ?ActionMessages errors = new ActionMessages() ; ?//錯(cuò)誤消息封裝類
?? ??? ?LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
?? ??? ?String eid = loginForm.getEid() ; ?//獲取帳號(hào)
?? ??? ?HttpSession session=request.getSession();
?? ??? ?MD5_Encoding md5=new MD5_Encoding(); ?//密碼封裝類
?? ??? ?String pwd=md5.getMD5ofStr(loginForm.getPwd());?? ?//獲取密碼
?? ??? ?String type=loginForm.getType();//獲取權(quán)限
?? ??? ?PersonVo per = new PersonVo();
?? ??? ?per.setEid(eid);
?? ??? ?per.setPwd(pwd);
?? ??? ?per.setType(type);
?? ??? ?String[] path={"login","school","college","teacher"};
?? ??? ?if(true== DAOFactory.getPersonDAOInstance().Login(per))
?? ??? ?{
?? ??? ??? ?// per所封裝的數(shù)據(jù)合法
?? ??? ??? ?session.setAttribute("eid",eid);
?? ??? ??? ?session.setAttribute("name",per.getName());
?? ??? ??? ?session.setAttribute("type",type);
?? ??? ??? ?session.setAttribute("depart", per.getDepart());
?? ??? ??? ?loginForm.setEid("");
?? ??? ??? ?loginForm.setPwd("");
?? ??? ??? ?loginForm.setType("1");
?? ??? ??? ?//FORM表單重置
?? ??? ??? ?return mapping.findForward(path[Integer.parseInt(type)]);
?? ??? ??? ?//跳轉(zhuǎn)對(duì)應(yīng)界面
?? ??? ?}
?? ??? ?else{
?? ??? ??? ?errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
?? ??? ??? ?"login.error"));
?? ??? ??? ?saveErrors(request,errors);
?? ??? ??? ?return mapping.findForward(path[0]);//跳轉(zhuǎn)錯(cuò)誤界面
?? ??? ??? ?}
?? ?}
5.3.2 ?項(xiàng)目申報(bào)
教師進(jìn)入項(xiàng)目申報(bào)界面additeminfo.jsp,并填寫相關(guān)信息提交表單后,由AddItemInfoForm進(jìn)行驗(yàn)證,如果數(shù)據(jù)不合法轉(zhuǎn)向項(xiàng)目申報(bào)界面并提示錯(cuò)誤信息,反之AddItemInfoAction據(jù)所提交表單數(shù)據(jù)調(diào)用DaoFactory.getItemInfoDAOInstance.checkadd(iiv)進(jìn)行新增項(xiàng)目操作,并據(jù)返回的值判定數(shù)據(jù)是否成功插入,轉(zhuǎn)入相應(yīng)的界面。
5.3.4 ?查詢項(xiàng)目信息
用戶進(jìn)入項(xiàng)目查詢界面,由SearchItemInfoAction據(jù)SearchForm的searchtype和searchname屬性值調(diào)用DAOFactory.getItemInfoDAOInstance().Search(isv)獲得信息查詢結(jié)果并設(shè)置于session的list屬性中,據(jù)struts-config.xml 文件配置轉(zhuǎn)向分頁(yè)處理PageListAction。獲得當(dāng)前頁(yè)的結(jié)果集合設(shè)置于session的sublist屬性中,轉(zhuǎn)向相應(yīng)顯示頁(yè)面,通過(guò)標(biāo)簽庫(kù)中的logic、bean等標(biāo)簽顯示結(jié)果。
public ActionForward execute(ActionMapping mapping, ActionForm form,
?? ??? ??? ?HttpServletRequest request, HttpServletResponse response) {
?? ??? ?ArrayList list=(ArrayList) request.getSession().getAttribute("list");?? ??? ?
?? ??? ?int pagenumber = 0;
?? ??? ?if ("".equals(request.getParameter("pagenumber"))
?? ??? ??? ??? ?|| null == request.getParameter("pagenumber")) {
?? ??? ??? ?pagenumber = 1;
?? ??? ??? ?
?? ??? ?} else {
?? ??? ??? ?pagenumber = Integer.parseInt((String) request
?? ??? ??? ??? ??? ?.getParameter("pagenumber"));
?? ??? ?}?? ?

?? ??? ?String[] path={"search","searchpaper","searchbook","searchitem"};
?? ??? ?String search = (String) request.getSession().getAttribute("search");
?? ??? ?//判斷是否為空,若為空,則提示無(wú)記錄,若不為空,則分頁(yè)顯示
?? ??? ?if (list.size() == 0) {
?? ??? ??? ?request.setAttribute("sublist", list);
?? ??? ??? ?return mapping.findForward(path[Integer.parseInt(search)]);
?? ??? ?} else {

?? ??? ??? ?ListPage listpage = new ListPage(list, pagenumber, 5);
//新建ListPage類的實(shí)例化對(duì)象listpage
?? ??? ??? ?int lastpagenumber = listpage.getLastPageNumber();
?? ??? ??? ?if (pagenumber >= lastpagenumber) {
?? ??? ??? ??? ?pagenumber = lastpagenumber;
?? ??? ??? ?}
?? ??? ??? ?List sublist = (List) listpage.getThisPageElements();
//調(diào)用listpage.getThisPageElements()方法獲取當(dāng)前頁(yè)的查詢結(jié)果集合
?? ??? ??? ?request.getSession().setAttribute("lastpagenumber", lastpagenumber);
?? ??? ??? ?request.getSession().setAttribute("pagenumber", pagenumber);
?? ??? ??? ?request.getSession().setAttribute("sublist", sublist);
?? ??? ??? ?return mapping.findForward(path[Integer.parseInt(search)]);
?? ??? ?}
?? ?}
5.3.5 ?項(xiàng)目審核
管理員進(jìn)入某個(gè)項(xiàng)目的詳細(xì)查看界面后,選擇審批項(xiàng)目時(shí)轉(zhuǎn)向ItemInfoAction將該項(xiàng)目的詳細(xì)信息設(shè)置于session屬性中以便轉(zhuǎn)向?qū)徍隧?yè)面時(shí)提供項(xiàng)目信息,填寫審核信息后提交表單,由UpdateItemInfoAction據(jù)UpdateItemInfoForm表單中的屬性值調(diào)用DAOFactory.getItemInfoDAOInstance().Update(iiv),修改該項(xiàng)目的進(jìn)度信息,據(jù)返回值轉(zhuǎn)向相應(yīng)的界面。
5.3.5 ?項(xiàng)目刪除
教師或管理員選擇刪除某個(gè)未審核項(xiàng)目時(shí),DeleteIntemInfoAction據(jù)request對(duì)象所傳的項(xiàng)目編號(hào)屬性調(diào)用DAOFactory.getMemberInfoDAOInstance().Delete(miv)刪除該項(xiàng)目組成員信息,在調(diào)用DAOFactory.getItemInfoDAOInstance().Delete(iiv)刪除該項(xiàng)目的基本信息,struts-config.xml 文件配置轉(zhuǎn)向相應(yīng)的界面
5.4 系統(tǒng)安全
5.4.1登陸安全
經(jīng)登錄過(guò)濾器LoginFilter使未經(jīng)登陸頁(yè)面正常登陸,而是從瀏覽器地址欄中輸入地址的人員不能登陸本系統(tǒng),跳轉(zhuǎn)回登陸界面。
public class LoginFilter implements Filter {
?? ?public void doFilter(ServletRequest request, ServletResponse response,
?? ??? ??? ?FilterChain chain) throws IOException, ServletException {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?HttpServletRequest req = (HttpServletRequest) request;
?? ??? ?HttpServletResponse resp = (HttpServletResponse) response;
?? ??? ?HttpSession session = req.getSession();
?? ??? ?if (null == session.getAttribute("eid")
?? ??? ??? ??? ?|| "" == session.getAttribute("eid")) {
?? ??? ??? ?resp.sendRedirect(req.getContextPath() + "/login.jsp");
?? ??? ?}else {
?? ??? ??? ?chain.doFilter(request, response);
?? ??? ?}//據(jù)session中的職工號(hào)屬性是否為空判定用戶是否正常登陸
?? ?}
5.4.2 ?密碼安全
用戶登入填寫密碼后提交由LoginAction調(diào)用MD5_Encoding類的getMD5ofStr()方法對(duì)密碼進(jìn)行封裝,防止他人知道用戶密碼的原文。
6 總結(jié)
經(jīng)過(guò)幾個(gè)月的設(shè)計(jì)和開發(fā),基于MVC思想的科研信息管理平臺(tái)基本完成,所實(shí)現(xiàn)的功能基本符合需求,能夠完成論文、著作等成果的發(fā)表,查詢科研信息和管理,申報(bào)項(xiàng)目,項(xiàng)目管理,設(shè)備管理,職工信息的管理等。但該系統(tǒng)還有許多不夠完善的地方,系統(tǒng)實(shí)現(xiàn)的功能較簡(jiǎn)單,用戶界面不夠美觀,出錯(cuò)處理不夠等多方面問(wèn)題,這些都有待進(jìn)一步改善。
畢業(yè)設(shè)計(jì)中,使我提高了實(shí)際操作能力,增加了開發(fā)系統(tǒng)的經(jīng)驗(yàn),對(duì)MVC思想的了解和Struts框架的應(yīng)用有了更深層次的掌握,初步了解了抽象工廠的工作原理,從以前的理論上升到實(shí)踐,真正做到學(xué)有所用,懂得如何發(fā)現(xiàn)問(wèn)題,分析問(wèn)題,解決問(wèn)題。雖然在設(shè)計(jì)過(guò)程中我也遇到一些困難,但在老師的悉心幫助和自己的努力下,我都認(rèn)真克服了,雖然并沒有做到盡善盡美,應(yīng)該說(shuō)這是一大遺憾吧,但我相信這段經(jīng)驗(yàn)的寶貴收獲使我終身受益。
?

總結(jié)

以上是生活随笔為你收集整理的基于java的科研信息管理平台的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。