摘要:傳統(tǒng)動態(tài)文檔的收集是通過郵件發(fā)送通知,相關(guān)人員提交文檔,收集人員根據(jù)要收集文檔創(chuàng)建相應(yīng)的文件夾,然后把相關(guān)人員的文檔放到相應(yīng)的文件夾中。這種工作方式占用了收集人員的大量工作,并且容易出錯(cuò),如果需要統(tǒng)計(jì)那些人沒有提交就非常麻煩。該文采用Java Web技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于B/S的系統(tǒng),系統(tǒng)能夠根據(jù)收集人員提供的Excel文件自動在服務(wù)器上創(chuàng)建文件夾,同時(shí)向相關(guān)人員發(fā)送郵件,相關(guān)人員登陸網(wǎng)站上傳需要提交的文件,管理員可以隨時(shí)查看哪些人沒有提交,可以下載提交后的結(jié)果。該系統(tǒng)減少了收集人員的工作,從而提高工作效率,避免出錯(cuò)。
關(guān)鍵詞:文檔收集;Struts;JXL
中圖分類號: TP317文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2010)02-349-03
Design and Development of Dynamic Excel Document Collection System Based on Struts
YAN Hai-zhen, LI Xu-cheng
(Department of Computer Science Technology, Dalian Neusoft Institute of Information, Dalian 116023, China)
Abstract: In tradition, when we want to collect some document, first we notify everyone who must submit it by email. Then, the people submit the document by email. Next, the collector must create corresponding directory, and copy the corresponding document into the directory. In this way, is takes a heap of time to do this work, and easily make some mistakes. More important, if need the people who has not submitted, it can be much difficult. This paper implemented a Java web system based on B/S. The system can auto create the directory on server based on the Excel provided by the collector, and at the same time auto send email to the specified people. When the people upload the files on the website, the manager can stat the people who has not submitted, and download the document submitted. The system can improve the efficiency and avoid the mistakes.
Key words: document collection; struts; JXL
在日常教學(xué)過程中存在大量的文檔,通常需要專門的人員來收集這些文檔,而文檔來自不同的人,收集之后需要根據(jù)一定的規(guī)則進(jìn)行組織,需要創(chuàng)建相應(yīng)的文件夾結(jié)構(gòu),另外還需要察看哪些人沒有提交。這些工作占用了收集人員的大量的時(shí)間,并且容易出錯(cuò)。為了減少收集人員的工作量并提高效率,該文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)動態(tài)文檔收集系統(tǒng)。
1 傳統(tǒng)收集文檔的過程
傳統(tǒng)收集文檔的過程包括:確定收集任務(wù);發(fā)送通知;創(chuàng)建文件夾;收集;統(tǒng)計(jì)匯總。
確定收集任務(wù):收集人員確定要收集的文檔以及需要提交文檔的人,通常會創(chuàng)建Excel文件來描述哪個(gè)文檔需要哪個(gè)人提交。圖1展示了要收集教學(xué)進(jìn)程表提供的Excel文件。實(shí)際情況下要收集的文檔可能遠(yuǎn)遠(yuǎn)多于本例。
發(fā)送通知,根據(jù)需要提交文檔的人并給這些人發(fā)送郵件,如果選擇給所有發(fā)送會影響無關(guān)人員的工作,如果選擇這些人則會浪費(fèi)收集人員的時(shí)間。
創(chuàng)建文件夾,收集人員需要根據(jù)上面的Excel文件信息創(chuàng)建相應(yīng)的文件夾結(jié)構(gòu),針對上面的Excel,收集人員需要創(chuàng)建圖2所示的文件夾結(jié)構(gòu)。
收集,每個(gè)相關(guān)人員收到通知之后會把文檔發(fā)送給收集人員,收集人員再把文件放到不同的文件夾中。
統(tǒng)計(jì)匯總,經(jīng)過一段時(shí)間的收集之后,通常需要查看是不是所有人都提交了文檔,如果有人沒有提交,則需要重新通知。所有人提交之后就完成了本次文檔收集工作。
這個(gè)過程中,收集人員創(chuàng)建文件夾,并把相關(guān)人員的文檔放到相應(yīng)的文件,統(tǒng)計(jì)提交的情況都會占用收集人員的大量時(shí)間。
2 動態(tài)文檔收集系統(tǒng)要完成的功能
主要工作包括:收集人員根據(jù)需要創(chuàng)建Excel文檔;收集人員上傳Excel文件到服務(wù)器并發(fā)送通知;相關(guān)人員提交文檔到服務(wù)器;收集人員察看提交情況并匯總。
根據(jù)要收集的文檔創(chuàng)建一個(gè)Excel文件,Excel表格中的第一列表示第一層子目錄,第二列表示第二層子目錄,第三列表示第三層目錄,有多少層目錄就創(chuàng)建多少列,文檔中最后一列表示需要在這個(gè)目錄中提交信息的用戶。Excel文件中的內(nèi)容與圖1所示的Excel的內(nèi)容格式完全相同。這里就是收集人員使用習(xí)慣的工作方式,不會因?yàn)槭褂眯碌南到y(tǒng)而增加額外的工作。
收集人員上傳Excel文件到服務(wù)器并發(fā)送通知,完成的主要工作如下:
1) 收集人員創(chuàng)建收集文檔的任務(wù),只要設(shè)定一個(gè)名字即可,例如“教學(xué)進(jìn)程表”;
2) 收集人員上傳Excel文件;
3) 系統(tǒng)創(chuàng)建目錄,該過程自動完成,系統(tǒng)根據(jù)收集人員上傳的Excel文件,并解析內(nèi)容,根據(jù)Excel文件的內(nèi)容創(chuàng)建相應(yīng)的文件夾結(jié)構(gòu);
4) 自動給相關(guān)人員發(fā)送郵件,系統(tǒng)從Excel文件的最后一列解析出需要提交文檔的人員,并給這些人員發(fā)送通知,通知的內(nèi)容包括文檔收集的名稱以及需要提交的內(nèi)容。例如,給李緒成發(fā)送的內(nèi)容如圖3所示。
5) 相關(guān)人員提交,相關(guān)人員登陸網(wǎng)站之后可以選擇該待提交文檔中的“教學(xué)進(jìn)程表”,然后選擇相應(yīng)的提交任務(wù),上傳相應(yīng)的文件。
6) 收集人員察看提交情況并匯總,收集人員可以隨時(shí)查看收集情況,需要的話給沒有提交文檔的人再次發(fā)送郵件,如果收集完成可以從網(wǎng)上下載收集好的文檔。
3 系統(tǒng)設(shè)計(jì)
該系統(tǒng)基于Java的B/S架構(gòu)。Web層采用流行的Struts2框架,頁面采用JSP技術(shù),持久性采用Hibernate技術(shù)來完成對數(shù)據(jù)庫的操作,業(yè)務(wù)層采用Spring技術(shù)。應(yīng)用服務(wù)器采用開源的Apache Tomcat,數(shù)據(jù)庫采用開源的MySQL數(shù)據(jù)庫,開發(fā)工作采用基于Eclipse的MyEclipse。利用JXL(Java Excel API)實(shí)現(xiàn)JSP中Excel的讀取與寫入。利用JavaMail API實(shí)現(xiàn)電子郵件的發(fā)送。而Excel文件的上傳和下載則使用Struts2提供的攔截器實(shí)現(xiàn)。
系統(tǒng)的架構(gòu)如圖4所示。
下面分別從界面、功能和數(shù)據(jù)庫方面對系統(tǒng)進(jìn)行設(shè)計(jì)。這里沒有描述用戶的管理。
3.1 界面設(shè)計(jì)
系統(tǒng)中的所有人員都可以發(fā)出文檔收集的請求,所有人都可以向系統(tǒng)提交文檔。涉及的界面如表1所示。
各界面的主要功能如下:
登錄界面,輸入用戶名和口令。登錄成功之后進(jìn)入功能選擇界面(welcome.jsp),如果登錄失敗重新回到登錄界面。
功能選擇界面,可以選擇的功能包括:發(fā)布的信息收集通知,點(diǎn)擊可以到信息收集情況查看界面(viewresult.jsp);發(fā)布新的信息收集,跳轉(zhuǎn)到發(fā)布信息收集的界面(addcollection.jsp);提交文檔,跳轉(zhuǎn)到信息選擇提交界面(uploadselect.jsp);察看歷史提交情況,跳轉(zhuǎn)到已提交文檔的查看界面viewdetail.jsp。
發(fā)布新的信息收集通知界面,設(shè)置信息收集的終止時(shí)間,設(shè)置信息收集的名稱,上傳描述上傳文檔需求的Excel文檔。
信息收集情況查看界面,可以查看哪些人已經(jīng)提交信息,哪些人還沒有提交,可以給沒有提交的人發(fā)送郵件,可以下載提交好的文檔。
信息提交選擇界面,用戶在功能選擇界面中選擇相應(yīng)的信息提交通知進(jìn)入到該界面,選擇具體的要提交的信息,跳轉(zhuǎn)到信息提交界面(uploadfile.jsp)。
信息提交選擇界面,選擇要提交的文檔提交。
以往提交情況查看界面,察看以往的提交情況。
各界面之間的關(guān)系如圖4所示。
3.2 數(shù)據(jù)庫設(shè)計(jì)
除了用戶信息之外,還需要保存與文檔收集和提交相關(guān)的信息。需要包括信息主要有兩個(gè)方面:收集通知的相關(guān)信息,收集的詳細(xì)信息。這里沒有給出用戶表。
收集通知的信息包括收集的編號、收集的名稱、要求、收集通知的發(fā)出者、發(fā)布的時(shí)間、描述需求的Excel文件、文檔提交的截止時(shí)間等。收集通知表(collections)的設(shè)計(jì)如表2所示。
收集的詳細(xì)信息包括收集的編號,需要收集的內(nèi)容,存儲的位置,相應(yīng)的數(shù)量,是否提交,提交時(shí)間。收集信息明細(xì)表(collectionsdetail)的設(shè)計(jì)如表3所示。
3.3 功能設(shè)計(jì)
主要功能包括:登錄;功能選擇;發(fā)布收集;上傳文檔;查看收集結(jié)果;察看歷史提交。
3.3.1 登錄
在登錄界面login.jsp輸入登錄信息之后提交給LoginAction處理;
LoginAction處理之后,如果登錄成功跳轉(zhuǎn)到3.3.2功能,否則跳轉(zhuǎn)到登錄界面。
3.3.2 功能選擇
功能入口:登錄成功。
處理過程如下:
1) 獲取當(dāng)前用戶的編號;
2) 根據(jù)當(dāng)前用戶編號和當(dāng)前日期從collections表中查詢正在進(jìn)行的收集和已經(jīng)完成的收集;
3) 根據(jù)當(dāng)前用戶編號和當(dāng)前日期從collectionsdetail表和collections表中查詢需要提交的文檔和已經(jīng)提交的文檔;
4) 在welcome.jsp中顯示查詢的結(jié)果。
可以從welcome.jsp跳轉(zhuǎn)到3.3.3、3.3.4、3.3.5和3.3.6功能。
3.3.3 發(fā)布收集功能
功能入口:功能選擇界面選擇發(fā)布收集。
處理流程如下:
1) 文檔收集人員設(shè)置一次文檔收集,并上傳目錄結(jié)構(gòu)對應(yīng)的Excel文檔;
2) 系統(tǒng)根據(jù)Excel文檔完成如下工作:
①解析Excel文檔,提取目錄信息和提交信息的人的信息,如果文件結(jié)構(gòu)不對,返回提交界面重新提交。
②根據(jù)提取的目錄信息在服務(wù)器上創(chuàng)建目錄結(jié)構(gòu)。
③根據(jù)提取的目錄信息與用戶信息修改數(shù)據(jù)庫。
信息收集表中添加一條記錄。
在收集明細(xì)表中添加與需要提交信息的用戶數(shù)相同的記錄。
④給需要提交文檔的用戶發(fā)送郵件;
查找到用戶的郵件地址。
創(chuàng)建郵件內(nèi)容。
給用戶發(fā)送郵件。
3.3.4 提交文檔
功能入口:功能選擇界面選擇提交文檔。
處理過程:
1) 獲取當(dāng)前用戶信息;
2) 從collectionsdetail表中查詢需要提交的信息;
3) 顯示在uploadselect.jsp界面中,用戶選擇具體要提交的文檔;
4) 顯示upload.jsp界面,用戶選擇要提交的文件;
5) 服務(wù)器把文件上傳到相應(yīng)的位置,并修改數(shù)據(jù)庫中相應(yīng)的狀態(tài)。
3.3.5 查看收集情況
功能入口:功能選擇界面選擇查看收集情況。
處理過程:
根據(jù)收集的編號,從collectionsdetail表中查詢相關(guān)的收集明細(xì);
顯示在viewresult.jsp界面,用戶可以下載收集的結(jié)果,可以給沒有提交文檔的人發(fā)送郵件,如果選擇發(fā)送郵件,系統(tǒng)會給相關(guān)人員發(fā)送郵件。
3.3.6 查看歷史提交情況
功能入口:功能選擇界面選擇查看歷史提交情況。
處理過程:
從數(shù)據(jù)庫中查詢某個(gè)歷史提交文檔;
顯示在viewdetail.jsp界面中。
4 結(jié)束語
該文所設(shè)計(jì)并實(shí)現(xiàn)的系統(tǒng)能夠提高文檔收集的效率,方便管理,減少管理員的工作量,具有一定的實(shí)用價(jià)值。
該系統(tǒng)雖然完成了基本功能,但是還存在有待改善的地方,還不能處理比較復(fù)雜的收集情況,需要在以后的工作中進(jìn)行改進(jìn)。
參考文獻(xiàn):
[1] 周暉,尹建偉,陳剛等.基于Struts框架的Web表單快速開發(fā)平臺[J].計(jì)算機(jī)應(yīng)用研究,2004(8):191-194.
[2] 馬溪駿,魯奎.利用JSP 實(shí)現(xiàn)基于MVC 模式的表單提交方法研究[J].計(jì)算機(jī)應(yīng)用研究,2004(2):151-154.
[3] 劉友生,陳一平,胡浪.基于數(shù)據(jù)表的動態(tài)表單處理技術(shù)[J].計(jì)算機(jī)工程與應(yīng)用,2004(34):199-201.
[4] 王瑞霞,隋宏偉,劉弘.基于XML的表單設(shè)計(jì)器構(gòu)件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2007,24(7):183-185.
[5] 陳尚松,杜旭英,俞歡軍.基于Struts+Hibernate+Spring框架的畢業(yè)設(shè)計(jì)管理系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(15):4054-4057.
[6] 陳天河.Struts,Hibernate,Spring集成開發(fā)寶典[M].北京:電子工業(yè)出版社,2007:640-644.
[7] 李向東.基于SSH框架的項(xiàng)目申報(bào)系統(tǒng)的研究與實(shí)現(xiàn)[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2008,28(24):148-150.