springboot+党员信息管理系统 毕业设计-附源码161528
基于Springboot的黨員信息管理系統
摘?要
由于數據庫和數據倉庫技術的快速發展,學校黨員信息系統建設越來越向模塊化、智能化、自我服務和管理科學化的方向發展。黨員信息管理系統除了具有共享系統的全部功能以外,能通過對數據的分析對決策做出解釋是其主要的新特點。其體系結構,將由專用的服務器/客戶方式向廣域網發展,使更多的系統間能夠互相交流數據,帶動整個行業、領域知識和效率的極大提升。
黨員信息管理系統主要功能模塊包括學生管理、入黨信息、黨務信息、黨員活動、思想匯報等,采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用Spring boot框架、JSP技術、Ajax技術進行業務系統的編碼及其開發,實現了本系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對黨員信息管理系統的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現黨員信息管理系統的部署與運行。
關鍵詞:黨員信息管理;Springboot框架;MySQL數據庫
Party member information management system based on springboot
Abstract
Due to the rapid development of database and data warehouse technology, the construction of student Party branch information system is becoming more and more modular, intelligent, self-service and scientific management. In addition to all the functions of the sharing system, the student Party branch information management system can explain the decision-making through the analysis of data. Its architecture will develop from dedicated server / client mode to wide area network, so that more systems can exchange data with each other, and drive the great improvement of knowledge and efficiency of the whole industry and field.
The main functional modules of the Party member information management system include student management, Party membership information, party affairs information, Party member activities, ideological report, etc. the object-oriented development mode is adopted for software development and hardware erection, which can well meet the needs of practical use and improve the corresponding software erection and program coding, MySQL is used as the main storage unit of background data, and spring boot framework, JSP 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 Party member information management system, proves the necessity and technical feasibility of the system, then makes a basic introduction to the technical software and design ideas needed to design the system, and finally realizes the deployment and operation of the Party member information management system.
Key words:Party member information management; The Springboot?framework; The MySQL database
目 ?錄
第1章 緒論
1.1?研究背景與意義
1.2?開發現狀
第2章 相關技術介紹
2.1?J2EE技術
2.2 MVVM模式
2.3 B/S結構
2.4 Springboot框架
2.5?Mysql數據庫
第3章 系統分析
3.1?可行性分析
3.2?功能需求分析
3.2.1?前臺用戶功能
3.2.2?后臺管理員功能
3.3?非功能需求分析
3.4?安全性需求分析
3.4.1?系統的安全性
3.4.2?數據的安全性
3.5?數據流程分析
第4章 系統設計
4.1?系統架構設計
4.2?系統總體設計
4.3?系統功能設計
4.4?數據庫設計
4.4.1?數據需求分析
4.4.2?數據庫概念設計
4.4.3?數據庫表設計
第5章 系統實現
5.1?注冊模塊的實現
5.2?登錄模塊的實現
5.3?用戶資料修改模塊的實現
5.4?黨務信息管理模塊的實現
5.5?黨員活動模塊的實現
5.6?轉正申請模塊的實現
5.7?獎罰管理模塊的實現
第6章 系統測試
6.1?測試目的
6.2?功能測試
6.3?性能測試
第7章 總結與展望
參考文獻
致謝
黨員信息管理系統是黨委組織工作不可缺少的一部分.一個功能齊全、簡單易用的黨員信息管理系統能有效地減輕黨員管理工作人員的工作負擔,提高工作效率。隨著經濟的發展,人員交流來往的頻繁,黨員管理更加需要一套信息系統以提高信息管理的快捷及準確性。為此,建立一個黨員管理的信息庫,把所有黨員的信息,包括流動黨員的信息全部保存在信息庫存中,以便于管理、查詢、統計等就顯得尤為重要了。本系統設計的研究目標就是要開發一個高校黨員信息管理系統,對黨員的基本信息進行管理,以減輕管理人員的工作負擔。
現代化的學校離不開計算機技術在管理領域的應用。近年來,學校發展的內外環境對信息的需求量迅速增長,大量數據的收集、傳輸、處理、存貯和分析等工作極其復雜、繁重、枯燥。黨員信息管理工作是學校管理工作的重要組成部分,由于此項工作事務的繁瑣性多、涉及面廣、重復性大,非常適合用計算機進行管理。
網絡技術的發展,為學生黨員信息管理工作現代化提供了重要的手段。通過在網絡下對學生黨員信息管理系統的設計,提高高校學生黨員信息管理的水平,為今后實現數字化校園奠定了基礎,使得無紙化辦公成為現實。
就信息學院而言,學生黨員人數不斷的增加,學校學生黨員信息管理僅僅依靠原始的手工管理或簡單的單機管理,已無法取得較高的效率。黨員信息管理工作是學校管理工作的重要組成部分,由于此項工作事務的性多,涉及面廣,重復性大,非常適合用計算機進行管理。高校黨員信息管理系統是一個高校不可缺少的部分,系統的內容對于學校的決策者和管理者來說都至關重要,隨著科學技術的不斷提高,計算機科學技術日漸成熟,其強大的功能已為人們深刻認識,并已進入人類社會的各個領域并發揮著越來越重要的作用。由于學校黨員信息管理存在著黨員資料保存、黨員信息統計、支部書記工作的增加、預備黨員預備期滿的工作以及支部調整不方便等種種缺陷。因此要開發一個界面友好,易于操作的高校黨員管理軟件進行自動化處理,提高高校黨員信息管理的水平,為今后實現數字化校園奠定了基石,使得無紙化辦公成為可能,逐步成為現實,這也是本系統開發的目的和意義。
我國大規模的信息化管理大多開始于上世紀90年代,比西方國家的發展要晚10到20年左右,在沿海地區和較發達的地區,高校的信息化建立也十分迅速。然而,在欠發達地區,發展還是相對比較緩慢。
在國外高校,計算機技術起點早,技術先進,他們一般具有較大規模、穩定的技術隊伍來提供服務與技術支持。而國內信息化建設相對起步較晚。在數字校園理論逐步應用的過程中,各高校一方面不斷投資購建各種硬件、系統軟件和網各,另一方面也不斷開發實施了各類教學、科研、辦公管理等應用系統,形成了一定規模的信息化建設體系。但是,由于整體信息化程度相對落后,經費短缺,里論體系不健全等原因,國內高校黨員管理系統在機構設置、服務范圍、服務質量及人員要求上與國外高校相比都有一定的差距。
縱觀目前國內研究現狀,在安全性和信息更新化方面存在有一定的不足,各現有系統資料單獨建立,共享性差;在以管理者為主體的方式中,信息取舍依賴管理者對于信息的認知與喜好,較不容易掌握用戶真正的需求,也因此無法完全滿足用戶的需求。因此,黨支部信息管理軟件應充分依托校園網,實現黨員信息的集中管理、分散操作、信息共享,使傳統的黨員管理朝數字化、無紙化、智能化、綜合化的方向發展,并為進一步實現完善的計算機黨員信息管理系統和全校信息系統打下良好的基礎。
人可以掌握多門外語,而一個計算機科學家精通的大多是編程語言,它不是人類的自然語言,比如C語言、Java、Perl等等。由于不同的公司開發出的“中間件”不夠規范,所以Sun公司推出J2EE,用這個標準來解決弊病。它提供了良好的機制,讓每個層次允許與之相對的服務器、組件運行,使得系統的搭建穩定可用、開發高效、維護方便。
MVVM模式是常用的開發模式,主要是在代碼實現上將其分為M層、V層和C層。
視圖(View)代表用戶交互界面,一個 Web 應用就可能有很多的界面,在 MVVM?模式中,視圖僅僅處理的只有數據采集、處理,還有用戶的請求, 并不包括業務流程的處理,業務流程由模型(Model)來處理。
模型(Model)就是業務流程/狀態的處理及業務規則的制定。模型處理業務流程的過程其它層是無法看見了的,它就像黑箱子,在接受視圖請求的數據之后,然后返回最終的處理結果。MVVM?最主要的核心就是業務模型的設計,一個典型的應用例子就是目前流行的 EJB 模型,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的組件,但是它不能作為應用設計模型的框架。
控制器(Controller)可以理解為接收用戶的請求,然后視圖和模型匹配在一起,一起再完成用戶請求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個分發器,選擇什么樣的模型、視圖,可以完成用戶的什么樣的請求??刂茖硬蛔鏊械臄祿幚?#xff0c;比如說:用戶點擊一個連接,控制層接受到請求之后,并不處理業務信息,它只是向模型傳遞用戶的信息,同時告訴模型做什么,然后選擇符合需求的視圖返回給用戶。
B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題。
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。Spring集成多種事務模板,系統可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發人員在開發過程中認為現有的StrutsWeb框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創建了SpringMVC。
Mysql 經過多次的更新,功能層面已經非常的豐富和完善了,從Mysql4版本到5版本進行了比較大的更新,在商業的實際使用中取得了很好的實際應用效果。最新版本的Mysql支持對信息的壓縮,同時還能進行加密能更好的滿足對信息安全性的需求。同時經過系統的多次更新,數據庫自身的鏡像功能也得到了很大的增強,運行的流暢度和易用性方面有了不小的進步,驅動的使用和創建也更加的高效快捷。最大的變動還是進行了空間信息的顯示優化,能更加方便的在應用地圖上進行坐標的標注和運算。強大的備份功能也保證了用戶使用的過程會更加安心,同時支持的Office特性還支持用戶的自行安裝和使用。在信息的顯示形式上也進行了不小的更新,增加了兩個非常使用的顯示區,一個是信息區,對表格和文字進行了分類處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區進行信息的顯示,同時還能進行多個信息的比對,為用戶的實際使用帶來了很大的便捷。
針對本文中設計的學生課程考試系統在實際的實現過程中,最終選擇Mysql數據庫的主要原因在于在企業的應用系統應用及開發的過程中會存在大量的數據庫比較頻繁的操作,而且數據的安全性要求也是非常的高。綜合這些因素,最終選擇安全性系數比較高的Mysql來對校園競賽管理系統后臺數據進行存儲操作。
開發任何一個系統,都要對其可行性進行分析,對其時間和資源上的限制進行考慮,這樣可以減少系統開發的風險。同時,分析之后不僅能夠合理的運用人力,還能在各方面資源的消耗上得到節省。下面就對技術、經濟和社會三個方面來介紹。
實用性方面,本次設計的主要任務是在黨員信息管理系統內入黨信息、黨務信息、黨員活動、思想匯報、獎罰管理等,符合當前潮流的發展。從用戶角度出發,同時也考慮系統運營成本和人力資源,采用網絡上的便捷方式,實現線上業務,使得業務流程更系統,也更方便用戶的體驗,比較實用。
經濟性方面,由于本課題中設計的黨員信息管理的主要目的是為了能夠更加方便及快捷的進行黨員信息的查詢管理及檢索服務,也就是能夠可以直接投入使用的信息化軟件。系統的主要成本主要是集中在對使用數據后期繼續維護及其管理更新這個操作上。但是一旦系統投入到實際的運行及使用之后就能夠很好的提高信息查詢檢索的效率,同時也需要有效的保證查詢者的信息方面的安全性,同時這個黨員信息管理與系統所帶來的實際應用方面的價值是遠遠的超過了實際系統進行開發與維護方面的成本,因此,從經濟上來說開發這個軟件是可行的。
黨員信息管理系統的功能主要分為前臺用戶根據自己的需求進行注冊登錄,產看黨員信息,黨員活動等操作。后臺系統管理員主要對注冊用戶,黨員管理、獎罰管理等。
用戶以及管理員用例圖如下所示。
圖3-1 用戶以及管理員用例圖
前臺注冊用戶的功能如下:
注冊登錄:用戶填寫個人信息,并驗證手機號碼進行賬戶注冊,注冊成功后方可登錄系統。
入黨信息介紹:用戶可以在線上對入黨信息的瀏覽。
黨務信息:用戶可以對黨務信息進行查看。
黨員活動:學生可以進行黨員活動查看。
轉正申請:學生可以在線進行入黨書提交,等待審核通過。
個人信息:用戶可以修改個人信息。
管理員功能如下:
修改密碼:管理員可以隨時修改自己進入系統的登錄密碼,以保證系統的安全性。
黨員管理:對注冊的黨員信息進行維護管理等。
入黨信息管理:對學生入黨信息進行維護,添加、刪除、修改信息。
轉正申請管理:對學生的轉正申請書進行審核。
思想匯報管理:對學生的思想匯報文檔進行管理。
首先主要考慮的是系統功能軟件,在具體設計的環節上,是不是能夠較好的滿足各類用戶的基本功能需求,如果不能較好的滿足用戶需求,那么這個系統的存在是沒有價值的。軟件系統的非功能性求分析,從7個方面展開,一個是性能分析,針對系統;一個是安全分析,針對系統,一個是完整度分析,針對系統,一個是可維護分析,針對系統,一個是可擴展性分析,針對系統,一個是適應業務的性能分析。面對學生試題測試與系統存在的性能、安全、擴展、完整度等7個方面性能綜合比對分析后發現,需要相應的非功能性需求分析。
安全性對每一個系統來說都是非常重要的。安全性很好的系統可以保護學校的信息和用戶的信息不被竊取。提高系統的安全性不僅是對用戶的負責,更是對學校的負責。尤其針對于黨員信息管理系統來說,必須要有很好的安全性來保障整個系統。
系統具有對使用者有權限控制,針對角色的不通限制使用者的權限,以此來確保系統的安全性。
數據庫中的數據是從外界輸入的,當數據的輸入時,由于種種原因,輸入的數據會無效,或者是臟數據。因此,怎樣保證輸入的數據符合規定,成為了數據庫系統,尤其是多用戶的關系數據庫系統首要關注的問題。
因此,在寫入數據庫時,要保證數據完整性、正確性和一致性。
對系統的數據流進行分析,系統的使用者分為二類,一般用戶,管理員。系統主要對界面信息傳送,登錄信息的驗證,注冊信息的接收,用戶各種操作的響應做處理。
系統頂層數據流圖如下圖所示。
圖3-2 頂層數據流圖
要判斷用戶是是什么身份,是根據登錄的數據來判斷后,跳轉到對應的功能界面。在系統的內部用戶就可以對數據進行操作,數據庫中心就可以接收到系統傳輸的有效數據流來對數據sql語句進行對應操作。
系統底層數據流圖如下圖所示。
?圖3-3 底層數據流圖
系統可以分為前臺和后臺兩部分,每一種操作后系統都返回操作結果。前臺和后臺的數據連接主要通過數據庫,既分別對數據庫做不同的操作。
黨員信息管理系統的架構設計主要分為可以3層,主要有Web層,業務層,Model層。其中web層還包括View層和Controller層,Model層包括元數據擴展層和數據訪問層。
系統架構如下圖所示。
MVVM 就是將其中的View 的狀態和行為抽象化,讓我們將視圖 UI 和業務邏輯分開。當然這些事 ViewModel 已經幫我們做了,它可以取出 Model 的數據同時幫忙處理 View 中由于需要展示內容而涉及的業務邏輯。它強制性的把應用程序的輸入、輸出和處理全部分開,將其分為三個核心部分,這三個部分分別有不同的功能。
圖4-1系統架構圖
視圖層視圖是指被用戶所看到的并且能夠與之進行交互的界面。視圖可以向用戶展示相關的數據,并接收用戶輸入的數據,但對用戶數據不進行任何實際業務操作處理。
模型層通過控制層來處理視圖層傳遞的數據,同一個模型可以給不同的視圖提供數據,也可以被不同的視圖重復使用。由于 Model 的主要內容是數據、方法和行為,其也是 MVVM?中邏輯最為復雜,代碼量最多的部分,其中包含了許多應用中需要用到的業務邏輯,因此模型層的開發也變得尤為重要,后期一般不會對模型層進行大規模改動,也是 MVVM最穩定的部分。
控制層主要負責視圖層和模型層之間的數據傳輸和處理請求操作。當用戶通過視圖發送數據和請求時,控制層可以接收請求和數據并決定調用哪些模型、通過模型的哪些操
處理數據和請求,處理完成后,控制層再將數據返回給相應的視圖。
黨員信息管理系統總體分為前臺用戶模塊和后臺管理員模塊。
兩個模塊表現上是分別獨立存在,但是訪問的數據庫是一樣的。每一個模塊的功能都是根據先前完成的需求分析,并查閱相關資料后整理制作的。
綜上所述,系統功能結構圖如下圖所示。
圖4-2 系統功能結構圖
登錄模塊:登錄模塊是進入系統的入口,所有用戶必須登錄后才能訪問系統。登錄需要輸入用戶名和密碼,如果多次嘗試登錄需要輸入驗證碼。登錄時需要選擇用戶的角色,是一般用戶還是管理員登錄等。登錄成功后,會通過數據庫獲取用戶的權限,并跳轉至用戶的主頁面。
黨員信息數據模塊:可分為黨員信息數據瀏覽、黨員信息數據檢索、黨員信息數據維護三個模塊,管理員對黨員信息數據有維護的權限,發布新的黨員信息數據、更新已有的黨員信息數據等。
黨員管理模塊:黨員管理分為黨員添加、修改和刪除。黨員信息由管理員進行修改、添加、刪除操作。
從前面可以分析到數據庫中最重要的是入黨信息,黨務信息,黨員活動,思想匯報。分析可以得到如下數據描述:
平臺用戶:用于記錄用戶的各種信息,包括學號、姓名、性別、手機、郵箱、照片等數據項。
管理員:記錄管理員的登錄信息。包括用戶名,密碼,權限等數據項。
入黨信息:存放給學生的入黨信息數據項。
黨員管理:存儲黨員信息等詳情數據項。
根據前面的數據流程圖,結合系統的功能模塊設計,設計出符合系統的各信息實體。
系統ER圖如下圖所示。
圖4-3 系統ER圖
黨員信息管理與系統所擁有的數據表有以下:入黨信息表,黨務活動表,黨員活動表,獎罰管理表等。
由于數據表較多,只展示系統主要數據表,如下表所示。
branch_introduction表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| student_id | int | 11 | 是 | 是 | 學生ID |
| student_number | varchar | 64 | 是 | 否 | 學號 |
| student_name | varchar | 64 | 否 | 否 | 學生姓名 |
| class_name | varchar | 64 | 否 | 否 | 班級名稱 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
reward_and_punishment_management表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| reward_and_punishment_management_id | int | 11 | 是 | 是 | 獎罰管理ID |
| student_number | int | 11 | 否 | 否 | 學號 |
| student_name | varchar | 64 | 否 | 否 | 學生姓名 |
| class_name | varchar | 64 | 否 | 否 | 班級名稱 |
| affiliated_branch | varchar | 64 | 否 | 否 | 所屬支部 |
| types_of_rewards_and_punishments | varchar | 64 | 否 | 否 | 獎罰類型 |
| reward_and_punishment_content | text | 0 | 否 | 否 | 獎懲內容 |
| reasons_for_reward_and_punishment | text | 0 | 否 | 否 | 獎懲原因 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
party_membership_information表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| party_membership_information_id | int | 11 | 是 | 是 | 入黨信息ID |
| student_number | int | 11 | 否 | 否 | 學號 |
| student_name | varchar | 64 | 否 | 否 | 學生姓名 |
| class_name | varchar | 64 | 否 | 否 | 班級名稱 |
| affiliated_branch | varchar | 64 | 否 | 否 | 所屬支部 |
| current_state | varchar | 64 | 否 | 否 | 當前狀態 |
| time_of_joining_the_party | date | 0 | 否 | 否 | 入黨時間 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
party_member_activities表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| party_member_activities_id | int | 11 | 是 | 是 | 黨員活動ID |
| activity_number | varchar | 64 | 否 | 否 | 活動編號 |
| activity_name | varchar | 64 | 否 | 否 | 活動名稱 |
| activity_time | datetime | 0 | 否 | 否 | 活動時間 |
| activity_location | varchar | 64 | 否 | 否 | 活動地點 |
| participants | text | 0 | 否 | 否 | 參與對象 |
| activity_content | text | 0 | 否 | 否 | 活動內容 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
party_affairs_information表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| party_affairs_information_id | int | 11 | 是 | 是 | 黨務信息ID |
| student_number | int | 11 | 否 | 否 | 學號 |
| student_name | varchar | 64 | 否 | 否 | 學生姓名 |
| affiliated_branch | varchar | 64 | 否 | 否 | 所屬支部 |
| year_of_payment | varchar | 64 | 否 | 否 | 繳納年份 |
| party_fee_amount | int | 11 | 否 | 否 | 黨費金額 |
| pay_state | varchar | 16 | 是 | 否 | 支付狀態 |
| pay_type | varchar | 16 | 否 | 否 | 支付類型: |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
ideological_report表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| ideological_report_id | int | 11 | 是 | 是 | 思想匯報ID |
| student_number | int | 11 | 否 | 否 | 學號 |
| student_name | varchar | 64 | 否 | 否 | 學生姓名 |
| class_name | varchar | 64 | 否 | 否 | 班級名稱 |
| document_name | varchar | 64 | 否 | 否 | 文檔名稱 |
| ideological_report | varchar | 255 | 否 | 否 | 思想匯報 |
| remarks | text | 0 | 否 | 否 | 備注 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| examine_reply | varchar | 255 | 否 | 否 | 審核回復 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
employment_confirmation_application表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| employment_confirmation_application_id | int | 11 | 是 | 是 | 轉正申請ID |
| student_number | int | 11 | 否 | 否 | 學號 |
| student_name | varchar | 64 | 否 | 否 | 學生姓名 |
| class_name | varchar | 64 | 否 | 否 | 班級名稱 |
| affiliated_branch | varchar | 64 | 否 | 否 | 所屬支部 |
| application | varchar | 255 | 否 | 否 | 申請書 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| examine_reply | varchar | 255 | 否 | 否 | 審核回復 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
用戶在填寫數據的時候必須與注冊頁面上的驗證相匹配否則會注冊失敗,注冊頁面的表單驗證是通過驗證的,用戶名的長度必須在6到18之間,郵箱必須帶有@符號,密碼和密碼確認必須相同,你輸入的密碼,系統會根據你輸入密碼的強度給出指定的值,電話號碼和身份證號碼必須要求輸入格式與生活相符合,當你前臺驗證通過的時候你點擊注冊,表單會將你輸入的值通過name值傳遞給后臺并保存到數據庫中。
用戶注冊流程圖如下圖所示。
圖5-1用戶注冊流程圖
用戶注冊邏輯代碼如下:
/**
?????* 注冊
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創建時間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
主要由兩部分組成,登錄前的登錄界面以及登錄后的用戶功能界面。登錄界面,要求用戶輸入用戶名和密碼,當用戶名和密碼其中一個輸入為空時,給出提示“用戶名,密碼不能為空”。獲取用戶名和密碼后到數據庫中查找,如果用戶名存在,以及對應的密碼正確,則登錄成功,否則登錄失敗。登錄失敗后給出提示,并把焦點停在文本框中。登錄成功后將該次會話的全局變量username設置為用戶名。登錄成功后進入首頁的功能模塊,主要有生基本信息修改,已經發布黨務信息管理,發布信息,和退出功能。退出功能是清除全局變量username的值,并跳回到首頁。
登錄流程圖如下圖所示。
圖5-3登錄流程圖
用戶登錄界面如下圖所示。
圖5-4用戶登錄界面
用戶登錄的邏輯代碼如下所示。
/**
?????* 登錄
?????* @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;
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}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.select(groupMap, new HashMap<>()).getResultList();
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());
????????????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, "賬號或密碼不正確");
????????}
}
用戶登錄/注冊成功之后可以修改自己的基本信息。修改頁面的表單中每一個input的name值都要與實體類中的參數相匹配,在用戶點擊修改頁面的時候,如果改后用戶名與數據庫里面重復了,頁面會提示該用戶名已經存在了,否則通過Id來查詢用戶,并將用戶的信息修改為表單提交的數據。
如果黨務信息的信息需要修改,管理員可以通過查詢黨務信息的基本信息來查詢黨務信息,查詢黨務信息是通過ajax技術來進行查詢的,需要傳遞黨務信息的標題、編號等參數然后在返回到該頁面中,可以選中要修改或刪除的那條信息,如果選中了超過一條數據,頁面會挑一個窗口提醒只能選擇一條數,如果沒有選中數據會挑一個窗口題型必須選擇一條數據。當選擇確認修改的時候,后臺會根據傳過來的id到數據庫查詢,并將結果返回到修改頁面中,可以在修改頁面中修改剛剛選中的信息當點擊確認的時候from表單會將修改的數據提交到后臺并保存到數據庫中,就是說如果提交的數據數據庫中存在就修改,否則就保存。
黨務信息展示界面如下圖所示。
圖5-5黨務信息展示界面
黨務信息的邏輯代碼如下:
?@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);
}
????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){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
黨員活動功能需要考慮高并發,防止出現黨員信息重復、黨員信息狀態顯示出錯等情況,特對黨員活動這一共享數據增加鎖機制。在樂觀鎖、悲觀鎖以及線程鎖中,綜合考慮性能效率和錯誤的可接受性選擇了樂觀鎖機制。樂觀鎖的實現方式是使用版本標識來確定讀到的數據與提交時的數據是否一致,提交后修改版本標識,不一致時可以采取丟棄和再次嘗試的策略。在數據庫黨員活動表(對應黨員活動實體)設計中增加了version字段,每次數據提交時(更改黨員活動狀態)會判斷version是否匹配,若不匹配停止本次提交,若匹配則提交成功并增加version的值。
黨員活動功能整體流程:用戶瀏覽黨員活動信息時,同時會顯示黨員活動的狀態,系統會在其顯示詳細信息的頁面時便會判斷黨員活動的狀態,若黨員活動狀態為可瀏覽,則會顯示搜索的鏈接按鈕。在用戶點擊搜索按鈕時,會先通過攔截器判斷用戶是否登錄,若未登錄,會跳轉至登錄頁面,提示用戶先登錄,若為登錄用戶就會跳轉至填寫信息的頁面,填寫好信息之后,點擊搜索按鈕,成功之后顯示出黨員活動。
黨員活動流程圖如下圖所示。
圖5-6黨員活動流程圖
黨員活動界面如下圖所示。
圖5-7黨員活動界面
黨員活動界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
此頁面的關鍵是編寫轉正申請信息,包括轉正申請詳情等。單擊提交按鈕以完成信息的添加。如果未寫入完整的轉正申請信息,例如,如果未寫入轉正申請,系統將給出相應的錯誤提示,并且無法成功輸入。數據以概念的形式以onsubmit =“return checkForm()”的形式寫入以進行檢查,checkForm()函數是一種用于寫入數據的不同類型的校對方法,是不是為空也是經過form表單中的οnsubmit=”return checkForm()來檢查。
管理員點擊左側菜單“轉正申請”,頁面跳轉到轉正申請信息外觀,調用后臺轉正申請查詢所有轉正申請信息。并將信息密封到數據集合List,綁定到請求對象,然后頁面跳轉到相應的界面,顯示出轉正申請信息,單擊刪除按鈕完成轉正申請信息的刪除。
轉正申請界面如下圖所示。
圖5-9轉正申請界面
轉正申請界面邏輯代碼如下:
?@RequestMapping("/get_list")
????public Map<String, Object> getList(HttpServletRequest request) {
????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
????????return success(map);
}
根據需求,需要對教材黨員進行添加、刪除或修改詳情信息。刪除或修改教材黨員時,系統根據教材黨員的狀態判定為可刪除狀態下,才會給出刪除和修改鏈接,點擊刪除鏈接按鈕時,請求到達后臺,還會先查詢教材黨員狀態再次做出判定能否刪除。點擊修改鏈接按鈕時,會跳轉到修改信息的頁面,重新填寫好數據后,數據提交到后臺會對數據庫中相應的記錄做出修改。
添加獎罰明細時,會給出數據填寫的頁面,該頁面根據填寫好的黨員編號,獎罰明細等信息同樣會事先發送Ajax請求查詢編號是否已存在,數據填寫好之后提交到后臺,會調用相關服務在數據庫中插入記錄。
獎罰管理流程圖如下圖所示。
圖5-11獎罰管理流程圖
獎罰管理頁面效果如下圖所示。
圖5-13獎罰管理界面
獎罰管理界面關鍵代碼如下:
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
????/**
?????* 服務對象
?????*/
????@Autowired
????public AuthController(AuthService service) {
????????setService(service);
????}
}
對任何系統而言,測試都是必不可少的環節,測試可以發現系統存在的很多問題,所有的軟件上線之前,都應該進行充足的測試之后才能保證上線后不會Bug頻發,或者是功能不滿足需求等問題的發生。下面分別從單元測試,功能測試和用例測試來對系統進行測試以保證系統的穩定性和可靠性。
下表是獎罰管理管理功能的測試用例,檢測了獎罰管理管理中對獎罰管理信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-1 獎罰管理管理的測試用例
| 功能描述 | 用于獎罰管理管理 | |
| 測試目的 | 檢測獎罰管理管理時的各種操作的運行情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 點擊添加獎罰管理,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
| 點擊添加獎罰管理,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改獎罰管理,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改獎罰管理,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊刪除獎罰管理,選擇獎罰管理刪除 | 提示刪除成功 | 與預期結果一致 |
| 點擊搜索獎罰管理,輸入存在的獎罰管理名 | 查找出獎罰管理 | 與預期結果一致 |
| 點擊搜索獎罰管理,輸入不存在的獎罰管理名 | 不顯示獎罰管理 | 與預期結果一致 |
下表是轉正申請功能的測試用例,檢測了轉正申請中對轉正申請信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-2 轉正申請的測試用例
| 功能描述 | 用于轉正申請 | |
| 測試目的 | 檢測轉正申請時的各種操作的運行情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 點擊添加轉正申請,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
| 點擊添加轉正申請,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改轉正申請,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改轉正申請,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊刪除轉正申請,選擇轉正申請刪除 | 提示刪除成功 | 與預期結果一致 |
| 點擊搜索轉正申請,輸入存在的轉正申請名 | 查找出轉正申請 | 與預期結果一致 |
| 點擊搜索轉正申請,輸入不存在的轉正申請名 | 不顯示轉正申請 | 與預期結果一致 |
下表是黨員活動功能的測試用例,檢測了黨員活動中分類列表的操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-3 黨員活動的測試用例
| 功能描述 | 用于黨員活動 | |
| 測試目的 | 檢測黨員活動時各種操作的情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 未選擇分類,點擊提交 | 提示請選擇分類 | 與預期結果一致 |
| 未選擇列表,點擊提交 | 提示請選擇列表 | 與預期結果一致 |
使用阿里云PTS(Performance Testing Service)性能測試服務對線上系統進行壓力測試。線上服務器環境為:1核心CPU,1G內存,1Mbps公網帶寬,Centos7.0操作系統。
壓測過程中使用了2臺并發機器,每臺機器20個用戶并發,對系統主頁,登錄,數據查詢和數據維護等模塊進行并發訪問,測試結果是有40個用戶并發時,數據管理相關頁面的響應時間甚至達到了7s,通過查看服務器出網流量發現已經達到1381kb/s,可以看出服務器的帶寬已經達到峰值,如果系統使用5Mbps的帶寬,系統的響應時間和TPS將會大大增加。在整個測試的過程中,CPU的使用率占用僅8%,也提現出帶寬瓶頸對系統的影響非常嚴重。
隨著計算機互聯網技術的迅猛發展,各行各業都已經實現采用計算機相關技術對日益放大的數據進行管理。該課題是黨員信息管理為核心展開的。本研究針對黨員信息管理需求建模,數據建模及過程建模分析設計并實現平臺研究的過程。給出系統應用架構并分析優劣勢,通過功能分解圖,系統組件圖描述功能需求。設計建立了數據庫,給出系統關鍵數據結構的定義。通過類關系圖描述組件間的協作關系,給出各個類的定義方法。通過描述每一個類的字段,屬性及方法實現系統的前后端代碼。最終給出系統集成整合方法,完成校園“研幫”系統設計與實現。系統投入運行時,各功能均運行正常。系統的每個界面的操作符合常規邏輯,對使用者來說操作簡單,界面友好。整個系統的各個功能設計合理,體現了人性化。
但是由于自己在系統開發過程中對一些用到的相關知識和技術掌握不夠牢固,再加上自身開發經驗欠缺,因此系統在有些方面的功能還不夠完善,考慮的不夠全面,因此整個系統還有待日后逐步完善。
參考文獻
?[1]張鵬軍.打造“新媒體+”模式推動支部開展組織活動——以人力資源管理專業學生黨支部為例[J].廣西教育學院學報,2020(03):96-98.
[2]熊校良,秦艷龍,周程.移動互聯網環境下加強學生黨支部建設的路徑探索——以北京大學信息科學技術學院學生黨建實證數據為例[J].高校馬克思主義理論研究,2019,5(04):118-124.
[3]劉麗萍,劉春麗,馬鳳毛.高校黨建微信公眾號現況調查及發展策略——基于“互聯網+”黨建研究[J].遼東學院學報(社會科學版),2019,21(04):75-79.
·[4]胡義鐮,蘇傳令.基于網絡信息平臺的高?;鶎狱h組織建設研究[J].祖國,2019(05):166-170.
·[5]馬馮莉.信息時代民辦高校基于微信平臺建設基層黨支部的思考[J].傳播力研究,2019,3(01):204.
·[6]Yu-xin XIA,Xiao-yue Wu. Exploration of the new management mode of "Student's organization and Party branch" party building by college and university students[C]//Proceedings of 3rd International Conference on Modern Management,Education Technology,and Social Science(MMETSS 2018)(Advances in Social Science,Education and Humanities Research,VOL.215).Proceedings of 3rd International Conference on Modern Management,2018:17-20.
·[7]姜坤. 中山市廣播電視大學黨員學習管理系統的研究與分析[D].云南大學,2018.
·[8]郭凱峰,劉尚洪.微視域下高校服務型學生黨支部建設路徑探析[J].新西部(理論版),2018(01):83+81.
·[9]袁雪. 云南大學旅游文化學院黨員管理系統的研究與分析[D].云南大學,2019.
·[10]游耿林. 三明學院學生黨員信息管理系統的研究與分析[D].云南大學,2019.
·[11]劉建斌.網絡環境下民辦高校黨建創新研究[J].現代企業教育,2019(12):202-203.
·[12]楊貝,戴前偉,匡華凌.高校本科生黨支部按專業縱向設置的探索——以中南大學地球科學與信息物理學院為例[J].祖國,2019(06):122-123.
·[13]Fatholsadat Rahnema,Badrolsadat Rahnema,Muhammad Hussein Noure Elahi. An empirical probe into integration of communication information technology on psychological management of students and staff at science and research branch, Islamic Azad University, Tehran[J]. European Journal of Experimental Biology,2019,3(5):
·[14]信息工程[J].老年人,2018(01):51.
·[15]馬穎.試論互聯網與高校學生黨支部工作[J].文教資料,2019(13):216-217.
·[16]王文兵,龍海波.高校黨建信息系統的建設[J].思想教育研究,2018(11):40-41.
致謝
本次設計歷時3個月。在這個畢業設計中,它離不開指導教師的指導,使事情基本順利。指導老師無論是在畢業設計歷經中,還是在論文做完中都給了了我特別大的助益。另一個方面,教師認真負責的工作姿態,謹慎的教學精神厚重的理論水準都使我獲益匪淺。他勤懇謹慎的教學育人學習姿態也給我留下了特別特別深的感覺。我從老師那里學到了很多東西。在理論和實踐中,我的技能得到了特別大的提高。在此,特向教師表示由衷的感激。
經過對該畢業設計的全部研究和開發,我的系統研發經歷了從需求分析到實現詳細功能,再到最終測試和維護的特殊進展。讓我對系統研發有了更深層次的認識。如今我的動手本領單獨處理疑惑的本領也獲取到了特別大的演練學習增多,這是這次畢業設計最好的收獲。
最后,在整個系統開發過程中,我周圍的同學和朋友給了我很多意見,所以我很快就確認了系統的商業思想。在次,我由衷的向他們表示感激。
點贊+收藏+關注 ?→ ?私信領取本源代碼、數據庫
總結
以上是生活随笔為你收集整理的springboot+党员信息管理系统 毕业设计-附源码161528的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 翟佳:StreamNative 组织构建
- 下一篇: 枚举的使用介绍