版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 設(shè)計(jì)論文題目:企業(yè)內(nèi)部感應(yīng)卡考勤</p><p> 管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p> 企業(yè)內(nèi)部感應(yīng)卡考勤管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 作
2、為一種有效的系統(tǒng)實(shí)現(xiàn)框架,Struts + Spring + Hibernate (SSH)已成為Java開發(fā)的主流體系。每個(gè)框架分別負(fù)責(zé)一個(gè)層次的實(shí)現(xiàn),每層在應(yīng)用程序中都有明確的責(zé)任。每一應(yīng)用層彼此獨(dú)立且保持一致。該框架以一種松散耦合的方式彼此作用,而無需負(fù)責(zé)低層的技術(shù)細(xì)節(jié),使得開發(fā)的系統(tǒng)層次清晰,對(duì)編程的持續(xù)、代碼的擴(kuò)展和系統(tǒng)的維護(hù)更加方便。</p><p> ExtJS是一個(gè)用JavaScript寫的,與
3、后臺(tái)技術(shù)無關(guān)的Ajax框架,用于在客戶端創(chuàng)建豐富多彩的Web應(yīng)用程序界面,給用戶交互一個(gè)很好的體驗(yàn);ExtJS也可以廣泛用在基于.Net、Java、Php等開發(fā)的系統(tǒng)應(yīng)用中。</p><p> 本文闡述了基于感應(yīng)卡采集數(shù)據(jù)而實(shí)現(xiàn)的一個(gè)考勤管理系統(tǒng),采用了ExtJS和SSH技術(shù)進(jìn)行了具體實(shí)現(xiàn)。本文首先介紹了系統(tǒng)的相關(guān)背景,所用技術(shù)的相關(guān)現(xiàn)狀和發(fā)展趨勢,并詳述了所需的技術(shù)背景;然后詳細(xì)分析了各系統(tǒng)功能模塊;接著從表
4、示層、業(yè)務(wù)層、數(shù)據(jù)訪問層分別對(duì)系統(tǒng)的設(shè)計(jì)進(jìn)行了闡述;最后敘述了系統(tǒng)的具體功能實(shí)現(xiàn)。該考勤系統(tǒng)在前端界面上用ExtJS來實(shí)現(xiàn),表示層使用了Struts技術(shù),業(yè)務(wù)層使用Spring來完成,持久層則采用現(xiàn)在很流行的輕量級(jí)組件Hibernate。該系統(tǒng)的整體結(jié)構(gòu)清晰明了,頁面美觀,呈現(xiàn)了一個(gè)很好的總體效果。</p><p> 關(guān)鍵詞:考勤管理系統(tǒng);SSH框架;ExtJS技術(shù)</p><p>
5、Design and Realization of Enterprise Attendance Management System Using Card</p><p><b> Abstract</b></p><p> As an effective system frame, Spring + Struts + Hibernate (SSH) has bec
6、ome the mainstream of system development based on Java. Each frame is responsible for one level. Each level in the application has clear responsibility. Each application layer is independent and consistent with each othe
7、r. This framework works with each other in a loosely coupled way, and every level does not care about low-level technical details, which makes developed system clearly, and bring more convenient for programs’ </p>
8、<p> ExtJS is an Ajax framework, written by JavaScript, which is nothing to do with background code. It is used for the client to create rich Web application interface, and gives user a very good experience for in
9、teraction; it also can be used in the system based on multiple development language, such as .Net, Java, Php and so on.</p><p> This dissertation introduces design and realization of attendance management s
10、ystem which using ExtJS and SSH technology, based on cards which is responsible for collecting data. At first, this dissertation presents the related technologies system used,these technologies’ development and trend; Th
11、en, it gives the detailed requirment analyse for system’s function modules; And then the system design from presentation layer, logic layer and persistence layer side is given in detail. Finally, it sho</p><p&
12、gt; Key Words:attendance management system; SSH frame; ExtJS technology</p><p><b> 目 錄</b></p><p><b> 1緒論1</b></p><p> 1.1項(xiàng)目背景1</p><p
13、> 1.2相關(guān)技術(shù)現(xiàn)狀與發(fā)展趨勢2</p><p> 1.3論文組織結(jié)構(gòu)3</p><p><b> 2技術(shù)背景5</b></p><p> 2.1SSH架構(gòu)5</p><p> 2.1.1SSH概述5</p><p> 2.1.2SSH架構(gòu)6</p
14、><p> 2.2ExtJS技術(shù)9</p><p> 2.2.1ExtJS概述9</p><p> 2.2.2ExtJS優(yōu)勢9</p><p> 3系統(tǒng)分析與設(shè)計(jì)11</p><p> 3.1系統(tǒng)概述11</p><p> 3.1.1 角色定義12</p&
15、gt;<p> 3.1.2 考勤管理12</p><p> 3.1.3 請(qǐng)假管理14</p><p> 3.2系統(tǒng)設(shè)計(jì)15</p><p> 3.2.1前臺(tái)設(shè)計(jì)16</p><p> 3.2.2表示層設(shè)計(jì)17</p><p> 3.2.3邏輯層設(shè)計(jì)18</p&
16、gt;<p> 3.2.4數(shù)據(jù)訪問層設(shè)計(jì)18</p><p> 3.2.5數(shù)據(jù)字典19</p><p> 4系統(tǒng)的實(shí)現(xiàn)27</p><p> 4.1ExtJS的相關(guān)實(shí)現(xiàn)27</p><p> 4.1.1ExtJS日期查詢請(qǐng)求實(shí)現(xiàn)27</p><p> 4.1.2ExtJS
17、多選擇按鈕實(shí)現(xiàn)29</p><p> 4.1.3ExtJS分頁實(shí)現(xiàn)30</p><p> 4.1.4ExtJS分組實(shí)現(xiàn)31</p><p> 4.2SSH的配置實(shí)現(xiàn)32</p><p> 4.2.1web.xml 配置32</p><p> 4.2.2Struts配置33</p&g
18、t;<p> 4.2.3Spring配置33</p><p> 4.2.4Hibernate配置34</p><p> 4.3數(shù)據(jù)相關(guān)操作35</p><p><b> 5結(jié)論37</b></p><p> 致 謝39</p><p> 參 考
19、文 獻(xiàn)41</p><p><b> 緒論</b></p><p><b> 項(xiàng)目背景</b></p><p> 隨著經(jīng)濟(jì)的高速發(fā)展,以及高科技對(duì)經(jīng)濟(jì)的影響,用計(jì)算機(jī)來進(jìn)行考勤的管理也成為現(xiàn)代化企業(yè)運(yùn)作不可或缺的一部分??记诠芾硐到y(tǒng)是公司對(duì)員工進(jìn)行考勤記錄的管理機(jī)制,主要用于對(duì)公司員工上、下班進(jìn)行一般考勤以及包括員
20、工病假、事假、出差等特殊考勤。該系統(tǒng)還包括了管理員工信息如:姓名、員工號(hào)、所在部門、職務(wù)、聯(lián)系方式等基本信息。現(xiàn)在利用計(jì)算機(jī)管理考勤工作,不僅大大降低了考勤人員的工作量,提高了工作效率,使原本復(fù)雜的工作變得簡單而輕松;使企業(yè)減少了對(duì)考勤工作的人力和物力的投入,也保證了考勤的準(zhǔn)確性和透明度[1]。</p><p> 多少年來,考勤方式也隨著科學(xué)技術(shù)的進(jìn)步不斷發(fā)展和完善。最傳統(tǒng)的人工登記考勤方式,由于存在代簽、不如
21、實(shí)簽、人工管理數(shù)據(jù)等缺點(diǎn)早已被淘汰。打卡是目前考勤的主要方式,但代打卡的問題仍然存在。指紋考勤是目前研究和開發(fā)的熱點(diǎn),市場上也出現(xiàn)了不少產(chǎn)品。它擁有指紋的唯一性、方便性和不丟失的特點(diǎn),并能從根本上解決代考勤問題。但它存在一個(gè)嚴(yán)重問題,即不衛(wèi)生。單位每位職工每天幾次地觸摸指紋閱讀器,使指紋閱讀器成為疾病傳播的高風(fēng)險(xiǎn)地,且職工人人不能回避。由于SARS等強(qiáng)致命性疾病的爆發(fā),人們的衛(wèi)生健康意識(shí)增強(qiáng),因此尋找一種非接觸性考勤方式非常必要。各單位
22、為加強(qiáng)安全保衛(wèi),都制作了感應(yīng)卡,上有員工照片,姓名、部門、職務(wù)、編號(hào)(編號(hào)和職工一一對(duì)應(yīng))等,并有嚴(yán)格的佩戴制度,所以在這里提出以感應(yīng)卡作為識(shí)別身份的實(shí)體,通過攝像頭實(shí)時(shí)監(jiān)視識(shí)別。借助網(wǎng)絡(luò)能滿足分布式單位的需要,與人事管理系統(tǒng)聯(lián)合,給企業(yè)帶來現(xiàn)代化的人事管理[2]。</p><p> 事實(shí)上,現(xiàn)在考勤系統(tǒng)已經(jīng)有很多,但是采用基于SSH的框架模式和結(jié)合EXTJS頁面工具來實(shí)現(xiàn)的考勤系統(tǒng),有著它獨(dú)特的持久穩(wěn)定優(yōu)勢和
23、清晰美觀的界面。因此,本課題的研究目的是使得考勤系統(tǒng)更加完善和美觀。這種走在尖端的想法與構(gòu)思相結(jié)合,定能擦出絢爛的火花,讓考勤管理不僅在技術(shù)上得到可靠的保障,更能呈現(xiàn)出美的享受。</p><p> 相關(guān)技術(shù)現(xiàn)狀與發(fā)展趨勢</p><p> 隨著科學(xué)技術(shù)的發(fā)展,考勤系統(tǒng)一步步的在走向完善。</p><p> 系統(tǒng)一般將IC卡作為系統(tǒng)使用卡,IC卡分為接觸式和非接
24、觸式(Contactless Card)。接觸式卡片存在著操作慢、環(huán)境適應(yīng)性差、可靠性欠佳等問題,這些先天不足限制了它們?cè)谝恍┲匾I(lǐng)域應(yīng)用。九十年代中期出現(xiàn)的非接觸式IC卡, 以其獨(dú)有的非接觸讀卡方式、獨(dú)有的惡劣環(huán)境適應(yīng)能力、優(yōu)良的電氣和機(jī)械特性、極高的安全性,受各界用戶的青睞,而且將逐漸取代現(xiàn)有的接觸式IC卡,成為應(yīng)用最為廣泛的主流卡[3]。并且在目前的考勤系統(tǒng)行業(yè),有著這樣的現(xiàn)狀: -wXeue},>
25、:hZM$1) 硬件廠家眾多,考勤機(jī)性能質(zhì)量不一,作為直接使用者的工廠,難以選擇; < Q~N9W 2) 隨機(jī)附送的考勤軟件,因?yàn)楣δ芎唵危蛻敉茈y實(shí)施成功; O`@Nl 3) 硬件廠家提供的軟件,不會(huì)給客戶進(jìn)行定制軟件開發(fā); |fgUW . 4) 很少有以考勤軟件開發(fā)為主要業(yè)務(wù)的軟件供應(yīng)商,多數(shù)是經(jīng)銷,服務(wù)等方面難以保障。 </p>
26、;<p> 考勤管理系統(tǒng)是一個(gè)相對(duì)復(fù)雜的系統(tǒng),每個(gè)公司都有各自的特點(diǎn),很多客戶因?yàn)閷?duì)軟件的了解不夠深入,一旦實(shí)施后,才發(fā)現(xiàn)系統(tǒng)并不適合相對(duì)的需求,實(shí)施非常困難。因此實(shí)施不成功的因素,決大多數(shù)都是因?yàn)檐浖钠焚|(zhì)和服務(wù)支持,很少是因?yàn)榭记跈C(jī)的原因而失敗。GOc </p><p> 而在技術(shù)方面,經(jīng)過數(shù)年的競爭和淘汰,Java界的各種框架找到了自己應(yīng)有的位置[4]。Spring+Hibern
27、ate+Struts已成為Java開發(fā)的主流體系[5]。Struts只是一個(gè)MVC框架, 用于快速開發(fā)Java Web應(yīng)用。Struts[6]實(shí)現(xiàn)的重點(diǎn)在于C (Controller),包括ActionServlet/RequestProcessor和開發(fā)者定制的Action,也為V(View)提供了一系列定制標(biāo)簽。但Struts幾乎沒有涉及M(Model),所以Struts可以采用JAVA實(shí)現(xiàn)的任何形式的商業(yè)邏輯;Spring[7]是
28、一個(gè)輕型容器,其核心是BeanFactory,用以構(gòu)造開發(fā)者所需要的M(Model)。在此基礎(chǔ)之上,Spring提供了AOP(Aspect-Oriented Programming, 面向?qū)用娴木幊蹋┑膶?shí)現(xiàn),用它來提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù);對(duì)BeanFactory的擴(kuò)展ApplicationContext更加方便開發(fā)者實(shí)現(xiàn)J2EE的應(yīng)用;DAO/ORM的實(shí)現(xiàn)方便開發(fā)者進(jìn)行數(shù)據(jù)庫的開發(fā);Web MVC和Spring We
29、b提供了J</p><p> 在這個(gè)體系中,Spring+Hibernate的地位應(yīng)該說短期內(nèi)是難以撼動(dòng)了[5]。除了新興的Jboss Seam作為挑戰(zhàn)者之外,幾乎難有勁敵。SSH把數(shù)據(jù)庫,實(shí)體bean,業(yè)務(wù)邏輯bean, 都以配置文件的形式整合在一起,封裝成MVC模式. 對(duì)于編程的持續(xù)化,擴(kuò)展化,維護(hù)化都很方便。而且框架的融合,代碼的耦合都很不錯(cuò), 而以上SSH的這些優(yōu)點(diǎn)[9]都是jsp+servlet+ja
30、vaBean這種傳統(tǒng)模式不容易實(shí)現(xiàn)的。</p><p> 在界面的美化方面,ExtJS使得頁面相當(dāng)美觀,讓人賞心悅目。ExtJS在2.0之后的界面真的是沒得說,不僅華麗,而且相對(duì)很成熟。加上ExtJS是一個(gè)Ajax框架,是一個(gè)用JavaScript寫的,用于在客戶端創(chuàng)建豐富多彩的Web應(yīng)用程序界面。ExtJS可以用來開發(fā)RIA也即富客戶端的AJAX應(yīng)用,主要用于創(chuàng)建前端用戶界面,是一個(gè)與后臺(tái)技術(shù)無關(guān)的前端Aja
31、x框架。因此,可以把ExtJS用在.Net、Java、Php等各種開發(fā)語言開發(fā)的應(yīng)用中。</p><p> 在網(wǎng)絡(luò)上,考勤系統(tǒng)已經(jīng)出現(xiàn)了各種各樣的版本,可以說,在技術(shù)上都比較的成熟,但是這只好像是人類物質(zhì)生活的滿足;人類除了在物質(zhì)上追求高品質(zhì)外,還需要精神上的高享受。因此本課題將結(jié)合這三種構(gòu)想來進(jìn)一步完善考勤管理系統(tǒng)。</p><p><b> 論文組織結(jié)構(gòu)</b>
32、;</p><p> 本論文總共分為五章:</p><p><b> 緒論 </b></p><p> 緒論部分首先主要闡述了項(xiàng)目背景,然后對(duì)相關(guān)技術(shù)ExtJS和SSH框架的現(xiàn)狀和發(fā)展趨勢進(jìn)行了一定的說明描述。</p><p><b> 技術(shù)背景 </b></p><p&
33、gt; 技術(shù)背景這一部分又可以叫做技術(shù)分析與探討,其主要是來詳細(xì)的介紹系統(tǒng)中使用的ExtJS框架和SSH相關(guān)技術(shù),其中包括詳述了SSH架構(gòu)的基本原理和特點(diǎn),ExtJS技術(shù)的發(fā)展由來和優(yōu)勢。</p><p><b> 系統(tǒng)分析與設(shè)計(jì) </b></p><p> 這一部分著重闡述考勤管理系統(tǒng)設(shè)計(jì)的思想以及采用的一些方法。首先對(duì)系統(tǒng)進(jìn)行概述,明確系統(tǒng)的需求,確定模塊的
34、劃分;接著描述系統(tǒng)的設(shè)計(jì)思想,所運(yùn)用到的方法和框架模式,還有數(shù)據(jù)庫的詳細(xì)設(shè)計(jì)。</p><p><b> 系統(tǒng)的實(shí)現(xiàn) </b></p><p> 這里主要闡述系統(tǒng)實(shí)現(xiàn)過程中的一些重要的操作。首先利用界面的截圖和相應(yīng)的代碼說明基于ExtJS控制的表示層的實(shí)現(xiàn),這里只選取了較重要的功能來進(jìn)行說明;然后具體闡述SSH框架的配置內(nèi)容;最后對(duì)數(shù)據(jù)的相關(guān)操作進(jìn)行說明。<
35、/p><p><b> 結(jié)論 </b></p><p> 最后一章對(duì)系統(tǒng)開發(fā)的相關(guān)成果進(jìn)行總結(jié),并提出一些待以后解決的問題。</p><p><b> 技術(shù)背景</b></p><p> 本系統(tǒng)的實(shí)現(xiàn)主要使用了SSH架構(gòu)和ExtJS技術(shù),使用SSH架構(gòu)使得系統(tǒng)的層次更清晰,結(jié)構(gòu)更穩(wěn)定,維護(hù)更簡便
36、;使用ExtJS來實(shí)現(xiàn)頁面使得系統(tǒng)的界面賞心悅目,讓用戶有個(gè)很好的交互體驗(yàn)。因此,本課題的研究目的是使得考勤系統(tǒng)更加完善和美觀。這種走在尖端的想法與構(gòu)思相結(jié)合,定能擦出絢爛的火花,讓考勤管理不僅在技術(shù)上得到可靠的保障,更能呈現(xiàn)出美的享受。接下來就著重闡述一下SSH架構(gòu)和ExtJS技術(shù),從而能更清楚的了解它們,使用它們。</p><p><b> SSH架構(gòu)</b></p>&
37、lt;p><b> SSH概述</b></p><p> SSH,是Struts、Spring和Hibernate相結(jié)合的簡稱。框架說白了就是Java工作者多年以來總結(jié)出的一些開發(fā)標(biāo)準(zhǔn)[10]。讓開發(fā)者可以以成功的經(jīng)驗(yàn)?zāi)J絹黹_發(fā)自已的系統(tǒng),一般使用框架的好處是:</p><p> ◆ 在好的框架下,開發(fā)者只需要寫一些必須的代碼;他們不需要直接接觸底層的AP
38、I;</p><p> ◆ 經(jīng)過良好設(shè)計(jì)的框架可以為程序提供清晰的結(jié)構(gòu)并且提高程序的內(nèi)聚性,同時(shí)清晰的結(jié)構(gòu)使得其他人可以更容易加入項(xiàng)目;</p><p> ◆ 一個(gè)容易使用的框架可以通過一些例子和文檔為用戶提供最佳實(shí)踐; </p><p> ◆ 采用成功的框架的代碼比自己的代碼容易測試。 </p><p> J2EE本身提供了一些框架
39、。比如說,Enterprise Java-Beans (EJB) container或者 Servlet engine。但是這些框架一般在中小工程中都不會(huì)使用,會(huì)讓開發(fā)者把大量的時(shí)間浪費(fèi)在開發(fā)框架上[11]。而現(xiàn)在比較流行開源框架,主要是Struts,Hibernate,Spring等。其中表示層用Struts[6],業(yè)務(wù)邏輯層用Spring[7],數(shù)據(jù)訪問層用Hibernate[8]。Struts是在原有MVC模式基礎(chǔ)上實(shí)現(xiàn)在代碼分離
40、等功能 [12];而hibernate可以把關(guān)系型數(shù)據(jù)庫轉(zhuǎn)換成在JAVA中的面向?qū)ο髞硎褂谩亩岄_發(fā)者在開發(fā)時(shí)不需要直接寫SQL語句,比如“database.getName()”就可以直接把數(shù)據(jù)庫中的用戶名取出來[13];J2EE框架被大規(guī)模地運(yùn)用到項(xiàng)目中,而項(xiàng)目總要負(fù)責(zé)這些框架以及自己業(yè)務(wù)代碼的連接,使之真正融合到一起。Spring就是專注于這個(gè)問題的,它和Hibernate融合的很好。 </p><p>
41、 這三種框架在一起并不沖突,所以現(xiàn)在最常用的框架就是Struts+Spring+Hibernate。就像蓋房子一樣,先把框架搭好,進(jìn)而基于其編寫的代碼就很規(guī)范。</p><p><b> SSH架構(gòu)</b></p><p> 圖2.1 Struts、Spring和Hibernate框架組裝</p><p> 大多數(shù)不復(fù)雜的Web應(yīng)用都能被
42、分成至少四個(gè)各負(fù)其責(zé)的層次[14]。這些層次是:表示層(presentation)、持久層(persistence)、業(yè)務(wù)層(business)、領(lǐng)域模型層(domain model)。每層在應(yīng)用程序中都有明確的責(zé)任,不應(yīng)該和其它層混淆功能。每一應(yīng)用層應(yīng)該彼此獨(dú)立但要給他們之間放一個(gè)通訊接口。讓開發(fā)者從審視各個(gè)層開始,討論這些層應(yīng)該提供什么和不應(yīng)該提供什么[15]。</p><p><b> 1) 表
43、現(xiàn)層</b></p><p> 在一個(gè)典型的Web應(yīng)用的一端是表現(xiàn)層。很多Java開發(fā)者也理解Struts所提供的。但大多數(shù)時(shí)候,他們把像業(yè)務(wù)邏輯之類的耦合的代碼放進(jìn)了org.apache.struts.Action[16]。所以,讓開發(fā)者在像Struts這樣一個(gè)框架應(yīng)該提供什么上取得一致意見。這兒是Struts負(fù)責(zé)的: ◆ 為用戶管理請(qǐng)求和響應(yīng); ◆ 提供一個(gè)控制器代理調(diào)用業(yè)務(wù)邏輯和其
44、它上層處理; ◆ 處理從其它層擲出給一個(gè)Struts Action的異常; ◆ 為顯示提供一個(gè)模型; ◆ 執(zhí)行用戶接口驗(yàn)證。</p><p> 2) 業(yè)務(wù)層 在一個(gè)典型的Web應(yīng)用程序的中間的組件是業(yè)務(wù)層或服務(wù)層。從編碼的視角來看,這個(gè)服務(wù)層是最容易被忽視的一層。不難在用戶接口層或者持久層里找到散布在其中的這種類型的代碼,但是這不是正確的地方,因?yàn)檫@導(dǎo)致了應(yīng)用程序的緊耦合,這樣一來,隨著時(shí)
45、間推移代碼將很難維護(hù)[17]。幸好,針對(duì)這一問題有好幾種Frameworks存在。在這個(gè)領(lǐng)域兩個(gè)最流行的框架是Spring和PicoContainer,它們叫作微容器,你可以不費(fèi)力不費(fèi)神的把你的對(duì)象連在一起。所有這些框架都工作在一個(gè)簡單的叫作“依賴注入”(也通稱“控制反轉(zhuǎn)”)的概念上。該論文將著眼于Spring的為指定的配置參數(shù)通過bean屬性的setter注入的使用。Spring也提供了一個(gè)構(gòu)建器注入的復(fù)雜形式作為setter注入的一
46、個(gè)替代。對(duì)象們被一個(gè)簡單的XML文件連在一起,這個(gè)XML文件含有到像事務(wù)管理器、對(duì)象工廠、包含業(yè)務(wù)邏輯的服務(wù)對(duì)象和數(shù)據(jù)存取對(duì)象這些對(duì)象的引用。業(yè)務(wù)層應(yīng)該負(fù)責(zé)下面這些事情[18]: ◆ 管理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)驗(yàn)證; ◆ 管理事務(wù); ◆ 預(yù)留和其它層交互的接口; ◆ 管理業(yè)務(wù)層對(duì)象之</p><p><b> 3) 持久層</b></p><p&
47、gt; 在典型web應(yīng)用的另一端是持久層。這通常是使事情迅速失控的地方。開發(fā)者低估了構(gòu)建他們自己的持久層框架的挑戰(zhàn)性。一般來說,機(jī)構(gòu)內(nèi)部自己寫的持久層不僅需要大量的開發(fā)時(shí)間,而且還經(jīng)常缺少功能和變得難以控制。有幾個(gè)開源的“對(duì)象-關(guān)系映射”框架非常成功的解決了這些問題。尤其是,Hibernate框架為java提供了“對(duì)象-關(guān)系持久化”機(jī)制和查詢服務(wù)。Hibernate對(duì)那些已經(jīng)熟悉了SQL和JDBC API的Java開發(fā)者有一個(gè)適中的學(xué)
48、習(xí)曲線。Hibernate持久對(duì)象是基于簡單舊式的Java對(duì)象和Java集合。此外,使用Hibernate并不妨礙你正在使用的IDE[19]。</p><p> Hibernate本質(zhì)上還是包裝了JDBC來進(jìn)行數(shù)據(jù)庫操作。由于Hibernate對(duì)JDBC的調(diào)用進(jìn)行了優(yōu)化,并且盡可能的使用最優(yōu)化的、最高效的JDBC調(diào)用,所以性能相當(dāng)令人滿意。Hibernate是輕量級(jí)的封裝,避免了過多復(fù)雜的功能,減輕了程序員的負(fù)
49、擔(dān)。同時(shí),它也是一個(gè)開源的代碼,提供開放的API,用戶可以自行擴(kuò)充其功能。Hibernate在大多數(shù)主流J2EE應(yīng)用服務(wù)器的受管理環(huán)境中都可以良好運(yùn)作,Hibernate也可以作為獨(dú)立應(yīng)用程序運(yùn)行[20]。</p><p> Hibernate的精髓是持久層實(shí)現(xiàn)模式。它完全是針對(duì)對(duì)象的持久化,即把一個(gè)普通的Java對(duì)象映射到關(guān)系數(shù)據(jù)庫中。面向?qū)ο笤O(shè)計(jì)中的繼承與多態(tài)機(jī)制在Hibernate里也得到了支持,在數(shù)據(jù)查
50、詢中,它支持動(dòng)態(tài)Query,并提供對(duì)十六種數(shù)據(jù)庫語言的支持,它沿用傳統(tǒng)數(shù)據(jù)庫的事務(wù)模型[21],使程序員不必為新的事務(wù)模型大傷腦筋[22]。持久層應(yīng)該負(fù)責(zé)下面這些事情: ◆ 查詢相關(guān)的信息成為對(duì)象。Hibernate通過一種叫作HQL的面向?qū)ο蟮牟樵冋Z言或者使用條件表達(dá)式API來做這個(gè)事情。 HQL非常類似于SQL,只是把SQL里的table和columns用Object和它的fields代替。還有一些新的專用的HQL語言成分要學(xué),
51、不過,它們?nèi)菀桌斫舛椅臋n做得好。HQL是一種使用來查詢對(duì)象的自然語言,花很小的代價(jià)就能學(xué)習(xí)它?! ?保存、更新、刪除儲(chǔ)存在數(shù)據(jù)庫中的信息。 ◆ 像Hibernate這樣的高級(jí)“對(duì)象-關(guān)系”映射框架提供對(duì)大多數(shù)主流SQL數(shù)據(jù)庫的支持,它們支持“父/子”關(guān)系、事務(wù)處理、繼承和多態(tài)[23]。</p><p><b> 4) 領(lǐng)域模型層</b></p><p>
52、 領(lǐng)域?qū)ο髮佑赡切┐憩F(xiàn)實(shí)世界中的業(yè)務(wù)對(duì)象的對(duì)象們組成,比如:一份訂單、訂單項(xiàng)、產(chǎn)品等等。這個(gè)層讓開發(fā)者停止建立和維護(hù)不必要的數(shù)據(jù)傳輸對(duì)象(或者叫作DTOs),來匹配他們的領(lǐng)域?qū)ο?。例如,Hibernate允許你把數(shù)據(jù)庫信息讀進(jìn)領(lǐng)域?qū)ο蟮囊粋€(gè)對(duì)象圖,這樣你可以在連接斷開的情況下把這些數(shù)據(jù)顯示到UI層。那些對(duì)象也能被更新和送回到持久層并在數(shù)據(jù)庫里更新。而且,你不必把對(duì)象轉(zhuǎn)化成DTOs,因?yàn)镈TOs在不同的應(yīng)用層間移動(dòng),可能在轉(zhuǎn)換中丟失[
53、24]。這個(gè)模型使得Java開發(fā)者自然地以一種面向?qū)ο蟮娘L(fēng)格和對(duì)象打交道,沒有附加的編碼。</p><p><b> ExtJS技術(shù)</b></p><p><b> ExtJS概述</b></p><p> ExtJS最開始基于YUI技術(shù),YUI是Yahoo! UI Library的簡稱,是一個(gè)開源的JavaScr
54、ipt庫,與Ajax、DHTML和DOM等技術(shù)一起使用可以用于創(chuàng)建富有交互性的Web應(yīng)用,它還包含豐富的CSS資源。 ExtJS由開發(fā)人員Jack Slocum開發(fā),通過參考Java Swing等機(jī)制來組織可視化組件,無論從UI界面上CSS樣式的應(yīng)用,還是數(shù)據(jù)解析上的異常處理,都可算是一款不可多得的JavaScript客戶端技術(shù)的精品。</p><p> Ext最初是YUI的一個(gè)擴(kuò)展,然而,它現(xiàn)在也可以
55、擴(kuò)展自JQuery和Prototype。自1.1版開始,Ext已經(jīng)可以獨(dú)立運(yùn)行,不需要依賴于那些外部庫,雖然它仍然是可被集成的一個(gè)選項(xiàng)。現(xiàn)在Ext 2.0版可以使用許多不同的基礎(chǔ)庫,例如YUI、JQuery和Prototype,或者是可以獨(dú)立的運(yùn)行。</p><p> ExtJS是JavaScript面組件(component)的開發(fā)框架,其內(nèi)置許多優(yōu)秀的可復(fù)用的組件框架,其友好的界面風(fēng)格,使得開發(fā)人員不要美工
56、的支持也能開發(fā)出,豐富的頁面。另外ExtJS加強(qiáng)了對(duì)Ajax的支持,許多優(yōu)秀的組件,比如Reader,Proxy使開發(fā)人員可以擺脫Ajax異步的支持,從而專注在功能設(shè)計(jì)。 ExtJS是一個(gè)很好的Ajax框架,可以用來開發(fā)富有華麗外觀的富客戶端應(yīng)用,主要是企業(yè)信息化軟件,網(wǎng)站后臺(tái)等,能使B/S應(yīng)用更加具有活力。ExtJS是一個(gè)用JavaScript編寫,與后臺(tái)技術(shù)無關(guān)的前端Ajax框架[25]。因此,可以把ExtJS用在.Net、
57、Java、Php等各種開發(fā)語言開發(fā)的應(yīng)用程序中。</p><p><b> ExtJS優(yōu)勢</b></p><p> ExtJS是一種用于開發(fā)富客戶端Web應(yīng)用程序的JavaScript技術(shù),它不需要為客戶端安裝任何插件就可以實(shí)現(xiàn)豐富多彩的界面效果,是進(jìn)行富客戶端開發(fā)的理想選擇之一。</p><p> ExtJS的主要功能包括:</
58、p><p> ◆ 對(duì)標(biāo)準(zhǔn)信息提示框的擴(kuò)展;</p><p> ◆ 對(duì)標(biāo)準(zhǔn)表單組件的擴(kuò)展;</p><p> ◆ 支持面板及各種布局方式;</p><p> ◆ 提供了大量的工具類和工具方法;</p><p> ◆ 提供了增強(qiáng)的事件機(jī)制;</p><p> ◆ 提供了對(duì)Ajax功能的支持;
59、</p><p> ◆ 具有結(jié)構(gòu)完整的數(shù)據(jù)模型;</p><p> ◆ 提供了靈活易用的模板功能;</p><p> ◆ 提供了美觀實(shí)用的各種組件(其中的代表是表格組件Grid和樹型組件Tree)。</p><p> ExtJS是一個(gè)純前臺(tái)的JavaScript框架,他沒有提供后臺(tái)部分的實(shí)現(xiàn),但這并不是說ExtJS與后臺(tái)技術(shù)的結(jié)合非常
60、困難,恰恰相反,ExtJS可以與各種后臺(tái)技術(shù)進(jìn)行結(jié)合,前后臺(tái)之間通過XML或者JSON實(shí)現(xiàn)數(shù)據(jù)傳遞,目前后臺(tái)生成XML或者JSON的技術(shù)已經(jīng)非常成熟,因此只要對(duì)后臺(tái)進(jìn)行很小的修改就可以將ExtJS應(yīng)用于現(xiàn)有項(xiàng)目。</p><p> ExtJS最大的優(yōu)勢在于它將Web應(yīng)用程序的操作方式向傳統(tǒng)桌面應(yīng)用程序的操作方式進(jìn)行轉(zhuǎn)化甚至消除了這種差異,從根本上改善了用戶的使用體驗(yàn),這是ExtJS應(yīng)用前景廣闊的主要原因;其次使
61、用ExtJS對(duì)瀏覽器沒有任何要求可以說是一種綠色的富客戶端實(shí)現(xiàn)方式,這是它應(yīng)用前景廣闊的第二個(gè)原因;另外ExtJS提供的各種組件可以用更加標(biāo)準(zhǔn)的方式展示數(shù)據(jù),進(jìn)而降低了開發(fā)難度,這可以說是它應(yīng)用前景廣闊的第三點(diǎn)原因。</p><p><b> 系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> 系統(tǒng)概述</b></p><p
62、> 該系統(tǒng)是一個(gè)員工考勤管理系統(tǒng),該系統(tǒng)通過記錄員工每天的出勤記錄以及請(qǐng)假記錄,達(dá)到管理員工出勤以及為財(cái)務(wù)部門核算工資提供統(tǒng)計(jì)數(shù)據(jù)。因此該系統(tǒng)的目的是管理以及反映員工的出勤,為財(cái)務(wù)部門生成員工在計(jì)薪周期內(nèi)的出勤統(tǒng)計(jì)。系統(tǒng)的輸入有員工刷卡數(shù)據(jù),員工請(qǐng)假數(shù)據(jù)。該系統(tǒng)暫不支持對(duì)員工加班信息的統(tǒng)計(jì),早班/夜班的異動(dòng),所有員工只有白班。也不支持對(duì)倒班的記錄。</p><p> 系統(tǒng)baseinfo表是基本表,AM
63、S通過同步公司LDAP服務(wù)器獲得,該表儲(chǔ)存了公司所有員工的基本信息,所以AMS不能編輯。前臺(tái)“Personal Message” 頁面顯示員工的基本信息,該信息通過查詢數(shù)據(jù)庫baseinfo表獲得。</p><p><b> AMS事件:</b></p><p> 1) 刷卡事件:刷卡記錄分別記錄上午和下午兩個(gè)刷卡記錄,上午最早的一次刷卡,下午最晚的一次刷卡。上午
64、和下午以中午1點(diǎn)為界限。</p><p> 2) 請(qǐng)假事件:員工在每天只能擁有一個(gè)請(qǐng)假單,AMS在保存請(qǐng)假單時(shí)會(huì)進(jìn)行判斷。</p><p> AMS數(shù)據(jù)統(tǒng)計(jì)背景:</p><p> 財(cái)務(wù)部門把每月的第一日到最后一日作為一個(gè)計(jì)薪周期,在計(jì)薪周期結(jié)束之后的10天,財(cái)務(wù)部門根據(jù)AMS的統(tǒng)計(jì)數(shù)據(jù)核算員工上個(gè)計(jì)薪周期的工資所得。因此員工和管理員必須在計(jì)薪周期結(jié)束后的10
65、天完成請(qǐng)假單審核工作。在AMS的“Attand details”, “Request for leaving” 和“Manager” 頁面都是以計(jì)薪周期為功能單位。比如,“Attand details” 頁面中,員工在1號(hào)到10號(hào)查詢到的是當(dāng)前計(jì)薪周期的數(shù)據(jù),也就是上月第一天到最后一天的異常出勤數(shù)據(jù)。</p><p> 系統(tǒng)從功能上劃分了兩大模塊:考勤/請(qǐng)假管理,員工計(jì)薪周期出勤/請(qǐng)假統(tǒng)計(jì);為此系統(tǒng)定義了Emp
66、loyee,Manager兩種角色。</p><p> 該系統(tǒng)主要有兩大功能:</p><p> 1) 生成出勤統(tǒng)計(jì)信息,以供會(huì)計(jì)核算工資;</p><p> 2) 員工可以查詢自己的刷卡記錄,提交/查詢請(qǐng)假單。</p><p> 3.1.1 角色定義</p><p> 系統(tǒng)簡單定義了三個(gè)大角色:Employ
67、ee,Manager和HR。</p><p> 1) 普通員工(Employee):</p><p> 登錄時(shí)選擇員工。普通員工擁有的功能。</p><p> ◆ 查閱本人考勤以及統(tǒng)計(jì)信息;</p><p> ◆ 對(duì)本人考勤持有異議,可以進(jìn)行申訴。申訴后由經(jīng)理予以審核(確認(rèn)或者拒絕); </p><p> ◆
68、 添加/修改年假、事假以及病假請(qǐng)假單。</p><p> 2) 員工管理員(Manager):</p><p> 登錄時(shí)選擇管理員的。他們登錄后會(huì)多出一個(gè)審核員工請(qǐng)假數(shù)據(jù)的頁面。</p><p><b> ◆ 查閱本人考勤;</b></p><p> ◆ 對(duì)本人考勤持有異議,可以進(jìn)行申訴。系統(tǒng)暫時(shí)沒有設(shè)置更高的管
69、理員,在AMS中管理員可以審核自己的申訴;</p><p> ◆ 添加/修改年假,事假或者病假請(qǐng)假單; </p><p> ◆ 審核員工的請(qǐng)假記錄。</p><p><b> 3) 財(cái)務(wù)部門:</b></p><p> 系統(tǒng)中沒有設(shè)置該角色,AMS的“Attendance Statistic” 頁面統(tǒng)計(jì)生成員
70、工在計(jì)薪周期內(nèi)的出勤以及請(qǐng)假詳細(xì)記錄,以及計(jì)薪天數(shù)。</p><p> 3.1.2 考勤管理</p><p> 考勤管理模塊主要是對(duì)考勤記錄的管理,主要包括:</p><p> 1) 考勤記錄的導(dǎo)入:從門禁卡系統(tǒng)的數(shù)據(jù)庫中讀入數(shù)據(jù),進(jìn)行處理后保存到系統(tǒng)數(shù)據(jù)庫,該部分在AMS沒有實(shí)現(xiàn),AMS通過直接往數(shù)據(jù)庫插入數(shù)據(jù)模擬。</p><p>
71、 2) 考勤記錄的查詢:系統(tǒng)設(shè)計(jì)“Time Sheet” 頁面, 員工在該頁中輸入查詢開始日期和結(jié)束日期,可以查詢到員工在每一個(gè)正常工作日的刷卡記錄。</p><p> 3) 考勤記錄的申訴:系統(tǒng)設(shè)計(jì)了“Attandance Details” 頁面,該頁面會(huì)列出員工在該計(jì)薪周期內(nèi)的所有異常出勤記錄,在該頁面員工可以對(duì)異常出勤進(jìn)行申訴,添加申訴報(bào)告。</p><p> 4) 考勤記錄的
72、確認(rèn):系統(tǒng)設(shè)計(jì)了“Manager” 頁面和“Holiday” 頁面?!癕anager”頁面,只有管理員登錄時(shí)才顯示。為了方便管理員確認(rèn)考勤記錄,在右邊添加一個(gè)導(dǎo)航樹,在該導(dǎo)航樹上列出所有部門員工,管理員雙擊員工自動(dòng)打開“Manager”頁面并載入該員工在該計(jì)薪周期內(nèi)的所有請(qǐng)假和申訴記錄。管理員可以根據(jù)員工提供的請(qǐng)假和申訴請(qǐng)求,予以通過審核和不通過審核。對(duì)于請(qǐng)假單和申訴,在管理員為處理之前是“未審核”狀態(tài),管理員可將其審核通過和不通過。如
73、圖3.1所示。在“Holiday” 頁面將統(tǒng)計(jì)出員工在全年的病假,事假和年假的統(tǒng)計(jì)。</p><p> 5) 考勤記錄匯總:系統(tǒng)設(shè)計(jì)了“Attandence Statistic”頁面和“Holiday” 頁面?!癆ttandance Statistic” 頁面顯示員工在過去12個(gè)月內(nèi)的出勤統(tǒng)計(jì)信息,財(cái)務(wù)部門可以在該頁中獲得計(jì)薪周期的出勤統(tǒng)計(jì)輸出,以供核算工資。在“Holiday” 頁面中統(tǒng)計(jì)出員工在該月的詳細(xì)出
74、勤統(tǒng)計(jì)。如圖3.2所示。</p><p> 圖3.1 考勤管理模塊流程圖</p><p> 圖3.2 考勤記錄匯總流程圖</p><p> 3.1.3 請(qǐng)假管理</p><p> 系統(tǒng)只支持如下請(qǐng)假類型:申訴、病假、事假和年假。一天只能有一個(gè)請(qǐng)假單。月底必須要提交該月的所有請(qǐng)假單,否則視為無效??梢灾С挚缭碌恼?qǐng)假。默認(rèn)沒有跨年的請(qǐng)假單
75、,如果請(qǐng)假單確實(shí)跨年則在生成statistics時(shí),系統(tǒng)自動(dòng)重新生成新請(qǐng)假單。所有請(qǐng)假數(shù)據(jù)在跨年以后自動(dòng)重置(如事假,病假,年假)。</p><p> 請(qǐng)假管理模塊設(shè)計(jì)了兩個(gè)頁面:“Leave Requst” 頁面和“Manager” 頁面,主要是對(duì)請(qǐng)假的管理,如圖3.3所示,它包括:</p><p> 在“Leave Request” 頁面中員工可以查看,添加和編輯請(qǐng)假單,新添加的請(qǐng)
76、假單是“未審核”狀態(tài),但管理員(Manager)處理之后會(huì)被置成通過或不通過狀態(tài)。請(qǐng)假單在管理員(Manager)處理之后員工只能查看,不能編輯或者刪除。</p><p> 在“Manager” 頁面中管理員(Manager)可以對(duì)員工的請(qǐng)假單進(jìn)行審核。為此AMS在右側(cè)添加了一個(gè)導(dǎo)航樹,該樹將列出所有員工,管理員(Manager)雙擊員工可在“Manager” 頁面中列出員工在該計(jì)薪周期的所有請(qǐng)假信息。<
77、/p><p> 圖3.3 請(qǐng)假管理模塊流程圖</p><p><b> 系統(tǒng)設(shè)計(jì)</b></p><p> 系統(tǒng)采用SSH框架。表示層用Struts,業(yè)務(wù)邏輯層用Spring,數(shù)據(jù)訪問層用Hibernate。</p><p> 系統(tǒng)在表示層(展示層)得到用戶的操作數(shù)據(jù)并將這些數(shù)據(jù)提交到邏輯層,邏輯層得到數(shù)據(jù)后則會(huì)進(jìn)行
78、分析和處理,如有必要?jiǎng)t調(diào)用數(shù)據(jù)訪問層的相關(guān)方法取得數(shù)據(jù),數(shù)據(jù)訪問層得到相關(guān)的數(shù)據(jù)集后返回給邏輯層,邏輯層對(duì)數(shù)據(jù)集進(jìn)行處理將有用的信息返回給展示層,展示層解析邏輯層響應(yīng)的數(shù)據(jù),在適當(dāng)?shù)牡胤匠尸F(xiàn)給用戶。如圖3.4所示。</p><p> 圖3.4 展示層、邏輯層和數(shù)據(jù)訪問層相互關(guān)系</p><p><b> 前臺(tái)設(shè)計(jì)</b></p><p>
79、 系統(tǒng)前臺(tái)分為登錄頁面和功能頁面,用戶(employee,manager)可在登錄頁面驗(yàn)證自己信息,功能頁面根據(jù)登錄頁面的驗(yàn)證信息載入功能模塊。</p><p> 登錄頁面:用戶提供用戶名,密碼以及身份(employee或者manager)。在登錄頁面驗(yàn)證之后的用戶,AMS的驗(yàn)證通過httpsession進(jìn)行自動(dòng)登錄,httpsession過期時(shí)間設(shè)置為10分鐘,如果10鐘內(nèi)沒有與服務(wù)器的交互,AMS將提示用戶
80、重新登錄。</p><p> 功能頁面包括七個(gè)子頁面和一個(gè)導(dǎo)航樹,7個(gè)子頁面分別是:Personal Message,Time Sheet,Attandance Details,Statistics,Leave Request,Holiday和Manager。</p><p> 1) Personal Message:該頁面顯示當(dāng)前登錄用用戶的基本信息,該表的信息通過查詢baseinf
81、o數(shù)據(jù)庫表直接獲得。</p><p> 2) Time Sheet:員工在該頁輸入查詢的起始和結(jié)束時(shí)間,該頁將展示所有查詢區(qū)間的出勤記錄。該頁支持分頁,每頁30條記錄。該頁設(shè)置3個(gè)列:“date”、“morning”、“afternoon”?!癲ate”顯示出勤日期,“morning”顯示改日上午刷卡記錄, “afternoon”顯示改日的下午刷卡記錄</p><p> 3) Atta
82、nd Details:該頁顯示員工在該計(jì)薪周期所有異常出勤記錄,由于員工在一天只能擁有一張請(qǐng)假單,該頁也只支持單一選擇。員工點(diǎn)擊異常記錄,點(diǎn)擊“申訴”按鈕,系統(tǒng)彈出添加請(qǐng)假單Panel。在添加請(qǐng)假單Panel中,員工輸入申訴信息。該頁包含6個(gè)列:姓名、日期、異常類型、刷卡數(shù)據(jù)、請(qǐng)假類型、狀態(tài)。其中“請(qǐng)假類型”指該異常日的請(qǐng)假單類型,因員工每日只能擁有一張請(qǐng)假單,因此只有該項(xiàng)為空時(shí),“申訴”按鈕才能激活。對(duì)于狀態(tài),新添加的請(qǐng)假單為“未確認(rèn)
83、”,管理員(Manager)處理之后的請(qǐng)假單可以是“通過”或者“不通過”。</p><p> 4) Statistic:該頁列出員工在過去12個(gè)計(jì)薪周期的統(tǒng)計(jì)數(shù)據(jù)。該頁包括11個(gè)列:月份、應(yīng)上班天數(shù)、正常天數(shù)、遲到天數(shù)、早退天數(shù)、曠工天數(shù)、申訴天數(shù)、事假天數(shù)、病假天數(shù)、年假天數(shù)和計(jì)薪天數(shù)。</p><p> 5) Request for leave:該頁面列出員工在計(jì)薪周期內(nèi)的所有請(qǐng)假
84、單。員工不能編輯或者刪除經(jīng)理處理之后的請(qǐng)假單。員工點(diǎn)擊單一請(qǐng)假單,點(diǎn)擊“編輯”按鈕可以編輯該請(qǐng)假單。員工可以一次刪除多個(gè)請(qǐng)假單。員工單擊“添加”按鈕可以添加請(qǐng)假單。該頁包括8個(gè)列:請(qǐng)假類型、開始日期、結(jié)束日期、開始時(shí)間、結(jié)束時(shí)間、請(qǐng)假人、審核人和狀態(tài)。</p><p> 6) Holiday:該頁有兩個(gè)表格,一個(gè)是員工本月的出勤統(tǒng)計(jì),一個(gè)是員工在全年的請(qǐng)假統(tǒng)計(jì)(不包括申訴)。</p><p&
85、gt; 統(tǒng)計(jì):根據(jù)員工在該月(非計(jì)薪周期)的每天刷卡和請(qǐng)假記錄生成當(dāng)月到改日的統(tǒng)計(jì)信息。</p><p> 請(qǐng)假:該panel統(tǒng)計(jì)出員工在全年的請(qǐng)假信息(不包括申訴),該panel包括6個(gè)列:員工姓名、本年年假標(biāo)準(zhǔn)、事假天數(shù)、病假天數(shù)、年假天數(shù)、剩余年假、</p><p> 7) Inspect leaving:管理員(Manager)在該頁中審核員工的請(qǐng)假單。雙擊導(dǎo)航樹中的員工,將
86、載入員工在計(jì)薪周期的所有請(qǐng)假記錄,該頁支持分頁,每頁30個(gè)記錄,管理員可以多選點(diǎn)擊“通過”或者“不通過”按鈕審核請(qǐng)假單。該頁包含7個(gè)列:請(qǐng)假類型、開始日期、結(jié)束日期、開始時(shí)間、結(jié)束時(shí)間和狀態(tài)。</p><p><b> 表示層設(shè)計(jì)</b></p><p> 表示層主要使用ExtJS進(jìn)行控制,包括數(shù)據(jù)的讀取以及界面的美工和CSS定義。展示層主要是JSP頁面,并且使用
87、模板來對(duì)頁面的風(fēng)格進(jìn)行統(tǒng)一。</p><p> 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ò)展。Struts框架具有組件的模塊化,靈活性和重用性的優(yōu)點(diǎn),同時(shí)簡化了基于MVC的Web應(yīng)用程序的開發(fā)。在本系統(tǒng)里,Struts只要負(fù)責(zé)與用戶交互,包括:接受用戶的請(qǐng)求,把處理結(jié)果返回給用戶
88、;而頁面交給了ExtJS來完成,使得他們之間的分工更明確。如圖3.5所示。</p><p> 現(xiàn)在MyEclipse 6.0已經(jīng)嵌入了Struts,Spring和Hibernate插件了,所以目前的工作就比較輕松了,主要是將相應(yīng)的包引入進(jìn)來就可以了:右鍵點(diǎn)擊相應(yīng)的Project,選擇MyEclipse下的“Add Struts Capabilities…”,完成接下來的步驟就順利引入了Struts相應(yīng)的包,并且
89、可以進(jìn)行相應(yīng)的一些頁面跳轉(zhuǎn)的控制。當(dāng)服務(wù)器啟動(dòng)后,根據(jù)web.xml加載ActionServlet讀取struts-config.xml文件內(nèi)容到內(nèi)存。</p><p> 圖3.5 表示層的設(shè)計(jì)</p><p><b> 邏輯層設(shè)計(jì)</b></p><p> 邏輯層用Spring來實(shí)現(xiàn)對(duì)頁面請(qǐng)求的數(shù)據(jù)進(jìn)行操作和處理,返回給頁面相關(guān)的響應(yīng)的
90、數(shù)據(jù)。如圖3.6所示。</p><p> 使用Spring中的依賴注入/控制反轉(zhuǎn),可以定義任何接口,然后實(shí)現(xiàn)接口里面的方法,通過Spring的配置文件把接口注入到任何地方,前提是引用的必須是接口,在引用的地方必須有接口定義以及getter方法,不過可以把這個(gè)接口當(dāng)作類似JavaBean的一個(gè)屬性一樣來使用,JavaBean都有g(shù)etter和setter方法的;另外也可以使用Spring的事物代理來完成一些工作。
91、</p><p> 通過定義好的接口,開發(fā)者可以直接通過接口來接收頁面請(qǐng)求的數(shù)據(jù),并對(duì)其進(jìn)行處理,如果有必要,那么再交給數(shù)據(jù)訪問層;而從數(shù)據(jù)訪問層返回來的數(shù)據(jù)集,在這里也要進(jìn)行相應(yīng)的處理再返回給表示層。</p><p> 圖3.6 邏輯層的設(shè)計(jì)</p><p><b> 數(shù)據(jù)訪問層設(shè)計(jì)</b></p><p>
92、數(shù)據(jù)訪問層用Hibernate來實(shí)現(xiàn),系統(tǒng)中的數(shù)據(jù)訪問層主要用戶與數(shù)據(jù)庫相關(guān)的操作,包括添加、修改、刪除、查詢等操作。如圖3.7所示。</p><p> 數(shù)據(jù)訪問層采用Hibernate把數(shù)據(jù)庫中的表與系統(tǒng)中定義的持久類進(jìn)行映射,在數(shù)據(jù)使用的時(shí)候就可以直接使用持久類中的數(shù)據(jù)。</p><p> 如果系統(tǒng)需要對(duì)數(shù)據(jù)庫進(jìn)行操作時(shí),邏輯層調(diào)用數(shù)據(jù)訪問層相對(duì)應(yīng)的DAO類,根據(jù)邏輯層的相關(guān)參數(shù)對(duì)
93、數(shù)據(jù)庫進(jìn)行相應(yīng)的操作,操作成功后則返回操作信息或是相關(guān)數(shù)據(jù)集。</p><p> 圖3.7 數(shù)據(jù)訪問層的設(shè)計(jì)</p><p><b> 數(shù)據(jù)字典</b></p><p> 系統(tǒng)的數(shù)據(jù)字典如圖3.8所示,它是以User為中心,與Role,Department,Middle,Record,Holiday,Leave等模塊關(guān)聯(lián)形成的。</
94、p><p> 圖3.8 數(shù)字字典</p><p> 其中對(duì)應(yīng)的User表的視圖如表3.1所示:</p><p> 表3.1 User表</p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p> 其中對(duì)應(yīng)的Role表的視圖如表3.2所示:</p><p> 表3.2 Role表&l
95、t;/p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p> 其中對(duì)應(yīng)的Department表的視圖如表3.3所示:</p><p> 表3.3 Department表</p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p> 其中對(duì)應(yīng)的Middle表的視圖如表3.4所示:</p><
96、;p> 表3.4 Middle表</p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p> 其中對(duì)應(yīng)的Record表的視圖如表3.5所示:</p><p> 表3.5 Record表</p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p> 其中對(duì)應(yīng)的Leave表的視圖如表3.6所示:&l
97、t;/p><p> 表3.6 Leave表</p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p> 其中對(duì)應(yīng)的Holiday表的視圖如表3.7所示:</p><p> 表3.7 Holiday表</p><p> 相應(yīng)的SQL創(chuàng)建語句如下:</p><p><b> 系
98、統(tǒng)的實(shí)現(xiàn)</b></p><p> 這里將介紹本系統(tǒng)的技術(shù)重點(diǎn)、難點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)。</p><p> ExtJS的相關(guān)實(shí)現(xiàn)</p><p> ExtJS中是HTML和CSS的完美結(jié)合,包括很過UI庫,也有著很多很炫的模塊定義,從而系統(tǒng)中使用ExtJS來實(shí)現(xiàn)表示層,既能很好的實(shí)現(xiàn)頁面的每個(gè)模塊,給用戶非常好的用戶體驗(yàn),更能給開發(fā)帶來快捷方便。<
99、/p><p> ExtJS日期查詢請(qǐng)求實(shí)現(xiàn)</p><p> 用ExtJS來實(shí)現(xiàn)按日期查詢的功能,十分清楚美觀,給用戶超好的體驗(yàn)。</p><p> ExtJS提供了動(dòng)態(tài)的日歷圖表,對(duì)當(dāng)天的日期進(jìn)行明顯的標(biāo)注,并智能的限制了日期查詢的范圍,以下的代碼實(shí)現(xiàn)了此功能。比如:開始日期選擇了2009-5-10后,結(jié)束日期就不能選擇2009-5-10之前的日期。如圖4.1所
100、示。</p><p> 圖4.1 ExtJS日期查詢</p><p> ExtJS多選擇按鈕實(shí)現(xiàn)</p><p> 請(qǐng)假單列表里,顯示了很多條請(qǐng)假單的信息,用戶在提交請(qǐng)假單之后可以根據(jù)實(shí)際情況進(jìn)行修改或者刪除,當(dāng)然是在請(qǐng)假未被確認(rèn)之前。這樣的話就需要可以一次選擇多條信息的功能,方便用戶進(jìn)行刪除的操作(修改只能選擇一個(gè))。</p><p>
101、; ExtJS提供了一個(gè)十分簡單的function就實(shí)現(xiàn)了這個(gè)功能,而對(duì)于開發(fā)來說不再需要更多的編碼,十分輕松。</p><p> 圖4.2 ExtJS多選擇按鈕</p><p><b> ExtJS分頁實(shí)現(xiàn)</b></p><p> 這里的分頁的實(shí)現(xiàn)按照頁碼從數(shù)據(jù)庫中取得的數(shù)據(jù)列表的位置返回到客戶端,這樣可以減少數(shù)據(jù)量的傳輸,但是會(huì)造
102、成對(duì)數(shù)據(jù)庫的訪問次數(shù)過多。</p><p> ExtJS使用Ext.PagingToolbar()來實(shí)現(xiàn)分頁,ExtJS后臺(tái)定義好的function來自動(dòng)調(diào)用數(shù)據(jù)庫內(nèi)的數(shù)據(jù),這樣開發(fā)者就不需要進(jìn)行繁瑣的方法參數(shù)的調(diào)用。</p><p> 圖4.3 ExtJS分頁</p><p><b> ExtJS分組實(shí)現(xiàn)</b></p>
103、<p> ExtJS有著強(qiáng)大的頁面實(shí)現(xiàn)效果,比如在用戶的基本信息表上,可是實(shí)現(xiàn)信息的分組。</p><p> 圖4.4 ExtJS分組</p><p><b> SSH的配置實(shí)現(xiàn)</b></p><p> web.xml 配置 </p><p> 在這里主要是Struts的濾鏡配置和Spring的Ap
104、plicationContext文件路徑配置。</p><p><b> Struts配置</b></p><p> 這里主要是對(duì)struts.xml文件的配置:主要是Struts的濾鏡配置和Spring的ApplicationContext文件路徑配置。</p><p><b> Spring配置</b></
105、p><p> Spring基本配置:配置文件應(yīng)該在WEB-INF/spring/下面:</p><p> Hibernate配置</p><p> 下面是對(duì)Hibernate的基本配置:</p><p><b> 數(shù)據(jù)相關(guān)操作</b></p><p> 從前臺(tái)發(fā)出的數(shù)據(jù)請(qǐng)求,經(jīng)過Struts
106、,Spring,Hibernate到數(shù)據(jù)庫,然后對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的操作后返回正確的數(shù)據(jù)。</p><p> 1) 生成Session信息的代碼如下:</p><p> 2) JSP接收http請(qǐng)求:</p><p> 在登錄頁面的com.work.ams.struts.form.LoginForm這個(gè)類,用來描述的http請(qǐng)求;com.work.ams.stru
107、ts.action.LoginAction這個(gè)類是對(duì)http請(qǐng)求的處理。其他的功能頁面的請(qǐng)求都是在com.test.ams.AmsPortal這個(gè)類中進(jìn)行處理的。</p><p> 其中LoginAction類中,這段代碼是獲取http請(qǐng)求中的用戶名,密碼和角色:</p><p> 3) 在WebRoot/WEB-INF/struts-config.xml,往Struts里引入Spri
108、ng:</p><p> 4) Spring中定義一個(gè)Session Factory,用來創(chuàng)建一個(gè)和Hibernate連接的接口:</p><p> 5) 通過spring和hibernate查詢數(shù)據(jù)庫,代碼如下:</p><p><b> 結(jié)論</b></p><p> 本文研究了當(dāng)前比較流行的ExtJS和SS
109、H框架,通過對(duì)這兩項(xiàng)技術(shù)的介紹和研究提出了該考勤管理系統(tǒng)的設(shè)計(jì)方案。并詳細(xì)的闡述了考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。本文首先介紹了相關(guān)的ExtJS和SSH等技術(shù)的背景知識(shí),闡述了它們的基本原理和各自的優(yōu)點(diǎn),然后對(duì)系統(tǒng)進(jìn)行了具體的分析,對(duì)功能進(jìn)行了詳細(xì)的介紹,并提出了相關(guān)功能的實(shí)現(xiàn)方案。最后根據(jù)所設(shè)計(jì)的方案對(duì)系統(tǒng)的主要實(shí)現(xiàn)方法進(jìn)行了介紹。</p><p> 實(shí)現(xiàn)的考勤管理系統(tǒng)使用SSH架構(gòu),表示層用Struts技術(shù),業(yè)務(wù)層用
110、Spring技術(shù),持久層用Hibernate技術(shù);而頁面則采用ExtJS框架來實(shí)現(xiàn),使得客戶端對(duì)界面的的操作取得極大的便利。這樣整個(gè)系統(tǒng)給用戶帶來更好的使用體驗(yàn),也使得開發(fā)的系統(tǒng)層次十分清晰,對(duì)后期的擴(kuò)展和維護(hù)也變得方便許多。</p><p> 然而在實(shí)際的實(shí)現(xiàn)當(dāng)中也存在著一些問題,比如使用過多的ExtJS模塊控件,使得加載頁面緩慢,加上它基本上都是用JavaScript實(shí)現(xiàn)的,雖然JavaScript技術(shù)現(xiàn)在
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)----企業(yè)內(nèi)部辦公管理系統(tǒng)
- jsp企業(yè)內(nèi)部信息管理系統(tǒng)(畢業(yè)設(shè)計(jì))
- 畢業(yè)設(shè)計(jì)---企業(yè)內(nèi)部云計(jì)算系統(tǒng)的組建
- 企業(yè)內(nèi)部控制設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--企業(yè)內(nèi)部控制的診斷及對(duì)策研究
- 企業(yè)內(nèi)部網(wǎng)接入設(shè)計(jì)與網(wǎng)絡(luò)規(guī)劃畢業(yè)設(shè)計(jì)
- 企業(yè)內(nèi)部網(wǎng)接入設(shè)計(jì)與網(wǎng)絡(luò)規(guī)劃畢業(yè)設(shè)計(jì)
- 小型企業(yè)內(nèi)部網(wǎng)絡(luò)規(guī)劃與設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 企業(yè)內(nèi)部網(wǎng)接入設(shè)計(jì)與網(wǎng)絡(luò)規(guī)劃畢業(yè)設(shè)計(jì)
- 感應(yīng)卡消費(fèi)系統(tǒng)方案
- 企業(yè)內(nèi)部控制畢業(yè)論文
- 會(huì)計(jì)畢業(yè)設(shè)計(jì)--企業(yè)內(nèi)部會(huì)計(jì)制度建設(shè)
- 畢業(yè)設(shè)計(jì)(論文)--中小企業(yè)內(nèi)部控制問題探討
- 如何設(shè)計(jì)企業(yè)內(nèi)部制度
- 企業(yè)內(nèi)部控制設(shè)計(jì)doc
- 企業(yè)內(nèi)部銀行
- 企業(yè)內(nèi)部招聘
- 企業(yè)內(nèi)部控制制度論文企業(yè)內(nèi)部控制基本規(guī)
- 18項(xiàng)《企業(yè)內(nèi)部控制應(yīng)用指引》《企業(yè)內(nèi)部控制評(píng)價(jià)指引》和《企業(yè)內(nèi)部控制審計(jì)指引》
- 畢業(yè)設(shè)計(jì)--企業(yè)內(nèi)部錄像監(jiān)控系統(tǒng)(攝像機(jī)運(yùn)動(dòng)控制)
評(píng)論
0/150
提交評(píng)論