李天賜,田精白
?
基于SSH框架衛(wèi)生科技成果申報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
李天賜,田精白
(湖北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,湖北 武漢 430068)
為了提高科技成果申報(bào)工作的效率,設(shè)計(jì)并實(shí)現(xiàn)一款基于SSH框架的衛(wèi)生科技成果申報(bào)管理JavaWeb系統(tǒng)。衛(wèi)生科技成果申報(bào)系統(tǒng)實(shí)現(xiàn)了對(duì)申報(bào)信息的增刪改插,信息對(duì)比等功能,擁有清晰的分類(lèi),便捷的操作等特點(diǎn)。
SSH;科技成果申報(bào);JavaWeb;管理系統(tǒng)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,Web應(yīng)用得到了廣泛的使用,其中日常辦公也在信息化發(fā)展的影響下效率不斷提高。在傳統(tǒng)的衛(wèi)生科技成果申報(bào)流程中有著過(guò)程比較繁瑣、人員分布分散的特點(diǎn)導(dǎo)致申報(bào)效率較低、信息量較大等問(wèn)題。因此采用一種信息化的方式代替原始的科技成果申報(bào)流程是勢(shì)在必行的。
在對(duì)衛(wèi)生科研系統(tǒng)進(jìn)行需求分析前,開(kāi)發(fā)團(tuán)隊(duì)需要進(jìn)行需求獲取。通過(guò)對(duì)系統(tǒng)的使用者的采訪,系統(tǒng)流程的記錄,需求分析人員需要對(duì)采訪和記錄文檔進(jìn)行需求分析。
為了更好的分析系統(tǒng)需要實(shí)現(xiàn)的功能以及用戶(hù)功能權(quán)限和使用過(guò)程,描繪如圖2的系統(tǒng)用例圖。
(1)登錄:在登錄時(shí),系統(tǒng)要判別用戶(hù)的種類(lèi)。在登錄界面,可以設(shè)計(jì)三個(gè)不同的登錄入口或者一個(gè)選擇用戶(hù)登錄類(lèi)型的下拉框。
(2)查看個(gè)人信息:利用機(jī)構(gòu)編號(hào)在個(gè)人信息表中查找即可,但需要注意的是個(gè)人信息表的部分信息可以修改。
(3)修改密碼:用戶(hù)需要輸入原始密碼和兩次新密碼,如果正確則返回登錄界面重新登陸,如果錯(cuò)誤則提示修改失敗。
(4)錄入、修改信息:因?yàn)殇浫牒托薷氖鞘锌h屬機(jī)構(gòu)的功能,所以要利用Struts2技術(shù)對(duì)其他用戶(hù)進(jìn)行攔截。對(duì)于每一個(gè)科技成果申報(bào)的項(xiàng)目都有對(duì)應(yīng)數(shù)據(jù)庫(kù)表,也在代碼中對(duì)應(yīng)有JavaBean,在前端代碼中只需要利用面向?qū)ο蠹夹g(shù)把數(shù)值存儲(chǔ)到對(duì)象中,最后把對(duì)象傳到后臺(tái)的邏輯業(yè)務(wù)處理代碼中以實(shí)現(xiàn)存儲(chǔ)或修改。

圖1 系統(tǒng)功能圖

圖2 系統(tǒng)用例圖
(5)導(dǎo)出信息:根據(jù)用戶(hù)不同的需求從數(shù)據(jù)庫(kù)中取出相應(yīng)的數(shù)據(jù),利用Apache Poi技術(shù)進(jìn)行業(yè)務(wù)處理后輸出Excel表格。
(6)信息對(duì)比:因?yàn)榇斯δ苁侵挥胁渴贆C(jī)構(gòu)擁有,所以需要設(shè)計(jì)相應(yīng)的過(guò)濾器。根據(jù)不同的查詢(xún)條件查詢(xún)出不同的數(shù)據(jù),然后存放在對(duì)象中進(jìn)行運(yùn)算處理,再根據(jù)JavaScript技術(shù)把數(shù)據(jù)顯示到前端界面上。
(7)添加修改個(gè)人登陸賬號(hào)和密碼:類(lèi)同于錄入修改信息功能,也因是管理員獨(dú)有功能,設(shè)計(jì)出相應(yīng)的過(guò)濾器。
通過(guò)功能分析,開(kāi)發(fā)人員發(fā)現(xiàn)在系統(tǒng)中需要進(jìn)行很多申報(bào)信息表的查詢(xún)。本系統(tǒng)采用的是經(jīng)典的SSH框架,其中的hibernate的持久化技術(shù)可以很好的解決頻繁訪問(wèn)數(shù)據(jù)庫(kù)的問(wèn)題。Struts2框架使得系統(tǒng)層次分離,提高開(kāi)發(fā)效率;Spring框架使得系統(tǒng)“高內(nèi)聚,低耦合“,增強(qiáng)系統(tǒng)的可擴(kuò)展性。
數(shù)據(jù)庫(kù)設(shè)計(jì)在系統(tǒng)設(shè)計(jì)開(kāi)發(fā)前,一定要經(jīng)過(guò)相關(guān)范式和理論的檢驗(yàn)以確保設(shè)計(jì)的準(zhǔn)確性。在數(shù)據(jù)庫(kù)實(shí)現(xiàn)時(shí),系統(tǒng)需要確保把實(shí)體上的屬性對(duì)應(yīng)到數(shù)據(jù)庫(kù)表的每個(gè)表項(xiàng)中。以市縣屬機(jī)構(gòu)為例,市縣屬機(jī)構(gòu)的屬性有機(jī)構(gòu)編號(hào)、機(jī)構(gòu)名稱(chēng)、所在市、所在縣、詳細(xì)地址、機(jī)構(gòu)網(wǎng)址、聯(lián)系人、聯(lián)系人電話、機(jī)構(gòu)郵箱、機(jī)構(gòu)所有制、機(jī)構(gòu)類(lèi)別、機(jī)構(gòu)等級(jí)12個(gè)表項(xiàng)。市縣屬機(jī)構(gòu)詳細(xì)實(shí)體屬性如圖3所示,數(shù)據(jù)庫(kù)表如表1所示。

圖3 市縣屬機(jī)構(gòu)實(shí)體圖
其中對(duì)市縣屬機(jī)構(gòu)的外鍵city是對(duì)應(yīng)著cityinfo表的主鍵city_num。在cityinfo表中每一個(gè)city_num對(duì)應(yīng)著一個(gè)city_name。當(dāng)市區(qū)名需要變化時(shí),只需要修改數(shù)據(jù)庫(kù)表中city_name即可完成修改相關(guān)市區(qū)名,降低了后期人員修改的難度。市縣機(jī)構(gòu)屬性中所在縣,機(jī)構(gòu)所有制,機(jī)構(gòu)類(lèi)別,機(jī)構(gòu)等級(jí)也是采用類(lèi)似的解決方案。
表1 市縣屬機(jī)構(gòu)數(shù)據(jù)庫(kù)表

Tab.1 City and county organization entity diagram
為了厘清在三個(gè)實(shí)體(市縣屬機(jī)構(gòu),部省屬機(jī)構(gòu),管理員)的交互關(guān)系,并設(shè)計(jì)相應(yīng)數(shù)據(jù)庫(kù)表的字段,設(shè)計(jì)出如圖4的系統(tǒng)E-R圖。
在系統(tǒng)實(shí)現(xiàn)上,根據(jù)需求分析的結(jié)果進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)、功能設(shè)計(jì),之后需要實(shí)現(xiàn)SSH框架的搭建和接口設(shè)置以及數(shù)據(jù)庫(kù)建立表格且錄入相關(guān)數(shù)據(jù)。前端頁(yè)面利用JSP,CSS,JavaScript,JQuery,EL表達(dá)式,bootstrap,JSON實(shí)現(xiàn)界面美化。用戶(hù)通過(guò)JSP頁(yè)面和SSH框架系統(tǒng)的業(yè)務(wù)處理技術(shù)訪問(wèn)MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)。以下是對(duì)部省屬機(jī)構(gòu)的信息對(duì)比功能進(jìn)行簡(jiǎn)單的實(shí)現(xiàn)描述:

圖4 系統(tǒng)E-R圖
目標(biāo):需要把兩個(gè)不同市所有機(jī)構(gòu)的所有關(guān)于“人員知識(shí)結(jié)構(gòu)基本情況”信息進(jìn)行整合對(duì)比。
思路:首先是對(duì)兩個(gè)不同市搜索出對(duì)應(yīng)的所有機(jī)構(gòu),對(duì)每個(gè)機(jī)構(gòu)進(jìn)行搜索,查找出每個(gè)機(jī)構(gòu)中“人員知識(shí)結(jié)構(gòu)基本情況”的信息,然后把相同市的機(jī)構(gòu)信息對(duì)應(yīng)著相同屬性進(jìn)行累加即可。按照以上思路寫(xiě)出相應(yīng)的SQL語(yǔ)句,即FSQL。根據(jù)SQL查詢(xún)語(yǔ)句把對(duì)應(yīng)的數(shù)據(jù)存放在Query類(lèi)型的對(duì)象q 中。再把查詢(xún)到的數(shù)據(jù)放入到List對(duì)象Flist中,依據(jù)Flist.size()進(jìn)行for循環(huán)把相關(guān)數(shù)據(jù)進(jìn)行累加計(jì)算。在for循環(huán)中首先是把List中的對(duì)象取出來(lái)并強(qiáng)制轉(zhuǎn)換為Object對(duì)象的數(shù)組,從Object的數(shù)組中取出對(duì)象利用get()方法取出相應(yīng)的數(shù)據(jù)進(jìn)行計(jì)算。具體代碼如下
DAO層:Query q = session.createQuery(FSQL);
List Flist = q.list();
Service層:for(int i = 0; i Object[] obj =(Object[])Flist.get(i); FdoctorFtsum += ((Institutioninfo)obj[1]).getdoctorFt (); //…還有許多屬性省略} 其中Stinvestment表示對(duì)應(yīng)著所有“人員知識(shí)結(jié)構(gòu)基本情況”的數(shù)據(jù)庫(kù)表,Institutioninfo表是對(duì)應(yīng)著所有“機(jī)構(gòu)的基本信息”的數(shù)據(jù)庫(kù)表。 實(shí)現(xiàn):在用戶(hù)輸入比較數(shù)據(jù)并點(diǎn)擊對(duì)比后,系統(tǒng)根據(jù)JSP頁(yè)面所提交的表單中獲取到的show_ findCompare.action找到Service層中相關(guān)的Show-Action包中的findCompare()方法。FindCompare()調(diào)用由CompareServiceImpl類(lèi)實(shí)現(xiàn)的CompareSer-vice類(lèi)接口中的方法。CompareServiceImpl類(lèi)調(diào)用由CompareDaompl類(lèi)實(shí)現(xiàn)的CompareDao。Com-pareDaompl類(lèi)依托hibernate技術(shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),把訪問(wèn)到的數(shù)據(jù)傳送回Service層進(jìn)行業(yè)務(wù)邏輯再傳送回到Action層。在控制層處理對(duì)比數(shù)據(jù)后,將處理后的數(shù)據(jù)發(fā)送到前端頁(yè)面JSP中,再依據(jù)EL表達(dá)式顯示數(shù)據(jù)。登錄圖如5,對(duì)比效果如圖6所示。 圖5 系統(tǒng)登錄界面 圖6 系統(tǒng)對(duì)比功能圖 在系統(tǒng)開(kāi)發(fā)前需要進(jìn)行軟件工程的需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì)。在完成編碼過(guò)程后要根據(jù)軟件需求進(jìn)行軟件測(cè)試再投入使用。軟件測(cè)試是要以較少的時(shí)間,人力和樣例來(lái)測(cè)試出系統(tǒng)可能存在的缺陷或者問(wèn)題。本系統(tǒng)的軟件測(cè)試方法是以黑盒測(cè)試為主,白盒測(cè)試為輔。以需要輸入的數(shù)字文本框?yàn)槔?,?duì)其測(cè)試需要進(jìn)行測(cè)試輸入數(shù)字,空格,字母,字符,長(zhǎng)度很長(zhǎng)的數(shù)字,不輸入值等情況測(cè)試,測(cè)試文本框是否能對(duì)這些情況做出相應(yīng)的提示或反應(yīng)。除了對(duì)輸入數(shù)字的文本框進(jìn)行測(cè)試外,系統(tǒng)還需測(cè)試struts2的過(guò)濾器是否能夠正常過(guò)濾信息,數(shù)據(jù)庫(kù)是否能正常地進(jìn)行增刪改查的功能等。 本文是對(duì)一個(gè)基于SSH框架的衛(wèi)生科技成果申報(bào)系統(tǒng)需求分析,數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)實(shí)現(xiàn),系統(tǒng)測(cè)試的介紹。本系統(tǒng)實(shí)現(xiàn)了申報(bào)信息的增刪改查,信息比對(duì)等功能,對(duì)實(shí)際開(kāi)發(fā)衛(wèi)生科技成果申報(bào)系統(tǒng)提供相應(yīng)的參考。但是不同的機(jī)構(gòu)有著不同的需求,所以具體分析情況應(yīng)結(jié)合具體機(jī)構(gòu)實(shí)際情況進(jìn)行分析,從而做出與其機(jī)構(gòu)相應(yīng)情況符合的系統(tǒng)。本文對(duì)衛(wèi)生科技成果申報(bào)系統(tǒng)開(kāi)發(fā)提供了相應(yīng)的思路,方便程序員更好地開(kāi)發(fā)項(xiàng)目。 [1] 李福榮, 吳海濤. 基于AOP的衛(wèi)生科技成果申報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 電子設(shè)計(jì)工程. 2016(7): 8-3. [2] 符宇航, 鄭宗良, 曾莉. 基于Web的科研項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 電腦知識(shí)與技術(shù). 2016(27), 80-2. [3] 朱亞玲, 張睿敏, 李曉斌. 基于SSH架構(gòu)的企業(yè)信息 管理平臺(tái)的設(shè)計(jì)及實(shí)現(xiàn). 工業(yè)儀表與自動(dòng)化裝置. 2016(5), 26-3. [4] 林莉莉. 基于SSH框架的論壇信息管理系統(tǒng)管理系統(tǒng)的設(shè)計(jì). 科技資訊. 2016(10a), 11-2. [5] 余甜, 蔡文. 一種基于Web Service和SSH的網(wǎng)絡(luò)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).軟件開(kāi)發(fā)與應(yīng)用. 2017(15), 65-5. [6] 劉肖崢. Java SSH架構(gòu)在Java Web中的應(yīng)用.信息記錄材料. 2017(9), 152-2. [7] 袁立. 基于MVC模式SHH2框架的教研項(xiàng)目管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn). 電腦編程技巧與維護(hù). 2017(2), 48-5. [8] 歐陽(yáng)宏基, 葛萌. 基于Struts2與Hibernate框架的Java Web應(yīng)用研究. 計(jì)算機(jī)應(yīng)用. 2016(2), 48-5. Design and Implementation of Health Science and Technology Declaration System Based on SSH Framework LI Tian-ci, TIAN Jing-bai (Hubei University Of Technology Computer College, Hubei Wuhan, 430068) In order to improve the efficiency of declaring scientific and technological achievements, we designed and implemented a health science and technology declaration management JavaWeb system based on the SSH framework. The health science and technology declaration system has realized the functions of adding and deleting the declaration information, the information comparison and so on, it also has the characteristics of clear classification and convenient operation. SSH; Declaration of scientific and technological achievements; Java web; Management system TP311.52 A 10.3969/j.issn.1003-6970.2018.07.017 李天賜(1997-),男,本科在讀,研究方向:軟件工程(Javaweb開(kāi)發(fā));田精白(1982-),男,博士,研究方向:軟件需求工程。 本文著錄格式:李天賜,田精白. 基于SSH框架衛(wèi)生科技成果申報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件,2018,39(7):84-88

4 系統(tǒng)測(cè)試
5 結(jié)語(yǔ)