計算機科學與技術畢業(yè)論文---員工假期管理之數據統(tǒng)計_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  畢業(yè)論文(設計)</b></p><p>  員工假期管理之數據統(tǒng)計</p><p>  完成日期 2012年7月10日</p><p>  畢業(yè)論文(設計)開題報告</p><p><b>  摘要</b></p><p>  隨著企業(yè)規(guī)模

2、的發(fā)展與擴大,員工數量與員工職位的增多將對員工假期管理帶來一定的壓力,假期的申請手續(xù),假期類型的繁多以及假期的統(tǒng)計,這些都對管理員帶來不便,傳統(tǒng)的管理手段對大量的數據進行統(tǒng)計非常容易出錯,這對企業(yè)的發(fā)展是不利的,因此必須采用信息化手段對員工假期進行管理,將假期管理規(guī)范化。</p><p>  員工假期管理系統(tǒng)能很好的幫助企業(yè)進入信息化,使員工的管理更加清晰,明了。</p><p>  關鍵

3、詞:管理信息系統(tǒng),數據統(tǒng)計,數據庫</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 問題定義和內容簡介3</p><p>  1.2 研究背景和意義以及文檔結構安排4</p><p>  1.3 相

7、關軟件簡介4</p><p>  2 系統(tǒng)需求分析和模塊設計4</p><p>  2.1 系統(tǒng)功能需求分析5</p><p>  2.1.1 假期類型維護5</p><p>  2.1.2 員工固定假期維護5</p><p>  2.1.3 員工假期申請5</p><p>  2.

8、1.4 員工假期查詢審批5</p><p>  2.1.5 假期報表5</p><p>  2.2 系統(tǒng)功能模塊設計6</p><p>  2.3 數據庫設計7</p><p>  3 系統(tǒng)的設計與實現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 配置數據源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 員工假期申請15</p><p>  3.5 管理員審批假期16</p><p>  3.6 管理員查看假期信息17

11、</p><p>  4 系統(tǒng)功能簡介和評價20</p><p><b>  結論20</b></p><p><b>  參考文獻20</b></p><p><b>  1 緒論</b></p><p>  1.1 問題定義和內容簡介</

12、p><p>  在過去一段時間,很多假期管理都是用人工方法進行的,并且是用紙媒記錄數據,這樣很容易照成數據的丟失,而且查閱起來也很不方便。為了能讓系統(tǒng)跟上經濟飛速發(fā)展的當前社會,運用軟件管理將能使這一問題得到合理的解決。用軟件管理假期不需要使用大量的紙媒,數據不易丟失,軟件的使用方便,簡單,操作性更好,對數據的查詢十分快捷。運用軟件對員工假期進行管理是當前社會的趨勢。</p><p>  1.

13、2 研究背景和意義以及文檔結構安排</p><p>  在現代企業(yè)中,信息管理工作將發(fā)揮越來越重要的作用??梢哉f,在企業(yè)的信息化管理工作中,計算機管理則成為標志著一種高科技、高效率和高水準的使用工具,它已經滲透到各行業(yè)各企業(yè)日常工作的許多方面,無論是自身還是其發(fā)揮的作用,都為企業(yè)的創(chuàng)新、發(fā)展以及經濟效益的創(chuàng)造方面,做出了顯著的貢獻。</p><p>  開發(fā)出一款理想的員工假期管理系統(tǒng)需要

14、一個詳細的計劃安排,流程的安排是這樣:需求分析,概要設計,詳細設計,編碼,測試。</p><p>  開發(fā)的過程中離不開文檔,文檔是進行開發(fā)的依據,在開發(fā)的每個階段都要制定出合理可靠的文檔,開發(fā)過程中嚴格按照文檔進行作業(yè)。</p><p>  1.3 相關軟件簡介</p><p>  本系使用oracle XE數據庫軟件,eclipse開發(fā)工具,svn版本控制工具,

15、erwin建模工具,jdk6.0,tomcat5.5。</p><p>  2 系統(tǒng)需求分析和模塊設計</p><p>  所謂"需求分析",是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什么數據,要得到什么結果,最后應輸出什么??梢哉f,“需求分析”就是確定要計算機“做什么”。</p><p>  在軟件工程中,需求分析指的是在

16、建立一個新的或改變一個現存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后他們才能夠分析和尋求新系統(tǒng)的解決方法。</p><p>  在軟件工程的歷史中,很長時間里人們一直認為需求分析是整個軟件工程中最簡單的一個步驟,但在過去十年中越來越多的人認識到它是整個過程中最關鍵的一個過程。假如

17、在需求分析時分析者們未能正確地認識到顧客的需要的話,那么最后的軟件實際上不可能達到顧客的需要,或者軟件無法在規(guī)定的時間里完工。</p><p>  2.1 系統(tǒng)功能需求分析</p><p>  該系統(tǒng)能完成員工假期的申請,審批及員工的假期維護和統(tǒng)計。</p><p>  2.1.1 假期類型維護</p><p>  完成假期類型的定義,假期類

18、型必須能標識是否受限(申請時檢查)。</p><p>  假期類型包括:年假,事假,婚假,補休假,病假。</p><p>  2.1.2 員工固定假期維護</p><p>  查詢員工的固定假期,新增假期類型數據,修改已存在假期數據,該功能由管理員使用。</p><p>  2.1.3 員工假期申請</p><p> 

19、 員工申請休假,如果是有限制的假期如年假,則需要檢查申請的假期天數是否超過允許的天數,超過則申請不成功;申請成功則可用假期數減少相應天數。</p><p>  2.1.4 員工假期查詢審批</p><p>  管理員查詢假期申請單,批準或不批準,如果不批準,則員工可用假期數需要回補。</p><p>  2.1.5 假期報表</p><p>

20、  按月統(tǒng)計有假員工各類假期的請假時長,每個員工一條記錄,可存為EXCEL。</p><p>  2.2 系統(tǒng)功能模塊設計</p><p>  所謂的模塊化設計,簡單地說就是程序的編寫不是開始就逐條錄入計算機語句和指令,而是首先用主程序、子程序、子過程等框架把軟件的主要結構和流程描述出來,并定義和調試好各個框架之間的輸入、輸出鏈接關系。</p><p>  逐步求精

21、的結果是得到一系列以功能塊為單位的算法描述。以功能塊為單位進行程序設計,實現其求解算法的方法稱為模塊化。模塊化的目的是為了降低程序復雜度,使程序設計、調試和維護等操作簡單化。</p><p>  系統(tǒng)的大模塊主要分為員工模塊與管理員模塊,但是功能模塊又分有幾大模塊。開發(fā)小組對上述的需求進行集中討論,按照結構化程序設計的要求得出模塊圖 2-1。</p><p>  圖2-1 總的模塊劃分&l

22、t;/p><p>  由于登錄模塊由其它小組負責,固本文不重點闡述。登錄模塊可分為管理員模塊與員工模塊,根據以上模塊與登錄模塊得到大致的流程圖 2-2.如下</p><p>  員工假期申請模塊主要是針對員工的,模塊的主要功能有填寫假期申請單,提交申請單。</p><p>  假期類型維護模塊功能是顯示出現有的假期類型數據,當中有的假期類型是受限的。</p>

23、<p>  假期報表模塊功能有顯示全部有假員工的月假期數據,將數據打印成execl文件。</p><p>  員工固定假期維護模塊,主要是對假期類型的數據進行修改。</p><p>  員工假期查詢審批模塊,它的功能是查詢出未審批的假期申請單,對假期申請單進行審批。</p><p><b>  圖2-2 流程圖</b></p

24、><p>  當不同的身份的用戶登錄系統(tǒng)將會有不同的功能。</p><p><b>  2.3 數據庫設計</b></p><p>  至今,數據庫設計的很多工作仍需要人工來做,除了關系型數據庫已有一套較完整的數據范式理論可用來部分地指導數據庫設計之外,尚缺乏一套完善的數據庫設計理論、方法和工具,以實現數據庫設計的自動化或交互式的半自動化設計。所以

25、數據庫設計今后的研究發(fā)展方向是研究數據庫設計理論,尋求能夠更有效地表達語義關系的數據模型,為各階段的設計提供自動或半自動的設計工具和集成化的開發(fā)環(huán)境,使數據庫的設計更加工程化、更加規(guī)范化和更加方便易行,使得在數據庫的設計中充分體現軟件工程的先進思想和方法。一般,數據庫的設計過程大致可分數據庫設計為5個步驟:需求分析,概念設計,邏輯設計,物理設計,驗證設計。</p><p>  由于實習的公司是外包企業(yè),數據庫表與

26、字段名都要求用英文。</p><p>  根據需求分析與模塊設計,最終將為系統(tǒng)建立六各表,表名分別為EMPLOYEE,EMPLOYEE_HOLIDAY,HOLIDAY_TYPE,HOLIDAY_APPLICATION,STATE,COMMON_HOLIDAY。建模工具采用的是Erwin,建模圖例如圖所示</p><p>  圖2-3 數據庫模型</p><p>  

27、EMPLOYEE表:</p><p>  處理用戶登錄的表,主要字段有EMPLOYEE_ID(員工ID)主鍵,POPEDOM(身份),EMPLOYEE_NAME(用戶名),PASSWORD(密碼)。</p><p>  HOLIDAY_TYPE表:</p><p>  用來存放假期類型,主要字段有HOLIDAY_TYPE_ID(假期類型ID),HOLIDAY_TYP

28、R_NAME(假期名字),LIMIRORNOT(是否受限),LIMIT_DAYS(上限天數)。</p><p>  EMPLOYEE_HOLIDAY表:</p><p>  員工受限假期表,每個員工的受限假期情況都有不同,例如年假中老員工與新員工的假期天數是不同的。主要字段有HOLIDAY_TYPE_ID(受限假期ID),AVAILABLE_DAYS(受限天數),EMPLOYEE_HOLI

29、DAY_ID(用戶ID)。</p><p>  HOLIDAY_APPLICATION表:</p><p>  此表主要用來處理員工假期的申請,查詢,管理員審批,查詢。主要字段有MAKER_ID(流水ID)主鍵,FROM_DATE(開始時間),TO_DATE(結束時間),REGISTER_TIME(登記時間),STAT_MONTH(請假月份),HOLIDAY_TYPE_ID(假期類型ID)

30、外鍵,EMPLOYEE_ID(員工ID)外鍵,STATE_ID(狀態(tài)ID)外鍵,HOLIDAY_DAYS(請假天數)。</p><p><b>  STATE表:</b></p><p>  用來標記每一條假期記錄的狀態(tài),如未審批,審批通過,等待審批。字段有STATE_ID(狀態(tài)ID),STATE_NAME(狀態(tài)名).</p><p>  CO

31、MMON_HOLIDAY表:</p><p>  用來存放一些公共假期,如五一,國慶,中秋。字段有</p><p>  COMMON_HOLIDAY_ID(公共假期ID),HOLIDAY_START_TIME(假期開始時間),HOLIDAY_INTRODUCE(假期簡介),HOLIDAY_NAME(假期名字),HOLIDAY_END_TIME(假期結束時間).</p><

32、;p>  3 系統(tǒng)的設計與實現</p><p>  本系統(tǒng)是基于J2EE所開發(fā)的。J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關的復雜問題的體系結構。J2EE技術的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數據庫的JDBC API、CORBA技術以及能夠在Internet

33、應用中保護數據的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結構。</p><p>  J2EE體系結構提供中間層集成框架用來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統(tǒng)一的

34、開發(fā)平臺,J2EE降低了開發(fā)多層應用的費用和復雜性,同時提供對現有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向導支持打包和部署應用,添加目錄支持,增強了安全機制,提高了性能。</p><p>  數據庫的表建立時,同時要伴隨著系統(tǒng)的設計,各表之間的關系就是系統(tǒng)設計的重點。</p><p>  本系統(tǒng)使用的框架技術是Struts2+spring+iba

35、tis。</p><p><b>  3.1 框架介紹</b></p><p>  3.1.1 Struts2</p><p>  Apache Struts2是一個優(yōu)雅的,可擴展的JAVA EE web框架??蚣茉O計的目標貫穿整個開發(fā)周期,從開發(fā)到發(fā)布,包括維護的整個過程。</p><p>  Struts2框架是一個

36、基于MVC架構的框架,由于它的核心設計思想來源于WebWork,Struts2框架中MVC模型各部分構成有控制器,模型,視圖。在本系統(tǒng)中應用Struts2將表單提交過來的內容進行驗證,對輸入進行校驗。對于Struts2框架來說,他不僅僅是一個MVC框架,還是一個輕量級的容器。使用此容器能夠使我們在基本Web容器的基礎上,根據需要增加其他新的特性。除此之外,Struts2框架還允許我們在應用中使用其他輕量級容器,比如目前較為流行的輕量級容

37、器Spring。而且在Struts2應用中使用其他容器的時候,我們需要做的只是加入少量的配置信息。從這一點上來說,更加體現出了Struts2框架的靈活性。</p><p>  3.1.2 Spring</p><p>  在Java EE開發(fā)設計中,Spring框架主要被應用于業(yè)務層,它的作用就是將中間件服務傳遞給耦合松散的POJO。通過Spring來管理業(yè)務流程,使得開發(fā)者能夠國家專注與

38、業(yè)務邏輯并且是測試過程變得更加簡單。Spring的核心技術之一就是依賴注入,在開發(fā)設計過程中,整個應用中無論是Action層對象,還是服務層的Service對象,抑或是持久層的DAO對象,如果想要調用其它層的對象,只需調用一個該對象提供的接口即可,而不用去關心這個對象的具體實現過程。如此一來我們的編碼就擁有了更大的靈活性,也更利于后期的維護工作。在Spring框架中,各個對象的具體實現對于其他對象來說都是透明的,完全由Spring容器管

39、理所有對象。</p><p>  傳統(tǒng)J2EE應用的開發(fā)效率低,應用服務器廠商對各種技術的支持并沒有真正統(tǒng)一,導致J2EE的應用沒有真正實現Write Once及Run Anywhere的承諾。Spring作為開源的中間件,獨立于各種應用服務器,甚至無須應用服務器的支持,也能提供應用服務器的功能,如聲明式事務等。</p><p>  Spring致力于J2EE應用的各層的解決方案,而不是僅

40、僅專注于某一層的方案??梢哉fSpring是企業(yè)應用開發(fā)的“一站式”選擇,并貫穿表現層、業(yè)務層及持久層。然而,Spring并不想取代那些已有的框架,而與它們無縫地整合。</p><p>  3.1.3 Ibatis</p><p>  iBATIS一詞來源于“internet”和“abatis”的組合,是一個由Clinton Begin在2001年發(fā)起的開放源代碼項目。最初側重于密碼軟件的開

41、發(fā),現在是一個基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時還提供一個利用這個框架開發(fā)的JPetStore實例。</p><p>  相對Hibernate和Apache OJB等“一站式”O(jiān)RM解決方案而言,ibatis 是一種“半自動化”的ORM實現。</p><p>  Ibatis是一種數據映射器,

42、同時它也是一種可以應用于Java的持久層框架。Ibatis通過配置文件加載數據源,映射字段與Java對象的屬性,完成數據的持久化。Ibatis與其他持久層框架一樣,都可以簡化開發(fā)過程中數據持久化的操作。Ibatis持久化是通過配置xml文件實現的。通常需要兩個配置文件,一個用來配置ibatis自身的一些屬性信息,緩存機制,事務處理方式以及數據源;另一個是映射文件,將數據表映射到領域模型層對象。映射文件需要編寫sql語句,ibatis支持

43、“#”作為它的持久化語句的參數占位符,運行時這些占位符將被賦予參數值,然后對目標數據庫進行持久化操作。</p><p><b>  3.2 框架搭建</b></p><p>  首先在web.xml中加載spring配置文件,添加如下語句:</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 配置數據源</p><p>  applicationContext.xml是spring的配置文件,在里面進行添加數據源,</p><p>  <!-- spring采用dbcp連接oracle數據庫 配置數據源--></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里還要導入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新建項目,名稱為hrms,新建包com.hrms.dao,在里面分別建立接口AdminDao與EmployeeDao。在包com.hrms.dao.Impl里建立接口的實現AdminDaoImpl和E

52、mployeeDaoImpl。</p><p>  新建包com.hrms.service,在里面分別建立接口AdminService與EmployeeService。在包com.hrms.service.Impl里建立接口的實現AdminServiceImpl和EmployeeServiceImpl。</p><p>  AdminService與EmployeeService里面分別對

53、應著管理員和員工的一些功能和操作,例如在AdminService里定義</p><p>  public interface AdminService {</p><p><b>  /**</b></p><p>  * 管理員審核申請表</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>  而在接口的實現中需要調用到dao層的接口,并且是對接口定義的方法進行具體的操作,如:<

55、/p><p>  public class AdminServiceImpl implements AdminService {</p><p>  private AdminDao adminDao; //調用dao層接口</p><p>  public void setAdminDao(AdminDao adminDao) {</p><

56、p>  this.adminDao = adminDao;</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 管理員審核申請表-同意操作</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中要進行注入,如:</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>  新建包com.hrms.vo,在里面建立需要映射表的javabean,里面的屬性要與數據庫表的字段屬性對應,然后建立xm

65、l映射文件進行映射,如:javabean中有employeeID這個屬性,在xml里進行映射為</p><p>  <resultMap id="employeeResult" class="employee"></p><p>  <result property="employeeId" column=&qu

66、ot;EMPLOYEE_ID" jdbcType="VARCHAR2" /></p><p>  在映射文件里,所有對數據庫的新增,更新,查詢,刪除操作的sql語句都要在這里面寫。</p><p><b>  3.3 用戶登錄</b></p><p>  用戶登錄界面如圖所示</p><p

67、><b>  圖3-1登錄界面</b></p><p>  由于登錄界面由其它小組完成,固本小組只需簡單制作登錄模塊。當用戶輸入用戶名和密碼時,還需在輸入框下面的權限按鈕進行選擇,這關系到成功登錄后進入的界面。表單的內容提交到后臺action里通過調用ibatis對用戶名,密碼,身份進行判斷,再由判斷的結果決定跳轉到的頁面。當用戶成功登錄以后,用戶的ID信息將會保存在session中,

68、以便在將來的功能中使用。</p><p>  3.4 員工假期申請</p><p>  該模塊中,員工可以填寫假期申請信息并提交。首先,員工需要選擇請假的假期類型,如年假,病假,事假等。然后選擇假期開始的時間與結束的時間,最后按提交按鈕。</p><p>  提交后,首先在前臺的jsp頁面中運用jsvascript技術對表單進行檢驗,如假期類型有沒選擇,請假時間是否

69、已經填寫等。</p><p>  當前臺jsp頁面驗證無誤后則轉到后臺相應的action中進行進一步的處理。首先在action中要對提交過來的假期類型進行判斷。判斷其是否是受限假期類型,以便決定用何種方法進行處理。若假期類型不是受限假期類型,則請假天數就是填寫申請表時的假期結束時間減去假期開始時間;若假期類型是受限假期類型,則還要在數據庫中查詢相應受限假期類型的數據,看看其受限的天數有多少。如員工張三請年假10天

70、,而張三的年假可用天數只有5天,則在action中就會做出判斷并跳轉到提示頁面進行提示超出可用請假天數。員工假期申請頁面如圖</p><p>  圖3-2 假期申請頁面</p><p>  進行員工假期申請時,對數據庫的主要操作有:將表單傳過來的假期類型與數據庫中HOLIDAY_TYPE表中的數據進行比對,看看假期類型是否受限,若受限,則查詢EMPLOYEE_HOLIDAY中當前用戶的受限

71、假期類型的受限天數,然后在action中進行判斷操作,最后將假期申請插入HOLIDAY_APPLICATION表中。在HOLIDAY_APPLICATION中,新加入的假期申請的STATE_ID字段要與STATE表中的字段對應,而且STATE_NAME都要是waiting,表示正在等待管理員審批。當員工提交了申請單后,在action中會運用javamail技術向管理員的郵箱發(fā)送提示郵件,提醒管理員對假期申請進行審批。</p>

72、<p>  3.5 管理員審批假期</p><p>  當有用戶申請了假期,管理員可以登錄系統(tǒng)進行審批,管理員的審批頁面會顯示員工的假期申請單,在假期申請單的后面可執(zhí)行兩種審批操作,分別是同意和拒絕。在申請單中也會列出請假員工的姓名,請假時間等信息,管理員可以根據這些信息決定進行何種審批操作。審批頁面如下:</p><p>  圖3-3 管理員審批頁面</p>

73、<p>  審批頁面對申請單的顯示是采用分頁顯示,運用了ibatis的分頁功能。顯示這些數據是十分重要的。在HOLIDAY_APPLICATION中存放的數據就是申請單,每一個一組就是一條假期申請單,這些申請單數據中有些已被審批,有些還未審批,所以要有選擇的將這些數據進行提取。而申請單的狀態(tài)是保存在另一個表STATE里,所以要使用連接查詢,查詢出狀態(tài)是在等待的申請單,然后將其顯示在審批頁面。其中主要sql查詢語句為:</

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>  這個功能中管理員查看有假員工的信息,顯示頁面中每個員工一條記錄,其中要有員工各類假期的信息,還要能將頁面保存為execl文件。該功能前臺的顯示頁面看似簡單,但是后臺的程序處理十分復雜,尤其是數據庫對數據的查詢這一塊,對數據的統(tǒng)計都需要比較巧妙的技術。首先,管理員查

76、看所以有假員工報表是按月查詢。選擇好月份之后,按提交按鈕則在當前頁面顯示出所有有假員工的記錄,但是是采取分頁顯示。而將報表導成execl功能只需按下導出按鈕,導出后是所有有假員工的記錄都會記錄在execl文件里,并且自動打開execl文件,里面員工的記錄不采用分頁顯示。頁面如下圖所示</p><p><b>  圖3-4 報表頁面</b></p><p>  以上所說

77、明的是操作步驟,現在所要講的是功能的實現。對數據庫的操作主要是對HOLIDAY_APPLICATION表進行查詢操作,HOLIDAY_APPLICATION里保存的都是假期申請單,這些申請單有的已經經過審批了,有的還沒有,而報表是要把經過審批的申請單顯示出來,這可以在SQL查詢語句中用where得到,但是在頁面的顯示不是單純的將數據庫里的內容原原本本的顯示在頁面,在顯示頁面中有的屬性是數據庫表里的字段沒有的。所以要找另外的方法顯示出來。

78、</p><p>  例如上圖,HOLIDAY_APPLICATION表中沒有定義過字段病假,事假,年假等,但是卻要顯示出來。這些假期類型雖然不是表的字段,但是表里有一個字段HOLIDAY_TYPE_ID,這個字段里的數據就有這些假期類型。舉個例子來說明吧,例如,現有表test,其表內數據為</p><p>  Student     &#

79、160;         subject                          

80、;    grade----------     ----------     ----------張三                 語文  

81、                               80張三     

82、0;           數學                          

83、;       86張三                 英語             

84、                    75李四                 語文&

85、#160;                                78李四    

86、;             數學                        

87、         85李四                 英語           &

88、#160;                     78</p><p>  如何將上表的內容顯示為</p><p>  姓名      語文

89、       數學       英語李四       78           85      &

90、#160;    83張三       80           86           75</p><p>  這就需

91、要用到數據庫里的行列轉換這項技術。它的SQL語句為</p><p>  select student,sum(decode(subject,'語文', grade,null)) "語文",sum(decode(subject,'數學', grade,null)) "數學",sum(decode(subject,'英語',

92、grade,null)) "英語"from testgroup by student</p><p>  以上這種行列轉換是數據庫的靜態(tài)行列轉換,所謂靜態(tài)就是test表</p><p>  Subject這個字段里的數據個數是固定的,不能增加,例如上面所顯示的成績科目只能有語文,數學,英語三科,若想顯示出生物等其他科目是不行的,也就是所顯示的科目已經由SQL語句固定

93、了,不能改變。</p><p>  而本系統(tǒng)的情況與上面的類似,上表的subject這個字段就相當于HOLIDAY_TYPE_ID(假期類型)這個字段,所以對員工的報表顯示,本系統(tǒng)就是采用和上面類似的方法。員工報表查詢的核心sql語句為:</p><p>  select EMPLOYEE_ID as 員工號,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) 補休假,</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) 產假</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>  現在來解釋一下上述SQL語句。</p><p>

98、  SUM(case when HOLIDAY_TYPE_ID='006' then HOLIDAY_DAYS else 0 end) 喪假</p><p>  表示的是查詢HOLIDAY_TYPE_ID為006的元組,并對其求和,以下類推。</p><p>  group by EMPLOYEE_ID 表示按員工ID來分組,這樣查詢的結果就是一個員工一條記錄。order

99、 by EMPLOYEE_ID ASC 表示結果按員工ID降序排列。</p><p>  將查詢出的結果用分頁顯示技術顯示出來就有如上圖的效果了。最后是將報表導出為execl文件,這是上網下載第三方插件做成的。</p><p>  4 系統(tǒng)功能簡介和評價</p><p>  該系統(tǒng)是一個實習項目,所以在可用性方面還存在一些不足之處。但是隨著社會的發(fā)展,在信息管理方面

100、不能再手工化了,運用軟件管理信息是必然的趨勢。員工假期的管理能方便員工與管理員,系統(tǒng)的功能都是為使相關的一些手續(xù)變得簡潔,員工能很快的申請假期,還能隨時查看自己的假期數據,而管理員能能快捷的審批假期申請,提高管理效率,而且對數據的統(tǒng)計要求做到一目了然。</p><p>  最后,在系統(tǒng)實現的技術上,框架是采用比較先進的,但是有些地方還是因為能力的限制而又所不足,例如在員工的報表統(tǒng)計中所采用的靜態(tài)行列轉換,若能采用

101、動態(tài)行列轉換效果會更好??偟膩碚f,該系統(tǒng)雖有不足,但還是實現了假期管理系統(tǒng)的重要功能。</p><p><b>  結論</b></p><p>  通過開發(fā)本系統(tǒng),使我深刻體會到了軟件工程的一些思想與方法。同時了解到了軟件產品的開發(fā)是一個科學的、有計劃、有步驟的過程,不是一個一次即成的過程,它需要不斷的檢驗與修正。還有在開發(fā)的過程中,團隊的合作十分重要,一個所做的畢

102、竟還不完善,只有集合眾人之力開發(fā)出的系統(tǒng)才能面面俱到。我想這對我以后的工作和學習都是很有幫助的。</p><p><b>  參考文獻</b></p><p>  編著:三揚科技 《開發(fā)者突擊》出版社:電子工業(yè)出版社 2008-10-1</p><p>  作者:葉健毅 《Java EE Eclipse Struts 2 Hibernate S

103、pring 整合應用案例》 出版社:人民郵電出版社 2009年1月</p><p>  作者:王珊 薩師煊 《數據庫系統(tǒng)概論》 出版社:高等教育出版社 2006年5月</p><p><b>  致謝</b></p><p>  在這次設計首先要感謝我的導師,給予我畢業(yè)論文設計上的指導。陳老師在我畢業(yè)設計過程中,從選題,研究到設計給了我很好的意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論