SSM+中小型企业绩效管理系统毕业设计-附源码081536
?SSM中小型企業績效管理系統
摘 要
在市場競爭日趨激烈的今天,利用人力資源來獲取競爭優勢已得到了管理者和學者們的共識。而績效管理作為現代人力資源管理的核心問題,也逐漸被中小民營企業所重視。近年來,我國中小民營企業發展迅速,為社會穩定、經濟發展做出了不可忽視的貢獻。但中小民營企業在實施績效管理時的落后性制約了其進一步發展。如何提高企業中人力資源的素質和績效,有效的績效管理是關鍵的一環。目前,許多中小民營企業都注意到了績效管理的重要性,并采取了許多方法,但其效果并不明顯,有的竟適得其反。中小型企業績效管理已成為管理界最關注的課題之一。
中小型企業績效管理系統主要功能模塊包括部門管理、員工管理、打卡記錄管理、工時信息管理、工資信息管理、評價中心、文件中心管理等,采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用ssm框架、Java技術、Ajax技術進行業務系統的編碼及其開發,實現了本系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對中小型企業績效管理系統的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現中小型企業績效管理系統和部署運行使用它。
關鍵詞:績效管理;ssm框架;企業管理
SSM performance management system for small and medium-sized enterprises
Abstract
In today's increasingly fierce market competition, the use of human resources to obtain competitive advantage has been the consensus of managers and scholars. As the core issue of modern human resource management, performance management has gradually been paid attention to by small and medium-sized private enterprises. In recent years, China's small and medium-sized private enterprises have developed rapidly and made non negligible contributions to social stability and economic development. However, the backwardness of small and medium-sized private enterprises in the implementation of performance management restricts their further development. How to improve the quality and performance of human resources in enterprises, effective performance management is the key link. At present, many small and medium-sized private enterprises have noticed the importance of performance management and adopted many methods, but the effect is not obvious, and some are counterproductive. Performance management of small and medium-sized enterprises has become one of the most concerned topics in the management field.
The main functional modules of the performance management system of small and medium-sized enterprises include department management, employee management, punch in record management, man hour information management, salary information management, evaluation center, file center management, etc. the object-oriented development mode is adopted for software development and hardware erection, which can well meet the needs of actual use and improve the corresponding software erection and program coding, MySQL is used as the main storage unit of background data, and SSM framework, Java technology and Ajax technology are used to code and develop the business system, which realizes all the functions of the system. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. This paper analyzes the various requirements and technical problems of the performance management system of small and medium-sized enterprises, proves the necessity and technical feasibility of the system, then makes a basic introduction to the technical software and design idea needed to design the system, and finally realizes the performance management system of small and medium-sized enterprises and deploys and runs it.
Key words:?Performance management; SSM framework; business management
目 ?錄
第1章 緒論
1.1?研究背景
1.2?研究內容
1.3?論文組成結構
第2章 開發工具及相關技術介紹
2.1?HTTP協議
2.2?Java語言與JDK開發環境
2.3 SSM框架
2.4 Mysql數據庫
第3章 系統分析
3.1?可行性分析
3.1.1?經濟可行性
3.1.2?技術可行性
3.1.3?操作可行性
3.2?性能分析 ?
3.3?系統操作流程
3.3.1用戶登錄流程 9
3.3.2信息添加流程 10
3.3.3信息刪除流程 10
第4章 系統設計
4.1系統架構設計
4.2開發流程設計
4.3數據庫設計 12
4.3.1實體ER圖
4.3.2數據表 13
第5章 系統實現 17
5.1數據庫訪問層的實現 17
5.2注冊模塊的實現 20
5.3用戶登錄模塊的實現 23
5.4 用戶資料修改模塊的實現 24
5.5部門信息模塊的實現 28
5.6用戶管理模塊的實現 31
5.7打卡記錄管理模塊 33
5.8?文件中心管理模塊的實現 34
5.8?工資信息管理模塊的實現 34
第6章 系統測試 35
6.1??測試目的 35
6.2?測試方案設計 35
6.2.1 測試策略 35
6.2.2 測試分析 35
6.3 測試結果 36
第7章 總結與展望 37
參考文獻 38
致謝 40
績效依次來源于管理學中,在不同的人眼中,對于績效的理解是不一樣的,有的人認為績效是員工的工作結果中對于企業有貢獻的部分,還有人認為績效是指完成工作的效率和成績,還有的人認為績效是對工作的過程和結果進行評估后的結果等等。我們通常所說的績效大多是指在一段時間內的工作的結果及其產生的影響,在企業中,具工的績效往往是指員工在工作中對工作完成的成果、質量以及對企業的其他貢獻。首先,績效管理能使公司完成定期完成任務目標。通過將任務目標分解,具體到海一個員工身 上。
讓每一個員工都能清楚地知道自己應該完成的目標,建立員工個人和公司目標的聯系。在日常生活中,銷售公司往往都會有一個 銷售目標,比如一個月或者一個季度、一年之內完成多少的銷售量,然后公司將銷售:分攤到每一個員工的身上,變成員工的個人目標,這就要求員工圍繞這個目標去找客戶,發揮出員工的主觀能動性,想方設法完成目標,其次,有助于員工的職業發展規劃。通過績效管理,企業能夠全面系統地了解到員工的表現情況,了解員工的能力與潛力,從而對員工的未來職業發展規劃進行準確全面的評估。對于員工個人,績效管理能讓員工認真對待工作,努力完成工作目標,通過對目標的完成過程和結果,發現自己在工作中的問題,幫助員工更好地完善自己,加強員工的工作積極性和工作能力,實現員工自我價值。最后,績效管理能實現員工與公司之間的共贏。在績效管理中,績效的基礎就是公司與員工雙方利益的結合。員工通過績效,發揮主動性,積極完成目標,實現自己的價值,公司通過績效,在員工實現自我價值的同時,也為公司創造了效益,滿足了公司對利益的追求,從而實現了共贏。
中小型企業績效管理系統的開發及實現,所需要的工作內容:
(1)首先是確定選題,確定好所要做的系統,并對系統的背景及現在面臨的一些問題等進行系統的初步確認。
(2)系統確認完成后,結合系統開發的需求進行確認系統開發所使用的技術,中小型企業績效管理系統的開發使用SSM框架,數據庫進行平臺的搭建開發,確認好使用的技術進行技術分析,所使用的技術是否可以完成系統的實現。
(3)確定好系統使用的技術,進行在線確認系統所劃分的用戶角色,并且根據用戶角色劃分確定所要設計的功能模塊,對中小型企業績效管理系統的設計主要劃分別為管理員和用戶角色,并所使用的功能模塊也相應不同,但是系統的數據庫實現的內容是交互的,用戶可以隨時根據自己的需求進行課程信息,對于系統工作人員可以根據自己的分管內容進行在線信息的處理及操作,管理員獲取到所有用戶的詳細數據信息,并根據需求進行第一時間處理解決。
(4)系統的功能模塊確認完成后進行程序及界面的設計,設計完成后,并且通過測試來判斷程序是否完善,對于系統測試,需要不同的用戶進行不同的內容編輯及提交,及使用不同的測試方式找出程序中存在的漏洞,并對程序出現的漏洞問題進行在線解決處理,如果測試系統沒有任何問題時,可以將系統上傳進行正式操作使用。
根據市場調研得到的信息數據,結合國內外前沿研究,利用相關系統開發和設計方法,最終設計出中小型企業績效管理系統?。
本文共有七章,如下所示。
第一章概述了中小型企業績效管理系統的研究目的和意義;精煉地總結了國內外在內的領域研究情況和未來的研究趨勢,最后給出了論文的組成結構。
第二章簡要概述了本文所用的開發技術和工具。
第三章簡要對系統各業務流程進行需求分析、可行性分析。
第四章對中小型企業績效管理系統進行設計。
第五章對中小型企業績效管理系統進行實現,并貼出相關頁面截圖,語言描述出具體功能實現的操作方法。
第六章對中小型企業績效管理系統采用測試用例的方式來對一些主要功能模塊測試,最后得出測試結果。
第七章總結全文并對未來的研究做出展望。
超文本傳輸協議(HTTP)作為協作式與分布式的通信協議,其以萬維網交換信息作為前提條件。HTTP為IEIF的國際化標準指標,在制定相關標準與實現內,W3C積極參與其中,同時發揮著不可替代的作用。其能夠借助超文本標記語言,將文檔在服務器與瀏覽器之間相互傳輸。HTML作為構架文檔的標記語言,這些文檔內將包括有關信息的鏈接,用戶僅需要點擊其中一個鏈接就能夠訪問多媒體對象與圖像,同時獲得該鏈接項所具有的附加信息。
Java是美國sun公司所推出的一款程序設計語言,其能夠在多個平臺內應用,具有良好兼容性,進而其憑借自身優勢在數據中心、個人PC與科技超級計算機等平臺內廣泛應用,具有目前最為龐大的開發者專業社群。
JDK為美國sun公司為java開發員所推出的一款全新產品,要是沒有JDK的情況下,所安裝的java程序也就無法運行。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。常作為數據源較簡單的web項目的框架。
1.1 Spring
Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數去調用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑。
Spring的核心思想是IoC(控制反轉),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。
1.2 SpringMVC
SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。SpringMVC相當于SSH框架中struts。
1.3 mybatis
mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯到各實體類的Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。
頁面發送請求給控制器,控制器調用業務層處理邏輯,邏輯層向持久層發送請求,持久層與數據庫交互,后將結果返回給業務層,業務層將處理邏輯發送給控制器,控制器再調用視圖展現數據。
數據庫是系統開發過程中不可或缺的一部分。 在WEB應用方面,MySQL AB開發了一個具有很大優勢的MySQL關系數據庫管理系統。 MySQL可以將數據存儲在不同的表中,這非常靈活,并且還可以提高系統在實際應用中的速度。 數據庫訪問最常用于標準SQL語言,MySQL用于SQL語言,因此它具有高度兼容性。數據庫的操作是必不可少的,包括對數據庫表的增加、刪除、修改、查詢等功能。現如今,數據庫可以分為關系型數據庫和非關系型數據庫,Mysql屬于關系性數據庫,Mysql數據庫是一款小型的關系型數據庫,它以其自身特點:體積小、速度快、成本低等,Mysql數據庫是目前最受歡迎的開源數據庫。
在WEB應用技術中, Mysql數據庫支持不同的操作系統平臺,雖然在不同平臺下的安裝和配置都不相同,但是差別也不是很大,Mysql在Windows平臺下兩種安裝方式,二進制版和免安裝版。安裝完Mysql數據庫之后,需要啟動服務進程,相應的客戶端就可以連接數據庫,客戶端可通過命令行或者圖形界面工具登錄數據庫。
本系統將在經濟、技術、操作這三個角度上進行可行性分析。
整個系統從設計到開發以及測試過程嚴謹步驟齊全,所有工作任務全部由本人完成,并未獲取外部技術支持,節約了一切服務成本開銷以及人工成本,在硬件方面,為節約成本使用一臺二手移動工作站作為項目部署服務器以及數據庫服務器,成本在一萬元一下,真個網絡部署也是由本人獨立完成不涉及到其他人工費用,整個開發過程本著低成本,低消耗的原則。
技術可行性分析的目的是確認該系統能否利用現有技術實現,并評估開發效率和完成情況。技術的可行性是指在當前的技術條件下,計算機軟件和硬件的開發是否能夠滿足發展的要求。因為該系統的開發基于SSM語言,所以開發該系統所需的軟件和硬件條件可以在普通計算機上滿足。因為它占用的內存相對較少,所以用Mysql數據庫開發和設計軟件理論上沒有問題,因為它占用的內存太少。上述技術可以有效地保證系統的成功和高效開發。
中小型企業績效管理系統的使用界面簡單易于操作,采用常見的界面窗口來登錄界面,通過電腦進行訪問操作,用戶只要平時使用過電腦都能進行訪問操作。此系統的開發采用SSM技術開發,人性化和完善化是B/S結構開發比較顯要的特點使得用戶操作相比較其他更加簡潔方便。易操作、易管理、交互性好在本系統操作上體現得淋漓盡致。
3.2性能分析
對于性能分析,與傳統的管理方式相比,傳統的管理方式是使用人工通過用紙和筆進行數據信息的統計和管理,并且這種方式對于存儲和查找某一數據信息都比較麻煩,隨著計算機網絡的到來,這種傳統的方法很難適應當下社會的發展,不僅降低人們的辦事效率,而且還需要很多的人力和物力,對于使用的時間和所要花費的費用都是比較高的,為了降低成本費用,提高用戶的工作效率,進行開發一套基于計算機和網絡技術的中小型企業績效管理系統。
中小型企業績效管理系統的開發設計時一個獨立的系統,以流行數據庫進行數據的存儲開發,主要是為了實現中小型企業績效管理系統的用戶角色及相對應的功能模塊,讓中小型企業績效管理系統的管理不會存在管理差異、低效率,而是跟傳統的管理信息恰好相反,中小型企業績效管理系統的實現可以節約資源,并且對于業務的處理速度也提高,速度快、效率高,功能性強大。
3.3系統操作流程
3.3.1用戶登錄流程
對于系統的安全性的第一關,就是用戶想要進入系統,必須通過登錄窗口,輸入自己的登錄信息才可以進行登錄,用戶輸入的信息準確無誤后才可以進入到操作系統界面,進行功能模塊的相對應操作,如果用戶輸入的信息不正確,則窗口出現提示框,用戶登錄失敗,返回到第一步進行重新輸入,如圖3-1所示。
???????????????????????????????圖3-1登錄操作流程圖
3.3.2信息添加流程
對于中小型企業績效管理系統,需要隨時添加所需要的數據信息,對于用戶添加信息,需要根據添加界面,根據選框的內容進行填寫所要添加的數據信息,信息輸入完成后判斷數據信息是否符合要求,符合要求則添加完成,用戶所添加的信息不符合要求,則需要返回到第一步,重新輸入數據信息,再進行判斷操作,如圖3-2所示。
圖3-2 信息添加流程圖
3.3.3信息刪除流程
不管是哪個用戶角色進入到不通的系統操作界面,都可以進行不同的信息內容的操作功能,對用系統數據信息的刪除,用戶一旦將信息刪除,那么該刪除的數據信息將無法恢復,所以用戶在對數據刪除事,一定判斷刪除的內容是否是確定要刪除的,確定無誤后選擇確定刪除操作,如圖3-3所示。
圖3-3?信息刪除流程圖
4.1系統架構設計
中小型企業績效管理系統項目的概述設計分析,主要內容進行中小型企業績效管理系統信息的具體分析,進行數據庫的是設計,數據采用mysql數據庫,并且對于系統的設計采用比較人性化的操作設計,對于系統出現的錯誤信息可以及時做出處理及反饋。
中小型企業績效管理系統的設計基于現有的網絡,可以實現管理員:用戶管理、部門管理、員工管理、打卡記錄管理、工資信息管理、工時信息管理、文件中心管理、通告中心管理等詳細的了解及統計分析。根據系統功能需求建立的模塊關系圖如下圖:
?????????????????圖4-1管理員功能模塊圖
4.2開發流程設計
中小型企業績效管理系統的開發對管理模塊和系統使用的數據庫進行分析,編寫代開發,規劃和操作是構建信息管理應用程序的必要三步曲,它決定了系統是否能夠真正實現預設功能以及是否可以在成功設計后實施。在開發過程中,每個階段必須嚴格按照線性順序進行開發,并且在相應階段生成的每個工作都可以通過技術進行驗證和檢查。確保一個階段完成后是正確的,不會造成下一階段拖拽現象,使系統完成設計功能后得到保證。
從中小型企業績效管理系統的成功開發經驗來看,上述方法效果最為明顯,最大程度地降低了系統開發的復雜性。如圖4-2所示。
圖4-2開發系統流程圖
4.3數據庫設計
數據庫是信息系統的基礎和核心。數據庫設計的好壞直接影響到信息系統開發的成敗。創建數據庫表首先確定實體的屬性和實體之間的關系。根據關系創建一個數據表。4.3.1實體ER圖
數據庫是整個軟件編程中最重要的一個步驟,對于數據庫問題主要是判定數據庫的數量和結構公式的創建。展示系統使用的是Mysql進行對數據庫進行管理,進行保證數據的安全性、穩定性等。
概念模型的設計是為了抽象真實世界的信息,并對信息世界進行建模。它是數據庫設計的強大工具。數據庫概念模型設計可以通過E-R圖描述現實世界的概念模型。系統的E-R圖顯示了系統中實體之間的鏈接。而且Mysql數據庫是自我保護能力比較強的數據庫,下圖主要是對數據庫實體的E-R圖:
(1) 打卡記錄實體圖,如圖4-3所示:
??圖4-3 打卡記錄實體圖
?(2)工時信息圖如圖4-4所示:
圖4-4工時信息實體圖
這些功能可以充分滿足中小型企業績效管理系統的需求。此系統功能較為全面如下圖系統功能結構如圖4-5所示。
?????????????????????????????????
????????????????????????????圖4-5系統功能結構圖
4.3.2數據表
我們可以根據數據結構的詳細分析要求,我們根據輸入和輸出數據量的要求進行分析,確定什么表表,結構之間的關系,我們可以驗證,調整和完善,查詢和瀏覽過程,可以實現數據庫,以使用戶對數據和功能有更多要求。
基于系統使用的數據庫管理系統的特點,對數據庫的概念模型進行了轉換和構建。但是,這個系統只需要充分考慮中小型企業績效管理系統的功能,而且組織比較清晰。
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| staff_id | int | 11 | 是 | 是 | 員工ID |
| employee_job_number | varchar | 64 | 否 | 否 | 員工工號 |
| employee_account_number | varchar | 64 | 是 | 否 | 員工賬號 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | varchar | 64 | 否 | 否 | 年齡 |
| department | varchar | 64 | 否 | 否 | 部門 |
| post | varchar | 64 | 否 | 否 | 崗位 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| salary_information_id | int | 11 | 是 | 是 | 工資信息ID |
| month | varchar | 64 | 否 | 否 | 月份 |
| employee_job_number | varchar | 64 | 否 | 否 | 員工工號 |
| employee_account_number | int | 11 | 否 | 否 | 員工賬號 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| department | varchar | 64 | 否 | 否 | 部門 |
| post | varchar | 64 | 否 | 否 | 崗位 |
| hourly_wage | varchar | 64 | 否 | 否 | 時薪 |
| total_working_hours_of_this_month | varchar | 64 | 否 | 否 | 本月總工時 |
| absence_days | int | 11 | 否 | 否 | 缺勤天數 |
| salary_of_this_month | varchar | 64 | 否 | 否 | 本月工資 |
| deduction_for_absence | varchar | 64 | 否 | 否 | 缺勤扣款 |
| net_salary | varchar | 64 | 否 | 否 | 實發工資 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| punch_in_record_id | int | 11 | 是 | 是 | 打卡記錄ID |
| employee_job_number | varchar | 64 | 否 | 否 | 員工工號 |
| employee_account_number | int | 11 | 否 | 否 | 員工賬號 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| department | varchar | 64 | 否 | 否 | 部門 |
| post | varchar | 64 | 否 | 否 | 崗位 |
| clock_in | datetime | 0 | 否 | 否 | 上班打卡 |
| clock_out_after_work | datetime | 0 | 否 | 否 | 下班打卡 |
| punch_in_date | date | 0 | 否 | 否 | 打卡日期 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| notification_center_id | int | 11 | 是 | 是 | 通告中心ID |
| notice_title | varchar | 64 | 否 | 否 | 通告標題 |
| notice_attachment | varchar | 255 | 否 | 否 | 通告附件 |
| notifier | varchar | 64 | 否 | 否 | 通告人 |
| date_of_announcement | date | 0 | 否 | 否 | 通告日期 |
| notice_content | longtext | 0 | 否 | 否 | 通告內容 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| message_center_id | int | 11 | 是 | 是 | 留言中心ID |
| message_title | varchar | 64 | 否 | 否 | 留言標題 |
| message_type | varchar | 64 | 否 | 否 | 留言類型 |
| message_time | date | 0 | 否 | 否 | 留言時間 |
| employee_job_number | varchar | 64 | 否 | 否 | 員工工號 |
| employee_account_number | int | 11 | 否 | 否 | 員工賬號 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| message_content | text | 0 | 否 | 否 | 留言內容 |
| message_reply | text | 0 | 否 | 否 | 留言回復 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| man_hour_information_id | int | 11 | 是 | 是 | 工時信息ID |
| employee_job_number | varchar | 64 | 否 | 否 | 員工工號 |
| employee_account_number | int | 11 | 否 | 否 | 員工賬號 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| department | varchar | 64 | 否 | 否 | 部門 |
| post | varchar | 64 | 否 | 否 | 崗位 |
| basic_working_hours | int | 11 | 否 | 否 | 基本工時 |
| overtime_hours | int | 11 | 否 | 否 | 加班工時 |
| total_man_hours_today | varchar | 64 | 否 | 否 | 今日總工時 |
| punch_in_date | date | 0 | 否 | 否 | 打卡日期 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| file_center_id | int | 11 | 是 | 是 | 文件中心ID |
| document_title | varchar | 64 | 否 | 否 | 文件標題 |
| enclosure | varchar | 255 | 否 | 否 | 附件 |
| publisher | varchar | 64 | 否 | 否 | 發布人 |
| release_time | date | 0 | 否 | 否 | 發布時間 |
| file_information | text | 0 | 否 | 否 | 文件信息 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| evaluation_center_id | int | 11 | 是 | 是 | 評價中心ID |
| employee_performance | varchar | 64 | 否 | 否 | 員工表現 |
| evaluator | varchar | 64 | 否 | 否 | 評價人 |
| evaluation_time | date | 0 | 否 | 否 | 評價時間 |
| employee_job_number | varchar | 64 | 否 | 否 | 員工工號 |
| employee_account_number | int | 11 | 否 | 否 | 員工賬號 |
| full_name | varchar | 64 | 否 | 否 | 姓名 |
| evaluation_content | text | 0 | 否 | 否 | 評價內容 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| department_management_id | int | 11 | 是 | 是 | 部門管理ID |
| department | varchar | 64 | 否 | 否 | 部門 |
| person_in_charge | varchar | 64 | 否 | 否 | 負責人 |
| post | varchar | 64 | 否 | 否 | 崗位 |
| specific_personnel | text | 0 | 否 | 否 | 具體人員 |
| remarks | text | 0 | 否 | 否 | 備注 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
該系統是通過jdbc和MySQL達成連接的,新建一個jdbc.properties文件來填寫與數據庫連接所需要的驅動和參數。
jdbc.driverClass=com.MySQL.jdbc.Driver
jdbc.url=jdbc:MySQL://localhost:3306/tsi
jdbc.username=root
jdbc.password=123
第一個參數代表MySQL數據庫的驅動,第二個參數代表要連接的數據庫,第三個和第四個參數代表數據庫連接名和密碼。
后臺與數據庫訪問主要是通過HQL語句來進行查詢的,查詢語句中的表名是表格的實體類名,在這種查詢語句中*是不允許使用的,除非適合聚合函數一起使用才可以。
用戶在填寫數據的時候必須與注冊頁面上的驗證相匹配否則會注冊失敗,注冊頁面的表單驗證是通過JavaScript進行驗證的,用戶名的長度必須在6到18之間,郵箱必須帶有@符號,密碼和密碼確認必須相同,你輸入的密碼,系統會根據你輸入密碼的強度給出指定的值,電話號碼和身份證號碼必須要求輸入格式與生活相符合,當你前臺驗證通過的時候你點擊注冊,表單會將你輸入的值通過name值傳遞給后臺并保存到數據庫中。
用戶注冊流程圖如下圖所示。
圖5-1用戶注冊流程圖
用戶注冊代碼如下:
????/**
?????* 注冊
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????Map<String,Object> map = service.readBody(request.getReader());
????????query.put("username",String.valueOf(map.get("username")));
????????List list = service.selectBaseList(service.select(query, new HashMap<>()));
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????map.put("password",service.encryption(String.valueOf(map.get("password"))));
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
????}
????public void insert(Map<String,Object> body){
????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
????????baseMapper.insert(entity);
????????log.info("[{}] - 插入操作:{}",entity);
}
主要由兩部分組成,登錄前的登錄界面以及登錄后的用戶功能界面。登錄界面,要求用戶輸入用戶名和密碼,當用戶名和密碼其中一個輸入為空時,給出提示“用戶名,密碼不能為空”。獲取用戶名和密碼后到數據庫中查找,如果用戶名存在,以及對應的密碼正確,則登錄成功,否則登錄失敗。登錄失敗后給出提示,并把焦點停在文本框中。登錄成功后將該次會話的全局變量username設置為用戶名。登錄成功后進入會員的功能模塊,主要有會員基本信息修改,已經發布族譜申報信息管理,發布信息,和退出功能。退出功能是清除全局變量username的值,并跳回到首頁。
登錄流程圖如下圖所示。
圖5-1登錄流程圖
用戶登錄界面如下圖所示。
圖5-1登錄流程圖
登錄代碼如下:
????/**
?????* 登錄
?????* @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;
}
用戶登錄/注冊成功之后可以修改自己的基本信息。修改頁面的表單中每一個input的name值都要與實體類中的參數相匹配,在用戶點擊修改頁面的時候,如果改后用戶名與數據庫里面重復了,頁面會提示該用戶名已經存在了,否則通過Id來查詢用戶,并將用戶的信息修改為表單提交的數據。
如果部門信息需要修改,管理員可以通過查詢數據庫中的部門信息數據,查詢部門信息數據是通過ajax技術來進行查詢的,需要傳遞部門名稱、部門類型等參數然后在返回到該頁面中,可以選中要修改或刪除的那條信息,如果選中了超過一條數據,頁面會挑一個窗口提醒只能選擇一條數,如果沒有選中數據會挑一個窗口題型必須選擇一條數據。當選擇確認修改的時候,后臺會根據傳過來的id到數據庫查詢,并將結果返回到修改頁面中,可以在修改頁面中修改剛剛選中的信息當點擊確認的時候from表單會將修改的數據提交到后臺并保存到數據庫中,就是說如果提交的數據數據庫中存在就修改,否則就保存。
部門信息展示界面如下圖所示。
圖5-1部門信息展示界面
根據需求,需要對用戶進行添加、刪除或修改詳情信息。刪除或修改用戶時,系統根據用戶的狀態判定為可刪除狀態下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達后臺,還會先查詢用戶狀態再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉到修改信息的頁面,重新填寫好數據后,數據提交到后臺會對數據庫中相應的記錄做出修改。
添加用戶時,會給出數據填寫的頁面,該頁面根據填寫好的用戶編號同樣會事先發送Ajax請求查詢編號是否已存在,數據填寫好之后提交到后臺,會調用相關服務在數據庫中插入記錄。
用戶管理流程圖如下圖所示。
圖5-1用戶管理流程圖
用戶管理頁面設計效果如下圖所示。
圖5-1用戶管理界面
用戶管理關鍵代碼如下所示。
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
根據需求,需要對打卡記錄進行添加、刪除或修改詳情信息。刪除或修改打卡記錄時,系統根據打卡記錄的狀態判定為可刪除狀態下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達后臺,還會先查詢打卡記錄狀態再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉到修改信息的頁面,重新填寫好數據后,數據提交到后臺會對數據庫中相應的記錄做出修改。
添加打卡記錄時,會給出數據填寫的頁面,該頁面根據填寫好的打卡記錄編號同樣會事先發送Ajax請求查詢編號是否已存在,數據填寫好之后提交到后臺,會調用相關服務在數據庫中插入記錄。
打卡記錄管理流程圖如下圖所示。
圖5-1打卡記錄管理流程圖
打卡記錄管理頁面設計效果如下圖所示。
圖5-1打卡記錄管理界面
打卡記錄管理關鍵代碼如下所示。
??@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
根據需求,需要對文件信息進行添加、刪除或修改詳情信息。刪除或修改文件信息時,系統根據文件信息的狀態判定為可刪除狀態下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達后臺,還會先查詢文件信息狀態再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉到修改信息的頁面,重新填寫好數據后,數據提交到后臺會對數據庫中相應的記錄做出修改。
添加文件信息時,會給出數據填寫的頁面,該頁面根據填寫好的文件信息編號同樣會事先發送Ajax請求查詢編號是否已存在,數據填寫好之后提交到后臺,會調用相關服務在數據庫中插入記錄。
文件中心管理流程圖如下圖所示。
圖5-1文件信息管理流程圖
文件中心管理頁面設計效果如下圖所示。
圖5-1文件中心管理界面圖
文件中心管理關鍵代碼如下。
?public Map<String, Object> success(Object o) {
????????Map<String, Object> map = new HashMap<>();
????????if (o == null) {
????????????map.put("result", null);
????????????return map;
????????}
????????if (o instanceof List) {
????????????if (((List) o).size() == 1) {
???????????????o = ?((List) o).get(0);
????????????????map.put("result", o);
????????????}else {
????????????????String jsonString = JSONObject.toJSONString(o);
????????????????JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));
????????????????map.put("result", objects);
????????????}
????????} else if (o instanceof Integer || o instanceof String) {
????????????map.put("result", o);
????????} else {
????????????String jsonString = JSONObject.toJSONString(o);
????????????JSONObject jsonObject = JSONObject.parseObject(jsonString);
????????????JSONObject j = service.covertObject(jsonObject);
????????????map.put("result", j);
????????}
????????return map
根據需求,需要對工資信息進行添加、刪除或修改詳情信息。刪除或修改工資信息時,系統根據工資信息的狀態判定為可刪除狀態下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達后臺,還會先查詢工資信息狀態再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉到修改信息的頁面,重新填寫好數據后,數據提交到后臺會對數據庫中相應的記錄做出修改。
添加工資信息時,會給出數據填寫的頁面,該頁面根據填寫好的工資信息編號同樣會事先發送Ajax請求查詢編號是否已存在,數據填寫好之后提交到后臺,會調用相關服務在數據庫中插入記錄。
工資信息管理流程圖如下圖所示。
圖5-1工資信息管理流程圖
工資信息管理頁面設計效果如下圖所示。
圖5-1工資信息管理界面圖
工資信息管理關鍵代碼如下。
?public Map<String, Object> success(Object o) {
????????Map<String, Object> map = new HashMap<>();
????????if (o == null) {
????????????map.put("result", null);
????????????return map;
????????}
????????if (o instanceof List) {
????????????if (((List) o).size() == 1) {
???????????????o = ?((List) o).get(0);
????????????????map.put("result", o);
????????????}else {
????????????????String jsonString = JSONObject.toJSONString(o);
????????????????JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));
????????????????map.put("result", objects);
????????????}
????????} else if (o instanceof Integer || o instanceof String) {
????????????map.put("result", o);
????????} else {
????????????String jsonString = JSONObject.toJSONString(o);
????????????JSONObject jsonObject = JSONObject.parseObject(jsonString);
????????????JSONObject j = service.covertObject(jsonObject);
????????????map.put("result", j);
????????}
????????return map
程序設計不能保證沒有錯誤,這是一個開發過程,在錯誤或錯誤的過程中難以避免,這是不可避免的,但我們不能使這些錯誤始終存在于系統中,錯誤可能會造成無法估量的后果 如系統崩潰,安全信息,系統無法正常啟動,導致安裝用戶手機屏幕等,為了避免這些問題,我們需要測試程序,并發現這些問題,并糾正它們 ,并使系統更長時間穩定成熟,本章的作用是發現這些問題,并對其進行修改,雖然耗時費力,但長期非常重要和必要系統的開發。
軟件測試與開發過程是一樣的,都必須按照軟件工程的正規原理進行,遵守管理學理論。不過,目前國內的軟件測試已經積累了大量經驗和方法,步驟相對成熟,軟件測試的效率也越來越高。
中小型企業績效管理系統的實現,對于系統中功能模塊的實現及操作都必須通過測試進行來評判系統是否可以準確的實現。在中小型企業績效管理系統正式上傳使用之前必須做的一步就是系統測試,對于測試發現的錯誤及時修改處理,保證系統準確無誤的供給用戶使用。
6.2.1 測試策略
1、功能測試
從用戶的角度來看,測試時不了解新開發軟件的內部結構,因此可以將系統與黑匣子進行比較,盲目輸入后可以查看系統給出的反饋。這種測試屬于黑盒測試,在測試中如果輸入錯誤信息系統會報錯。
2、性能測試
測試軟件程序的整體狀況(稱為性能測試)通常使用自動化測試工具來檢測系統的整體功能,在負載測試和壓力測試之間進行分配,在某些情況下,將這兩種情況結合起來。雖然壓力測試可以檢測到系統可以提供的最高級別的服務,但負載測試可以測試系統如何響應增加的負載。
6.2.2 測試分析
測試評估系統質量的方法不局限于系統編碼和過程,應該與軟件設計工作和歷史需求分析密切相關。
軟件測試應遵循以下原則:
(1)軟件測試應盡快進行,整個測試部分應在軟件開發和設計的整個過程中進行。如發現錯誤,立即處理,將大大減少軟件開發的時間,并提高軟件的質量。
(2)在軟件的各種測試中,測試過程中使用的計劃、報告等應妥善處理和存儲。其主要目的是為了便于以后系統的維護。
(3)軟件測試整個過程中的聚類現象應優先考慮。
(4)對于軟件測試,我們應該盡量不去和自己設計的系統進行參考,而是要測試對方的程序,以確保軟件測試結果的客觀性和公平性。
(5)整個測試計劃嚴格按照軟件測試的具體實施細則進行。
(6)對整個測試結果進行綜合檢查,盡量避免重復錯誤。
本中小型企業績效管理系統滿足用戶的要求和需求,本中小型企業績效管理系統的使用能夠有效的提高用戶的使用率。
測試后得到的性能和用例,系統具有足夠的正確性、可靠性、穩定性,并且可以對輸入數據進行準確的點擊操作處理和響應測試用戶的體驗也得到了很好的反饋和響應時間。合理的范圍,可以兼容所有主流瀏覽器,設計所需的效果。
通過中小型企業績效管理系統的開發,本人鞏固了之前學過的知識,如今將平時所學到的知識融合在設計中,在設計過程中,做了很多的準備,首先,在數據庫系統的設計過程中,尤其是在數據庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務器的選擇,其次,利用所學的知識點分析所做的系統,并在此基礎上設計。
目前本系統已經上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現阻斷性問題,有一些不足和小問題也及時予以修正,系統上線后,為了保證數據的安全性,對系統進行了備份操作,系統備份是每兩個月備份一次,數據庫備份為每周備份一次,系統部署在租賃的云平臺服務器中。
本次系統上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。
系統在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應速度,在系統今后的升級過程中將著重解決這些安全性問題。
參考文獻
[1]李娟.淺談促進企業績效管理考核合理化的方法[J].現代企業,2022(03):42-43.
[2]鄧元元.中小企業績效管理的現狀及對策[J].行政事業資產與財務,2022(03):23-25.
[3]趙小婷.企業績效管理與薪酬管理機制的結合探析[J].現代商業,2022(03):75-77.DOI:10.14097/j.cnki.5392/2022.03.023.
[4]陳飛.淺析數字化時代背景下中小企業績效管理創新[J].商場現代化,2022(01):98-100.DOI:10.14013/j.cnki.scxdh.2022.01.036.
[5]趙祥.淺析國有企業績效管理中存在的問題及對策[J].中國管理信息化,2022,25(02):113-115.
[6]徐燕.大數據時代的企業績效管理探究[J].中國產經,2021(24):108-110.
[7]張秀花.通信行業成長型企業績效管理中存在的問題及應對措施[J].企業改革與管理,2021(23):104-105.DOI:10.13768/j.cnki.cn11-3793/f.2021.2342.
[8]王愛娜.數字化轉型中食品企業績效管理探究[J].食品研究與開發,2021,42(23):239.
[9]袁利.集團企業績效管理中存在的問題及對策[J].全國流通經濟,2021(34):70-72.DOI:10.16834/j.cnki.issn1009-5292.2021.34.019.
[10]梅慧.互聯網時代企業績效管理創新方法研究[J].中國集體經濟,2021(33):45-46.
[11]孫慶波.溝通策略在企業績效管理中的探究[J].中國產經,2021(20):144-145.
[12]李靈瑤,顧全根,王宇葉.大數據時代管理會計在企業績效管理中的應用探討[J].上海商業,2021(09):28-29.
[13]丘雪平.基于PDCA模型視角下的現代企業績效管理研究[J].今日財富(中國知識產權),2021(09):196-198.
[14]何軍強.當代企業績效管理及績效考核體系的作用機制研究[J].商場現代化,2021(15):85-87.DOI:10.14013/j.cnki.scxdh.2021.15.031.
[15]姜溟涵.淺析大數據時代企業績效管理現狀及其體系的創新應用[J].環渤海經濟瞭望,2021(07):155-156.DOI:10.16457/j.cnki.hbhjjlw.2021.07.072.
[16]麻文君. 基于BSC的H高新技術企業績效管理體系應用研究[D].青島科技大學,2021.
[17]劉慧敏. 中小型民營企業績效管理體系優化研究[D].山西大學,2021.DOI:10.27284/d.cnki.gsxiu.2021.000752.
致謝
時光飛逝,轉眼間我在學校的這些年生活即將結束,回顧這幾年的學習生活,收獲良多,既有幸福也有難過,學校生活的結束對于我來說也是一個新的開始。論文即將完成,在此,我心中有許多想要感謝的人。首先感謝我的導師,不僅在學習研究方面加以指導,也在生活和為人處世上給予幫助。還要感謝授課老師,你們嚴謹的學術精神和積極向上的工作態度都在激勵我的成長和進步。感謝多年來一直生活在一起的室友,謝謝你們多年來的陪伴和照顧。最后,要感謝各位論文評審老師,感謝您們在百忙之中抽空評閱本論文并給出寶貴的意見和建議。
?點贊+收藏+關注 ?→ ?私信領取本源代碼、數據庫
總結
以上是生活随笔為你收集整理的SSM+中小型企业绩效管理系统毕业设计-附源码081536的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js实现下载xls文件
- 下一篇: java信息管理系统总结_java实现科