基于SSM框架的人力资源管理系统毕业设计源码060936
SSM人力資源管理系統
摘?要
科技進步的飛速發展引起人們日常生活的巨大變化,電子信息技術的飛速發展使得電子信息技術的各個領域的應用水平得到普及和應用。信息時代的到來已成為不可阻擋的時尚潮流,人類發展的歷史正進入一個新時代。在現實運用中,應用軟件的工作規則和開發步驟,采用Java技術建設人力資源管理系統安全方案。
本設計主要實現集人性化、高效率、便捷等優點于一身的人力資源管理系統安全方案,完成首頁、用戶管理、部門信息、培訓信息、薪資信息、員工信息等功能模塊。系統通過瀏覽器與服務器進行通信,實現數據的交互與變更。本系統通過科學的管理方式、便捷的服務提高了工作效率,減少了數據存儲上的錯誤和遺漏。人力資源管理系統安全方案使用Java語言,采用基于 MVVM模式的Java技術進行開發,使用 MyEclipse 2017 CI 10 編譯器編寫,數據方面主要采用的是微軟的MySQL關系型數據庫來作為數據存儲媒介,配合前臺HTML+CSS 技術完成系統的開發。
關鍵詞:安全方案;Java語言;關系型數據庫;數據存儲
SSM human resource management systemAbstrac
The rapid development of scientific and technological progress has caused great changes in people's daily life. The rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The advent of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In practical application, according to the working rules and development steps of application software, Java technology is used to build the security scheme of human resource management system.
This design mainly realizes the human resource management system security scheme integrating the advantages of humanization, high efficiency and convenience, and completes the functional modules such as home page, user management, department information, training information, salary information and employee information. The system communicates with the server through the browser to realize the interaction and change of data. Through scientific management and convenient service, the system improves work efficiency and reduces errors and omissions in data storage. The security scheme of human resource management system uses Java language and Java technology based on MVVM mode. It is written with MyEclipse 2017 CI 10 compiler. In terms of data, Microsoft's MySQL relational database is mainly used as the data storage medium, and the system development is completed with the foreground HTML + CSS technology.
Key words: safety scheme; Java language; Relational database; data storage
目 ?錄
第1章 緒論
1.1?研究背景
1.2?開發現狀
1.3?本文的組織結構
第2章 相關技術介紹
2.1 SSM框架
2.2 Java簡介
2.3 MySQL數據庫
2.4 B/S結構
2.5 MyEclipse開發工具
2.6 Vue.js主要功能
第3章 系統分析
3.1?可行性分析
3.1.1?技術可行性分析
3.1.2?經濟可行性分析
3.1.3?操作可行性分析
3.2?功能需求分析
3.3?非功能需求分析 7
3.4?數據流程分析 7
第4章 系統設計 8
4.1?系統架構設計 8
4.2?系統功能結構 8
4.3?數據庫設計
4.3.1?概念模型
4.3.3?數據表
第5章 系統實現
5.1?登錄模塊的實現
5.2?管理員功能模塊的實現 19
5.3?管理員子系統模塊的實現
第6章 系統測試 24
6.1?測試目的 24
6.2?測試過程 24
6.3?測試結果 25
第7章 總結與展望 26
參考文獻 27
致謝 29
為了提高員工管理的工作效率,減少不必要的開支,以及方便人事管理工作人員全面地掌握企業人事成果的基本情況。因此,設計開發一套專用的企業人力資源管理系統是十分重要的。然而,系統的具體設計與實現將針對每一個企業的人事管理情況具體進行開展。系統的開發首先要了解現有系統的缺點,為開發新的系統提供一個較為方便的解決方案,使管理人員在日常管理工作過程中,工作效率得以提高,并使企業資源得以更有效配置,從而提高企業的日常管理水平。
根據企業目前的實際情況,開發人員利用個人所擁有的計算機硬件設備和軟件條件,從思想上,工作思維和工作方式做起,開發一套完整的企業人力資源管理系統來實現一些人事基本信息的添加、刪除和修改。為減少員工管理人員的負擔,我們應該從根本上解決用手工操作工作量大且容易出錯的問題,同時,這也是員工管理領域以后發展的必然趨勢。
企業人力資源管理系統的發展歷史可以追溯到20世紀60年代末期。由于當時計算機技術已經進入實用階段,同時大型企業用手工來計算和發放薪資既費時費力又非常容易出差錯,為了解決這個矛盾,第一代的企業人力資源管理系統應運而生。當時由于技術條件和需求的限制,用戶非常少,而且那種系統充其量也只不過是一種自動計算薪資的工具,既不包含非財務的信息,也不包含薪資的歷史信息,幾乎沒有報表生成功能和薪資數據分析功能。但是,它的出現為人事的管理展示了美好的前景,即用計算機的高速度和自動化來替代手工的巨大工量,用計算機的高準確性來避免手工的錯誤和誤差,使大規模集中處理大型企業的薪資成為可能。
企業人力資源管理系統的變革出現在20世紀90年代末。由于市場競爭的需要,如何吸引和留住人才,激發人事的創造性、工作責任感和工作熱情已成為關系企業興衰的重要因素,人才已經成為企業最重要的資產之一。"公正、公平、合理"的企業管理理念和企業管理水平的提高,使社會對企業人力資源管理系統有了更高的需求;同時由于個人電腦的普及,數據庫技術、客戶/服務器技術,特別是Internet/Intranet技術的發展,使得第三代企業人力資源管理系統的出現成為必然。第三代企業人力資源管理系統的特點是從人事管理的角度出發,用集中的數據庫將幾乎所有與人事相關的數據(如薪資福利、招聘、個人職業生涯的設計、獎懲、職位管理、績效管理、崗位描述、個人信息和歷史資料)統一管理起來,形成了集成的信息源。友好的用戶界面,強有力的報表生成工具、分析工具和信息的共享使得人事管理人員得以擺脫繁重的日常工作,集中精力從戰略的角度來考慮企業人事規劃和政策。
第一章是緒論,本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。
第二章研究了人力資源管理系統安全方案的所采用的開發技術和開發工具。
第三章是系統分析部分,包括系統總體需求描述、功能性角度分析系統需求、非功能性等各個方面分析系統是否可以實現。
第四章是系統設計部分,本文章的重要部分,提供了系統架構的詳細設計和一些主要功能模塊的設計說明。
第五章是系統的具體實現,介紹系統的各個模塊的具體實現。
第六章在前幾章的基礎上對系統進行測試和運行。
最后對系統進行了認真的總結,以此對未來有一個新的展望。
當今流行的“SSM組合框架”是Spring + SpringMVC + MyBatis的縮寫,受到很多的追捧,“組合SSM框架”是強強聯手、各司其職、協調互補的團隊精神。web項目的框架,通常更簡單的數據源。Spring屬于一個輕量級的反轉控制框架(IoC),但它也是一個面向表面的容器(AOP)。SpringMVC常常用于控制器的分類工作模式,與模型對象分開,程序對象的作用與自動取款機進行處理。這種解耦治療使整個系統的個性化變得更加容易。MyBatis是一個良好的可持續性框架,支持普通SQL查詢,同時允許對存儲過程的高級映射進行數據的優化處理。大型Java Web應用程序的由于開發成本太高,開發后難以維護和開發過程中一些難以解決的問題,而采用“SSM組合框架”,它允許建立業務層次結構,并為這個問題提供良好的解決方案。
Java主要采用CORBA技術和安全模型,可以在互聯網應用的數據保護。它還提供了對EJB(Enterprise JavaBeans)的全面支持,java servlet API,SSM(java server pages),和XML技術。JAVA語言是一種面向對象的語言,它通過提供最基本的方法來完成指定的任務,開發者只需要知道一些概念就能夠編寫出一些應用程序。Java程序相對較小,其代碼能夠在小機器上運行。Java是一種計算機編程語言,具有封裝、繼承和多態性三個主要特性,廣泛應用于企業Web應用程序開發和移動應用程序開發。
Java語言和一般編譯器以及直譯的區別在于,Java首先將源代碼轉換為字節碼,然后將其轉換為JVM的可執行文件,JVM可以在各種不同的JVM上運行。因此,實現了它的跨平臺特性。雖然這使得Java在早期非常緩慢,但是隨著Java的開發,它已經得到了改進。
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的人力資源管理系統安全方案也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象[8]。
B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題[9]。
MyEclipse是由Genuitec公司開發的,一款功能非常強大的JavaEE的集成開發環境,其中包括有:完備的編碼、調試、測試和發布功能[10],完整支持JSP、Spring、CSS、JavaScript、SpringMVC、HTML、JSF、Mybatis、SQL等技術。在體系結構上,MyEclipse的特征可以被分為7類:JavaEE模型;Web開發工具、EJB開發工具、JavaEE項目部署服務、應用程序服務器的而連接器、數據庫服務、MyEclipse整合幫助[11]。
對于以上每一種功能的類別,在MyEclipse中都有相應的功能部件,并通過一系列的插件來實現它們。MyEclipse在結構上的這種模塊化,可以讓它在不影響其他模塊的情況下,對其中任意的一個模塊進行單獨的擴展和升級。強大的MyEclipse應用開發平臺也不僅僅只是Eclipse的插件而已,同時更是一款功能強大的,用于JavaEE的集成開發環境[12]。
Vue.js是一套構建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發的設計。Vue 的核心庫只關注視圖層,并且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅動采用單文件組件和Vue生態系統支持的庫開發的復雜單頁應用。
Vue.js 的目標是通過盡可能簡單的 API 實現響應的數據綁定和組合的視圖組件。
Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學習,非常容易與其它庫或已有項目整合。另一方面,在與相關工具和支持庫一起使用時,Vue.js 也能驅動復雜的單頁應用。
本次設計基于B/S 模式下,運用Java、JSP技術采用的是MySQL數據庫和Myeclipse實現,總體的可行性共分為以下三個方面。
所謂的技術可行性就是在限定時間,前期擬定的功能能否被滿足。在開發設計上是否會遇上解決不了的問題。做完的項目能否被很好地應用,如果存在缺點在后期的維護上是否存在很大的難度。在對這個系統評估后,認定已存在的技術能達成目標。用JSP技術來實現動態的頁面,嵌入低依賴性的設計模式,靈活的數據庫,配合穩定的服務器,整個系統的運行效率大大提升。由此可見,在技術層面達成目標不是非非之想。
在項目上使用的工具大部分都是是當下流行開源免費的,所以在開發前期,開發時用于項目的經費將會大大降低,不會讓開發該軟件在項目啟動期受到經費的影響,所以經濟上還是可行的。盡量用最少的花費去滿足用戶的需求。省下經費用于人工費,以及設備費用。將在無紙化,高效率的道路上越走越遠。
本系統實現功能的操作很簡單,普通電腦的常見配置就可以運行本軟件,并且只要粗通電腦使用的基本常識就可以流暢的使用本軟件。電腦具備連接互聯網的能力,并且可以正常訪問系統,并不需要操作者有什么高超的能力,只需了解業務流程,并且按照專業知識進行正確操作即可,所以人力資源管理系統安全方案具備操作可行性。
在系統開發設計前,應該對功能做初步設想,清楚這個管理系統有什么板塊,每個板塊有什么功能,整體的設計是否滿足使用者的需求,接著對所開發的系統功能進行的詳細分析總結,從而設計出完整的系統并將其實現。用戶和開發人員的交流分析,使其達到最佳理解程度,使系統功能達到最佳。
管理員用例圖如下所示。
?
圖3-1 管理員用例圖
員工用例圖如下所示。
?
圖3-2 用戶用例圖
人力資源管理系統安全方案在對需求做解析后,整個系統主要分為兩個部分:管理員和員工,每個模塊下的分支功能不一樣。對功能做出如下說明:
員工模塊:
賬號登錄認證。
管理個人資料信息,修改可修改的信息項。
員工培訓查詢,同時查看歷史已培訓的記錄。
員工工資查詢,同時查看歷史已有工資的記錄。
管理員模塊:
維護員工,審核員工的賬號,可以凍結員工的登錄權限,或者刪除員工賬號。
發布公告,并可以銷毀某個公告,更新公告數據,模糊搜索公告數據等。
管理員工培訓數據。
系統非功能需求有非常多,比如性能需求、可承載最大用戶數、穩定性、易用性需求等。本系統分析時考慮到易用性需求,因為系統是給人使用的,所以必須充分從用戶的角度出發,考慮用戶體驗,使系統易理解易上手易操作。
一層數據流程圖包括了登錄、用戶功能和檢索維護等模塊,在登錄模塊使用到的數據存儲有用戶賬戶文檔,用戶功能模塊需要的存儲是用戶各功能模塊數據文檔,檢索維護是使用以上這些數據文檔通過關鍵詞進行檢索。
系統的一層數據流圖如下圖所示。
?
圖3-2系統數據流圖(一層)
系統設計
目前B/S體系的系統主要的數據訪問方式是:通過瀏覽器頁面用戶可以進入系統,系統可以自動對用戶向服務器發送的請求進行處理,處理請求是在系統后臺中進行的,用戶在瀏覽器頁面上進行相應操作,就能夠看到服務端傳遞的處理結果。人力資源管理系統安全方案主要分為視圖-模型-控制三層架構設計。在視圖層中,主要是操作在服務器端向客戶端反饋并顯示的數據,在模型層中,主要處理相關的業務邏輯、數據整合等,最后的控制層它介于視圖和模型之間,主要是調整兩層之間的關系,最終落實數據的傳遞。
系統架構圖如下圖所示。
?
圖4-1系統架構圖
系統設計的目的是分析系統包括的所有功能結構,為開發人員設計開發和實現系統做好準備工作。經過前期的需求調查、分析和整理之后,確定的總體需求主要包括多個模塊,分別是:用戶管理、用戶管理、部門信息、培訓信息、薪資信息、員工信息。系統整體角色分為兩個部分,一是員工、最后是管理員。權限分布也是很明顯,員工是在除去瀏覽信息之外還具有查詢和管理自己賬戶信息、管理員是最高權限擁有者。
系統功能結構圖如下圖所示。
圖4-2系統功能結構圖
?
對于一個要開發的系統來說,E-R圖可以讓別人能更快更輕松的了解此系統的事務及它們之間的關系。根據系統分析階段所得出的結論確定了在人力資源管理系統安全方案中存在著多個實體分別是用員工、部門信息、培訓信息、薪資信息、員工信息。
系統總體ER圖如下圖所示。
?
數據庫邏輯結構就是將E-R圖在數據庫中用具體的字段進行描述。用字段和數據類型描述來使對象特征實體化,最后形成具有一定邏輯關系的數據庫表結構。人力資源管理系統安全方案所需要的部分數據結構表如下表所示。
| ordinary_users | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| ordinary_users_id | int | 11 | 否 | 主鍵 | 普通用戶ID |
| user_name | varchar | 64 | 是 | 用戶名 | |
| full_name | varchar | 64 | 是 | 姓名 | |
| gender | varchar | 64 | 是 | 性別 | |
| age | varchar | 64 | 是 | 年齡 | |
| examine_state | varchar | 16 | 否 | 審核狀態 | |
| recommend | int | 11 | 否 | 智能推薦 | |
| user_id | int | 11 | 否 | 用戶ID | |
| create_time | datetime | 0 | 否 | 創建時間 | |
| update_time | timestamp | 0 | 否 | 更新時間 | |
| department_information | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| department_information_id | int | 11 | 否 | 主鍵 | 部門信息ID |
| department_name | varchar | 64 | 是 | 部門名稱 | |
| department_cover | varchar | 255 | 是 | 部門封面 | |
| office_address | varchar | 64 | 是 | 辦公地址 | |
| scope_of_responsibility | varchar | 64 | 是 | 負責范圍 | |
| minister_name | varchar | 64 | 是 | 部長名稱 | |
| contact_number | varchar | 64 | 是 | 聯系電話 | |
| recommend | int | 11 | 否 | 智能推薦 | |
| create_time | datetime | 0 | 否 | 創建時間 | |
| update_time | timestamp | 0 | 否 | 更新時間 | |
| employee_information | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| employee_information_id | int | 11 | 否 | 主鍵 | 員工信息ID |
| employee_number | int | 11 | 否 | 員工編號 | |
| employee_name | varchar | 64 | 是 | 員工姓名 | |
| employee_gender | varchar | 64 | 是 | 員工性別 | |
| employee_age | varchar | 64 | 是 | 員工年齡 | |
| employee_department | varchar | 64 | 是 | 員工部門 | |
| employee_position | varchar | 64 | 是 | 員工職位 | |
| entry_date | date | 0 | 是 | 入職日期 | |
| recommend | int | 11 | 否 | 智能推薦 | |
| create_time | datetime | 0 | 否 | 創建時間 | |
| update_time | timestamp | 0 | 否 | 更新時間 | |
| ordinary_users | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| ordinary_users_id | int | 11 | 否 | 主鍵 | 普通用戶ID |
| employee_number | varchar | 64 | 否 | 員工編號 | |
| employee_name | varchar | 64 | 是 | 員工姓名 | |
| employee_gender | varchar | 64 | 是 | 員工性別 | |
| employee_age | varchar | 64 | 是 | 員工年齡 | |
| examine_state | varchar | 16 | 否 | 審核狀態 | |
| recommend | int | 11 | 否 | 智能推薦 | |
| user_id | int | 11 | 否 | 用戶ID | |
| create_time | datetime | 0 | 否 | 創建時間 | |
| update_time | timestamp | 0 | 否 | 更新時間 | |
| salary_information | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| salary_information_id | int | 11 | 否 | 主鍵 | 薪資信息ID |
| employee_number | int | 11 | 否 | 員工編號 | |
| employee_name | varchar | 64 | 是 | 員工姓名 | |
| employee_department | varchar | 64 | 是 | 員工部門 | |
| basic_salary | int | 11 | 是 | 基礎工資 | |
| bonus | int | 11 | 是 | 獎金 | |
| fine | int | 11 | 是 | 罰款 | |
| net_salary | varchar | 64 | 是 | 實發工資 | |
| recommend | int | 11 | 否 | 智能推薦 | |
| create_time | datetime | 0 | 否 | 創建時間 | |
| update_time | timestamp | 0 | 否 | 更新時間 | |
| training_information | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| training_information_id | int | 11 | 否 | 主鍵 | 培訓信息ID |
| training_name | varchar | 64 | 是 | 培訓名稱 | |
| training_date | date | 0 | 是 | 培訓日期 | |
| training_address | varchar | 64 | 是 | 培訓地址 | |
| training_host | varchar | 64 | 是 | 培訓主持人 | |
| remarks | varchar | 64 | 是 | 備注 | |
| training_content | longtext | 0 | 是 | 培訓內容 | |
| recommend | int | 11 | 否 | 智能推薦 | |
| create_time | datetime | 0 | 否 | 創建時間 | |
| update_time | timestamp | 0 | 否 | 更新時間 | |
| upload | |||||
| 字段名稱 | 類型 | 長度 | 不是null | 主鍵 | 字段說明 |
| upload_id | int | 11 | 否 | 主鍵 | 上傳ID |
| name | varchar | 64 | 是 | 文件名 | |
| path | varchar | 255 | 是 | 訪問路徑 | |
| file | varchar | 255 | 是 | 文件路徑 | |
| display | varchar | 255 | 是 | 顯示順序 | |
| father_id | int | 11 | 是 | 父級ID | |
| dir | varchar | 255 | 是 | 文件夾 | |
| type | varchar | 32 | 是 | 文件類型 | |
系統的登錄窗口是用戶的入口,用戶只有在登錄成功后才可以進入訪問。通過在登錄提交表單,后臺處理判斷是否為合法用戶,進行頁面跳轉,進入系統中去。
登錄合法性判斷過程:用戶輸入賬號和密碼后,系統首先確定輸入輸入數據合法性,然后在login.jsp頁面發送登錄請求,調用src下的mainctrl類的dopost方法來驗證。
用戶登錄模塊的IPO如下所示:
輸入:用戶名和密碼。
處理:
1)檢測用戶輸入的賬號、密碼是否正確及在數據庫已對應存在。
2)從數據庫中提取記錄,并儲存在本地的session中(timeout默認=30min)。
3)根據用戶名,將其顯示在系統首頁上。
輸出:是否成功的信息。
登錄流程圖如下所示。
?
圖5-1登錄流程圖
系統登錄界面如下所示。
?
圖5-2系統登錄界面
用戶登錄的邏輯代碼如下。
??/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態,不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數據庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
系統呈現出一種簡潔大方的首頁:界面簡約、鱗次櫛比,用戶能輕車熟路的使用。出于對系統使用群體廣泛的顧慮,應有良好性能的后臺。
如下圖所示為系統的首頁界面。
?
圖5-3系統首頁界面
其中載入前臺頁面的主要代碼如下。
<mapper namespace="com.project.demo.dao.base.BaseMapper">
????<select id="selectBaseList" resultType="java.util.LinkedHashMap">
????????${select}
????</select>
????<select id="selectBaseCount" resultType="Integer">
????????${count}
????</select>
????<select id="selectBaseOne" resultType="Object">
????????${select}
????</select>
????<update id="updateBaseSql">
????????${sql}
????</update>
????<delete id="deleteBaseSql">
????????${sql}
????</delete>
</mapper>
管理員登錄進入人力資源管理系統可以查看管理員:首頁、用戶管理、部門信息、培訓信息、薪資信息、員工信息管理等內容,如圖5-4所示。
?
圖5-4管理員信息界面圖
用戶管理,在用戶管理可以查看用戶賬號、姓名、頭像、聯系電話、郵箱等信息,并可根據需要進行修改或刪除操作,如圖5-5所示。
?
圖5-5企業管理界面圖
部門信息管理,在部門信息列表可以查看部門名稱、部門封面、辦公地址、負責范圍、部長名稱、聯系電話等信息,并可根據需要進行修改或刪除操作,如圖5-6所示。
圖5-5部門信息管理界面圖
?
薪資管理,在薪資管理列表可以查看員工編號、員工姓名、員工性別、員工年齡、員工部門、員工職位、等信息,如圖5-6所示。
圖5-6薪酬管理界面圖
?
培訓信息管理,在培訓信息列表可以查看培訓名稱、員工、培訓地點、培訓時間、培訓內容等信息,并可根據需要進行修改或刪除操作,如圖5-7所示。
?
圖5-7培訓信息管理界面圖
用戶登錄進入人力資源管理系統可以查看首頁、部門信息、培訓信息、薪資信息、員工信息等內容,如圖5-8所示。
?
圖5-8員工功能界面圖
個人中心,在個人信息頁面通過填寫用戶名、用戶組、狀態、昵稱、聯系電話、郵箱等內容,并可根據需要對個人信息信息進行修改,如圖5-9所示。
?
圖5-9個人中心界面圖
員工信息管理,在員工信息列表可以查看員工編號、員工姓名、員工性別、員工年齡、員工部門、員工職位、入職日期等信息,如圖5-10所示。
圖5-10員工信息管理界面圖
統測試
在對該系統進行完詳細設計和編碼之后,就要對人力資源管理系統安全方案的程序進行測試,檢測程序是否運行無誤,反復進行測試和修改,使之最后成為完整的軟件,滿足用戶的需求,實現預期的功能。
在軟件的測試過程中,通常測試人員需要針對不同的功能模塊設計多種測試用例。通過測試用例能夠及時發現代碼業務邏輯上是否與真實的業務邏輯相對應,及時發現代碼上或邏輯上的缺陷,以此來來完善系統,提高軟件產品的質量,使軟件具有良好的用戶體驗。
登錄測試用例表如下所示。
表6-1登錄測試用例
| 測試性能 | 用戶或操作員登錄系統 | ||
| 用例目的 | 測試用戶或操作員登錄系統時功能是否正常 | ||
| 前提條件 | 進入用戶登錄頁面或操作員登錄頁面 | ||
| 輸入條件 | 預期輸出 | 實際情況 | |
| 各項信息不予填寫,直接點擊登陸按鈕 | 不允許登錄,提示填寫賬號相關信息 | 一致 | |
| 填寫錯誤的登錄名或密碼后點擊登錄系統 | 提示用戶名或密碼錯誤,要求重新填寫進行登錄 | 一致 | |
| 填寫與驗證碼信息不一致的信息 | 系統顯示出提示信息,表明驗證碼錯誤,要求重新填寫 | 一致 | |
員工培訓測試用例表如下所示。
表6-2員工培訓測試用例
| 測試性能 | 用戶進行員工培訓的操作 | ||
| 用例目的 | 測試用戶進行員工培訓操作時,該功能是否正常 | ||
| 前提條件 | 用戶進入員工詳情頁,該員工能夠被培訓 | ||
| 輸入條件 | 預期輸出 | 實際情況 | |
| 對著某員工點擊“培訓”按鈕 | 界面跳轉至培訓界面 | 一致 | |
| 在培訓界面,輸入必填項,點擊“提交”按鈕 | 提示“培訓成功”,并返回上一級界面 | 一致 | |
| 在培訓界面,填寫培訓表單的時候未輸入完整,點擊“提交”按鈕 | 提示“培訓失敗” | 一致 | |
員工管理測試用例表如下所示。
表6-3員工管理測試用例
| 測試性能 | 員工相關信息管理功能 | ||
| 用例目的 | 測試系統操作者對員工相關信息進行管理的功能是否正常 | ||
| 前提條件 | 登錄系統進入相關管理頁面 | ||
| 輸入條件 | 預期輸出 | 實際情況 | |
| 進入員工管理界面,點擊“錄入”按鈕,填寫所有必填項,點擊提交 | 提示“錄入成功”,并返回查詢界面 | 一致 | |
| 進入員工管理界面,點擊“錄入”按鈕,未填寫一個或者多個必填項,點擊提交 | 提示“錄入失敗”,請填寫必填項 | 一致 | |
| 進入員工管理界面,選擇要修改的一條數據,點擊該條數據后面的“修改”按鈕? | 節目跳轉至修改界面 | 一致 | |
| 在修改界面,修改可修改項后,點擊“提交”按鈕 | 提示“修改成功”,并返回查詢界面 | 一致 | |
| 進入員工管理界面,點擊某條數據后面的刪除按鈕 | 提示“是否要刪除該數據”,如果用戶點擊“確定”按鈕,則成功刪除該條數據,并提示“刪除成功”,之后返回查詢界面 | 一致 | |
經過對此系統的測試,得出該系統足以滿足用戶日常需求,在功能項目和操作等方面也能滿足操作員對于其他用戶的管理。但是,還有很多功能有待添加,這個系統僅能滿足大部分的需求,還需要對此系統的功能更進一步的完善,這樣使用起來才能更加的完美。
通過人力資源管理系統安全方案的開發,本人鞏固了之前學過的知識,如今將平時所學到的知識融合在設計中,在設計過程中,做了很多的準備,首先,在數據庫系統的設計過程中,尤其是在數據庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務器的選擇,其次,利用所學的知識點分析所做的系統,并在此基礎上設計。
目前本系統已經上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現阻斷性問題,有一些不足和小問題也及時予以修正,系統上線后,為了保證數據的安全性,對系統進行了備份操作,系統備份是每兩個月備份一次,數據庫備份為每周備份一次,系統部署在租賃的云平臺服務器中。
本次系統上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。
系統在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應速度,在系統今后的升級過程中將著重解決這些安全性問題。
參考文獻
[1]徐佩.新時期計算機軟件開發技術的應用及發展趨勢[J].農家參謀,2019(08):167.
[2]張帥,崔婀娜,魏立波.互聯網+健康在線服務平臺的設計與實現[J].科技創新與應用,2019(10):91-92.
[3]谷利國,陳存田,張甲瑞.基于B/S模式的人事教育信息管理系統的分析與設計[J].電腦知識與技術,2019,15(10):58-59.
[4]胥新政,強毅.基于JSP的常用金屬材料標準檢索平臺開發設計[J].制造業自動化,2019,41(03):41-43+69.
[5]王祖維,南淮耀,張英.“互聯網+”視域下的高校學生公寓管理系統設計與實現——以沈陽師范大學為例[J].現代商貿工業,2019,40(08):187-188.
[6]廖明華,齊攀.學生職業能力測評管理系統的設計與實現[J].廣東交通職業技術學院學報,2019,18(01):48-52.
[7]李冬冬,劉華明,畢學慧,王秀友.舊衣申領系統的設計與實現[J].電腦知識與技術,2019,15(08):47-50.
[8]李慶年.“互聯網+”視域下的人才招聘管理系統設計與實現[J].國際公關,2019(03):164-165.
[9]劉婷,彭煥峰,邵淑婷.基于云平臺的高校監考管理系統[J].電腦知識與技術,2019,15(07):91-92.
[10]趙丙秀.基于百度AI平臺的Web人臉注冊和登錄系統的實現[J].電腦知識與技術,2019,15(07):114-115.
[11]戴昭穎,尹濤.鋼鐵行業成本預算系統開發應用實踐[J].電子技術與軟件工程,2019(04):29-30.
[12]曹燦,劉志剛.基于SSH和Layui的工程科學前沿與實踐系統[J].工業控制計算機,2019,32(02):91-92+96.
[13]謝路.基于Web的考務管理系統設計與實現[J].福建電腦,2019,35(01):136-137.
[14]張繼東.MySQL數據庫基于JSP的訪問技術[J/OL].電子技術與軟件工程,2017,(15):169(2017-08-03).
[15]韓思凡.Web開發中的JSP與HTML的基礎應用[J].科學技術創新,2020(14):71-72.
[16]NastitiAndini,DaehaKim,JongAhnChun.Operationalsoilmoisturemodelingusingamulti-stageapproachbasedonthegeneralizedcomplementaryprinciple[J].AgriculturalWaterManagement,2020,231.
[17]A.D.Titisari,D.Phillips,I.W.Warmada,Hartono,A.Idrus.40Ar/39ArgeochronologyofthePongkorlowsulfidationepithermalgoldmineralisation,WestJava,Indonesia[J].OreGeologyReviews,2020,119.
[18]FranciscoOrtin,OscarRodriguez-Prieto,NicolasPascual,MiguelGarcia.HeterogeneoustreestructureclassificationtolabelJavaprogrammersaccordingtotheirexpertiselevel[J].FutureGenerationComputerSystems,2020,105.
[19]SatyaKrismatama,IndahRiyantini,IwangGumilar,LantunParadhitaDewanti.SelectivityofFishingGearforScomberomorusguttatus(Bloch&Schneider,1801)CommoditiesinPangandaranFishingGround,WestJava[J].AsianJournalofFisheriesandAquaticResearch,2020.
[20]ZhongXiangfu,PlaAlbert,RaynerSimon.Jasmine:aJavapipelineforisomiRcharacterizationinmiRNA-Seqdata[J].Bioinformatics,2020,36(6).
致謝
伴隨著設計的完成,大學生涯也隨之即將結束。大學期間是我最珍惜的時光,大學時光中學會了很多,也成長了很多,這段時光中每一段回憶都刻在腦海中。感謝一起學習,一起成長同學們,和成長過程悉心教導的老師們,非常感激有你們的陪伴。
首先感謝我的指導老師,設計的完成離不開老師的一系列指導。在畢業設計的完成過程中,老師給出了很多中肯的建議,正是由于老師一絲不茍的工作態度,我的設計才能順利的完成。
最后,感謝在大學生涯中每一位教導我的老師,是你們教給了我豐富的知識,更教會了我遇到問題時,如何去應對并解決。謝謝你們的幫助與支持。
免費領取本源代碼,請關注點贊+私信
總結
以上是生活随笔為你收集整理的基于SSM框架的人力资源管理系统毕业设计源码060936的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 心书微信书 v1.0.0
- 下一篇: 基于模型预测人工势场的船舶运动规划方法,