spring boot大学体育赛事管理系统 毕业设计-附源码180923
Springboot大學(xué)體育賽事管理系統(tǒng)
摘?要
21世紀(jì)時(shí)信息化的時(shí)代,幾乎任何一個(gè)行業(yè)都離不開計(jì)算機(jī),將計(jì)算機(jī)運(yùn)用于學(xué)校的大學(xué)體育競(jìng)賽管理也是十分常見的。過去使用手工的管理方式對(duì)大學(xué)體育賽事進(jìn)行管理,造成了管理繁瑣、難以維護(hù)等問題,如今使用計(jì)算機(jī)對(duì)大學(xué)體育賽事的各項(xiàng)基本信息進(jìn)行管理,比起手工管理來(lái)說既方便又簡(jiǎn)單,而且具有易于管理、搜索速度快、存儲(chǔ)量大等多個(gè)優(yōu)點(diǎn)。將其使用在大學(xué)體育賽事管理中,不僅能夠提高大學(xué)體育賽事管理中管理員的工作效率,而且可以使大學(xué)體育賽事管理更加科學(xué)與規(guī)范。在信息化時(shí)代的不斷沖擊下,大學(xué)體育賽事管理與計(jì)算機(jī)技術(shù)的結(jié)合,將會(huì)是一條提高大學(xué)體育賽事管理水平的捷徑。
經(jīng)過本人的綜合考慮,大學(xué)體育賽事管理系統(tǒng)的設(shè)計(jì)是采取面對(duì)對(duì)象的開發(fā)模式進(jìn)行軟件的開發(fā)和硬體的架設(shè),能很好的滿足實(shí)際使用的需求,完善了對(duì)應(yīng)的軟體架設(shè)以及程序編碼的工作,采取Mysql作為后臺(tái)數(shù)據(jù)的主要存儲(chǔ)單元,采用Springboot框架、JSP技術(shù)、Ajax技術(shù)進(jìn)行業(yè)務(wù)系統(tǒng)的編碼及其開發(fā),實(shí)現(xiàn)了本系統(tǒng)的全部功能。本次報(bào)告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎(chǔ)。針對(duì)大學(xué)體育賽事管理系統(tǒng)的各項(xiàng)需求以及技術(shù)問題進(jìn)行分析,證明了系統(tǒng)的必要性和技術(shù)可行性,然后對(duì)設(shè)計(jì)系統(tǒng)需要使用的技術(shù)軟件以及設(shè)計(jì)思想做了基本的介紹,最后來(lái)實(shí)現(xiàn)大學(xué)體育賽事管理系統(tǒng)和部署運(yùn)行使用它。
關(guān)鍵詞:SpringbootA框架;Mysql數(shù)據(jù)庫(kù);大學(xué)體育賽事
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?開發(fā)現(xiàn)狀 1
1.3?主要工作及論文結(jié)構(gòu) 1
第2章 相關(guān)技術(shù)介紹 3
2.1J2EE技術(shù) 8
2.2?MVVM模式 8
2.3?B/S結(jié)構(gòu) 9
2.4?MVVM模式介紹 9
2.5?Spring boot框架 10
2.6?Mysql數(shù)據(jù)庫(kù) 11
2.7?B/S體系工作原理 11
2.8?Vue.js 主要功能
第3章 系統(tǒng)分析 5
3.1需求分析 12
3.2可行性分析 12
3.2.1技術(shù)可行性:技術(shù)背景 12
3.2.2經(jīng)濟(jì)可行性 13
3.2.3操作可行性 13
3.3性能分析 13
3.4系統(tǒng)操作流程 14
3.4.1用戶登錄流程 14
3.4.2信息添加流程 14
3.4.3信息刪除流程 15
第4章 系統(tǒng)設(shè)計(jì) 10
4.1系統(tǒng)架構(gòu)設(shè)計(jì) 17
4.2開發(fā)流程設(shè)計(jì) 18
4.3數(shù)據(jù)庫(kù)設(shè)計(jì) 18
4.3.1實(shí)體ER圖 19
4.3.2 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì) 19
4.3.3數(shù)據(jù)表 2
第5章 系統(tǒng)實(shí)現(xiàn) 17
5.1?數(shù)據(jù)庫(kù)連接模塊的實(shí)現(xiàn) 17
5.2?登錄模塊的實(shí)現(xiàn) 18
5.3?用戶模塊的實(shí)現(xiàn) 21
5.4?管理員模塊的實(shí)現(xiàn) 32
第6章 系統(tǒng)測(cè)試 35
6.2?測(cè)試目標(biāo) 35
6.3?功能測(cè)試 37
6.4?測(cè)試結(jié)果 39
第7章 總結(jié)與展望 40
參考文獻(xiàn) 42
致謝 43
隨著國(guó)家教育體制改革,學(xué)校體育競(jìng)賽活動(dòng)的舉辦也越來(lái)越頻繁,報(bào)名參賽的學(xué)生數(shù)量也是越來(lái)越多。面對(duì)如此眾多參與者信息的錄入,人工采集信息的方式已經(jīng)不能滿足當(dāng)下的需求。運(yùn)動(dòng)會(huì)信息的管理又是一份繁瑣的工作,參賽者的信息量很大,而且通常不允許出現(xiàn)錯(cuò)誤。如果執(zhí)行手工操作,則必須手動(dòng)填寫大量表格,這將使比賽管理工作又增加一個(gè)難度。
該系統(tǒng)設(shè)計(jì)的目的是使參與者信息的輸入和管理自動(dòng)化,標(biāo)準(zhǔn)化和系統(tǒng)化,從而提高管理效率。并圍繞此管理目標(biāo)對(duì)系統(tǒng)所需要的用戶信息,選手信息,團(tuán)隊(duì)信息,賽事活動(dòng)申請(qǐng)等進(jìn)行管理和維護(hù)。
面對(duì)現(xiàn)金各國(guó)大學(xué)體育賽事活動(dòng)的舉辦越發(fā)頻繁,踴躍報(bào)名參賽的學(xué)生數(shù)量也是越來(lái)越多。加之繁復(fù)的各種信息錄入,單用傳統(tǒng)的人工采集信息的方式已經(jīng)不能滿足當(dāng)下的需求。如何利用現(xiàn)代信息技術(shù)使組織者具有快速高效的信息反饋能力和高效率,是目前舉辦方特別關(guān)心的一個(gè)問題。建立一個(gè)功能齊全的運(yùn)動(dòng)會(huì)管理系統(tǒng),避免由于人工操作產(chǎn)生的缺陷,已成為當(dāng)今社會(huì)舉辦大學(xué)體育賽事的重中之重。
本文的主要工作是研究如何將計(jì)算機(jī)和信息管理進(jìn)行有機(jī)結(jié)合,從而利用Java語(yǔ)言以及Mysql數(shù)據(jù)庫(kù)技術(shù)在Dreamweaver中實(shí)現(xiàn)了系統(tǒng)的功能模塊,切實(shí)的開發(fā)出一套貼近¥新聞管理的實(shí)際,有效管理¥新聞的系統(tǒng)。
論文結(jié)構(gòu)如下:
第一章緒論:主要對(duì)大學(xué)體育賽事管理系統(tǒng)的開發(fā)背景,研究現(xiàn)狀,目的,及意義進(jìn)行了分析。
第二章開發(fā)技術(shù)及軟件:主要把系統(tǒng)開發(fā)工具進(jìn)行介紹,另外講解開發(fā)系統(tǒng)所用到的一些特殊功能技術(shù)。
第三章系統(tǒng)分析:主要是對(duì)大學(xué)體育賽事管理系統(tǒng)進(jìn)行需求分析,以及對(duì)其數(shù)據(jù)流程與功能進(jìn)行分析。
第四章系統(tǒng)設(shè)計(jì):主要根據(jù)系統(tǒng)需求對(duì)系統(tǒng)的設(shè)計(jì)進(jìn)行介紹,以及對(duì)數(shù)據(jù)的開發(fā)與功能模塊設(shè)計(jì)的過程。
第五章系統(tǒng)實(shí)現(xiàn):本章主要結(jié)合系統(tǒng)界面截圖,介紹了系統(tǒng)各個(gè)功能實(shí)現(xiàn)的結(jié)果。
第六章系統(tǒng)測(cè)試:本章系統(tǒng)進(jìn)行功能模塊的測(cè)試,撰寫測(cè)試用例,確保系統(tǒng)各大功能準(zhǔn)確無(wú)誤。
第七章總結(jié)與展望:對(duì)整個(gè)論文的研究?jī)?nèi)容進(jìn)行總結(jié),概括整個(gè)論文的特點(diǎn),指出不足之處,為下步深究指明方向。
人可以掌握多門外語(yǔ),而一個(gè)計(jì)算機(jī)科學(xué)家精通的大多是編程語(yǔ)言,它不是人類的自然語(yǔ)言,比如C語(yǔ)言、Java、Perl等等。由于不同的公司開發(fā)出的“中間件”不夠規(guī)范,所以Sun公司推出J2EE,用這個(gè)標(biāo)準(zhǔn)來(lái)解決弊病。它提供了良好的機(jī)制,讓每個(gè)層次允許與之相對(duì)的服務(wù)器、組件運(yùn)行,使得系統(tǒng)的搭建穩(wěn)定可用、開發(fā)高效、維護(hù)方便[1][2]。
MVC模式是常用的開發(fā)模式,主要是在代碼實(shí)現(xiàn)上將其分為M層、V層和C層。
視圖(View)代表用戶交互界面,一個(gè) Web 應(yīng)用就可能有很多的界面,在 MVC 模式中,視圖僅僅處理的只有數(shù)據(jù)采集、處理,還有用戶的請(qǐng)求, 并不包括業(yè)務(wù)流程的處理,業(yè)務(wù)流程由模型(Model)來(lái)處理。
模型(Model)就是業(yè)務(wù)流程/狀態(tài)的處理及業(yè)務(wù)規(guī)則的制定。模型處理業(yè)務(wù)流程的過程其它層是無(wú)法看見了的,它就像黑箱子,在接受視圖請(qǐng)求的數(shù)據(jù)之后,然后返回最終的處理結(jié)果。MVC 最主要的核心就是業(yè)務(wù)模型的設(shè)計(jì),一個(gè)典型的應(yīng)用例子就是目前流行的 EJB 模型,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對(duì)模型做了進(jìn)一步的劃分,以便充分利用現(xiàn)有的組件,但是它不能作為應(yīng)用設(shè)計(jì)模型的框架。
控制器(Controller)可以理解為接收用戶的請(qǐng)求,然后視圖和模型匹配在一起,一起再完成用戶請(qǐng)求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型、視圖,可以完成用戶的什么樣的請(qǐng)求。控制層不做所有的數(shù)據(jù)處理,比如說:用戶點(diǎn)擊一個(gè)連接,控制層接受到請(qǐng)求之后,并不處理業(yè)務(wù)信息,它只是向模型傳遞用戶的信息,同時(shí)告訴模型做什么,然后選擇符合需求的視圖返回給用戶。
科技的進(jìn)步,給日常帶來(lái)許多便利:教室的投影器用到了虛擬成像技術(shù),數(shù)碼相機(jī)用到了光電檢測(cè)技術(shù),比如超市貨物進(jìn)出庫(kù)的記錄需要一個(gè)信息倉(cāng)庫(kù)。這個(gè)信息倉(cāng)庫(kù)就是數(shù)據(jù)庫(kù),而這次的作業(yè)管理平臺(tái)也需要這項(xiàng)技術(shù)的支持。
用MySQL這個(gè)軟件,是因?yàn)樗芙邮芏鄠€(gè)使用者訪問,而且里面存在Archive等。它會(huì)先把數(shù)據(jù)進(jìn)行分類,然后分別保存在表里,這樣的特別操作就會(huì)提高數(shù)據(jù)管理系統(tǒng)自身的速度,讓數(shù)據(jù)庫(kù)能被靈活運(yùn)用。MySQL的代碼是公開的,而且允許別人二次編譯升級(jí)。這個(gè)特點(diǎn)能夠降低使用者的成本,再搭配合適的軟件后形成一個(gè)良好的網(wǎng)站系統(tǒng)。雖然它有缺點(diǎn),但是綜合各方面來(lái)說,它是使用者的主流運(yùn)用的對(duì)象。
B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu)。它借助Web server完成數(shù)據(jù)的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達(dá)到“瘦身”效果, 不需要考慮不停裝軟件的問題。
Springboot(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個(gè)開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容)。常作為數(shù)據(jù)源較簡(jiǎn)單的web項(xiàng)目的框架。
1.6.1 Spring
Spring就像是整個(gè)項(xiàng)目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實(shí)體類的構(gòu)造方法來(lái)實(shí)例化對(duì)象。也可以稱之為項(xiàng)目中的粘合劑。
Spring的核心思想是IoC(控制反轉(zhuǎn)),即不再需要程序員去顯式地`new`一個(gè)對(duì)象,而是讓Spring框架幫你來(lái)完成這一切。
1.6.2 SpringMVC
SpringMVC在項(xiàng)目中攔截用戶請(qǐng)求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺(tái)這樣的職責(zé),將用戶請(qǐng)求通過HandlerMapping去匹配Controller,Controller就是具體對(duì)應(yīng)請(qǐng)求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts。
1.6.3 mybatis
mybatis是對(duì)jdbc的封裝,它讓數(shù)據(jù)庫(kù)底層操作變的透明。mybatis的操作都是圍繞一個(gè)sqlSessionFactory實(shí)例展開的。mybatis通過配置文件關(guān)聯(lián)到各實(shí)體類的Mapper文件,Mapper文件中配置了每個(gè)類對(duì)數(shù)據(jù)庫(kù)所需進(jìn)行的sql語(yǔ)句映射。在每次與數(shù)據(jù)庫(kù)交互時(shí),通過sqlSessionFactory拿到一個(gè)sqlSession,再執(zhí)行sql命令。
頁(yè)面發(fā)送請(qǐng)求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請(qǐng)求,持久層與數(shù)據(jù)庫(kù)交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。
?
Eclipse是由Genuitec公司開發(fā)的,一款功能非常強(qiáng)大的JavaEE的集成開發(fā)環(huán)境,其中包括有:完備的編碼、調(diào)試、測(cè)試和發(fā)布功能[10],完整支持JSP、Spring、CSS、JavaScript、SpringMVC、HTML、JSF、Mybatis、SQL等技術(shù)。在體系結(jié)構(gòu)上,Eclipse的特征可以被分為7類:JavaEE模型;Web開發(fā)工具、EJB開發(fā)工具、JavaEE項(xiàng)目部署服務(wù)、應(yīng)用程序服務(wù)器的而連接器、數(shù)據(jù)庫(kù)服務(wù)、Eclipse整合幫助。
對(duì)于以上每一種功能的類別,在Eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來(lái)實(shí)現(xiàn)它們。Eclipse在結(jié)構(gòu)上的這種模塊化,可以讓它在不影響其他模塊的情況下,對(duì)其中任意的一個(gè)模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。強(qiáng)大的Eclipse應(yīng)用開發(fā)平臺(tái)也不僅僅只是Eclipse的插件而已,同時(shí)更是一款功能強(qiáng)大的,用于JavaEE的集成開發(fā)環(huán)境。
B/S架構(gòu)采取瀏覽器請(qǐng)求,服務(wù)器響應(yīng)的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務(wù)器產(chǎn)生的文本、數(shù)據(jù)、圖片、動(dòng)畫、視頻點(diǎn)播和聲音等信息;
而每一個(gè)Web服務(wù)器又可以通過各種方式與數(shù)據(jù)庫(kù)服務(wù)器連接,大量的數(shù)據(jù)實(shí)際存放在數(shù)據(jù)庫(kù)服務(wù)器中;
從Web服務(wù)器上下載程序到本地來(lái)執(zhí)行,在下載過程中若遇到與數(shù)據(jù)庫(kù)有關(guān)的指令,由Web服務(wù)器交給數(shù)據(jù)庫(kù)服務(wù)器來(lái)解釋執(zhí)行,并返回給Web服務(wù)器,Web服務(wù)器又返回給用戶。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個(gè)巨大的網(wǎng),即全球網(wǎng)。而各個(gè)企業(yè)可以在此結(jié)構(gòu)的基礎(chǔ)上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對(duì)許多分布于網(wǎng)絡(luò)上的服務(wù)器進(jìn)行請(qǐng)求訪問的,瀏覽器的請(qǐng)求通過服務(wù)器進(jìn)行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請(qǐng)求全部都是由Web Server完成的。通過該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當(dāng)今軟件應(yīng)用的主流結(jié)構(gòu)模式。
DAO層、Service層這兩個(gè)層次都可以單獨(dú)開發(fā),互相的耦合度很低,完全可以獨(dú)立進(jìn)行,這樣的一種模式在開發(fā)大項(xiàng)目的過程中尤其有優(yōu)勢(shì)。
Controller,View層因?yàn)轳詈隙缺容^高,因而要結(jié)合在一起開發(fā),但是也可以看作一個(gè)整體獨(dú)立于前兩個(gè)層進(jìn)行開發(fā)。這樣,在層與層之前只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡(jiǎn)單。
任何一個(gè)項(xiàng)目在開發(fā)研究前,都需要對(duì)研發(fā)系統(tǒng)本身的需求做一個(gè)認(rèn)真的分析,市場(chǎng)的調(diào)研是不可忽視的,從實(shí)際場(chǎng)景中確定使用人員的功能需求,從而明確目標(biāo),對(duì)整個(gè)系統(tǒng)的開發(fā)有一個(gè)更加準(zhǔn)確的定位,在這個(gè)章節(jié),需要對(duì)系統(tǒng)的性能分析,業(yè)務(wù)流程分析,和數(shù)據(jù)等進(jìn)行分析,大學(xué)體育賽事管理系統(tǒng)的整體界面簡(jiǎn)單,功能完善。
需求的可行性是分析和討論開發(fā)的系統(tǒng)能達(dá)到什么樣的要求。開發(fā)的系統(tǒng)平臺(tái)是否符合之前的要求。只有在預(yù)先評(píng)估系統(tǒng)的開發(fā),才能在系統(tǒng)開發(fā)和實(shí)施之前完成需求。如果您不具備開發(fā)一個(gè)功能不合格的系統(tǒng)的可行性,那就是開發(fā)失敗。開發(fā)系統(tǒng)是否有用,可以完成之前討論過的需求,以下分析了大學(xué)體育賽事管理系統(tǒng)的實(shí)際需求。
系統(tǒng)設(shè)計(jì)需要從用戶和管理員的實(shí)際需求開始,以了解他們需要實(shí)施哪些功能以及他們可以包括哪些管理工作。
考慮到大學(xué)體育賽事管理系統(tǒng)設(shè)計(jì)的特點(diǎn),應(yīng)滿足幾個(gè)要求:
(1)它可以通過網(wǎng)絡(luò)更好地展示個(gè)人風(fēng)采。
(2)它提供了一個(gè)免費(fèi)的渠道,以確保數(shù)據(jù)的實(shí)時(shí)有效溝通。
3.2.1技術(shù)可行性:技術(shù)背景
大學(xué)體育賽事管理系統(tǒng)地開發(fā)采用了Java的Springboot框架,開發(fā)了功能完備、使用簡(jiǎn)單的前端應(yīng)用程序,并建立、維護(hù)了一個(gè)數(shù)據(jù)完整、安全、穩(wěn)定性強(qiáng)的后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)。
系統(tǒng)使用Springboot框架和Mysql數(shù)據(jù)庫(kù)作為設(shè)計(jì)工具,可簡(jiǎn)單易行地學(xué)習(xí)操作。用戶角色之間的相結(jié)合開發(fā)一個(gè)大學(xué)體育賽事管理系統(tǒng)是值得嘗試的,數(shù)據(jù)完整性和許多品質(zhì)為數(shù)據(jù)的功能分配和管理提供了依據(jù)。它也是數(shù)據(jù)庫(kù)安全平臺(tái)的重要組成部分,是提高和增強(qiáng)數(shù)據(jù)安全性的重要手段。此外,為了提供更平滑,更智能和更有效的基本控制方法,定義了同時(shí)構(gòu)建對(duì)安全計(jì)算環(huán)境的支持所需的步驟,并幫助維護(hù)安全性。因?yàn)樵谶@兩種開發(fā)工具中,功能強(qiáng)大且免費(fèi)且界面良好,所以大學(xué)體育賽事管理系統(tǒng)在技術(shù)方面是可行的。
3.2.2經(jīng)濟(jì)可行性
大學(xué)體育賽事管理系統(tǒng)的開發(fā)是由開發(fā)者自己開發(fā),不需要購(gòu)買其他軟件或者端口之類的,而且在大學(xué)體育賽事管理系統(tǒng)開發(fā)之前所做的市場(chǎng)調(diào)研以及市場(chǎng)考察,都是沒有任何費(fèi)用的,通過開發(fā)者自己的努力,所有的工作的都是自己親力親為,在碰到自己比較難以解決的問題,大多是通過同學(xué)和指導(dǎo)老師的幫助進(jìn)行相關(guān)信息的解決,所以對(duì)于大學(xué)體育賽事管理系統(tǒng)的開發(fā)在經(jīng)濟(jì)上是完全可行的,沒有任何費(fèi)用支出的。
3.2.3操作可行性:?
可操作性主要是對(duì)大學(xué)體育賽事管理系統(tǒng)設(shè)計(jì)完成后,用戶的使用體驗(yàn)度,對(duì)于管理員可以通過系統(tǒng)隨時(shí)管理相關(guān)的數(shù)據(jù)信息,并且對(duì)于管理員、用戶二個(gè)用戶角色,都可以簡(jiǎn)單明了的進(jìn)入到自己的系統(tǒng)界面,通過界面導(dǎo)航菜單可以簡(jiǎn)單明了地操作功能模塊,方便用戶信息需求,對(duì)于系統(tǒng)的操作,不需要專業(yè)人員都可以直接進(jìn)行功能模塊的操作管理,所以在系統(tǒng)的可操作性是完全可以的。本系統(tǒng)的操作使用的也是界面窗口進(jìn)行登錄,所以操作人員只要會(huì)簡(jiǎn)單的電腦操作就完全可以的。
3.3性能分析
隨著計(jì)算機(jī)網(wǎng)絡(luò)的到來(lái),傳統(tǒng)的方式方法很難適應(yīng)當(dāng)下社會(huì)的發(fā)展,不僅降低人們的辦事效率,而且還需要很多的人力和物力,對(duì)于使用的時(shí)間和所要花費(fèi)的費(fèi)用都是比較高的,為了降低成本費(fèi)用,提高用戶的工作效率,進(jìn)行開發(fā)一套基于計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的大學(xué)體育賽事管理系統(tǒng)。
大學(xué)體育賽事管理系統(tǒng)的開發(fā)設(shè)計(jì)是一個(gè)獨(dú)立的系統(tǒng),以流行數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ)開發(fā),主要是為了實(shí)現(xiàn)網(wǎng)站的用戶角色及相對(duì)應(yīng)的功能模塊,讓網(wǎng)站的管理不會(huì)存在管理差異、低效率,而是跟傳統(tǒng)的管理信息恰好相反,大學(xué)體育賽事管理系統(tǒng)的實(shí)現(xiàn)可以節(jié)約資源。
3.4.?非功能性需求分析
隨著用戶量的增加,系統(tǒng)可能會(huì)需要同時(shí)服務(wù)上千、上萬(wàn)個(gè)頁(yè)面,服務(wù)器需要同時(shí)響應(yīng)大量用戶的操作,這就要求系統(tǒng)需要有良好的可擴(kuò)展性,否則系統(tǒng)會(huì)出現(xiàn)延遲,卡頓甚至服務(wù)器崩潰的問題。高擴(kuò)展性可以使軟件保持旺盛的生命力,同時(shí)也能夠使系統(tǒng)更好的適應(yīng)用戶增加、提高性能需求、增加應(yīng)用功能等改變。
系統(tǒng)中保存了大量用戶和管理員的個(gè)人信息,因此,保證系統(tǒng)服務(wù)器和數(shù)據(jù)安全是在開發(fā)過程中需要考慮的重要問題。安全性包括服務(wù)器安全、操作系統(tǒng)安全、數(shù)據(jù)庫(kù)安全、程序代碼安全以及用戶個(gè)人信息和支付安全等,系統(tǒng)可以通過采用防火墻技術(shù)、加密技術(shù)、認(rèn)證技術(shù)等來(lái)增強(qiáng)其安全性,只有一個(gè)健壯安全的系統(tǒng)才能具有長(zhǎng)久的生命力。
3.5系統(tǒng)操作流程
3.5.1用戶登錄流程
對(duì)于系統(tǒng)的安全性的第一關(guān),就是用戶想要進(jìn)入系統(tǒng),必須通過登錄窗口,輸入自己的登錄信息才可以進(jìn)行登錄,用戶輸入的信息準(zhǔn)確無(wú)誤后才可以進(jìn)入到操作系統(tǒng)界面,進(jìn)行功能模塊的相對(duì)應(yīng)操作,如果用戶輸入的信息不正確,則窗口出現(xiàn)提示框,用戶登錄失敗,返回到第一步進(jìn)行重新輸入,如圖3-1所示。
圖3-1登錄操作流程圖
?
3.5.2信息添加流程
對(duì)于大學(xué)體育賽事管理系統(tǒng),需要隨時(shí)添加所需要的數(shù)據(jù)信息,對(duì)于用戶添加信息,需要根據(jù)添加界面,根據(jù)選框的內(nèi)容進(jìn)行填寫所要添加的數(shù)據(jù)信息,信息輸入完成后判斷數(shù)據(jù)信息是否符合要求,符合要求則添加完成,用戶所添加的信息不符合要求,則需要返回到第一步,重新輸入數(shù)據(jù)信息,再進(jìn)行判斷操作,如圖3-2所示。
?
圖3-2 信息添加流程圖
3.5.3信息刪除流程
不管是哪個(gè)用戶角色進(jìn)入到不同的系統(tǒng)操作界面,都可以進(jìn)行不同的信息內(nèi)容的操作功能,對(duì)用系統(tǒng)數(shù)據(jù)信息的刪除,用戶一旦將信息刪除,那么該刪除的數(shù)據(jù)信息將無(wú)法恢復(fù),所以用戶在對(duì)數(shù)據(jù)刪除事,一定判斷刪除的內(nèi)容是否是確定要?jiǎng)h除的,確定無(wú)誤后選擇確定刪除操作,如圖3-3所示。
?
圖3-3?信息刪除流程圖
4.1系統(tǒng)架構(gòu)設(shè)計(jì)
大學(xué)體育賽事管理系統(tǒng)項(xiàng)目的概述設(shè)計(jì)分析,主要是大學(xué)體育賽事管理系統(tǒng)的具體分析,進(jìn)行數(shù)據(jù)庫(kù)的是設(shè)計(jì),數(shù)據(jù)采用mysql數(shù)據(jù)庫(kù),并且對(duì)于系統(tǒng)的設(shè)計(jì)采用比較人性化的操作設(shè)計(jì),對(duì)于系統(tǒng)出現(xiàn)的錯(cuò)誤信息可以及時(shí)做出處理及反饋。
大學(xué)體育賽事管理系統(tǒng)基于現(xiàn)有的網(wǎng)絡(luò)開發(fā),可以實(shí)現(xiàn)管理員,用戶管理(管理員、用戶注冊(cè))更多管理(賽事活動(dòng)申請(qǐng)管理、經(jīng)費(fèi)預(yù)算申請(qǐng)管理、個(gè)人報(bào)名管理、團(tuán)隊(duì)報(bào)名管理、項(xiàng)目結(jié)題管理)等詳細(xì)的了解及統(tǒng)計(jì)分析。實(shí)現(xiàn)用戶:首頁(yè)、賽事活動(dòng)申請(qǐng),經(jīng)費(fèi)預(yù)算申請(qǐng)、賽事報(bào)名等。根據(jù)系統(tǒng)功能需求建立的模塊關(guān)系圖如下圖:
?
圖4-1管理員功能模塊圖
?
圖4-2用戶功能模塊圖
4.2開發(fā)流程設(shè)計(jì)
大學(xué)體育賽事管理系統(tǒng)的開發(fā)對(duì)管理模塊和系統(tǒng)使用的數(shù)據(jù)庫(kù)進(jìn)行分析,編寫代開發(fā),規(guī)劃和操作是構(gòu)建信息管理應(yīng)用程序的必要三步曲,它決定了系統(tǒng)是否能夠真正實(shí)現(xiàn)預(yù)設(shè)功能以及是否可以在成功設(shè)計(jì)后實(shí)施。在開發(fā)過程中,每個(gè)階段必須嚴(yán)格按照線性順序進(jìn)行開發(fā),并且在相應(yīng)階段生成的每個(gè)工作都可以通過技術(shù)進(jìn)行驗(yàn)證和檢查。確保一個(gè)階段完成后是正確的,不會(huì)造成下一階段拖拽現(xiàn)象,使系統(tǒng)完成設(shè)計(jì)功能后得到保證。
從大學(xué)體育賽事管理系統(tǒng)的成功開發(fā)經(jīng)驗(yàn)來(lái)看,上述方法效果最為明顯,最大程度地降低了系統(tǒng)開發(fā)的復(fù)雜性。如圖4-2所示。
?
圖4-2開發(fā)系統(tǒng)流程圖
4.3數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是信息系統(tǒng)的基礎(chǔ)和核心。數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞直接影響到信息系統(tǒng)開發(fā)的成敗。創(chuàng)建數(shù)據(jù)庫(kù)表首先確定實(shí)體的屬性和實(shí)體之間的關(guān)系。根據(jù)關(guān)系創(chuàng)建一個(gè)數(shù)據(jù)表。
4.3.1實(shí)體ER圖
數(shù)據(jù)庫(kù)是整個(gè)軟件編程中最重要的一個(gè)步驟,對(duì)于數(shù)據(jù)庫(kù)問題主要是判定數(shù)據(jù)庫(kù)的數(shù)量和結(jié)構(gòu)公式的創(chuàng)建。展示系統(tǒng)使用的是Mysql進(jìn)行對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理,進(jìn)行保證數(shù)據(jù)的安全性、穩(wěn)定性等。
概念模型的設(shè)計(jì)是為了抽象真實(shí)世界的信息,并對(duì)信息世界進(jìn)行建模。它是數(shù)據(jù)庫(kù)設(shè)計(jì)的強(qiáng)大工具。數(shù)據(jù)庫(kù)概念模型設(shè)計(jì)可以通過E-R圖描述現(xiàn)實(shí)世界的概念模型。系統(tǒng)的E-R圖顯示了系統(tǒng)中實(shí)體之間的鏈接。而且Mysql數(shù)據(jù)庫(kù)是自我保護(hù)能力比較強(qiáng)的數(shù)據(jù)庫(kù),下圖主要是對(duì)數(shù)據(jù)庫(kù)實(shí)體的E-R圖:
(1) ?大學(xué)體育賽事管理系統(tǒng)整體E-R圖,如圖4-3所示:
?
圖4-3整體E-R圖
?(2) 團(tuán)隊(duì)報(bào)名實(shí)體圖如圖4-4所示:
?
圖4-4團(tuán)隊(duì)報(bào)名實(shí)體圖
這些功能可以充分滿足大學(xué)體育賽事管理系統(tǒng)的需求。此系統(tǒng)功能主要展示用戶與管理員的功能結(jié)構(gòu),如圖4-5所示。
?
4.3.2數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)
針對(duì)系統(tǒng)的實(shí)體和屬性,結(jié)合數(shù)據(jù)設(shè)計(jì)思想,對(duì)系統(tǒng)的邏輯設(shè)計(jì)的內(nèi)容進(jìn)行如下描述。
賽事活動(dòng)申請(qǐng)(賽事名稱、賽事類型、賽事編號(hào)、組賽單位、項(xiàng)目負(fù)責(zé)人)。
活動(dòng)經(jīng)費(fèi)申請(qǐng)(賽事名稱、賽事編號(hào)、賽事類型、差旅費(fèi)、培訓(xùn)費(fèi)、耗材費(fèi)、指導(dǎo)費(fèi)、賽事注冊(cè)費(fèi)、教師獎(jiǎng)金、審核狀態(tài))。
團(tuán)隊(duì)報(bào)名(團(tuán)隊(duì)名稱、賽事名稱、賽事類型、賽事編號(hào)、團(tuán)隊(duì)人數(shù))。
4.3.3數(shù)據(jù)表
我們可以根據(jù)數(shù)據(jù)結(jié)構(gòu)的詳細(xì)分析要求,我們根據(jù)輸入和輸出數(shù)據(jù)量的要求進(jìn)行分析,確定什么表,結(jié)構(gòu)之間的關(guān)系,我們可以驗(yàn)證,調(diào)整和完善,查詢和瀏覽過程,可以實(shí)現(xiàn)數(shù)據(jù)庫(kù),以使用戶對(duì)數(shù)據(jù)和功能有更多要求。
基于系統(tǒng)使用的數(shù)據(jù)庫(kù)管理系統(tǒng)的特點(diǎn),對(duì)數(shù)據(jù)庫(kù)的概念模型進(jìn)行了轉(zhuǎn)換和構(gòu)建。但是,這個(gè)系統(tǒng)只需要充分考慮大學(xué)體育賽事管理系統(tǒng)的功能,而且組織比較清晰。
group表:
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| ordinary_users_id | int | 11 | 是 | 是 | 普通用戶ID |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| user_number | varchar | 64 | 是 | 否 | 用戶編號(hào) |
| user_gender | varchar | 64 | 否 | 否 | 用戶性別 |
| department | varchar | 64 | 否 | 否 | 所屬部門 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| budget_application_id | int | 11 | 是 | 是 | 經(jīng)費(fèi)預(yù)算申請(qǐng)ID |
| event_number | varchar | 64 | 否 | 否 | 賽事編號(hào) |
| entry_name | varchar | 64 | 否 | 否 | 參賽名稱 |
| registration_fee | varchar | 64 | 否 | 否 | 參賽注冊(cè)費(fèi) |
| rate_difference_fee | varchar | 64 | 否 | 否 | 差率費(fèi) |
| training_fee | varchar | 64 | 否 | 否 | 培訓(xùn)費(fèi) |
| guidance_fee | varchar | 64 | 否 | 否 | 指導(dǎo)費(fèi) |
| consumables | varchar | 64 | 否 | 否 | 耗材費(fèi) |
| teacher_bonus | varchar | 64 | 否 | 否 | 教師獎(jiǎng)金 |
| other | varchar | 64 | 否 | 否 | 其他 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| event_application_id | int | 11 | 是 | 是 | 賽事活動(dòng)申請(qǐng)ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| event_number | varchar | 64 | 是 | 否 | 賽事編號(hào) |
| group_competition_unit | varchar | 64 | 否 | 否 | 組賽單位 |
| project_leader | varchar | 64 | 否 | 否 | 項(xiàng)目負(fù)責(zé)人 |
| contact_number | varchar | 16 | 否 | 否 | 聯(lián)系電話 |
| start_date | date | 0 | 否 | 否 | 開始日期 |
| end_date | date | 0 | 否 | 否 | 結(jié)束日期 |
| organizer | varchar | 64 | 否 | 否 | 主辦單位 |
| group_significance | varchar | 64 | 否 | 否 | 組賽意義 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| individual_registration_id | int | 11 | 是 | 是 | 個(gè)人報(bào)名ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| college_name | varchar | 64 | 否 | 否 | 學(xué)院名稱 |
| class_name | varchar | 64 | 否 | 否 | 班級(jí)名稱 |
| grade_name | varchar | 64 | 否 | 否 | 年級(jí)名稱 |
| professional_name | varchar | 64 | 否 | 否 | 專業(yè)名稱 |
| contact_number | varchar | 64 | 否 | 否 | 聯(lián)系電話 |
| user_mailbox | varchar | 64 | 否 | 否 | 用戶郵箱 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| team_registration_id | int | 11 | 是 | 是 | 團(tuán)隊(duì)報(bào)名ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| event_number | varchar | 64 | 是 | 否 | 賽事編號(hào) |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| team_name | varchar | 64 | 否 | 否 | 團(tuán)隊(duì)名稱 |
| number_of_teams | varchar | 64 | 否 | 否 | 團(tuán)隊(duì)人數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| project_conclusion_id | int | 11 | 是 | 是 | 項(xiàng)目結(jié)題ID |
| event_name | varchar | 64 | 否 | 否 | 賽事名稱 |
| event_type | varchar | 64 | 否 | 否 | 賽事類型 |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| prize_awarded_ | varchar | 64 | 否 | 否 | 獲獎(jiǎng)名次 |
| total_use_of_funds | varchar | 64 | 否 | 否 | 資金使用共計(jì) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
從web系統(tǒng)查詢數(shù)據(jù)的根本的查詢步驟:
Step1: 進(jìn)行檢查并且過濾來(lái)自用戶的系統(tǒng)數(shù)據(jù);
Step2: 成立起一個(gè)合適的數(shù)據(jù)庫(kù)進(jìn)行連接;
Step3: 進(jìn)行查詢系統(tǒng)數(shù)據(jù)庫(kù);
Step4: 獲得查詢的結(jié)構(gòu);
Step5: 把查詢的結(jié)果展示給用戶。
Step6: 數(shù)據(jù)庫(kù)連接斷開,釋放資源。
數(shù)據(jù)庫(kù)連接原理如下圖所示。
?
圖5-1數(shù)據(jù)庫(kù)連接原理
為確保系統(tǒng)安全性,系統(tǒng)操作員只有在登錄界面輸入正確的用戶名、密碼、權(quán)限以及驗(yàn)證碼,單擊“登錄”按鈕后才能夠進(jìn)入本系統(tǒng)的主界面。
用戶登錄流程圖如下所示。
?
圖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("[執(zhí)行登錄接口]");
????????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, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶
????????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);
????????//查詢用戶審核狀態(tài)
????????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,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????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, "賬號(hào)或密碼不正確");
????????}
}
????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;
}
用戶輸入用戶名、密碼、電話、姓名等必填信息后,點(diǎn)擊注冊(cè)按鈕完成用戶的注冊(cè)。
用戶注冊(cè)流程圖如下所示。
?
圖5-5用戶注冊(cè)流程圖
用戶注冊(cè)界面如下圖所示。
?
圖5-6用戶注冊(cè)界面
用戶注冊(cè)關(guān)鍵代碼如下所示。
?* 注冊(cè)
?????* @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);
}
用戶點(diǎn)擊某個(gè)賽事活動(dòng)申請(qǐng)進(jìn)詳細(xì)頁(yè),點(diǎn)擊申請(qǐng)按鈕進(jìn)入信息提交賽事活動(dòng)申請(qǐng)。
賽事活動(dòng)申請(qǐng)流程圖如下所示。
?
圖5-7賽事活動(dòng)申請(qǐng)流程圖
賽事活動(dòng)申請(qǐng)界面如圖所示。
?
圖5-8賽事活動(dòng)申請(qǐng)界面
賽事活動(dòng)申請(qǐng)關(guān)鍵代碼如下所示。
?<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>
用戶點(diǎn)擊某個(gè)賽事活動(dòng)活動(dòng)進(jìn)入賽事活動(dòng)詳細(xì)頁(yè),點(diǎn)擊報(bào)名申請(qǐng)按鈕進(jìn)入報(bào)名頁(yè),提交報(bào)名信息,管理員管理用戶的報(bào)名信息,審核報(bào)名信息。
團(tuán)隊(duì)報(bào)名流程圖如下所示。
?
圖5-9團(tuán)隊(duì)報(bào)名流程圖
團(tuán)隊(duì)報(bào)名界面如圖所示。
?
圖5-10團(tuán)隊(duì)報(bào)名界面
團(tuán)隊(duì)報(bào)名申請(qǐng)關(guān)鍵代碼如下所示。
@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);
????????}
}
系統(tǒng)用戶管理主要是對(duì)新用戶的添加和舊用戶的刪除。新用戶的添加主要是指添加用戶名稱并確定其密碼;舊用戶的刪除也是從下拉菜單中找到對(duì)應(yīng)的用戶名稱將其刪除。不論是新用戶添加還是舊用戶的刪除,這個(gè)權(quán)限只有管理員具有。
用戶管理流程圖如下所示。
?
圖5-11用戶管理流程圖
用戶管理界面如下圖所示。
?
圖5-12用戶管理界面
系統(tǒng)用戶管理關(guān)鍵代碼如下所示。
@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);
????}
賽事經(jīng)費(fèi)申請(qǐng)管理功能主要指用戶對(duì)其賽事經(jīng)費(fèi)申請(qǐng)信息提交系統(tǒng),管理員對(duì)申請(qǐng)進(jìn)行審核管理。
賽事經(jīng)費(fèi)申請(qǐng)管理流程圖如下所示。
?
圖5-13賽事經(jīng)費(fèi)申請(qǐng)管理流程圖
賽事經(jīng)費(fèi)申請(qǐng)管理如下圖所示。
?
圖5-14賽事經(jīng)費(fèi)申請(qǐng)管理界面
賽事經(jīng)費(fèi)申請(qǐng)管理關(guān)鍵代碼如下所示。
?@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);
}
用戶選擇個(gè)人報(bào)名記錄,管理員審核個(gè)人報(bào)名信息,管理所有用戶的報(bào)名記錄。
個(gè)人報(bào)名管理流程圖如下所示。
?
圖5-15個(gè)人報(bào)名管理流程圖
個(gè)人報(bào)名管理界面如下所示。
?
圖5-16個(gè)人報(bào)名管理界面
個(gè)人報(bào)名管理關(guān)鍵代碼如下所示。
@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);
}
系統(tǒng)測(cè)試是用于檢查軟件的質(zhì)量、性能、可靠性等是否符合用戶需求。一套嚴(yán)謹(jǐn)?shù)摹⒁?guī)范的、完善的測(cè)試過程將大大提高軟件的質(zhì)量、可信度、可靠性,降低軟件的出錯(cuò)率,降低用戶風(fēng)險(xiǎn)系數(shù)。通過在計(jì)算機(jī)上對(duì)系統(tǒng)進(jìn)行測(cè)試試驗(yàn)并從中發(fā)現(xiàn)此系統(tǒng)中存在的問題和錯(cuò)誤然后加以修改,使之更加符合用戶需求。
1.測(cè)試的目的是通過測(cè)試來(lái)發(fā)現(xiàn)程序在執(zhí)行過程中的錯(cuò)誤的過程。
2.好的測(cè)試方案是可以檢驗(yàn)出還未被發(fā)現(xiàn)的錯(cuò)誤的方案。
3.好的測(cè)試是發(fā)現(xiàn)了到目前為止還未被發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
4.該系統(tǒng)能夠完成大學(xué)體育賽事活動(dòng)/經(jīng)費(fèi)申請(qǐng)、大學(xué)體育賽事維護(hù)、活動(dòng)/經(jīng)費(fèi)申請(qǐng)維護(hù)、用戶維護(hù)、系統(tǒng)維護(hù)等功能,做到所開發(fā)的系統(tǒng)操作簡(jiǎn)單,盡量使系統(tǒng)操作不受用戶對(duì)電腦知識(shí)水平的限制。
下表是賽事活動(dòng)申請(qǐng)管理系統(tǒng)的測(cè)試用例,檢測(cè)了賽事活動(dòng)申請(qǐng)管理中對(duì)賽事活動(dòng)申請(qǐng)信息的增加,刪除,修改,查詢操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計(jì)目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶登錄系統(tǒng)。
表6-1 賽事活動(dòng)申請(qǐng)管理的測(cè)試用例
| 功能描述 | 用于賽事活動(dòng)申請(qǐng)管理 | |
| 測(cè)試目的 | 檢測(cè)賽事活動(dòng)申請(qǐng)管理時(shí)的各種操作的運(yùn)行情況 | |
| 測(cè)試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 點(diǎn)擊添加賽事活動(dòng)申請(qǐng),必填項(xiàng)合法輸入,點(diǎn)擊保存 | 提示添加成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊添加賽事活動(dòng)申請(qǐng),必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改賽事活動(dòng)申請(qǐng),必填項(xiàng)修改為空,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改賽事活動(dòng)申請(qǐng),必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊刪除賽事活動(dòng)申請(qǐng),選擇賽事活動(dòng)申請(qǐng)刪除 | 提示刪除成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索賽事活動(dòng)申請(qǐng),輸入存在的賽事活動(dòng)申請(qǐng)名 | 查找出賽事活動(dòng)申請(qǐng) | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索賽事活動(dòng)申請(qǐng),輸入不存在的賽事活動(dòng)申請(qǐng)名 | 不顯示賽事活動(dòng)申請(qǐng) | 與預(yù)期結(jié)果一致 |
下表是團(tuán)隊(duì)報(bào)名管理功能的測(cè)試用例,檢測(cè)了團(tuán)隊(duì)報(bào)名管理中團(tuán)隊(duì)報(bào)名單的操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計(jì)目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶登錄系統(tǒng)。
表6-2 團(tuán)隊(duì)報(bào)名管理的測(cè)試用例
| 功能描述 | 用于團(tuán)隊(duì)報(bào)名管理 | |
| 測(cè)試目的 | 檢測(cè)團(tuán)隊(duì)報(bào)名管理時(shí)各種操作的情況 | |
| 測(cè)試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 未選擇團(tuán)隊(duì)報(bào)名,點(diǎn)擊提交 | 提示請(qǐng)選擇團(tuán)隊(duì)報(bào)名 | 與預(yù)期結(jié)果一致 |
根據(jù)以上測(cè)試情況,測(cè)試結(jié)果如下表所示。
表6-1測(cè)試結(jié)果表
| 測(cè)試項(xiàng)目 | 測(cè)試結(jié)果 |
| 登錄測(cè)試 | 成功 |
| 修改密碼測(cè)試 | 成功 |
| 個(gè)人報(bào)名測(cè)試 | 成功 |
| 團(tuán)隊(duì)報(bào)名測(cè)試 | 成功 |
| 賽事活動(dòng)申請(qǐng)測(cè)試 | 成功 |
| 經(jīng)費(fèi)預(yù)算申請(qǐng)測(cè)試 | 成功 |
| 用戶管理測(cè)試 | 成功 |
| 賽事信息管理測(cè)試 | 成功 |
| 項(xiàng)目結(jié)題管理測(cè)試 | 成功 |
| 個(gè)人報(bào)名管理測(cè)試 | 成功 |
本研究針對(duì)大學(xué)體育賽事管理系統(tǒng)地需求建模,數(shù)據(jù)建模及過程建模分析設(shè)計(jì)并實(shí)現(xiàn)大學(xué)體育賽事管理系統(tǒng)的過程。給出系統(tǒng)應(yīng)用架構(gòu)并分析優(yōu)劣勢(shì),通過功能分解圖,系統(tǒng)組件圖描述功能需求。設(shè)計(jì)建立了數(shù)據(jù)庫(kù),給出系統(tǒng)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的定義。通過類關(guān)系圖描述組件間的協(xié)作關(guān)系,給出各個(gè)類的定義方法。通過描述每一個(gè)類的字段,屬性及方法實(shí)現(xiàn)大學(xué)體育賽事管理系統(tǒng)的前后端代碼。最終給出系統(tǒng)集成整合方法,完成大學(xué)體育賽事管理系統(tǒng)地設(shè)計(jì)與實(shí)現(xiàn)。
在此項(xiàng)目的開發(fā)中,不光明白了前端開發(fā)和后臺(tái)在整個(gè)系統(tǒng)中起到了什么作用,因?yàn)榍昂笈_(tái)的連接,用戶可以對(duì)系統(tǒng)進(jìn)行操作,可以在輸入自己的相關(guān)信息后,通過后臺(tái)加工,完成對(duì)數(shù)據(jù)庫(kù)的查找、修改、添加,而理解了這些關(guān)系與實(shí)現(xiàn)的方法后。再去完善整個(gè)系統(tǒng)的功能就更加清晰與簡(jiǎn)單了。此次的項(xiàng)目它涉及了前臺(tái)與后臺(tái)系統(tǒng)的搭建,在學(xué)校所學(xué)的知識(shí)基礎(chǔ)上,此次的項(xiàng)目,讓我對(duì)于一個(gè)系統(tǒng)的前端開發(fā),以及后臺(tái)的作用都有了一個(gè)更深切的認(rèn)知。
參考文獻(xiàn)
[4]任嘉,徐卓農(nóng),鄧飛.對(duì)高校學(xué)科比賽管理系統(tǒng)改進(jìn)的研究[J].科技視界,2020(20):168-170.
[5]傅旭波,吳葉海,柳志鵬,孫冠榮,孫耀然.校園足球比賽項(xiàng)目管理模式實(shí)踐研究[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]本刊編輯.“青少年校園足球數(shù)據(jù)云”在校園足球比賽管理中的價(jià)值[J].校園足球,2019(10):69-71.
[8]王一帆.江蘇省高校校園體育競(jìng)賽管理模式研究[J].同行,2019(08):144.
[9]陳偉,方霞,吳俊.基于數(shù)字化校園的學(xué)生競(jìng)賽管理系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2019,34(10):201-205.
[10]張立天,孫強(qiáng).駐濟(jì)高校體育競(jìng)賽管理與校園體育文化建設(shè)調(diào)查研究[J].搏擊(體育論壇),2018,7(06):17-19.
[11]王云凱.基于B/S架構(gòu)的校園比賽賽管理系統(tǒng)分析與設(shè)計(jì)——以西南財(cái)經(jīng)大學(xué)職業(yè)生涯規(guī)劃大賽報(bào)名系統(tǒng)為例[J].中國(guó)教育信息化,2018(19):88-90.
[12]雷鳴,任平社,劉軍.基于數(shù)字化校園背景下高校教學(xué)群體競(jìng)賽管理系統(tǒng)的開發(fā)與應(yīng)用[J].科技信息,2018(34):29.
[13]吳嘉玲. 網(wǎng)絡(luò)環(huán)境下高校體育綜合管理平臺(tái)的設(shè)計(jì)與構(gòu)想[C]//Management Science and Engineering(MSE 2011 V6).,2018:490-494.
[14]韓志超.學(xué)生網(wǎng)管團(tuán)隊(duì)的建設(shè)與管理[J].中國(guó)教育網(wǎng)絡(luò),2018(12):73-75.
致謝
在此論文完成之際,感謝我的指導(dǎo)老師。在指導(dǎo)老師的網(wǎng)頁(yè)設(shè)計(jì)課上,當(dāng)時(shí)我學(xué)到了很多東西,這對(duì)于我實(shí)習(xí)過程中也打了一定的基礎(chǔ),而且指導(dǎo)老師對(duì)于我的設(shè)計(jì)也提出許多建議,并予以悉心的指導(dǎo),對(duì)于一些細(xì)小的問題都耐心的指導(dǎo)我去完善,授予我寫論文的好友,時(shí)常的鼓勵(lì)我,另外感謝教導(dǎo)我完善此項(xiàng)目的前端同學(xué),對(duì)于這個(gè)項(xiàng)目,我是邊學(xué)習(xí)邊實(shí)現(xiàn)完成的,有許多東西開始并不是很明白,但前端開發(fā)的同學(xué)非常耐心的引導(dǎo)我去將這個(gè)項(xiàng)目完成,在系統(tǒng)的后端開發(fā)中,所用到的后臺(tái)開發(fā)技術(shù)也時(shí)常會(huì)給我講解,助于我更好的將論文完成,在此對(duì)幫助到我的同學(xué)和一直予以教導(dǎo)的指導(dǎo)老師致以衷心的感謝,祝事業(yè)有成。
點(diǎn)贊+收藏+關(guān)注 → 私信領(lǐng)取本源代碼、數(shù)據(jù)庫(kù)
總結(jié)
以上是生活随笔為你收集整理的spring boot大学体育赛事管理系统 毕业设计-附源码180923的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程鑫峰:3.1余威未散鲍威尔再度归来,伦
- 下一篇: 【毕业设计】基于STM32的自动加油站加