spring boot大学体育赛事管理系统 毕业设计-附源码180923
Springboot大學體育賽事管理系統
摘?要
21世紀時信息化的時代,幾乎任何一個行業都離不開計算機,將計算機運用于學校的大學體育競賽管理也是十分常見的。過去使用手工的管理方式對大學體育賽事進行管理,造成了管理繁瑣、難以維護等問題,如今使用計算機對大學體育賽事的各項基本信息進行管理,比起手工管理來說既方便又簡單,而且具有易于管理、搜索速度快、存儲量大等多個優點。將其使用在大學體育賽事管理中,不僅能夠提高大學體育賽事管理中管理員的工作效率,而且可以使大學體育賽事管理更加科學與規范。在信息化時代的不斷沖擊下,大學體育賽事管理與計算機技術的結合,將會是一條提高大學體育賽事管理水平的捷徑。
經過本人的綜合考慮,大學體育賽事管理系統的設計是采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取Mysql作為后臺數據的主要存儲單元,采用Springboot框架、JSP技術、Ajax技術進行業務系統的編碼及其開發,實現了本系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對大學體育賽事管理系統的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現大學體育賽事管理系統和部署運行使用它。
關鍵詞:SpringbootA框架;Mysql數據庫;大學體育賽事
Springboot university sports event management system
Abstract
In the information age in the 21st century, almost any industry is inseparable from computers. It is also very common to apply computers to the management of school student Games. In the past, the manual management method was used to manage the college sports meeting, which caused the problems of cumbersome management and difficult maintenance. Now, using the computer to manage the basic information of the college sports meeting is not only convenient and simple compared with the manual management, but also has many advantages, such as easy management, fast search speed, large storage capacity and so on. Using it in the management of college games can not only improve the work efficiency of administrators in the management of college games, but also make the management of school games more scientific and standardized. Under the continuous impact of the information age, the combination of university sports meeting management and computer technology will be a shortcut to improve the management level of university sports meeting.
After my comprehensive consideration, the design of the school sports meeting management system adopts the object-oriented development mode for software development and hardware erection, which can well meet the needs of actual use, improve the corresponding software erection and program coding, take MySQL as the main storage unit of background data, and adopt Springboot?framework, JSP technology Ajax technology encodes and develops the business system, and 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 university sports meeting 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 university sports meeting system.
Key words:Springboot?framework; Mysql database; College games
?
目 ?錄
第1章 緒論 1
1.1?研究背景與意義 1
1.2?開發現狀 1
1.3?主要工作及論文結構 1
第2章 相關技術介紹 3
2.1J2EE技術 8
2.2?MVVM模式 8
2.3?B/S結構 9
2.4?MVVM模式介紹 9
2.5?Spring boot框架 10
2.6?Mysql數據庫 11
2.7?B/S體系工作原理 11
2.8?Vue.js 主要功能
第3章 系統分析 5
3.1需求分析 12
3.2可行性分析 12
3.2.1技術可行性:技術背景 12
3.2.2經濟可行性 13
3.2.3操作可行性 13
3.3性能分析 13
3.4系統操作流程 14
3.4.1用戶登錄流程 14
3.4.2信息添加流程 14
3.4.3信息刪除流程 15
第4章 系統設計 10
4.1系統架構設計 17
4.2開發流程設計 18
4.3數據庫設計 18
4.3.1實體ER圖 19
4.3.2 數據庫邏輯設計 19
4.3.3數據表 2
第5章 系統實現 17
5.1?數據庫連接模塊的實現 17
5.2?登錄模塊的實現 18
5.3?用戶模塊的實現 21
5.4?管理員模塊的實現 32
第6章 系統測試 35
6.2?測試目標 35
6.3?功能測試 37
6.4?測試結果 39
第7章 總結與展望 40
參考文獻 42
致謝 43
隨著國家教育體制改革,學校體育競賽活動的舉辦也越來越頻繁,報名參賽的學生數量也是越來越多。面對如此眾多參與者信息的錄入,人工采集信息的方式已經不能滿足當下的需求。運動會信息的管理又是一份繁瑣的工作,參賽者的信息量很大,而且通常不允許出現錯誤。如果執行手工操作,則必須手動填寫大量表格,這將使比賽管理工作又增加一個難度。
該系統設計的目的是使參與者信息的輸入和管理自動化,標準化和系統化,從而提高管理效率。并圍繞此管理目標對系統所需要的用戶信息,選手信息,團隊信息,賽事活動申請等進行管理和維護。
面對現金各國大學體育賽事活動的舉辦越發頻繁,踴躍報名參賽的學生數量也是越來越多。加之繁復的各種信息錄入,單用傳統的人工采集信息的方式已經不能滿足當下的需求。如何利用現代信息技術使組織者具有快速高效的信息反饋能力和高效率,是目前舉辦方特別關心的一個問題。建立一個功能齊全的運動會管理系統,避免由于人工操作產生的缺陷,已成為當今社會舉辦大學體育賽事的重中之重。
本文的主要工作是研究如何將計算機和信息管理進行有機結合,從而利用Java語言以及Mysql數據庫技術在Dreamweaver中實現了系統的功能模塊,切實的開發出一套貼近¥新聞管理的實際,有效管理¥新聞的系統。
論文結構如下:
第一章緒論:主要對大學體育賽事管理系統的開發背景,研究現狀,目的,及意義進行了分析。
第二章開發技術及軟件:主要把系統開發工具進行介紹,另外講解開發系統所用到的一些特殊功能技術。
第三章系統分析:主要是對大學體育賽事管理系統進行需求分析,以及對其數據流程與功能進行分析。
第四章系統設計:主要根據系統需求對系統的設計進行介紹,以及對數據的開發與功能模塊設計的過程。
第五章系統實現:本章主要結合系統界面截圖,介紹了系統各個功能實現的結果。
第六章系統測試:本章系統進行功能模塊的測試,撰寫測試用例,確保系統各大功能準確無誤。
第七章總結與展望:對整個論文的研究內容進行總結,概括整個論文的特點,指出不足之處,為下步深究指明方向。
人可以掌握多門外語,而一個計算機科學家精通的大多是編程語言,它不是人類的自然語言,比如C語言、Java、Perl等等。由于不同的公司開發出的“中間件”不夠規范,所以Sun公司推出J2EE,用這個標準來解決弊病。它提供了良好的機制,讓每個層次允許與之相對的服務器、組件運行,使得系統的搭建穩定可用、開發高效、維護方便[1][2]。
MVC模式是常用的開發模式,主要是在代碼實現上將其分為M層、V層和C層。
視圖(View)代表用戶交互界面,一個 Web 應用就可能有很多的界面,在 MVC 模式中,視圖僅僅處理的只有數據采集、處理,還有用戶的請求, 并不包括業務流程的處理,業務流程由模型(Model)來處理。
模型(Model)就是業務流程/狀態的處理及業務規則的制定。模型處理業務流程的過程其它層是無法看見了的,它就像黑箱子,在接受視圖請求的數據之后,然后返回最終的處理結果。MVC 最主要的核心就是業務模型的設計,一個典型的應用例子就是目前流行的 EJB 模型,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的組件,但是它不能作為應用設計模型的框架。
控制器(Controller)可以理解為接收用戶的請求,然后視圖和模型匹配在一起,一起再完成用戶請求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個分發器,選擇什么樣的模型、視圖,可以完成用戶的什么樣的請求。控制層不做所有的數據處理,比如說:用戶點擊一個連接,控制層接受到請求之后,并不處理業務信息,它只是向模型傳遞用戶的信息,同時告訴模型做什么,然后選擇符合需求的視圖返回給用戶。
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的作業管理平臺也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。
B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題。
Springboot(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。常作為數據源較簡單的web項目的框架。
1.6.1 Spring
Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數去調用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑。
Spring的核心思想是IoC(控制反轉),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。
1.6.2 SpringMVC
SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。SpringMVC相當于SSH框架中struts。
1.6.3 mybatis
mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯到各實體類的Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。
頁面發送請求給控制器,控制器調用業務層處理邏輯,邏輯層向持久層發送請求,持久層與數據庫交互,后將結果返回給業務層,業務層將處理邏輯發送給控制器,控制器再調用視圖展現數據。
?
Eclipse是由Genuitec公司開發的,一款功能非常強大的JavaEE的集成開發環境,其中包括有:完備的編碼、調試、測試和發布功能[10],完整支持JSP、Spring、CSS、JavaScript、SpringMVC、HTML、JSF、Mybatis、SQL等技術。在體系結構上,Eclipse的特征可以被分為7類:JavaEE模型;Web開發工具、EJB開發工具、JavaEE項目部署服務、應用程序服務器的而連接器、數據庫服務、Eclipse整合幫助。
對于以上每一種功能的類別,在Eclipse中都有相應的功能部件,并通過一系列的插件來實現它們。Eclipse在結構上的這種模塊化,可以讓它在不影響其他模塊的情況下,對其中任意的一個模塊進行單獨的擴展和升級。強大的Eclipse應用開發平臺也不僅僅只是Eclipse的插件而已,同時更是一款功能強大的,用于JavaEE的集成開發環境。
B/S架構采取瀏覽器請求,服務器響應的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務器產生的文本、數據、圖片、動畫、視頻點播和聲音等信息;
而每一個Web服務器又可以通過各種方式與數據庫服務器連接,大量的數據實際存放在數據庫服務器中;
從Web服務器上下載程序到本地來執行,在下載過程中若遇到與數據庫有關的指令,由Web服務器交給數據庫服務器來解釋執行,并返回給Web服務器,Web服務器又返回給用戶。在這種結構中,將許許多多的網連接到一塊,形成一個巨大的網,即全球網。而各個企業可以在此結構的基礎上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網絡上的服務器進行請求訪問的,瀏覽器的請求通過服務器進行處理,并將處理結果以及相應的信息返回給瀏覽器,其他的數據加工、請求全部都是由Web Server完成的。通過該框架結構以及植入于操作系統內部的瀏覽器,該結構已經成為了當今軟件應用的主流結構模式。
DAO層、Service層這兩個層次都可以單獨開發,互相的耦合度很低,完全可以獨立進行,這樣的一種模式在開發大項目的過程中尤其有優勢。
Controller,View層因為耦合度比較高,因而要結合在一起開發,但是也可以看作一個整體獨立于前兩個層進行開發。這樣,在層與層之前只需要知道接口的定義,調用接口即可完成所需要的邏輯單元應用,一切顯得非常清晰簡單。
任何一個項目在開發研究前,都需要對研發系統本身的需求做一個認真的分析,市場的調研是不可忽視的,從實際場景中確定使用人員的功能需求,從而明確目標,對整個系統的開發有一個更加準確的定位,在這個章節,需要對系統的性能分析,業務流程分析,和數據等進行分析,大學體育賽事管理系統的整體界面簡單,功能完善。
需求的可行性是分析和討論開發的系統能達到什么樣的要求。開發的系統平臺是否符合之前的要求。只有在預先評估系統的開發,才能在系統開發和實施之前完成需求。如果您不具備開發一個功能不合格的系統的可行性,那就是開發失敗。開發系統是否有用,可以完成之前討論過的需求,以下分析了大學體育賽事管理系統的實際需求。
系統設計需要從用戶和管理員的實際需求開始,以了解他們需要實施哪些功能以及他們可以包括哪些管理工作。
考慮到大學體育賽事管理系統設計的特點,應滿足幾個要求:
(1)它可以通過網絡更好地展示個人風采。
(2)它提供了一個免費的渠道,以確保數據的實時有效溝通。
3.2.1技術可行性:技術背景
大學體育賽事管理系統地開發采用了Java的Springboot框架,開發了功能完備、使用簡單的前端應用程序,并建立、維護了一個數據完整、安全、穩定性強的后臺數據庫系統。
系統使用Springboot框架和Mysql數據庫作為設計工具,可簡單易行地學習操作。用戶角色之間的相結合開發一個大學體育賽事管理系統是值得嘗試的,數據完整性和許多品質為數據的功能分配和管理提供了依據。它也是數據庫安全平臺的重要組成部分,是提高和增強數據安全性的重要手段。此外,為了提供更平滑,更智能和更有效的基本控制方法,定義了同時構建對安全計算環境的支持所需的步驟,并幫助維護安全性。因為在這兩種開發工具中,功能強大且免費且界面良好,所以大學體育賽事管理系統在技術方面是可行的。
3.2.2經濟可行性
大學體育賽事管理系統的開發是由開發者自己開發,不需要購買其他軟件或者端口之類的,而且在大學體育賽事管理系統開發之前所做的市場調研以及市場考察,都是沒有任何費用的,通過開發者自己的努力,所有的工作的都是自己親力親為,在碰到自己比較難以解決的問題,大多是通過同學和指導老師的幫助進行相關信息的解決,所以對于大學體育賽事管理系統的開發在經濟上是完全可行的,沒有任何費用支出的。
3.2.3操作可行性:?
可操作性主要是對大學體育賽事管理系統設計完成后,用戶的使用體驗度,對于管理員可以通過系統隨時管理相關的數據信息,并且對于管理員、用戶二個用戶角色,都可以簡單明了的進入到自己的系統界面,通過界面導航菜單可以簡單明了地操作功能模塊,方便用戶信息需求,對于系統的操作,不需要專業人員都可以直接進行功能模塊的操作管理,所以在系統的可操作性是完全可以的。本系統的操作使用的也是界面窗口進行登錄,所以操作人員只要會簡單的電腦操作就完全可以的。
3.3性能分析
隨著計算機網絡的到來,傳統的方式方法很難適應當下社會的發展,不僅降低人們的辦事效率,而且還需要很多的人力和物力,對于使用的時間和所要花費的費用都是比較高的,為了降低成本費用,提高用戶的工作效率,進行開發一套基于計算機和網絡技術的大學體育賽事管理系統。
大學體育賽事管理系統的開發設計是一個獨立的系統,以流行數據庫進行數據的存儲開發,主要是為了實現網站的用戶角色及相對應的功能模塊,讓網站的管理不會存在管理差異、低效率,而是跟傳統的管理信息恰好相反,大學體育賽事管理系統的實現可以節約資源。
3.4.?非功能性需求分析
隨著用戶量的增加,系統可能會需要同時服務上千、上萬個頁面,服務器需要同時響應大量用戶的操作,這就要求系統需要有良好的可擴展性,否則系統會出現延遲,卡頓甚至服務器崩潰的問題。高擴展性可以使軟件保持旺盛的生命力,同時也能夠使系統更好的適應用戶增加、提高性能需求、增加應用功能等改變。
系統中保存了大量用戶和管理員的個人信息,因此,保證系統服務器和數據安全是在開發過程中需要考慮的重要問題。安全性包括服務器安全、操作系統安全、數據庫安全、程序代碼安全以及用戶個人信息和支付安全等,系統可以通過采用防火墻技術、加密技術、認證技術等來增強其安全性,只有一個健壯安全的系統才能具有長久的生命力。
3.5系統操作流程
3.5.1用戶登錄流程
對于系統的安全性的第一關,就是用戶想要進入系統,必須通過登錄窗口,輸入自己的登錄信息才可以進行登錄,用戶輸入的信息準確無誤后才可以進入到操作系統界面,進行功能模塊的相對應操作,如果用戶輸入的信息不正確,則窗口出現提示框,用戶登錄失敗,返回到第一步進行重新輸入,如圖3-1所示。
圖3-1登錄操作流程圖
?
3.5.2信息添加流程
對于大學體育賽事管理系統,需要隨時添加所需要的數據信息,對于用戶添加信息,需要根據添加界面,根據選框的內容進行填寫所要添加的數據信息,信息輸入完成后判斷數據信息是否符合要求,符合要求則添加完成,用戶所添加的信息不符合要求,則需要返回到第一步,重新輸入數據信息,再進行判斷操作,如圖3-2所示。
?
圖3-2 信息添加流程圖
3.5.3信息刪除流程
不管是哪個用戶角色進入到不同的系統操作界面,都可以進行不同的信息內容的操作功能,對用系統數據信息的刪除,用戶一旦將信息刪除,那么該刪除的數據信息將無法恢復,所以用戶在對數據刪除事,一定判斷刪除的內容是否是確定要刪除的,確定無誤后選擇確定刪除操作,如圖3-3所示。
?
圖3-3?信息刪除流程圖
4.1系統架構設計
大學體育賽事管理系統項目的概述設計分析,主要是大學體育賽事管理系統的具體分析,進行數據庫的是設計,數據采用mysql數據庫,并且對于系統的設計采用比較人性化的操作設計,對于系統出現的錯誤信息可以及時做出處理及反饋。
大學體育賽事管理系統基于現有的網絡開發,可以實現管理員,用戶管理(管理員、用戶注冊)更多管理(賽事活動申請管理、經費預算申請管理、個人報名管理、團隊報名管理、項目結題管理)等詳細的了解及統計分析。實現用戶:首頁、賽事活動申請,經費預算申請、賽事報名等。根據系統功能需求建立的模塊關系圖如下圖:
?
圖4-1管理員功能模塊圖
?
圖4-2用戶功能模塊圖
4.2開發流程設計
大學體育賽事管理系統的開發對管理模塊和系統使用的數據庫進行分析,編寫代開發,規劃和操作是構建信息管理應用程序的必要三步曲,它決定了系統是否能夠真正實現預設功能以及是否可以在成功設計后實施。在開發過程中,每個階段必須嚴格按照線性順序進行開發,并且在相應階段生成的每個工作都可以通過技術進行驗證和檢查。確保一個階段完成后是正確的,不會造成下一階段拖拽現象,使系統完成設計功能后得到保證。
從大學體育賽事管理系統的成功開發經驗來看,上述方法效果最為明顯,最大程度地降低了系統開發的復雜性。如圖4-2所示。
?
圖4-2開發系統流程圖
4.3數據庫設計
數據庫是信息系統的基礎和核心。數據庫設計的好壞直接影響到信息系統開發的成敗。創建數據庫表首先確定實體的屬性和實體之間的關系。根據關系創建一個數據表。
4.3.1實體ER圖
數據庫是整個軟件編程中最重要的一個步驟,對于數據庫問題主要是判定數據庫的數量和結構公式的創建。展示系統使用的是Mysql進行對數據庫進行管理,進行保證數據的安全性、穩定性等。
概念模型的設計是為了抽象真實世界的信息,并對信息世界進行建模。它是數據庫設計的強大工具。數據庫概念模型設計可以通過E-R圖描述現實世界的概念模型。系統的E-R圖顯示了系統中實體之間的鏈接。而且Mysql數據庫是自我保護能力比較強的數據庫,下圖主要是對數據庫實體的E-R圖:
(1) ?大學體育賽事管理系統整體E-R圖,如圖4-3所示:
?
圖4-3整體E-R圖
?(2) 團隊報名實體圖如圖4-4所示:
?
圖4-4團隊報名實體圖
這些功能可以充分滿足大學體育賽事管理系統的需求。此系統功能主要展示用戶與管理員的功能結構,如圖4-5所示。
?
4.3.2數據庫邏輯設計
針對系統的實體和屬性,結合數據設計思想,對系統的邏輯設計的內容進行如下描述。
賽事活動申請(賽事名稱、賽事類型、賽事編號、組賽單位、項目負責人)。
活動經費申請(賽事名稱、賽事編號、賽事類型、差旅費、培訓費、耗材費、指導費、賽事注冊費、教師獎金、審核狀態)。
團隊報名(團隊名稱、賽事名稱、賽事類型、賽事編號、團隊人數)。
4.3.3數據表
我們可以根據數據結構的詳細分析要求,我們根據輸入和輸出數據量的要求進行分析,確定什么表,結構之間的關系,我們可以驗證,調整和完善,查詢和瀏覽過程,可以實現數據庫,以使用戶對數據和功能有更多要求。
基于系統使用的數據庫管理系統的特點,對數據庫的概念模型進行了轉換和構建。但是,這個系統只需要充分考慮大學體育賽事管理系統的功能,而且組織比較清晰。
group表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| ordinary_users_id | int | 11 | 是 | 是 | 普通用戶ID |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| user_number | varchar | 64 | 是 | 否 | 用戶編號 |
| user_gender | varchar | 64 | 否 | 否 | 用戶性別 |
| department | varchar | 64 | 否 | 否 | 所屬部門 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| budget_application_id | int | 11 | 是 | 是 | 經費預算申請ID |
| event_number | varchar | 64 | 否 | 否 | 賽事編號 |
| entry_name | varchar | 64 | 否 | 否 | 參賽名稱 |
| registration_fee | varchar | 64 | 否 | 否 | 參賽注冊費 |
| rate_difference_fee | varchar | 64 | 否 | 否 | 差率費 |
| training_fee | varchar | 64 | 否 | 否 | 培訓費 |
| guidance_fee | varchar | 64 | 否 | 否 | 指導費 |
| consumables | varchar | 64 | 否 | 否 | 耗材費 |
| teacher_bonus | varchar | 64 | 否 | 否 | 教師獎金 |
| other | varchar | 64 | 否 | 否 | 其他 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| event_application_id | int | 11 | 是 | 是 | 賽事活動申請ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| event_number | varchar | 64 | 是 | 否 | 賽事編號 |
| group_competition_unit | varchar | 64 | 否 | 否 | 組賽單位 |
| project_leader | varchar | 64 | 否 | 否 | 項目負責人 |
| contact_number | varchar | 16 | 否 | 否 | 聯系電話 |
| start_date | date | 0 | 否 | 否 | 開始日期 |
| end_date | date | 0 | 否 | 否 | 結束日期 |
| organizer | varchar | 64 | 否 | 否 | 主辦單位 |
| group_significance | varchar | 64 | 否 | 否 | 組賽意義 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| individual_registration_id | int | 11 | 是 | 是 | 個人報名ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| college_name | varchar | 64 | 否 | 否 | 學院名稱 |
| class_name | varchar | 64 | 否 | 否 | 班級名稱 |
| grade_name | varchar | 64 | 否 | 否 | 年級名稱 |
| professional_name | varchar | 64 | 否 | 否 | 專業名稱 |
| contact_number | varchar | 64 | 否 | 否 | 聯系電話 |
| user_mailbox | varchar | 64 | 否 | 否 | 用戶郵箱 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| team_registration_id | int | 11 | 是 | 是 | 團隊報名ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| event_number | varchar | 64 | 是 | 否 | 賽事編號 |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| team_name | varchar | 64 | 否 | 否 | 團隊名稱 |
| number_of_teams | varchar | 64 | 否 | 否 | 團隊人數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| project_conclusion_id | int | 11 | 是 | 是 | 項目結題ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| prize_awarded_ | varchar | 64 | 否 | 否 | 獲獎名次 |
| total_use_of_funds | varchar | 64 | 否 | 否 | 資金使用共計 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
從web系統查詢數據的根本的查詢步驟:
Step1: 進行檢查并且過濾來自用戶的系統數據;
Step2: 成立起一個合適的數據庫進行連接;
Step3: 進行查詢系統數據庫;
Step4: 獲得查詢的結構;
Step5: 把查詢的結果展示給用戶。
Step6: 數據庫連接斷開,釋放資源。
數據庫連接原理如下圖所示。
?
圖5-1數據庫連接原理
為確保系統安全性,系統操作員只有在登錄界面輸入正確的用戶名、密碼、權限以及驗證碼,單擊“登錄”按鈕后才能夠進入本系統的主界面。
用戶登錄流程圖如下所示。
?
圖5-2用戶登錄流程圖
登錄界面如下圖所示。
?
圖5-3登錄界面
用戶登錄的邏輯代碼如下所示。
???* 登錄
?????* @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-5用戶注冊流程圖
用戶注冊界面如下圖所示。
?
圖5-6用戶注冊界面
用戶注冊關鍵代碼如下所示。
?* 注冊
?????* @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);
}
用戶點擊某個賽事活動申請進詳細頁,點擊申請按鈕進入信息提交賽事活動申請。
賽事活動申請流程圖如下所示。
?
圖5-7賽事活動申請流程圖
賽事活動申請界面如圖所示。
?
圖5-8賽事活動申請界面
賽事活動申請關鍵代碼如下所示。
?<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-9團隊報名流程圖
團隊報名界面如圖所示。
?
圖5-10團隊報名界面
團隊報名申請關鍵代碼如下所示。
@RequestMapping("/get_obj")
????public Map<String, Object> obj(HttpServletRequest request) {
????????List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
????????if (resultList.size() > 0) {
????????????JSONObject jsonObject = new JSONObject();
????????????jsonObject.put("obj",resultList.get(0));
????????????return success(jsonObject);
????????} else {
????????????return success(null);
????????}
}
系統用戶管理主要是對新用戶的添加和舊用戶的刪除。新用戶的添加主要是指添加用戶名稱并確定其密碼;舊用戶的刪除也是從下拉菜單中找到對應的用戶名稱將其刪除。不論是新用戶添加還是舊用戶的刪除,這個權限只有管理員具有。
用戶管理流程圖如下所示。
?
圖5-11用戶管理流程圖
用戶管理界面如下圖所示。
?
圖5-12用戶管理界面
系統用戶管理關鍵代碼如下所示。
@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);
????}
賽事經費申請管理功能主要指用戶對其賽事經費申請信息提交系統,管理員對申請進行審核管理。
賽事經費申請管理流程圖如下所示。
?
圖5-13賽事經費申請管理流程圖
賽事經費申請管理如下圖所示。
?
圖5-14賽事經費申請管理界面
賽事經費申請管理關鍵代碼如下所示。
?@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);
}
用戶選擇個人報名記錄,管理員審核個人報名信息,管理所有用戶的報名記錄。
個人報名管理流程圖如下所示。
?
圖5-15個人報名管理流程圖
個人報名管理界面如下所示。
?
圖5-16個人報名管理界面
個人報名管理關鍵代碼如下所示。
@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);
}
系統測試是用于檢查軟件的質量、性能、可靠性等是否符合用戶需求。一套嚴謹的、規范的、完善的測試過程將大大提高軟件的質量、可信度、可靠性,降低軟件的出錯率,降低用戶風險系數。通過在計算機上對系統進行測試試驗并從中發現此系統中存在的問題和錯誤然后加以修改,使之更加符合用戶需求。
1.測試的目的是通過測試來發現程序在執行過程中的錯誤的過程。
2.好的測試方案是可以檢驗出還未被發現的錯誤的方案。
3.好的測試是發現了到目前為止還未被發現的錯誤的測試。
4.該系統能夠完成大學體育賽事活動/經費申請、大學體育賽事維護、活動/經費申請維護、用戶維護、系統維護等功能,做到所開發的系統操作簡單,盡量使系統操作不受用戶對電腦知識水平的限制。
下表是賽事活動申請管理系統的測試用例,檢測了賽事活動申請管理中對賽事活動申請信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-1 賽事活動申請管理的測試用例
| 功能描述 | 用于賽事活動申請管理 | |
| 測試目的 | 檢測賽事活動申請管理時的各種操作的運行情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 點擊添加賽事活動申請,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
| 點擊添加賽事活動申請,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改賽事活動申請,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊修改賽事活動申請,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
| 點擊刪除賽事活動申請,選擇賽事活動申請刪除 | 提示刪除成功 | 與預期結果一致 |
| 點擊搜索賽事活動申請,輸入存在的賽事活動申請名 | 查找出賽事活動申請 | 與預期結果一致 |
| 點擊搜索賽事活動申請,輸入不存在的賽事活動申請名 | 不顯示賽事活動申請 | 與預期結果一致 |
下表是團隊報名管理功能的測試用例,檢測了團隊報名管理中團隊報名單的操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-2 團隊報名管理的測試用例
| 功能描述 | 用于團隊報名管理 | |
| 測試目的 | 檢測團隊報名管理時各種操作的情況 | |
| 測試數據以及操作 | 預期結果 | 實際結果 |
| 未選擇團隊報名,點擊提交 | 提示請選擇團隊報名 | 與預期結果一致 |
根據以上測試情況,測試結果如下表所示。
表6-1測試結果表
| 測試項目 | 測試結果 |
| 登錄測試 | 成功 |
| 修改密碼測試 | 成功 |
| 個人報名測試 | 成功 |
| 團隊報名測試 | 成功 |
| 賽事活動申請測試 | 成功 |
| 經費預算申請測試 | 成功 |
| 用戶管理測試 | 成功 |
| 賽事信息管理測試 | 成功 |
| 項目結題管理測試 | 成功 |
| 個人報名管理測試 | 成功 |
本研究針對大學體育賽事管理系統地需求建模,數據建模及過程建模分析設計并實現大學體育賽事管理系統的過程。給出系統應用架構并分析優劣勢,通過功能分解圖,系統組件圖描述功能需求。設計建立了數據庫,給出系統關鍵數據結構的定義。通過類關系圖描述組件間的協作關系,給出各個類的定義方法。通過描述每一個類的字段,屬性及方法實現大學體育賽事管理系統的前后端代碼。最終給出系統集成整合方法,完成大學體育賽事管理系統地設計與實現。
在此項目的開發中,不光明白了前端開發和后臺在整個系統中起到了什么作用,因為前后臺的連接,用戶可以對系統進行操作,可以在輸入自己的相關信息后,通過后臺加工,完成對數據庫的查找、修改、添加,而理解了這些關系與實現的方法后。再去完善整個系統的功能就更加清晰與簡單了。此次的項目它涉及了前臺與后臺系統的搭建,在學校所學的知識基礎上,此次的項目,讓我對于一個系統的前端開發,以及后臺的作用都有了一個更深切的認知。
參考文獻
[4]任嘉,徐卓農,鄧飛.對高校學科比賽管理系統改進的研究[J].科技視界,2020(20):168-170.
[5]傅旭波,吳葉海,柳志鵬,孫冠榮,孫耀然.校園足球比賽項目管理模式實踐研究[J].青少年體育,2020(05):44-46+74.
[6]David S. Williams II. Understanding Spatial Relationships in Admission Competition[J]. New Directions for Institutional Research,2018,2018(180):
[7]本刊編輯.“青少年校園足球數據云”在校園足球比賽管理中的價值[J].校園足球,2019(10):69-71.
[8]王一帆.江蘇省高校校園體育競賽管理模式研究[J].同行,2019(08):144.
[9]陳偉,方霞,吳俊.基于數字化校園的學生競賽管理系統[J].實驗室研究與探索,2019,34(10):201-205.
[10]張立天,孫強.駐濟高校體育競賽管理與校園體育文化建設調查研究[J].搏擊(體育論壇),2018,7(06):17-19.
[11]王云凱.基于B/S架構的校園比賽賽管理系統分析與設計——以西南財經大學職業生涯規劃大賽報名系統為例[J].中國教育信息化,2018(19):88-90.
[12]雷鳴,任平社,劉軍.基于數字化校園背景下高校教學群體競賽管理系統的開發與應用[J].科技信息,2018(34):29.
[13]吳嘉玲. 網絡環境下高校體育綜合管理平臺的設計與構想[C]//Management Science and Engineering(MSE 2011 V6).,2018:490-494.
[14]韓志超.學生網管團隊的建設與管理[J].中國教育網絡,2018(12):73-75.
致謝
在此論文完成之際,感謝我的指導老師。在指導老師的網頁設計課上,當時我學到了很多東西,這對于我實習過程中也打了一定的基礎,而且指導老師對于我的設計也提出許多建議,并予以悉心的指導,對于一些細小的問題都耐心的指導我去完善,授予我寫論文的好友,時常的鼓勵我,另外感謝教導我完善此項目的前端同學,對于這個項目,我是邊學習邊實現完成的,有許多東西開始并不是很明白,但前端開發的同學非常耐心的引導我去將這個項目完成,在系統的后端開發中,所用到的后臺開發技術也時常會給我講解,助于我更好的將論文完成,在此對幫助到我的同學和一直予以教導的指導老師致以衷心的感謝,祝事業有成。
點贊+收藏+關注 → 私信領取本源代碼、數據庫
總結
以上是生活随笔為你收集整理的spring boot大学体育赛事管理系统 毕业设计-附源码180923的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程鑫峰:3.1余威未散鲍威尔再度归来,伦
- 下一篇: 回归技术——我看中国软件的发展方向