版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)論文(設(shè)計(jì))</b></p><p> 員工假期管理之?dāng)?shù)據(jù)統(tǒng)計(jì)</p><p> 完成日期 2012年7月10日</p><p> 畢業(yè)論文(設(shè)計(jì))開(kāi)題報(bào)告</p><p><b> 摘要</b></p><p> 隨著企業(yè)規(guī)模
2、的發(fā)展與擴(kuò)大,員工數(shù)量與員工職位的增多將對(duì)員工假期管理帶來(lái)一定的壓力,假期的申請(qǐng)手續(xù),假期類(lèi)型的繁多以及假期的統(tǒng)計(jì),這些都對(duì)管理員帶來(lái)不便,傳統(tǒng)的管理手段對(duì)大量的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)非常容易出錯(cuò),這對(duì)企業(yè)的發(fā)展是不利的,因此必須采用信息化手段對(duì)員工假期進(jìn)行管理,將假期管理規(guī)范化。</p><p> 員工假期管理系統(tǒng)能很好的幫助企業(yè)進(jìn)入信息化,使員工的管理更加清晰,明了。</p><p> 關(guān)鍵
3、詞:管理信息系統(tǒng),數(shù)據(jù)統(tǒng)計(jì),數(shù)據(jù)庫(kù)</p><p><b> Abstract</b></p><p> As the scale of business development and expansion of the number of staff positions and an increase in staff will leave the manage
4、ment of certain employees of the pressure, leave the application procedures for many types of holidays and holiday statistics, which are causing inconvenience to the administrator, traditional management by means of a la
5、rge number of statistical data are very prone to error, which is detrimental to the development of enterprises, and therefore must be used by means of</p><p> Key words: management information systems, stat
6、istics, databases.</p><p><b> 目錄</b></p><p><b> 1 緒論3</b></p><p> 1.1 問(wèn)題定義和內(nèi)容簡(jiǎn)介3</p><p> 1.2 研究背景和意義以及文檔結(jié)構(gòu)安排4</p><p> 1.3 相
7、關(guān)軟件簡(jiǎn)介4</p><p> 2 系統(tǒng)需求分析和模塊設(shè)計(jì)4</p><p> 2.1 系統(tǒng)功能需求分析5</p><p> 2.1.1 假期類(lèi)型維護(hù)5</p><p> 2.1.2 員工固定假期維護(hù)5</p><p> 2.1.3 員工假期申請(qǐng)5</p><p> 2.
8、1.4 員工假期查詢審批5</p><p> 2.1.5 假期報(bào)表5</p><p> 2.2 系統(tǒng)功能模塊設(shè)計(jì)6</p><p> 2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)7</p><p> 3 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)10</p><p> 3.1 框架介紹10</p><p> 3.1.1 S
9、truts210</p><p> 3.1.2 Spring11</p><p> 3.1.3 Ibatis11</p><p> 3.2 框架搭建12</p><p> 3.2.1 配置數(shù)據(jù)源12</p><p> 3.2.2 建立dao層與service層13</p><p
10、> 3.2.3 注入dao層與service層14</p><p> 3.2.4 配置ibatis映射文件14</p><p> 3.3 用戶登錄14</p><p> 3.4 員工假期申請(qǐng)15</p><p> 3.5 管理員審批假期16</p><p> 3.6 管理員查看假期信息17
11、</p><p> 4 系統(tǒng)功能簡(jiǎn)介和評(píng)價(jià)20</p><p><b> 結(jié)論20</b></p><p><b> 參考文獻(xiàn)20</b></p><p><b> 1 緒論</b></p><p> 1.1 問(wèn)題定義和內(nèi)容簡(jiǎn)介</
12、p><p> 在過(guò)去一段時(shí)間,很多假期管理都是用人工方法進(jìn)行的,并且是用紙媒記錄數(shù)據(jù),這樣很容易照成數(shù)據(jù)的丟失,而且查閱起來(lái)也很不方便。為了能讓系統(tǒng)跟上經(jīng)濟(jì)飛速發(fā)展的當(dāng)前社會(huì),運(yùn)用軟件管理將能使這一問(wèn)題得到合理的解決。用軟件管理假期不需要使用大量的紙媒,數(shù)據(jù)不易丟失,軟件的使用方便,簡(jiǎn)單,操作性更好,對(duì)數(shù)據(jù)的查詢十分快捷。運(yùn)用軟件對(duì)員工假期進(jìn)行管理是當(dāng)前社會(huì)的趨勢(shì)。</p><p> 1.
13、2 研究背景和意義以及文檔結(jié)構(gòu)安排</p><p> 在現(xiàn)代企業(yè)中,信息管理工作將發(fā)揮越來(lái)越重要的作用。可以說(shuō),在企業(yè)的信息化管理工作中,計(jì)算機(jī)管理則成為標(biāo)志著一種高科技、高效率和高水準(zhǔn)的使用工具,它已經(jīng)滲透到各行業(yè)各企業(yè)日常工作的許多方面,無(wú)論是自身還是其發(fā)揮的作用,都為企業(yè)的創(chuàng)新、發(fā)展以及經(jīng)濟(jì)效益的創(chuàng)造方面,做出了顯著的貢獻(xiàn)。</p><p> 開(kāi)發(fā)出一款理想的員工假期管理系統(tǒng)需要
14、一個(gè)詳細(xì)的計(jì)劃安排,流程的安排是這樣:需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測(cè)試。</p><p> 開(kāi)發(fā)的過(guò)程中離不開(kāi)文檔,文檔是進(jìn)行開(kāi)發(fā)的依據(jù),在開(kāi)發(fā)的每個(gè)階段都要制定出合理可靠的文檔,開(kāi)發(fā)過(guò)程中嚴(yán)格按照文檔進(jìn)行作業(yè)。</p><p> 1.3 相關(guān)軟件簡(jiǎn)介</p><p> 本系使用oracle XE數(shù)據(jù)庫(kù)軟件,eclipse開(kāi)發(fā)工具,svn版本控制工具,
15、erwin建模工具,jdk6.0,tomcat5.5。</p><p> 2 系統(tǒng)需求分析和模塊設(shè)計(jì)</p><p> 所謂"需求分析",是指對(duì)要解決的問(wèn)題進(jìn)行詳細(xì)的分析,弄清楚問(wèn)題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出什么。可以說(shuō),“需求分析”就是確定要計(jì)算機(jī)“做什么”。</p><p> 在軟件工程中,需求分析指的是在
16、建立一個(gè)新的或改變一個(gè)現(xiàn)存的電腦系統(tǒng)時(shí)描寫(xiě)新系統(tǒng)的目的、范圍、定義和功能時(shí)所要做的所有的工作。需求分析是軟件工程中的一個(gè)關(guān)鍵過(guò)程。在這個(gè)過(guò)程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后他們才能夠分析和尋求新系統(tǒng)的解決方法。</p><p> 在軟件工程的歷史中,很長(zhǎng)時(shí)間里人們一直認(rèn)為需求分析是整個(gè)軟件工程中最簡(jiǎn)單的一個(gè)步驟,但在過(guò)去十年中越來(lái)越多的人認(rèn)識(shí)到它是整個(gè)過(guò)程中最關(guān)鍵的一個(gè)過(guò)程。假如
17、在需求分析時(shí)分析者們未能正確地認(rèn)識(shí)到顧客的需要的話,那么最后的軟件實(shí)際上不可能達(dá)到顧客的需要,或者軟件無(wú)法在規(guī)定的時(shí)間里完工。</p><p> 2.1 系統(tǒng)功能需求分析</p><p> 該系統(tǒng)能完成員工假期的申請(qǐng),審批及員工的假期維護(hù)和統(tǒng)計(jì)。</p><p> 2.1.1 假期類(lèi)型維護(hù)</p><p> 完成假期類(lèi)型的定義,假期類(lèi)
18、型必須能標(biāo)識(shí)是否受限(申請(qǐng)時(shí)檢查)。</p><p> 假期類(lèi)型包括:年假,事假,婚假,補(bǔ)休假,病假。</p><p> 2.1.2 員工固定假期維護(hù)</p><p> 查詢員工的固定假期,新增假期類(lèi)型數(shù)據(jù),修改已存在假期數(shù)據(jù),該功能由管理員使用。</p><p> 2.1.3 員工假期申請(qǐng)</p><p>
19、 員工申請(qǐng)休假,如果是有限制的假期如年假,則需要檢查申請(qǐng)的假期天數(shù)是否超過(guò)允許的天數(shù),超過(guò)則申請(qǐng)不成功;申請(qǐng)成功則可用假期數(shù)減少相應(yīng)天數(shù)。</p><p> 2.1.4 員工假期查詢審批</p><p> 管理員查詢假期申請(qǐng)單,批準(zhǔn)或不批準(zhǔn),如果不批準(zhǔn),則員工可用假期數(shù)需要回補(bǔ)。</p><p> 2.1.5 假期報(bào)表</p><p>
20、 按月統(tǒng)計(jì)有假員工各類(lèi)假期的請(qǐng)假時(shí)長(zhǎng),每個(gè)員工一條記錄,可存為EXCEL。</p><p> 2.2 系統(tǒng)功能模塊設(shè)計(jì)</p><p> 所謂的模塊化設(shè)計(jì),簡(jiǎn)單地說(shuō)就是程序的編寫(xiě)不是開(kāi)始就逐條錄入計(jì)算機(jī)語(yǔ)句和指令,而是首先用主程序、子程序、子過(guò)程等框架把軟件的主要結(jié)構(gòu)和流程描述出來(lái),并定義和調(diào)試好各個(gè)框架之間的輸入、輸出鏈接關(guān)系。</p><p> 逐步求精
21、的結(jié)果是得到一系列以功能塊為單位的算法描述。以功能塊為單位進(jìn)行程序設(shè)計(jì),實(shí)現(xiàn)其求解算法的方法稱為模塊化。模塊化的目的是為了降低程序復(fù)雜度,使程序設(shè)計(jì)、調(diào)試和維護(hù)等操作簡(jiǎn)單化。</p><p> 系統(tǒng)的大模塊主要分為員工模塊與管理員模塊,但是功能模塊又分有幾大模塊。開(kāi)發(fā)小組對(duì)上述的需求進(jìn)行集中討論,按照結(jié)構(gòu)化程序設(shè)計(jì)的要求得出模塊圖 2-1。</p><p> 圖2-1 總的模塊劃分&l
22、t;/p><p> 由于登錄模塊由其它小組負(fù)責(zé),固本文不重點(diǎn)闡述。登錄模塊可分為管理員模塊與員工模塊,根據(jù)以上模塊與登錄模塊得到大致的流程圖 2-2.如下</p><p> 員工假期申請(qǐng)模塊主要是針對(duì)員工的,模塊的主要功能有填寫(xiě)假期申請(qǐng)單,提交申請(qǐng)單。</p><p> 假期類(lèi)型維護(hù)模塊功能是顯示出現(xiàn)有的假期類(lèi)型數(shù)據(jù),當(dāng)中有的假期類(lèi)型是受限的。</p>
23、<p> 假期報(bào)表模塊功能有顯示全部有假員工的月假期數(shù)據(jù),將數(shù)據(jù)打印成execl文件。</p><p> 員工固定假期維護(hù)模塊,主要是對(duì)假期類(lèi)型的數(shù)據(jù)進(jìn)行修改。</p><p> 員工假期查詢審批模塊,它的功能是查詢出未審批的假期申請(qǐng)單,對(duì)假期申請(qǐng)單進(jìn)行審批。</p><p><b> 圖2-2 流程圖</b></p
24、><p> 當(dāng)不同的身份的用戶登錄系統(tǒng)將會(huì)有不同的功能。</p><p><b> 2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 至今,數(shù)據(jù)庫(kù)設(shè)計(jì)的很多工作仍需要人工來(lái)做,除了關(guān)系型數(shù)據(jù)庫(kù)已有一套較完整的數(shù)據(jù)范式理論可用來(lái)部分地指導(dǎo)數(shù)據(jù)庫(kù)設(shè)計(jì)之外,尚缺乏一套完善的數(shù)據(jù)庫(kù)設(shè)計(jì)理論、方法和工具,以實(shí)現(xiàn)數(shù)據(jù)庫(kù)設(shè)計(jì)的自動(dòng)化或交互式的半自動(dòng)化設(shè)計(jì)。所以
25、數(shù)據(jù)庫(kù)設(shè)計(jì)今后的研究發(fā)展方向是研究數(shù)據(jù)庫(kù)設(shè)計(jì)理論,尋求能夠更有效地表達(dá)語(yǔ)義關(guān)系的數(shù)據(jù)模型,為各階段的設(shè)計(jì)提供自動(dòng)或半自動(dòng)的設(shè)計(jì)工具和集成化的開(kāi)發(fā)環(huán)境,使數(shù)據(jù)庫(kù)的設(shè)計(jì)更加工程化、更加規(guī)范化和更加方便易行,使得在數(shù)據(jù)庫(kù)的設(shè)計(jì)中充分體現(xiàn)軟件工程的先進(jìn)思想和方法。一般,數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程大致可分?jǐn)?shù)據(jù)庫(kù)設(shè)計(jì)為5個(gè)步驟:需求分析,概念設(shè)計(jì),邏輯設(shè)計(jì),物理設(shè)計(jì),驗(yàn)證設(shè)計(jì)。</p><p> 由于實(shí)習(xí)的公司是外包企業(yè),數(shù)據(jù)庫(kù)表與
26、字段名都要求用英文。</p><p> 根據(jù)需求分析與模塊設(shè)計(jì),最終將為系統(tǒng)建立六各表,表名分別為EMPLOYEE,EMPLOYEE_HOLIDAY,HOLIDAY_TYPE,HOLIDAY_APPLICATION,STATE,COMMON_HOLIDAY。建模工具采用的是Erwin,建模圖例如圖所示</p><p> 圖2-3 數(shù)據(jù)庫(kù)模型</p><p>
27、EMPLOYEE表:</p><p> 處理用戶登錄的表,主要字段有EMPLOYEE_ID(員工ID)主鍵,POPEDOM(身份),EMPLOYEE_NAME(用戶名),PASSWORD(密碼)。</p><p> HOLIDAY_TYPE表:</p><p> 用來(lái)存放假期類(lèi)型,主要字段有HOLIDAY_TYPE_ID(假期類(lèi)型ID),HOLIDAY_TYP
28、R_NAME(假期名字),LIMIRORNOT(是否受限),LIMIT_DAYS(上限天數(shù))。</p><p> EMPLOYEE_HOLIDAY表:</p><p> 員工受限假期表,每個(gè)員工的受限假期情況都有不同,例如年假中老員工與新員工的假期天數(shù)是不同的。主要字段有HOLIDAY_TYPE_ID(受限假期ID),AVAILABLE_DAYS(受限天數(shù)),EMPLOYEE_HOLI
29、DAY_ID(用戶ID)。</p><p> HOLIDAY_APPLICATION表:</p><p> 此表主要用來(lái)處理員工假期的申請(qǐng),查詢,管理員審批,查詢。主要字段有MAKER_ID(流水ID)主鍵,F(xiàn)ROM_DATE(開(kāi)始時(shí)間),TO_DATE(結(jié)束時(shí)間),REGISTER_TIME(登記時(shí)間),STAT_MONTH(請(qǐng)假月份),HOLIDAY_TYPE_ID(假期類(lèi)型ID)
30、外鍵,EMPLOYEE_ID(員工ID)外鍵,STATE_ID(狀態(tài)ID)外鍵,HOLIDAY_DAYS(請(qǐng)假天數(shù))。</p><p><b> STATE表:</b></p><p> 用來(lái)標(biāo)記每一條假期記錄的狀態(tài),如未審批,審批通過(guò),等待審批。字段有STATE_ID(狀態(tài)ID),STATE_NAME(狀態(tài)名).</p><p> CO
31、MMON_HOLIDAY表:</p><p> 用來(lái)存放一些公共假期,如五一,國(guó)慶,中秋。字段有</p><p> COMMON_HOLIDAY_ID(公共假期ID),HOLIDAY_START_TIME(假期開(kāi)始時(shí)間),HOLIDAY_INTRODUCE(假期簡(jiǎn)介),HOLIDAY_NAME(假期名字),HOLIDAY_END_TIME(假期結(jié)束時(shí)間).</p><
32、;p> 3 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 本系統(tǒng)是基于J2EE所開(kāi)發(fā)的。J2EE是一種利用Java 2平臺(tái)來(lái)簡(jiǎn)化企業(yè)解決方案的開(kāi)發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺(tái)或Java 2平臺(tái)的標(biāo)準(zhǔn)版,J2EE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如"編寫(xiě)一次、隨處運(yùn)行"的特性、方便存取數(shù)據(jù)庫(kù)的JDBC API、CORBA技術(shù)以及能夠在Internet
33、應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對(duì) EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個(gè)能夠使企業(yè)開(kāi)發(fā)者大幅縮短投放市場(chǎng)時(shí)間的體系結(jié)構(gòu)。</p><p> J2EE體系結(jié)構(gòu)提供中間層集成框架用來(lái)滿足無(wú)需太多費(fèi)用而又需要高可用性、高可靠性以及可擴(kuò)展性的應(yīng)用的需求。通過(guò)提供統(tǒng)一的
34、開(kāi)發(fā)平臺(tái),J2EE降低了開(kāi)發(fā)多層應(yīng)用的費(fèi)用和復(fù)雜性,同時(shí)提供對(duì)現(xiàn)有應(yīng)用程序集成強(qiáng)有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝?yīng)用,添加目錄支持,增強(qiáng)了安全機(jī)制,提高了性能。</p><p> 數(shù)據(jù)庫(kù)的表建立時(shí),同時(shí)要伴隨著系統(tǒng)的設(shè)計(jì),各表之間的關(guān)系就是系統(tǒng)設(shè)計(jì)的重點(diǎn)。</p><p> 本系統(tǒng)使用的框架技術(shù)是Struts2+spring+iba
35、tis。</p><p><b> 3.1 框架介紹</b></p><p> 3.1.1 Struts2</p><p> Apache Struts2是一個(gè)優(yōu)雅的,可擴(kuò)展的JAVA EE web框架。框架設(shè)計(jì)的目標(biāo)貫穿整個(gè)開(kāi)發(fā)周期,從開(kāi)發(fā)到發(fā)布,包括維護(hù)的整個(gè)過(guò)程。</p><p> Struts2框架是一個(gè)
36、基于MVC架構(gòu)的框架,由于它的核心設(shè)計(jì)思想來(lái)源于WebWork,Struts2框架中MVC模型各部分構(gòu)成有控制器,模型,視圖。在本系統(tǒng)中應(yīng)用Struts2將表單提交過(guò)來(lái)的內(nèi)容進(jìn)行驗(yàn)證,對(duì)輸入進(jìn)行校驗(yàn)。對(duì)于Struts2框架來(lái)說(shuō),他不僅僅是一個(gè)MVC框架,還是一個(gè)輕量級(jí)的容器。使用此容器能夠使我們?cè)诨網(wǎng)eb容器的基礎(chǔ)上,根據(jù)需要增加其他新的特性。除此之外,Struts2框架還允許我們?cè)趹?yīng)用中使用其他輕量級(jí)容器,比如目前較為流行的輕量級(jí)容
37、器Spring。而且在Struts2應(yīng)用中使用其他容器的時(shí)候,我們需要做的只是加入少量的配置信息。從這一點(diǎn)上來(lái)說(shuō),更加體現(xiàn)出了Struts2框架的靈活性。</p><p> 3.1.2 Spring</p><p> 在Java EE開(kāi)發(fā)設(shè)計(jì)中,Spring框架主要被應(yīng)用于業(yè)務(wù)層,它的作用就是將中間件服務(wù)傳遞給耦合松散的POJO。通過(guò)Spring來(lái)管理業(yè)務(wù)流程,使得開(kāi)發(fā)者能夠國(guó)家專注與
38、業(yè)務(wù)邏輯并且是測(cè)試過(guò)程變得更加簡(jiǎn)單。Spring的核心技術(shù)之一就是依賴注入,在開(kāi)發(fā)設(shè)計(jì)過(guò)程中,整個(gè)應(yīng)用中無(wú)論是Action層對(duì)象,還是服務(wù)層的Service對(duì)象,抑或是持久層的DAO對(duì)象,如果想要調(diào)用其它層的對(duì)象,只需調(diào)用一個(gè)該對(duì)象提供的接口即可,而不用去關(guān)心這個(gè)對(duì)象的具體實(shí)現(xiàn)過(guò)程。如此一來(lái)我們的編碼就擁有了更大的靈活性,也更利于后期的維護(hù)工作。在Spring框架中,各個(gè)對(duì)象的具體實(shí)現(xiàn)對(duì)于其他對(duì)象來(lái)說(shuō)都是透明的,完全由Spring容器管
39、理所有對(duì)象。</p><p> 傳統(tǒng)J2EE應(yīng)用的開(kāi)發(fā)效率低,應(yīng)用服務(wù)器廠商對(duì)各種技術(shù)的支持并沒(méi)有真正統(tǒng)一,導(dǎo)致J2EE的應(yīng)用沒(méi)有真正實(shí)現(xiàn)Write Once及Run Anywhere的承諾。Spring作為開(kāi)源的中間件,獨(dú)立于各種應(yīng)用服務(wù)器,甚至無(wú)須應(yīng)用服務(wù)器的支持,也能提供應(yīng)用服務(wù)器的功能,如聲明式事務(wù)等。</p><p> Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅
40、僅專注于某一層的方案??梢哉f(shuō)Spring是企業(yè)應(yīng)用開(kāi)發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring并不想取代那些已有的框架,而與它們無(wú)縫地整合。</p><p> 3.1.3 Ibatis</p><p> iBATIS一詞來(lái)源于“internet”和“abatis”的組合,是一個(gè)由Clinton Begin在2001年發(fā)起的開(kāi)放源代碼項(xiàng)目。最初側(cè)重于密碼軟件的開(kāi)
41、發(fā),現(xiàn)在是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時(shí)還提供一個(gè)利用這個(gè)框架開(kāi)發(fā)的JPetStore實(shí)例。</p><p> 相對(duì)Hibernate和Apache OJB等“一站式”O(jiān)RM解決方案而言,ibatis 是一種“半自動(dòng)化”的ORM實(shí)現(xiàn)。</p><p> Ibatis是一種數(shù)據(jù)映射器,
42、同時(shí)它也是一種可以應(yīng)用于Java的持久層框架。Ibatis通過(guò)配置文件加載數(shù)據(jù)源,映射字段與Java對(duì)象的屬性,完成數(shù)據(jù)的持久化。Ibatis與其他持久層框架一樣,都可以簡(jiǎn)化開(kāi)發(fā)過(guò)程中數(shù)據(jù)持久化的操作。Ibatis持久化是通過(guò)配置xml文件實(shí)現(xiàn)的。通常需要兩個(gè)配置文件,一個(gè)用來(lái)配置ibatis自身的一些屬性信息,緩存機(jī)制,事務(wù)處理方式以及數(shù)據(jù)源;另一個(gè)是映射文件,將數(shù)據(jù)表映射到領(lǐng)域模型層對(duì)象。映射文件需要編寫(xiě)sql語(yǔ)句,ibatis支持
43、“#”作為它的持久化語(yǔ)句的參數(shù)占位符,運(yùn)行時(shí)這些占位符將被賦予參數(shù)值,然后對(duì)目標(biāo)數(shù)據(jù)庫(kù)進(jìn)行持久化操作。</p><p><b> 3.2 框架搭建</b></p><p> 首先在web.xml中加載spring配置文件,添加如下語(yǔ)句:</p><p> <context-param></p><p>
44、 <param-name>contextConfigLocation</param-name></p><p> <param-value>/WEB-INF/classes/applicationContext.xml</param-value></p><p> </context-param></p>&l
45、t;p> 3.2.1 配置數(shù)據(jù)源</p><p> applicationContext.xml是spring的配置文件,在里面進(jìn)行添加數(shù)據(jù)源,</p><p> <!-- spring采用dbcp連接oracle數(shù)據(jù)庫(kù) 配置數(shù)據(jù)源--></p><p> <bean id="dataSource" class=
46、"org.apache.commons.dbcp.BasicDataSource"></p><p> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property></p><p> <
47、;property name="url" value="jdbc:oracle:thin:@10.8.1.85:1521:XE"></property></p><p> <property name="username" value="hrms"></property></p>
48、<p> <property name="password" value="hrms"></property></p><p> applicationContext.xml里還要導(dǎo)入ibatis配置文件,方法如下:</p><p> <bean id="client" class
49、="org.springframework.orm.ibatis.SqlMapClientFactoryBean"></p><p> <property name="dataSource"></p><p> <ref local="dataSource" /></p><p
50、> </property></p><p> <property name="configLocation"></p><p> <value>classpath:sqlMapConfig.xml</value></p><p> </property></p>
51、<p><b> </bean></b></p><p> 3.2.2 建立dao層與service層</p><p> 用eclipse新建項(xiàng)目,名稱為hrms,新建包c(diǎn)om.hrms.dao,在里面分別建立接口AdminDao與EmployeeDao。在包c(diǎn)om.hrms.dao.Impl里建立接口的實(shí)現(xiàn)AdminDaoImpl和E
52、mployeeDaoImpl。</p><p> 新建包c(diǎn)om.hrms.service,在里面分別建立接口AdminService與EmployeeService。在包c(diǎn)om.hrms.service.Impl里建立接口的實(shí)現(xiàn)AdminServiceImpl和EmployeeServiceImpl。</p><p> AdminService與EmployeeService里面分別對(duì)
53、應(yīng)著管理員和員工的一些功能和操作,例如在AdminService里定義</p><p> public interface AdminService {</p><p><b> /**</b></p><p> * 管理員審核申請(qǐng)表</p><p> * @param makerId</p>&l
54、t;p> * @throws Exception</p><p><b> */</b></p><p> void agreeApplication(Integer makerId)throws Exception;}</p><p> 而在接口的實(shí)現(xiàn)中需要調(diào)用到dao層的接口,并且是對(duì)接口定義的方法進(jìn)行具體的操作,如:<
55、/p><p> public class AdminServiceImpl implements AdminService {</p><p> private AdminDao adminDao; //調(diào)用dao層接口</p><p> public void setAdminDao(AdminDao adminDao) {</p><
56、p> this.adminDao = adminDao;</p><p><b> }</b></p><p><b> /**</b></p><p> * 管理員審核申請(qǐng)表-同意操作</p><p> * @param makerId</p><p>
57、* @throws Exception</p><p><b> */</b></p><p> public void agreeApplication(Integer makerId) throws Exception {</p><p> adminDao.agreeApplicationByMakerId(makerId);<
58、;/p><p><b> }</b></p><p><b> }</b></p><p> 3.2.3 注入dao層與service層</p><p> 新建好dao層與service后,在spring的配置文件applicationContext.xml中要進(jìn)行注入,如:</p>
59、<p> <!-- 注入DAO層 --></p><p> <bean id="employeeDao" class="com.hrms.dao.Impl.EmployeeDaoImpl"></p><p> <property name="client" ref="cl
60、ient"></property></p><p><b> </bean></b></p><p> <bean id="adminDao" class="com.hrms.dao.Impl.AdminDaoImpl"></p><p> <
61、;property name="client" ref="client"></property></p><p><b> </bean></b></p><p> <!-- 注入service層 --></p><p> <bean id="
62、;employeeService" class="com.hrms.service.Impl.EmployeeServiceImpl"></p><p> <property name="employeeDao" ref="employeeDao"></property></p><p>
63、<b> </bean></b></p><p> <bean id="adminService" class="com.hrms.service.Impl.AdminServiceImpl"></p><p> <property name="adminDao" ref=
64、"adminDao"></property></p><p><b> </bean></b></p><p> 3.2.4 配置ibatis映射文件</p><p> 新建包c(diǎn)om.hrms.vo,在里面建立需要映射表的javabean,里面的屬性要與數(shù)據(jù)庫(kù)表的字段屬性對(duì)應(yīng),然后建立xm
65、l映射文件進(jìn)行映射,如:javabean中有employeeID這個(gè)屬性,在xml里進(jìn)行映射為</p><p> <resultMap id="employeeResult" class="employee"></p><p> <result property="employeeId" column=&qu
66、ot;EMPLOYEE_ID" jdbcType="VARCHAR2" /></p><p> 在映射文件里,所有對(duì)數(shù)據(jù)庫(kù)的新增,更新,查詢,刪除操作的sql語(yǔ)句都要在這里面寫(xiě)。</p><p><b> 3.3 用戶登錄</b></p><p> 用戶登錄界面如圖所示</p><p
67、><b> 圖3-1登錄界面</b></p><p> 由于登錄界面由其它小組完成,固本小組只需簡(jiǎn)單制作登錄模塊。當(dāng)用戶輸入用戶名和密碼時(shí),還需在輸入框下面的權(quán)限按鈕進(jìn)行選擇,這關(guān)系到成功登錄后進(jìn)入的界面。表單的內(nèi)容提交到后臺(tái)action里通過(guò)調(diào)用ibatis對(duì)用戶名,密碼,身份進(jìn)行判斷,再由判斷的結(jié)果決定跳轉(zhuǎn)到的頁(yè)面。當(dāng)用戶成功登錄以后,用戶的ID信息將會(huì)保存在session中,
68、以便在將來(lái)的功能中使用。</p><p> 3.4 員工假期申請(qǐng)</p><p> 該模塊中,員工可以填寫(xiě)假期申請(qǐng)信息并提交。首先,員工需要選擇請(qǐng)假的假期類(lèi)型,如年假,病假,事假等。然后選擇假期開(kāi)始的時(shí)間與結(jié)束的時(shí)間,最后按提交按鈕。</p><p> 提交后,首先在前臺(tái)的jsp頁(yè)面中運(yùn)用jsvascript技術(shù)對(duì)表單進(jìn)行檢驗(yàn),如假期類(lèi)型有沒(méi)選擇,請(qǐng)假時(shí)間是否
69、已經(jīng)填寫(xiě)等。</p><p> 當(dāng)前臺(tái)jsp頁(yè)面驗(yàn)證無(wú)誤后則轉(zhuǎn)到后臺(tái)相應(yīng)的action中進(jìn)行進(jìn)一步的處理。首先在action中要對(duì)提交過(guò)來(lái)的假期類(lèi)型進(jìn)行判斷。判斷其是否是受限假期類(lèi)型,以便決定用何種方法進(jìn)行處理。若假期類(lèi)型不是受限假期類(lèi)型,則請(qǐng)假天數(shù)就是填寫(xiě)申請(qǐng)表時(shí)的假期結(jié)束時(shí)間減去假期開(kāi)始時(shí)間;若假期類(lèi)型是受限假期類(lèi)型,則還要在數(shù)據(jù)庫(kù)中查詢相應(yīng)受限假期類(lèi)型的數(shù)據(jù),看看其受限的天數(shù)有多少。如員工張三請(qǐng)年假10天
70、,而張三的年假可用天數(shù)只有5天,則在action中就會(huì)做出判斷并跳轉(zhuǎn)到提示頁(yè)面進(jìn)行提示超出可用請(qǐng)假天數(shù)。員工假期申請(qǐng)頁(yè)面如圖</p><p> 圖3-2 假期申請(qǐng)頁(yè)面</p><p> 進(jìn)行員工假期申請(qǐng)時(shí),對(duì)數(shù)據(jù)庫(kù)的主要操作有:將表單傳過(guò)來(lái)的假期類(lèi)型與數(shù)據(jù)庫(kù)中HOLIDAY_TYPE表中的數(shù)據(jù)進(jìn)行比對(duì),看看假期類(lèi)型是否受限,若受限,則查詢EMPLOYEE_HOLIDAY中當(dāng)前用戶的受限
71、假期類(lèi)型的受限天數(shù),然后在action中進(jìn)行判斷操作,最后將假期申請(qǐng)插入HOLIDAY_APPLICATION表中。在HOLIDAY_APPLICATION中,新加入的假期申請(qǐng)的STATE_ID字段要與STATE表中的字段對(duì)應(yīng),而且STATE_NAME都要是waiting,表示正在等待管理員審批。當(dāng)員工提交了申請(qǐng)單后,在action中會(huì)運(yùn)用javamail技術(shù)向管理員的郵箱發(fā)送提示郵件,提醒管理員對(duì)假期申請(qǐng)進(jìn)行審批。</p>
72、<p> 3.5 管理員審批假期</p><p> 當(dāng)有用戶申請(qǐng)了假期,管理員可以登錄系統(tǒng)進(jìn)行審批,管理員的審批頁(yè)面會(huì)顯示員工的假期申請(qǐng)單,在假期申請(qǐng)單的后面可執(zhí)行兩種審批操作,分別是同意和拒絕。在申請(qǐng)單中也會(huì)列出請(qǐng)假員工的姓名,請(qǐng)假時(shí)間等信息,管理員可以根據(jù)這些信息決定進(jìn)行何種審批操作。審批頁(yè)面如下:</p><p> 圖3-3 管理員審批頁(yè)面</p>
73、<p> 審批頁(yè)面對(duì)申請(qǐng)單的顯示是采用分頁(yè)顯示,運(yùn)用了ibatis的分頁(yè)功能。顯示這些數(shù)據(jù)是十分重要的。在HOLIDAY_APPLICATION中存放的數(shù)據(jù)就是申請(qǐng)單,每一個(gè)一組就是一條假期申請(qǐng)單,這些申請(qǐng)單數(shù)據(jù)中有些已被審批,有些還未審批,所以要有選擇的將這些數(shù)據(jù)進(jìn)行提取。而申請(qǐng)單的狀態(tài)是保存在另一個(gè)表STATE里,所以要使用連接查詢,查詢出狀態(tài)是在等待的申請(qǐng)單,然后將其顯示在審批頁(yè)面。其中主要sql查詢語(yǔ)句為:</
74、p><p> select * from holiday_application ha , holiday_type ht,employee e</p><p> where ha.holiday_type_id = ht.holiday_type_id and STATE_ID=#stateId# and ha.EMPLOYEE_ID = e.EMPLOYEE_ID</p>
75、<p> order by MAKER_ID</p><p> 3.6 管理員查看假期信息</p><p> 這個(gè)功能中管理員查看有假員工的信息,顯示頁(yè)面中每個(gè)員工一條記錄,其中要有員工各類(lèi)假期的信息,還要能將頁(yè)面保存為execl文件。該功能前臺(tái)的顯示頁(yè)面看似簡(jiǎn)單,但是后臺(tái)的程序處理十分復(fù)雜,尤其是數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的查詢這一塊,對(duì)數(shù)據(jù)的統(tǒng)計(jì)都需要比較巧妙的技術(shù)。首先,管理員查
76、看所以有假員工報(bào)表是按月查詢。選擇好月份之后,按提交按鈕則在當(dāng)前頁(yè)面顯示出所有有假員工的記錄,但是是采取分頁(yè)顯示。而將報(bào)表導(dǎo)成execl功能只需按下導(dǎo)出按鈕,導(dǎo)出后是所有有假員工的記錄都會(huì)記錄在execl文件里,并且自動(dòng)打開(kāi)execl文件,里面員工的記錄不采用分頁(yè)顯示。頁(yè)面如下圖所示</p><p><b> 圖3-4 報(bào)表頁(yè)面</b></p><p> 以上所說(shuō)
77、明的是操作步驟,現(xiàn)在所要講的是功能的實(shí)現(xiàn)。對(duì)數(shù)據(jù)庫(kù)的操作主要是對(duì)HOLIDAY_APPLICATION表進(jìn)行查詢操作,HOLIDAY_APPLICATION里保存的都是假期申請(qǐng)單,這些申請(qǐng)單有的已經(jīng)經(jīng)過(guò)審批了,有的還沒(méi)有,而報(bào)表是要把經(jīng)過(guò)審批的申請(qǐng)單顯示出來(lái),這可以在SQL查詢語(yǔ)句中用where得到,但是在頁(yè)面的顯示不是單純的將數(shù)據(jù)庫(kù)里的內(nèi)容原原本本的顯示在頁(yè)面,在顯示頁(yè)面中有的屬性是數(shù)據(jù)庫(kù)表里的字段沒(méi)有的。所以要找另外的方法顯示出來(lái)。
78、</p><p> 例如上圖,HOLIDAY_APPLICATION表中沒(méi)有定義過(guò)字段病假,事假,年假等,但是卻要顯示出來(lái)。這些假期類(lèi)型雖然不是表的字段,但是表里有一個(gè)字段HOLIDAY_TYPE_ID,這個(gè)字段里的數(shù)據(jù)就有這些假期類(lèi)型。舉個(gè)例子來(lái)說(shuō)明吧,例如,現(xiàn)有表test,其表內(nèi)數(shù)據(jù)為</p><p> Student
79、160; subject
80、; grade---------- ---------- ----------張三 語(yǔ)文
81、 80張三
82、0; 數(shù)學(xué)
83、; 86張三 英語(yǔ)
84、 75李四 語(yǔ)文&
85、#160; 78李四
86、; 數(shù)學(xué)
87、 85李四 英語(yǔ) &
88、#160; 78</p><p> 如何將上表的內(nèi)容顯示為</p><p> 姓名 語(yǔ)文
89、 數(shù)學(xué) 英語(yǔ)李四 78 85 &
90、#160; 83張三 80 86 75</p><p> 這就需
91、要用到數(shù)據(jù)庫(kù)里的行列轉(zhuǎn)換這項(xiàng)技術(shù)。它的SQL語(yǔ)句為</p><p> select student,sum(decode(subject,'語(yǔ)文', grade,null)) "語(yǔ)文",sum(decode(subject,'數(shù)學(xué)', grade,null)) "數(shù)學(xué)",sum(decode(subject,'英語(yǔ)',
92、grade,null)) "英語(yǔ)"from testgroup by student</p><p> 以上這種行列轉(zhuǎn)換是數(shù)據(jù)庫(kù)的靜態(tài)行列轉(zhuǎn)換,所謂靜態(tài)就是test表</p><p> Subject這個(gè)字段里的數(shù)據(jù)個(gè)數(shù)是固定的,不能增加,例如上面所顯示的成績(jī)科目只能有語(yǔ)文,數(shù)學(xué),英語(yǔ)三科,若想顯示出生物等其他科目是不行的,也就是所顯示的科目已經(jīng)由SQL語(yǔ)句固定
93、了,不能改變。</p><p> 而本系統(tǒng)的情況與上面的類(lèi)似,上表的subject這個(gè)字段就相當(dāng)于HOLIDAY_TYPE_ID(假期類(lèi)型)這個(gè)字段,所以對(duì)員工的報(bào)表顯示,本系統(tǒng)就是采用和上面類(lèi)似的方法。員工報(bào)表查詢的核心sql語(yǔ)句為:</p><p> select EMPLOYEE_ID as 員工號(hào),SUM(case when HOLIDAY_TYPE_ID='001
94、39; then HOLIDAY_DAYS else 0 end) 病假,</p><p> SUM(case when HOLIDAY_TYPE_ID='006' then HOLIDAY_DAYS else 0 end) 喪假,</p><p> SUM(case when HOLIDAY_TYPE_ID='003' then HOLIDAY_DAY
95、S else 0 end) 補(bǔ)休假,</p><p> SUM(case when HOLIDAY_TYPE_ID='002' then HOLIDAY_DAYS else 0 end) 事假,</p><p> SUM(case when HOLIDAY_TYPE_ID='004' then HOLIDAY_DAYS else 0 end) 婚假,&l
96、t;/p><p> SUM(case when HOLIDAY_TYPE_ID='005' then HOLIDAY_DAYS else 0 end) 年假,</p><p> SUM(case when HOLIDAY_TYPE_ID='007' then HOLIDAY_DAYS else 0 end) 產(chǎn)假</p><p>
97、from HOLIDAY_APPLICATION</p><p> where STAT_MONTH=#month#</p><p> group by EMPLOYEE_ID</p><p> order by EMPLOYEE_ID ASC</p><p> 現(xiàn)在來(lái)解釋一下上述SQL語(yǔ)句。</p><p>
98、 SUM(case when HOLIDAY_TYPE_ID='006' then HOLIDAY_DAYS else 0 end) 喪假</p><p> 表示的是查詢HOLIDAY_TYPE_ID為006的元組,并對(duì)其求和,以下類(lèi)推。</p><p> group by EMPLOYEE_ID 表示按員工ID來(lái)分組,這樣查詢的結(jié)果就是一個(gè)員工一條記錄。order
99、 by EMPLOYEE_ID ASC 表示結(jié)果按員工ID降序排列。</p><p> 將查詢出的結(jié)果用分頁(yè)顯示技術(shù)顯示出來(lái)就有如上圖的效果了。最后是將報(bào)表導(dǎo)出為execl文件,這是上網(wǎng)下載第三方插件做成的。</p><p> 4 系統(tǒng)功能簡(jiǎn)介和評(píng)價(jià)</p><p> 該系統(tǒng)是一個(gè)實(shí)習(xí)項(xiàng)目,所以在可用性方面還存在一些不足之處。但是隨著社會(huì)的發(fā)展,在信息管理方面
100、不能再手工化了,運(yùn)用軟件管理信息是必然的趨勢(shì)。員工假期的管理能方便員工與管理員,系統(tǒng)的功能都是為使相關(guān)的一些手續(xù)變得簡(jiǎn)潔,員工能很快的申請(qǐng)假期,還能隨時(shí)查看自己的假期數(shù)據(jù),而管理員能能快捷的審批假期申請(qǐng),提高管理效率,而且對(duì)數(shù)據(jù)的統(tǒng)計(jì)要求做到一目了然。</p><p> 最后,在系統(tǒng)實(shí)現(xiàn)的技術(shù)上,框架是采用比較先進(jìn)的,但是有些地方還是因?yàn)槟芰Φ南拗贫炙蛔?,例如在員工的報(bào)表統(tǒng)計(jì)中所采用的靜態(tài)行列轉(zhuǎn)換,若能采用
101、動(dòng)態(tài)行列轉(zhuǎn)換效果會(huì)更好??偟膩?lái)說(shuō),該系統(tǒng)雖有不足,但還是實(shí)現(xiàn)了假期管理系統(tǒng)的重要功能。</p><p><b> 結(jié)論</b></p><p> 通過(guò)開(kāi)發(fā)本系統(tǒng),使我深刻體會(huì)到了軟件工程的一些思想與方法。同時(shí)了解到了軟件產(chǎn)品的開(kāi)發(fā)是一個(gè)科學(xué)的、有計(jì)劃、有步驟的過(guò)程,不是一個(gè)一次即成的過(guò)程,它需要不斷的檢驗(yàn)與修正。還有在開(kāi)發(fā)的過(guò)程中,團(tuán)隊(duì)的合作十分重要,一個(gè)所做的畢
102、竟還不完善,只有集合眾人之力開(kāi)發(fā)出的系統(tǒng)才能面面俱到。我想這對(duì)我以后的工作和學(xué)習(xí)都是很有幫助的。</p><p><b> 參考文獻(xiàn)</b></p><p> 編著:三揚(yáng)科技 《開(kāi)發(fā)者突擊》出版社:電子工業(yè)出版社 2008-10-1</p><p> 作者:葉健毅 《Java EE Eclipse Struts 2 Hibernate S
103、pring 整合應(yīng)用案例》 出版社:人民郵電出版社 2009年1月</p><p> 作者:王珊 薩師煊 《數(shù)據(jù)庫(kù)系統(tǒng)概論》 出版社:高等教育出版社 2006年5月</p><p><b> 致謝</b></p><p> 在這次設(shè)計(jì)首先要感謝我的導(dǎo)師,給予我畢業(yè)論文設(shè)計(jì)上的指導(dǎo)。陳老師在我畢業(yè)設(shè)計(jì)過(guò)程中,從選題,研究到設(shè)計(jì)給了我很好的意
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 畢業(yè)論文計(jì)算機(jī)科學(xué)與技術(shù)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 考試在線系統(tǒng)計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文--車(chē)輛管理系統(tǒng)
- 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文_1501891104
- 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文--酒店網(wǎng)絡(luò)
- 有關(guān)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論