【網站項目】158企業人事管理系統

🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。

  1. 代碼可以私聊博主獲取。🌹
  2. 贈送計算機畢業設計600個選題excel文件,幫助大學選題。
  3. 贈送開題報告模板,幫助書寫開題報告。

作者完整代碼目錄供你選擇:

  1. 《Springboot網站項目》400套
  2. 《ssm網站項目》800套
  3. 《小程序項目》300套
  4. 《App項目》500套
  5. 《python網站項目》600套

?感興趣大家可以點點關注收藏,后續更新更多項目資料。?

項目演示(需要演示視頻可以私信我)

??????????

摘 ?要

進入信息時代以來,很多數據都需要配套軟件協助處理,這樣可以解決傳統方式帶來的管理困擾。比如耗時長,成本高,維護數據困難,數據易丟失等缺點。本次使用數據庫工具MySQL和編程技術SSM開發的企業人事管理系統,可以實現目標用戶群需要的功能,包括考勤管理,獎懲管理,薪資管理,培訓管理,系統公告管理等功能。

總之,企業人事管理系統是基于計算機進行數據的處理,則可以短時間內批量完成數據的管理,就連基本的數據錄入,更改錯誤的數據,統計數據等操作要求都可以輕松完成,這樣的系統的運用可以減少很多繁瑣的工作量,讓數據的管理人員提升效率,節省數據處理投入的資金和時間。同時,企業人事管理系統本身就有配套的數據庫,用于保存系統的后臺數據,對于數據保存的容量則是傳統模式不能相比的,在數據安全性上,也有相應的加密技術提供保護,所以數據泄露和被人竊取都不是易事。

關鍵詞:企業人事管理系統;考勤;獎懲;薪資

第一章?緒論

1.1?研究背景

時代總是在進步的,自從進入了信息時代,面對大量的不同種類的數據,僅僅依靠有限的人力去處理,顯然是不行的,畢竟人工處理大量的數據會耗費較長時間,而且數據的錯誤率也會提升,另外,在對數據進行檢索時,也是一件既耗費體力,又耗費時間的事情。因此,引進當前的信息技術開發的系統去解決傳統管理模式帶來的各種困擾成為一種趨勢。本次打算開發企業人事管理系統,讓企業人事信息的管理完全依賴于計算機,包括錄入信息,維護信息等都在計算機上操作,簡單方便,在優化信息管理流程的基礎上,進一步實現信息管理的規范化和系統化。也讓企業人事信息的管理人員從之前的繁瑣工作中解脫出來,讓他們提升自身素質,提高自身管理能力,把企業人事管理系統的作用發揮到最大,從而產生更大的效益。

1.2 研究意義

企業人事管理系統的出現,可以解決傳統模式帶來的問題,比如傳統模式不能批量處理數據,處理效率低,耗時長,浪費大量人力和物力,數據易出錯等問題。企業人事管理系統是基于計算機進行數據的處理,則可以短時間內批量完成數據的管理,就連基本的數據錄入,更改錯誤的數據,統計數據等操作要求都可以輕松完成,這樣的系統的運用可以減少很多繁瑣的工作量,讓數據的管理人員提升效率,節省數據處理投入的資金和時間。同時,企業人事管理系統本身就有配套的數據庫,用于保存系統的后臺數據,對于數據保存的容量則是傳統模式不能相比的,在數據安全性上,也有相應的加密技術提供保護,所以數據泄露和被人竊取都不是易事。另外,企業人事管理系統對操作人員錄入的數據進行實時檢驗,可以及時反饋錯誤信息,使錄入數據的準確率得到提高,也充分保證了系統數據的可靠性。總之,企業人事管理系統值得信賴,可以完成數據的高效率處理工作。

1.3 研究內容

本文對企業人事管理系統的描述,將按照如下章節進行。

第一章:根據前期的調研,和對參考資料的分析總結,明確系統研究背景意義;

第二章:通過對當前開發技術的分析,選定開發本系統的開發語言和工具;

第三章:在用戶需求的基礎上,結合相似系統的功能,分析并確定本系統的功能,分析本系統開發可行性問題;

第四章:在第三章的基礎上,進一步細分系統功能,要設計出系統各個模塊的功能,同時,對配套數據庫進行設計;

第五章:在第四章基礎上,要運用編程技術,全面實現企業人事管理系統的功能;

第六章:檢測制作的企業人事管理系統功能是否運行正常,性能是否達標;


第二章 開發環境與技術

企業人事管理系統作為一款應用軟件,其開發是需要搭建的一定的編程環境,對使用的工具和技術都有相應要求,接下來就介紹本系統中運用到的工具和技術。

2.1 JSP技術

JSP技術是有一定的規則的,首先JSP里可以用Java語言寫在標記內,可以混合HTML語言以及XHTML語言代碼進行混合編輯,并且進行書寫Java語句或者用其他標簽,用標簽的話都需要用特殊的符號進行描述,編寫Java語言的代碼需要用特殊符號標記起來,用<%作為開始,中間書寫Java語句,以%>作為結束標簽,必須是有開頭和結尾的,不然會編譯出錯的,必須是成對出現也必須有閉合的。JSP可以處理表單數據,因為JSP也算是一種Servlet,也可以把數據提交給Servlet處理也是可以的。其實對用戶來講,實現動態數據的網頁就可以了,但是后臺也是需要對數據進行一些加工的,JSP技術正好也是可以做到數據加工的。JSP可以直接通過JDBC來操作數據庫,對數據進行頁面展示,也可以記錄用戶的訪問的信息和選擇信息等,并且可以使用JavaBean組件,還可以通過Session在不同的網頁上傳遞信息和共享相關的信息。動態網頁有很多規范和標準,比如CGI規范或者ISAPI規范這些。標準是固定的,但是JSP技術是比CGI規范更加強壯。比如JSP性能對比上超過CGI,更優秀,原因是因為可以在一個JSP文件里嵌入很多元素,如果元素一樣多的話,用CGI就變成了需要很多文件,而受制于硬盤讀寫效率的影響,用時少就是優秀,能耗少就是強勁。JSP是完整的應用平臺Java EE 中不可缺少的一部分。

2.2?MySQL數據庫??

自從學習了關系型數據庫的語法之后,也逐漸的了解了一些屬于關系型數據庫范疇的幾個常見的數據庫。比如Oracle數據庫和MySQL數據庫,以及Microsoft SQL Server數據庫和DB2數據庫這幾種。在這幾個關系型數據庫之中,對MySQL數據庫印象最好。首先MySQL數據庫有各種平臺的服務器版本,這樣就能實現跨平臺運行以及移植。其次,MySQL數據庫可以進行網絡連接,這樣可以對本地賬戶和應用程序賬戶進行有效的區分,這樣在數據庫的安全性上面也有很好的保證。再次,MySQL數據庫在中小數據量的運行效率上面比其他數據庫占用服務器資源最少,所以很多企業都選擇了MySQL數據庫作為首選。在開發上面,各種圖形界面管理工具也是層出不窮,并且還比較好用,從各個方面綜合考慮對比的情況下,選擇了MySQL數據庫作為應用程序所選的數據庫軟件。

2.3 Java語言

Java語言發展有25年多了,在互聯網行業經過這么多年的發展,還依然在市場的占有率上有半壁江山,依然受到很多程序員的喜愛,好多從業人員進行學習,隨著互聯網從業人員的增加,并沒有降低Java語言的江湖地位,算是一個常青藤。Java語言學習很簡單,當然這是針對于前輩C++來講的,C++語言相當的強悍。Java取消了很多C++特征,比如go to這些語句,還有取消了主文件,讓所有的文件都是類,類里都是數組和各種對象,還讓Java自己處理各種對象的引用和回收,讓開發人員只需要創建對象,使用對象,編輯代碼邏輯,不需要關注性能方面,讓數據的各種存儲交給Java自己處理,可以花更多的時間研究應用程序之間的關系,讓開發變得更專注,就像賽車的駕駛員一樣,只需要了解各種車輛的性能,并且進行操作,不需要研究轱轆如何制造,這樣讓程序開發更加的細化。

2.4 SSM框架

SSM框架是三個框架的合稱,分別是Spring框架和SpringMVC框架以及MyBatis框架。三個框架隨著時間的發展,越來越變成了當今Java語言的開發主流,幫助程序開發人員專注于業務邏輯以及配置相關操作,能自動生成的都支持自動生成,避免了很多耦合性出錯,通過控制反轉和依賴注入,讓程序開發變成配置文件開發,簡單明了,讓創建的Java對象都能通過自身來進行創建。面向切面的操作讓程序開發也變成了部門協同,公共事務都交給了SpringAOP來操作,讓程序開發變得更加專注。MyBatis越來越智能,可以用配置文件和SQL語句混合開發,可以像操作Java語言一樣操作數據庫。


第三章?系統分析

通常,對于系統的開發并不是一朝一夕就可以完成的,它需要經歷很多的步驟,其中系統分析就是其中的一個,接下來還會有系統的設計和實現,最后一個步驟是系統測試。

3.1可行性分析

一個系統能不能完成開發,以及該系統是否可以帶來收益等,都是需要提前分析的。而可行性研究就是分析這些問題,并得出結論,這個環節對項目是否開展起著重要作用。

3.1.1運行可行性分析

首先本系統的運行環境都是當前使用率比較高的軟件,通過網絡可以下載安裝,其次本系統對于運行設備的要求比較低,滿足4個G的內存的電腦都可以使用。而當下硬件設備的升級,幾乎大部分電腦都是內存8個G,所以運行設備也符合要求。最后,本系統不用于處理繁多的類似商業軟件的信息內容,占用的空間比較小。一般的電腦都可以運行。

3.1.2經濟可行性分析

任何一個項目在開發前,其在經濟上的可行性問題是值得研究的,本項目企業人事管理系統,其在數據的處理上要求比較簡單,并且其管理的數據量比較小,因此,該項目的開發周期并不會耽誤很長時間,項目的開發需要支出的費用也不高。加上該項目需要管理的數據量較少,對于性能條件一般的計算機都可以滿足項目的運行要求,從后期管理成本上來看,需要投入該項目的管理費用也不高。但是該項目一旦投入使用,會給使用者帶來一定的收益,也能節省信息管理成本,如此,這樣一個低成本投入,但能夠帶來大量收益的項目企業人事管理系統在經濟上是可行的。

3.1.3技術可行性分析

互聯網的發展非常迅速,跟互聯網掛鉤的程序也逐漸被廣泛關注,尤其是當下被大眾熟知的B/S結構的程序,加上SSM技術的發展與成熟,如今可以很快速的使用模塊化的代碼開發一個基于B/S結構的項目程序。

通過系統運行,經濟和技術上的可行性分析,對企業人事管理系統的開發確實具有必要性,讓管理的信息都計算機化,可以縮短在數據處理上消耗的時間,提高工作效率。

3.2系統流程分析

本系統在完成數據的處理時,其內部都設置了相應的處理流程,比如注冊時,數據的最終去向以及對每項數據的判斷等,這些都是提前進行了分析的,然后在編碼時,把這種判斷邏輯寫入了系統中。讓系統在面對同樣的事務處理需求時,執行對應的邏輯處理規則。

在本系統的數據庫中,所有用戶的資料都會單獨保存在一張數據表里面,也就意味著這張用戶數據表里面的用戶名和密碼都是可以進行本系統的登錄功能的,其登錄流程如下。用戶提交的登錄信息都是必填項,不能漏掉,數據格式和內容都要準確才可以進入功能操作區。

圖3.2?用戶登錄流程圖

本系統中保存的數據都是具有參考價值的,所以在錄入數據時,要確保數據的準確性,其錄入數據的流程見下圖。這些數據都是經過檢驗合格之后才會被數據庫保存。

圖3.3?信息添加流程圖

本系統中設置了修改密碼功能,修改密碼的流程見下圖。密碼修改成功之后,下次登錄系統就需要使用新密碼替換原來的密碼。

圖3.3修改密碼流程圖

3.3 系統性能分析

在進行系統分析期間,有一個很重要的環節,就是需要對系統的性能進行分析。可以說系統的性能跟系統的質量是成正比關系,也就是說系統性能也好,系統質量越可靠,系統性能不好,就代表著系統的質量不行,也就意味著系統在實際中的使用中,會出現中途崩潰,或者系統的數據容易泄露等風險。所以,提前進行系統性能的分析,就可以在系統設計實現中,避免出現上述風險問題。

描述系統性能的特征有可擴展性,易維護性,安全性等。

3.3.1系統安全性

一個系統是否安全,直接影響用戶的使用。系統安全體現在數據上的保密性。通常,很多系統都設置了登錄功能,或針對游客設置的注冊功能等,無論是登錄中需要使用的賬號密碼,還是用戶注冊產生的私密數據等都是系統中的寶貴資源,一旦數據泄露,一些非法人員就會從中謀取利益,或通過用戶注冊留下的電話騷擾用戶,給用戶帶來身心上的傷害。所以一般針對此類關鍵數據,通常會直接進行加密保存。讓數據始終保持安全狀態。

3.3.2系統可擴展性

面對當前用戶的使用需求設計的系統并不一定適用于未來。所以需要使用前瞻性的眼光來看待系統,提前預留好空間,方便在今后對系統進行升級,或者擴充系統功能。因此,系統需要具備可擴展性的特性。

3.3.3系統易維護性

系統在保持長時間使用中,難免會出現一些問題。所以在處理這些問題時,可能會對系統進行部分改動。而系統改動的難易程度就體現出系統是否具備易維護性,通常一個易于維護的系統,在面對系統改動時,將會很容易,而且也會節省時間和資金。

3.4系統功能分析

本系統的功能不會像市場上的商業程序一樣具備復雜的功能,其提供的功能只能滿足目標用戶的一般的系統內容瀏覽和簡單的信息處理功能。

本系統確定設置管理員權限,總經理權限,部門主管權限和員工權限。

設置的管理員功能可以見下圖用例圖。管理員管理所有權限的用戶資料,管理考勤,培訓,薪資,獎懲等資料。

圖3.4 管理員用例圖

設置的總經理功能可以見下圖用例圖。總經理管理部門主管和員工的考勤信息,獎懲與薪資信息等。

圖3.5 總經理用例圖

設置的部門主管功能可以見下圖用例圖。部門主管參與上下班打卡,管理員工的考勤和薪資以及獎懲信息。

圖3.6 部門主管用例圖

設置的員工功能可以見下圖用例圖。員工參與上下班打卡,查看自己的獎懲,薪資以及培訓信息。

圖37 員工用例


第四章?系統設計

設計時,通常把用戶需求作為對系統功能和數據庫的設計重點,殊不知,系統設計時,注重用戶體驗也是比較關鍵的設計內容。比如一個系統已經實現了用戶需要的功能,但是其界面布局比較混亂,同時界面中各個元素的搭配也不合理,這樣一旦訪問者訪問系統,在短時間內無法找到需要的信息,就容易產生視覺疲勞,直接影響用戶對系統的使用。所以,系統設計時,也需要關注用戶的使用體驗。由于用戶之間的差別,比如教育程度,職業,地區等因素的不同,用戶產生的行為也會存在差異,所以設計人員既要考慮用戶之間的行為差異,也要考慮他們之間的共性。在尊重用戶習慣的基礎上,進行頁面設計布局。達到用戶可以多次訪問系統的目的。

4.1布局設計原則

進行頁面的布局,就要劃分系統的各個模塊,然后根據這些模塊的重要程度進行布局,也需要關注用戶比較在意的關鍵信息,利用合理的布局方式,傳達出系統想要表達的信息內容,也讓用戶快速高效地獲取需要的信息。布局雖然是頁面設計的核心,但是也要講究頁面內容的協調性,統一性和均衡性。

布局設計也要考慮基本原則,接下來的內容就對此進行闡述。

第一點:參考系統需求,把系統的內容進行劃分,按照重要程度的不同進行布局,并把相似或相近的信息內容集中展示在同一個區域,讓訪問者可以更流暢的閱讀信息;

第二點:頁面中比較重要的區域是靠上靠左的位置,所以這部分區域應該放置系統中比較重要的模塊,畢竟這部分區域可以吸引用戶眼球,讓用戶進入頁面中,就可以發現需要的信息。對于一些次要的模塊,則可以放置在頁面中靠下和靠右的位置。如此設計安排,才可以發揮出頁面設計實用性的特點;

第三點:根據用戶習慣設計頁面,雖然大部分用戶具有操作上的共性特征,但他們之間還是存在區別,常見的影響用戶操作習慣的因素有:年齡,學歷,職業,性別等。所以設計時在考慮用戶的共性特征時,也需要盡量尊重用戶的不同習慣。

4.2功能模塊設計

下圖為管理員的功能設計,管理員管理所有權限的用戶資料,管理考勤,培訓,薪資,獎懲等資料。

圖4.1 管理員功能結構圖

下圖為總經理的功能設計,總經理管理部門主管和員工的考勤信息,獎懲與薪資信息等。

圖4.2 總經理功能結構圖

下圖為部門主管的功能設計,部門主管參與上下班打卡,管理員工的考勤和薪資以及獎懲信息。

圖4.3 部門主管功能結構圖

下圖為員工的功能設計,員工參與上下班打卡,查看自己的獎懲,薪資以及培訓信息。

圖4.4 員工功能結構圖

4.3數據庫設計

企業人事管理系統選用關系數據庫作為程序的后臺支持,之所以選擇關系數據庫主要還是因為它易于使用,而且也方便進行數據維護,尤其是提供強大的SQL查詢語言。還有就是關系數據庫采用的二維表模型,跟現實生活中的邏輯非常貼近,與網狀模型,層次模型相比較,可以發現還是關系模型更容易被接受。

4.3.1數據庫E-R圖

這部分內容需要根據用戶需求當中的數據信息,進行拆分,并仔細分析,要從這些數據中標識出E-R模型需要使用的數據,其中有實體,有實體具備的屬性,有基于實體間的關系。在獲取了這些數據之后,就可以使用認可度比較高的Visio工具來完成E-R模型的建模。建模期間,只要注意Visio工具中,繪制E-R模型的各個符號代表的含義,并能夠正確把實體,屬性還有關系等數據完整表示就可以了。使用這樣的方法可以節省數據庫設計的時間,而且還可以直觀表達設計的內容,以及它們之間存在的聯系。

(1)設計的員工用戶實體,其具備的屬性如下圖。

圖4.4?員工用戶實體屬性圖

(2)設計的考勤實體,其具備的屬性如下圖。

圖4.5?考勤實體屬性圖

(3)設計的獎懲實體,其具備的屬性如下圖。

圖4.6 獎懲實體屬性圖

  1. 設計的薪資實體,其具備的屬性如下圖。

圖4.7 薪資實體屬性圖

(8)設計的實體間關系如下圖。

圖4.8 實體間關系E-R圖

4.3.2 數據庫結構

程序編碼基本都是參照設計的方案進行的,包括設計的數據庫也是對后面的編碼有著一定的影響。通常來說,數據庫就是保存數據,不管其設計得好壞,都不會喪失它本身的數據保存功能。設計數據庫的好壞,其區別在于,對數據存取的效率。設計比較好的數據庫,在數據查詢,存儲以及更新上,可以快速做出響應。設計不好的數據庫,很多時候不僅會延長數據的處理時間,還會容易出錯。因此,設計數據庫也是程序開發中很關鍵的環節。

針對本系統設計的數據庫,按照數據庫設計的原則,即設計數據庫的三大范式進行。各個數據表的結構都是根據E-R模型進行的物理轉化,對于一些細節問題,包括表的命名,字段的命名,字段類型和長度的設計等都比較規范化,這樣做的目的也是方便后期系統編程。

表4.1 考勤信息表

字段

類型

默認

注釋

id?(主鍵)

int(11)

主鍵

yonghu_id

int(11)

NULL

用戶

today

varchar(200)

NULL

打卡日期

on_time

timestamp

NULL

上班打卡時間

down_time

timestamp

NULL

下班打卡時間

chuqin_types

int(11)

NULL

打卡類型

overtimeNumber

int(11)

NULL

加班時間(小時)

create_time

timestamp

NULL

創建時間

表4.2 培訓信息表

字段

類型

默認

注釋

id?(主鍵)

int(11)

主鍵

yonghu_id

int(11)

NULL

用戶

on_time

timestamp

NULL

培訓開始時間

down_time

timestamp

NULL

培訓結束時間

day_number

int(11)

NULL

培訓天數

cultivate_content

varchar(200)

NULL

培訓內容

create_time

timestamp

NULL

創建時間

表4.3 獎懲信息表

字段

類型

默認

注釋

id?(主鍵)

int(11)

主鍵

yonghu_id

int(11)

NULL

用戶id

jiangcheng_name

varchar(200)

NULL

獎懲名稱

jiangcheng_types

int(11)

NULL

獎懲類型

jiangcheng_content

varchar(200)

NULL

獎懲詳情

insert_time

timestamp

NULL

獎懲時間

create_time

timestamp

NULL

創建時間

表4.4 管理員信息表

字段

類型

默認

注釋

id?(主鍵)

bigint(20)

主鍵

username

varchar(100)

用戶名

password

varchar(100)

密碼

role

varchar(100)

管理員

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增時間

表4.5 薪資信息表

字段

類型

默認

注釋

id?(主鍵)

int(11)

主鍵

yonghu_id

int(11)

NULL

用戶

month

varchar(200)

NULL

月份

money

decimal(10,4)

NULL

薪資

create_time

timestamp

NULL

創建時間

表4.6 系統公告信息表

字段

類型

默認

注釋

id?(主鍵)

bigint(20)

主鍵

addtime

timestamp

CURRENT_TIMESTAMP

創建時間

biaoti

varchar(200)

NULL

標題

leixing

varchar(200)

NULL

類型

neirong

longtext

NULL

內容

riqi

datetime

NULL

日期

表4.7 用戶信息表

字段

類型

默認

注釋

id?(主鍵)

int(11)

主鍵

username

varchar(200)

NULL

賬戶

password

varchar(200)

NULL

密碼

yonghu_name

varchar(200)

NULL

姓名

yonghu_phone

varchar(200)

NULL

手機號

yonghu_id_number

varchar(200)

NULL

身份證號

yonghu_photo

varchar(200)

NULL

頭像

sex_types

int(11)

NULL

性別

bumen_types

int(11)

NULL

部門

role_types

int(11)

NULL

權限

create_time

timestamp

NULL

創建時間


第五章?系統實現

這部分工作主要由程序編制人員完成。通常在面對一個大型的系統時,這些程序編制人員就會明確分工,每個人都完成不同的功能模塊,在用代碼實現功能的基礎上,提前預留好接口,最后才將他們已完成的功能模塊通過接口進行組合。

5.1 管理員功能實現

5.1.1 用戶管理

管理用戶是管理員的功能。其運行效果圖如下。這里的用戶包括總經理,部門主管,員工,他們的資料都需要管理員來管理。

圖5.1?用戶管理頁面

5.1.2 考勤管理

管理考勤是管理員的功能。其運行效果圖如下。管理員查看所有人員的考勤打卡信息,包括上班打卡,下班打卡信息。

圖5.2 考勤管理頁面

5.1.3 培訓管理

管理培訓信息是管理員的功能。其運行效果圖如下。本模塊主要讓管理員查看所有人員的培訓信息。

圖5.3 培訓管理頁面

5.2 總經理功能實現

5.2.1 獎懲管理

管理獎懲信息是總經理的功能。其運行效果圖如下。總經理添加獎懲信息,查看部門主管和員工的獎懲信息。

圖5.4?獎懲管理頁面

5.2.2 薪資管理

管理薪資是總經理的功能。其運行效果圖如下。總經理添加薪資信息,查看部門主管和員工的每月薪資。

圖5.5?薪資管理頁面

5.3 部門主管功能實現

5.3.1 考勤管理

管理員工的考勤信息是部門主管的功能。其運行效果圖如下。部門主管可以參與上下班打卡,可以查看自己的考勤打卡信息。

圖5.6?考勤管理頁面

5.3.2 獎懲管理

管理員工的獎懲信息是部門主管的功能。其運行效果圖如下。部門主管能夠新增員工的獎懲信息,可以查看部門員工的獎懲信息。

圖5.7?獎懲管理頁面

5.3.3 系統公告管理

管理系統公告是部門主管的功能。其運行效果圖如下。部門主管可以發布系統公告,對系統公告信息進行修改,查看和刪除。

圖5.8?系統公告管理頁面

5.4 員工功能實現

5.4.1 培訓查看

查看培訓信息是員工的功能。其運行效果圖如下。員工可以在自己的后臺查詢培訓信息,查看屬于自己的培訓詳細信息。

圖5.9?培訓查看頁面

5.4.2 薪資查看

查看薪資是員工的功能。其運行效果圖如下。員工在當前頁面只能查詢薪資,查看自己的薪資明細。

圖5.10?薪資查看頁面

5.4.3 考勤管理

管理個人的考勤信息是員工的功能。其運行效果圖如下。員工參與上下班打卡,可以查詢考勤記錄信息。

圖5.11?考勤管理頁面

第六章?系統測試

面對制作完成的系統,接下來需要開展的工作是對其進行測試。這個環節需要利用各種方式,去發現目標系統中存在的問題,并及時分析和解決,讓目標系統最終可以被用戶驗收。

6.1 系統測試的實施

接下來進行的測試內容,包括確認測試和驗收測試等。

確認測試:這個環節的主要任務就是對制作的系統的有效性進行確認,所以它也有另外一個名字,就是有效性測試。測試人員通過復審目標系統的功能還有其運行環境的配置,來檢驗目標系統跟前面分析設計的用戶需求說明書是否匹配。

驗收測試:在實際中,通常需要開發員,質量保證人員以及系統面向的用戶參與到這個環節。讓用戶在系統的操作界面上通過設計的用例進行數據錄入,檢測系統的輸出結果。

回歸測試:主要用于測試變更的軟件。在保證改動的系統不會產生其他錯誤的情況下,對系統修改的部分進行正確性驗證。

6.2 系統測試用例

很多時候,需要對系統中的指定功能進行數據檢驗,檢驗不同數據的錄入,其產生的結果或反饋的信息跟預定的需求是否有差別。

6.2.1?登錄功能測試

作為企業人事管理系統的入門門檻,其登錄功能扮演著相當重要的作用,可以把非條件用戶置之門外保護系統安全,同時還能引導不同用戶進入不同的操作區。本系統的登錄功能測試表如下。每當有不同形式的數據進行錄入時,該系統會對每條數據進行判斷。準確錄入的數據才會讓訪問者登錄進入功能操作區。

表6.1 登錄功能測試表

測試內容

錄入的數據

預期結果

最終結果

輸入用戶表的賬號和密碼

賬號:user

密碼:user

登錄成功

登錄成功

隨意輸入賬號和密碼

賬號:uuu

密碼:uuu

提示信息錯誤

提示信息錯誤

輸入用戶表的賬號,密碼隨意輸入

賬號:user

密碼:uuu

提示賬號密碼不匹配

提示賬號密碼不匹配

隨意輸入賬號,輸入用戶表的密碼

賬號:uuu

密碼:user

提示賬號密碼不匹配

提示賬號密碼不匹配

6.2.2?添加部門功能測試

部門信息表里面存放了很多部門名稱信息,且這些部門名稱都不一致,管理員在登記部門信息時,如果登記了部門表里面的部門名稱,則不會成功添加部門,相反,管理員就可以成功添加部門。

表6.2 添加部門功能測試表

測試內容

錄入的數據

預期結果

最終結果

輸入部門表的部門名稱

部門名稱:財務部

操作失敗

操作失敗

輸入部門表沒有的部門名稱

部門名稱:行政部

操作成功

操作成功

6.3 測試的結果

在對企業人事管理系統進行測試后,發現本系統具有的統一界面和清楚的導航設計讓系統具備了易操作性的特點,在與用戶需求進行比較后,發現本系統具備的功能比較完善,在運行環境中可以正常使用,這里運行環境與本系統的生產環境相似。總之,企業人事管理系統測試合格。


結 ?論

為了完成企業人事管理系統的設計實現,我重新回顧了以往的專業知識,并重點學習了編程技術,其中有JAVA語言的學習,也學習了MySQL數據庫的運用,還有界面布局等方面的知識。有了這些知識的填充,并依靠導師的幫助,我才能夠獨立設計制作本系統。

系統在開發前,先要確定使用用戶是誰,以及確定程序的適用范圍等,如此才可以對系統定位。只有準確定位系統,才可以節省開發時間,并省去一些不必要的麻煩。系統的功能是對使用用戶進行調研獲取,當然,系統的功能也采取了歷來的一些相似系統的功能。而系統設計則是基于功能需求分析,這也是比較重要的環節,需要認真對待。因為此設計方案對后期的編碼起著重要的作用,不僅可以降低編碼期間的出錯率,還可以提高編碼速度,畢竟系統的實現部分,基本都是參照系統設計的方案進展的。當系統編碼完成,也會進行最后的測試環節,當開發的系統檢驗合格之后,系統開發才能夠結束。本系統的開發也是遵循這樣的流程,即分析功能,設計系統模塊,設計數據庫,實現系統功能,測試系統等。

本系統具有較完善的功能,使用者基本可以使用本系統去處理相關數據,而且系統可以較長時間進行工作。對于系統的操作,使用者也易于上手,畢竟本系統在設計時,就對頁面中的導航模塊進行重點設計,把頁面中的重點區域用來展示系統的導航功能,讓使用者進入系統界面,可以第一時間發現系統的導航,并使用系統的導航功能找到需要的內容。對于系統的安全性,本系統在保存用戶賬號密碼數據時,也是用當下流行的MD5加密技術來保障數據安全,也在系統的登錄模塊設置了安全驗證規則,引導符合條件的用戶進入系統指定頁面。

本系統具備一定的優勢的同時,它也會暴露出自身的缺陷,比如,本系統在編碼過程中,對使用的變量的命名不方便記憶,并且也不規范,代碼編寫也不規范,缺少關鍵代碼的注釋等,還有系統的目錄規劃不合理等問題。

?綜上所述,本系統還需要時間來完善,本人也需要加強技術知識的學習與實踐,在今后的工作中,我也需要注重個人能力的培養,及時吸收編程技術知識,然后運用先進成熟的技術去重構本系統,讓系統日益完善。


參考文獻

[1]吳亮.中小企業人事管理系統設計[J].科學技術創新,2020(31):73-74.

[2]崔靖奇,趙廣復.基于JAVA的中小企業人事管理系統的研究[J].電腦與電信,2019(08):28-30.

[3]王惠.基于JSP的企業人事管理系統的設計與實現[J].電腦知識與技術,2018,14(33):75-77.

[4]張明亮.JSP技術在互聯網軟件中的應用優勢研究[J].軟件工程,2019,22(10):19-21+6.

[5]趙曉丹.網頁開發中的JSP技術分析[J].南方農機,2019,50(20):247-248.

[6]宋麗娜.基于JSP的Web開發中文亂碼問題的研究與解決[J].電子技術,2015,42(11):5-7.

[7]汪君宇.基于JSP的Web應用軟件開發技術分析[J].科技創新與應用,2018(16):158-160.

[8]趙鋼.JSP Servlet+EJB的Web模式應用研究[J].電子設計工程,2016,21(13):47-49.

[9]秦超,潘猛,張鵬.處理MySQL的典型問題[J].網絡安全和信息化,2018(04):70-72.

[10]李仕偉,周坤,劉新蕊,李寶林.MySQL數據庫優化技術[J].信息與電腦(理論版),2016(12):173-174.

[11]張云健.計算機軟件Java編程特點及其技術應用[J].信息與電腦(理論版),2019(13):97-98.

[12]劉星淇.Java編程語言的特點與應用分析[J].通訊世界,2019,26(09):149-150.

[13]岳青玲.Java面向對象編程的三大特性[J].電子技術與軟件工程,2019(24):239-240.

[14]謝懿.計算機軟件JAVA編程特點及其技術分析[J].農家參謀,2020(01):166.

[15]喬嵐.基于MyBatis和Spring的JavaEE數據持久層的研究與應用[J].信息與電腦(理論版),2017(08):73-76.

[16]鄒紅霆.基于SSM框架的Web系統研究與應用[J].湖南理工學院學報(自然科學版),2017,30(01):39-43.

[17]于萬波.網站開發與應用案例教程[M].清華大學出版社,2015.

[18]Xuan Yin, Wei Zheng, Ming Zhang, Jing Zhang, G. Zhuang, T. Ding. A modularized operator interface framework for Tokamak based on MVC design pattern[J]. Fusion Engineering and Design, 2018.

[19]Oscar Rodriguez-Prieto,Francisco Ortin,Donna O’Shea. Efficient runtime aspect weaving for Java applications[J]. Information and Software Technology,2018,100.


??

自從來到了這個校園,我覺得我改變了很多,我的性格也變得開朗,我的知識也得到了增長,還有我對社會的認知也得到了改變。因為,處于這個校園中,有來自五湖四海的同學們,我們都可以在一起學習,課后還可以互相攀談,感覺這樣的生活真的很有趣,還有校園的老師們,他們都具備較高的學歷,擁有豐富的專業知識,而且他們一直都很認真的教授我們知識。

到現在為止,我都不后悔來到這個學校,因為大學校園跟高中時所處的環境不一樣,大學校園的時間節點是碎片化的,可以根據自身情況綜合利用,可以用來學習知識,也可以用來去社會上實踐,增長社會見識,為畢業后的工作打下基礎等。然而,這一切都即將結束,因為畢業了就要離開校園,真正步入社會進行生活。

在這最后的時間里,我想對身邊的人表示感謝。首先是導師,他陪伴著我度過了畢業設計制作的這段時間,還提供給我各種幫助,其中有系統選題方面的建議,功能分析上的意見,編程技術的指導等,還時不時關懷我,讓我不要焦躁,設計制作的每個環節都督促我認真完成,遇到問題后,先嘗試自行解決,沒有思路時,導師就會幫助我,并提供解決問題的辦法。所以,我能上交項目程序,導師功不可沒。其次是班上的同學,雖然在這幾年的朝夕相處中,我們彼此互相關懷,遇到問題,相互幫助,這些同學豐富了我的校園生活。最后是校園的老師們,他們辛苦教學,傳授知識給我們,才讓我們能夠成長,我們也學到了本事,面對學習中或生活中的問題,我們也有能力去解決。

總之,面臨畢業,我希望我的老師們可以心想事成,班上的同學都能找到好工作,我的母校前景更輝煌

核心代碼展示

/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView =  newsService.selectView(ew);return R.ok("查詢公告通知成功").put("data", newsView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719524.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719524.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719524.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

突破編程_C++_字符串算法(判斷字符串是否包含)

1 算法題 &#xff1a;判斷一個字符串是否包含另一個字符串的所有字符&#xff08;不一定連續&#xff09; 1.1 題目含義 判斷一個字符串&#xff08;稱為“主字符串”或“大字符串”&#xff09;是否包含另一個字符串&#xff08;稱為“子字符串”或“小字符串”&#xff09…

代碼隨想錄算法訓練營第31天—貪心算法05 | ● 435. 無重疊區間 ● *763.劃分字母區間 ● *56. 合并區間

435. 無重疊區間 https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html 考點 貪心算法重疊區間 我的思路 先按照區間左坐標進行排序&#xff0c;方便后續處理進行for循環&#xff0c;循環范圍是0到倒數第二個元素如果當前區間和下一區間重疊…

在Linux以命令行方式(靜默方式/非圖形化方式)安裝MATLAB(正版)

1.根據教程&#xff0c;下載windows版本matlab&#xff0c;打開圖形化界面&#xff0c;選擇linux版本的只下載不安裝 2.獲取安裝文件夾 3.獲取許可證 4.安裝 &#xff08;1&#xff09;跳過引用文章的2.2章節 &#xff08;2&#xff09;本文的安裝文件夾代替引用文章的解壓IS…

Java進階(鎖)——鎖的升級,synchronized與lock鎖區別

目錄 引出Java中鎖升級synchronized與lock鎖區別 緩存三兄弟&#xff1a;緩存擊穿、穿透、雪崩緩存擊穿緩存穿透緩存雪崩 總結 引出 Java進階&#xff08;鎖&#xff09;——鎖的升級&#xff0c;synchronized與lock鎖區別 Java中鎖升級 看一段代碼&#xff1a; public class…

Fastwhisper + Pyannote 實現 ASR + 說話者識別

文章目錄 前言一、faster-whisper簡單介紹二、pyannote.audio介紹三、faster-whisper pyannote.audio 實現語者識別四、多說幾句 前言 最近在研究ASR相關的業務&#xff0c;也是調研了不少模型&#xff0c;踩了不少坑&#xff0c;ASR這塊&#xff0c;目前中文普通話效果最好的…

Scrapy與分布式開發(1.1):課程導學

Scrapy與分布式開發&#xff1a;從入門到精通&#xff0c;打造高效爬蟲系統 課程大綱 在這個專欄中&#xff0c;我們將一起探索Scrapy框架的魅力&#xff0c;以及如何通過Scrapy-Redis實現分布式爬蟲的開發。在本課程導學中&#xff0c;我們將為您簡要介紹課程的學習目標、內容…

Verilog Coding Styles For Improved Simulation Efficiency論文學習記錄

原文基于Verilog-XL仿真器&#xff0c;測試了以下幾種方式對仿真效率的影響。 1. 使用 Case 語句而不是 if / else if 語句 八選一多路選擇器 case 實現效率比 if / else if 提升 6% 。 2. 如果可以盡量不使用 begin end 語句 使用 begin end 的 ff 觸發器比不使用 begin end …

初學者學習51還是STM32

初學者學習51還是STM32 在嵌入式系統領域&#xff0c;51和STM32是兩種常見的單片機架構。對于初學者來說&#xff0c;選擇學習哪種架構可能會成為一個難題。本文將對初學者學習51和STM32進行比較&#xff0c;以幫助讀者做出明智的選擇。 1. 51架構 51架構是指Intel 8051系列…

深度相機xyz點云文件三維坐標和jpg圖像文件二維坐標的相互變換函數

深度相機同時拍攝xyz點云文件和jpg圖像文件。xyz文件里面包含三維坐標[x,y,z]和jpg圖像文件包含二維坐標[x&#xff0c;y],但是不能直接進行變換&#xff0c;需要一定的步驟來推演。 下面函數是通過box二維框[xmin, ymin, xmax, ymax, _, _ ]去截取xyz文件中對應box里面的點云…

MyCAT學習——在openEuler22.03中安裝MyCAT2(網盤下載版)

準備工作 因為MyCAT 2基于JDK 1.8開發。也需要在虛擬機中安裝JDK&#xff08;JDK官網就能下載&#xff0c;我這提供一個捷徑&#xff09; jdk-8u401-linux-x64.rpmhttps://pan.baidu.com/s/1ywcDsxYOmfZONpmH9oDjfw?pwdrhel下載對應的tar安裝包,以及對應的jar包 安裝程序包…

九州金榜|孩子厭學要怎么辦?

孩子從小學到初中再到高中&#xff0c;孩子出現厭學情緒很正常&#xff0c;但是孩子出現厭學情緒后&#xff0c;就必然會影響到孩子學習成績&#xff0c;孩子產生厭學情緒的原因有哪些呢&#xff1f;只有找準孩子厭學原因才能去幫助孩子怎樣去克服孩子厭學情緒&#xff0c;下面…

ajax請求servlet成功但接收不到返回數據問題

ajax請求servlet成功但接收不到返回數據問題 javaweb初學者&#xff0c;最近老師布置的課設&#xff0c;所有功能都完成了&#xff0c;唯獨ajax與servlet交互出現問題&#xff0c;無論怎么調試都收不到數據 查詢兩天無果&#xff0c;剛才無意間看到 Crabime前輩的文章才恍然大…

深入解析YOLO:實時目標檢測技術的革命者

深入解析YOLO&#xff1a;實時目標檢測技術的革命者 目標檢測作為計算機視覺領域的一個核心任務&#xff0c;一直以來都是研究的熱點。而YOLO&#xff08;You Only Look Once&#xff09;技術作為其中的杰出代表&#xff0c;以其獨特的處理方式和卓越的性能&#xff0c;成為了…

day34貪心算法 part03

1005. K 次取反后最大化的數組和 簡單 給你一個整數數組 nums 和一個整數 k &#xff0c;按以下方法修改該數組&#xff1a; 選擇某個下標 i 并將 nums[i] 替換為 -nums[i] 。 重復這個過程恰好 k 次。可以多次選擇同一個下標 i 。 以這種方式修改數組后&#xff0c;返回數…

力扣棧隊列篇

以下思路來自代碼隨想錄以及官方題解。 文章目錄 232.用棧實現隊列225.用隊列實現棧20.有效的括號1047.刪除字符串中所有相鄰重復項150.逆波蘭表達式求值347.前K個高頻元素 232.用棧實現隊列 請你僅使用兩個棧實現先入先出隊列。隊列應當支持一般隊列支持的所有操作&#xff…

OSError: [WinError 1455] 頁面文件太小,無法完成操作。

[問題描述]&#xff1a;OSError: [WinError 1455] 頁面文件太小&#xff0c;無法完成操作。 原因1&#xff1a;線程數太大 方法&#xff1a;改小線程&#xff08;workers&#xff09;數。 原因2&#xff1a;虛擬內存太小或為0&#xff0c;調大虛擬內存。 方法&#xff1a;右鍵…

mysql索引過長Specialed key was too long的解決方法

在創建要給表的時候遇到一個有意思的問題&#xff0c;提示Specified key was too long; max key length is 767 bytes&#xff0c;從描述上來看&#xff0c;是Key太長&#xff0c;超過了指定的 767字節限制。通常出現在嘗試創建一個過長的唯一鍵&#xff08;UNIQUE KEY&#xf…

Vue.js 實用技巧:深入理解 Vue.mixin

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》 &#x1f35a; 藍橋云課簽約作者、上架課程《Vue.js 和 E…

uniapp真機運行的時候顯示同步資源失敗,未得到同步資源的授權,請停止運行后重新運行,并注意手機上的授權提示

1、問題 在添加清單文件之前&#xff0c;項目運行都是好好的&#xff0c;添加了清單項目以后&#xff0c;基座一打就報這個錯&#xff0c;并且手機在安裝基座的時候會提示解析包時失敗&#xff0c; 2、解決方案 打開我的清單文件&#xff0c;我發現我和官網寫的清單文件不一…

華為OD機試“HJ2計算某字符出現次數”不區分大小寫Java編程解答

描述 寫出一個程序&#xff0c;接受一個由字母、數字和空格組成的字符串&#xff0c;和一個字符&#xff0c;然后輸出輸入字符串中該字符的出現次數。&#xff08;不區分大小寫字母&#xff09; 數據范圍&#xff1a; 1≤n≤1000 輸入描述&#xff1a; 第一行輸入一個由字…