国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

這篇具有很好參考價值的文章主要介紹了springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

摘?要

科技進步的飛速發(fā)展引起人們?nèi)粘I畹木薮笞兓?,電子信息技術(shù)的飛速發(fā)展使得電子信息技術(shù)的各個領(lǐng)域的應(yīng)用水平得到普及和應(yīng)用。信息時代的到來已成為不可阻擋的時尚潮流,人類發(fā)展的歷史正進入一個新時代。在現(xiàn)實運用中,應(yīng)用軟件的工作規(guī)則和開發(fā)步驟,采用Java技術(shù)建設(shè)學(xué)校運動會信息管理系統(tǒng)。

本設(shè)計主要實現(xiàn)集人性化、高效率、便捷等優(yōu)點于一身的學(xué)校運動會信息管理系統(tǒng),完成首頁、站點管理(輪播圖、公告欄)用戶管理(管理員、普通用戶、運動員、裁判員)更多管理(身份申請、運動商品、訂單中心、賽事分類、賽事信息、報名信息、選手信息、投票記錄、成績中心)等功能模塊。系統(tǒng)通過瀏覽器與服務(wù)器進行通信,實現(xiàn)數(shù)據(jù)的交互與變更。本系統(tǒng)通過科學(xué)的管理方式、便捷的服務(wù)提高了工作效率,減少了數(shù)據(jù)存儲上的錯誤和遺漏。學(xué)校運動會信息管理系統(tǒng)使用Java語言,采用基于 MVVM模式的springboot技術(shù)進行開發(fā),使用 Eclipse 2017 CI 10 編譯器編寫,數(shù)據(jù)方面主要采用的是微軟的MySQL關(guān)系型數(shù)據(jù)庫來作為數(shù)據(jù)存儲媒介,配合前臺HTML+CSS 技術(shù)完成系統(tǒng)的開發(fā)。

關(guān)鍵詞:運動會信息管理;Java語言;關(guān)系型數(shù)據(jù)庫;數(shù)據(jù)存儲

Springboot school sports meeting information management system

Abstract

The rapid development of scientific and technological progress has caused great changes in people's daily life. The rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The advent of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In practical application, according to the working rules and development steps of the application software, Java technology is used to build the school sports meeting information management system.

This design mainly realizes the school sports meeting information management system with the advantages of humanization, high efficiency and convenience, and completes the functional modules such as home page, site management (rotation map, bulletin board), user management (administrator, ordinary users, athletes and referees), more management (identity application, sports goods, order center, event classification, event information, registration information, player information, voting records, achievement Center), etc. The system communicates with the server through the browser to realize the interaction and change of data. Through scientific management and convenient service, the system improves work efficiency and reduces errors and omissions in data storage. The school sports meeting information management system uses Java language, adopts springboot technology based on MVVM mode, and is written with eclipse 2017 CI 10 compiler. In terms of data, Microsoft's MySQL relational database is mainly used as the data storage medium, and the system development is completed with the foreground HTML + CSS technology.

Key words: sports meeting information management; Java language; Relational database; data storage

目???錄

第1章 緒論

1.1 研究背景與意義

1.2 開發(fā)現(xiàn)狀

1.3 本文的組織結(jié)構(gòu)

第2章 相關(guān)技術(shù)介紹

2.1 開發(fā)技術(shù)說明

2.2 MVVM模式介紹:

2.3 MySQL數(shù)據(jù)庫

2.4 B/S結(jié)構(gòu)

2.5 spring boot框架介紹:

2.6 Vue.js 主要功能:

第3章 系統(tǒng)分析

3.1 可行性分析

3.1.1 技術(shù)可行性分析

3.1.2 經(jīng)濟可行性分析

3.1.3 操作可行性分析

3.2 功能需求分析

3.3 非功能需求分析

3.4 數(shù)據(jù)流程分析

第4章 系統(tǒng)設(shè)計

4.1 系統(tǒng)架構(gòu)設(shè)計

4.2 系統(tǒng)功能結(jié)構(gòu)

4.3 功能模塊設(shè)計

4.4 數(shù)據(jù)庫設(shè)計

4.4.1 概念模型

4.4.2 數(shù)據(jù)表

第5章 系統(tǒng)實現(xiàn)

5.1 登錄模塊的實現(xiàn)

5.2 用戶子系統(tǒng)模塊的實現(xiàn)

5.2.1 用戶首頁模塊

5.2.2 注冊模塊

5.3 管理員子系統(tǒng)模塊的實現(xiàn)

5.3.1 裁判員管理模塊

5.3.2 個人資料管理模塊

5.3.3 賽事信息模塊

5.3.4 運動員成績管理模塊

第6章 系統(tǒng)測試

6.1 測試目的

6.2 軟件測試的重要性

6.3 測試實例的研究與選擇

6.4 測試環(huán)境與測試條件

6.4系統(tǒng)運行情況

6.5系統(tǒng)評價

6.5.1系統(tǒng)功能評價

6.5.2系統(tǒng)技術(shù)評價

6.5.3系統(tǒng)經(jīng)濟評價

第7章 總結(jié)與展望

參考文獻

致謝

  1. 緒論
    1. 研究背景與意義

運動會是學(xué)校重大活動之一,是檢驗學(xué)生的健康水平和提高身體素質(zhì)的有效途徑之一。在規(guī)模上雖然不如大型運動會,但由于比賽項目多,參賽人數(shù)廣,數(shù)據(jù)處理量大,管理比較復(fù)雜,尤其編排,記錄,公告工作是一項復(fù)雜的工程。所以提高學(xué)校運動會召開的質(zhì)量和水平顯得尤為重要。學(xué)校雖然早已運用了校園運動會管理信息系統(tǒng),節(jié)約了不少的人力、物力,但隨著科技與時代的發(fā)展,單機版的管理系統(tǒng)已經(jīng)不能完全滿足需求。例如:運動會期間的信息無法及時共享,包括賽事狀況,比賽成績以及運動會中的各種表單等。給用戶帶來了諸多不便。所以開發(fā)管理系統(tǒng)勢在必行。

為了提高大學(xué)生的身體素質(zhì),促進學(xué)生德智體美勞全面發(fā)展,各所高校每年都會舉行運動會比賽,然而各所高校在舉行運動會時,很少甚至沒有使用過校園運動會管理系統(tǒng)來處理運動會中的信息,在很大程度上還是依賴人工操作,一般通過文檔或者辦公軟件來處理大量的數(shù)據(jù)。這種方式給運動會管理人員帶來了繁重的工作量,而且效率較為低下,更新緩慢,且容易出錯。此外這種方式比較封閉,無論是運動員,還是場外觀眾,都不能很好地了解比賽場上實時狀況,例如所有的比賽項目,參賽人員信息以及成績排名等。這就不能使每一位同學(xué)都真正參與到運動會中去,從而也在一定程度上失去了開展運動會的意義。?

    1. 開發(fā)現(xiàn)狀

在國內(nèi),計算機在運動會管理方面的應(yīng)用越來越深入,廣東省第十一屆運動會電子信息服務(wù)系統(tǒng)通過整合硬件平臺、網(wǎng)絡(luò)通信平臺、數(shù)據(jù)庫平臺、工具平臺、應(yīng)用軟件平臺將省運會各類資源有機、高效地集成到一起,形成一個完整的、開放的、結(jié)構(gòu)化的、先進的工作平臺。在這個統(tǒng)一的平臺基礎(chǔ)上,實現(xiàn)了廣東省第十一屆運動會電子信息服務(wù)系統(tǒng)的完整的應(yīng)用。根據(jù)省運會的規(guī)模以及實際需要,廣東省第十一屆運動會電子信息服務(wù)系統(tǒng)劃分為六大子系統(tǒng):計算機網(wǎng)絡(luò)系統(tǒng)、無線局域網(wǎng)系統(tǒng)、有線衛(wèi)星電視系統(tǒng)、指揮調(diào)度系統(tǒng)、集群網(wǎng)絡(luò)通信系統(tǒng)、賽事管理系統(tǒng)。

國外對高校運動會管理系統(tǒng)的開發(fā)與研究也很關(guān)注,由于外國與中國的教學(xué)模式有差別,學(xué)校性質(zhì)與中國也不相同,這就要求他們所采用的“高校學(xué)校運動會信息管理系統(tǒng)”更加具有可變和靈活的特點。在國外的高校中,運動員可以更多參與到運動會之中,如果自己有要求,還可以去他學(xué)校的參加運動會,同樣也可以拿其他學(xué)校的比賽名次,鑒于這種情況,對“高校學(xué)校運動會信息管理系統(tǒng)”的要求就更高,所涉及到的內(nèi)容就更廣,如:學(xué)生的個人信息查詢和修改就需要涉及兩個或更多的學(xué)校,因此,國外也在對此做進一步研究、開發(fā)。在大型的運動會系統(tǒng)的使用方面,在國外舉辦的較大規(guī)模的運動會和專項比賽上已廣泛使用,如近幾屆的奧運會,均使用了上千臺微機聯(lián)網(wǎng)進行賽事管理,在功能上基本上滿足了管理的需求,但其開發(fā)成本和運行成本巨大,難以普及使用。

    1. 本文的組織結(jié)構(gòu)

第一章是緒論,本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。

第二章研究了學(xué)校運動會信息管理系統(tǒng)的所采用的開發(fā)技術(shù)和開發(fā)工具。

第三章是系統(tǒng)分析部分,包括系統(tǒng)總體需求描述、功能性角度分析系統(tǒng)需求、非功能性等各個方面分析系統(tǒng)是否可以實現(xiàn)。

第四章是系統(tǒng)設(shè)計部分,本文章的重要部分,提供了系統(tǒng)架構(gòu)的詳細設(shè)計和一些主要功能模塊的設(shè)計說明。

第五章是系統(tǒng)的具體實現(xiàn),介紹系統(tǒng)的各個模塊的具體實現(xiàn)。

第六章在前幾章的基礎(chǔ)上對系統(tǒng)進行測試和運行。

最后對系統(tǒng)進行了認真的總結(jié),以此對未來有一個新的展望。

  1. 相關(guān)技術(shù)介紹
    1. 開發(fā)技術(shù)說明

本系統(tǒng)前端部分基于MVVM模式進行開發(fā),采用B/S模式,后端部分基于Java的springboot框架進行開發(fā)。

前端部分:前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現(xiàn)動態(tài)路由和全局狀態(tài)管理,Ajax實現(xiàn)前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用springboot作為開發(fā)框架,同時集成MyBatis、Redis等相關(guān)技術(shù)。

    1. MVVM模式介紹:

MVVM是Model-View-ViewModel的簡寫。它本質(zhì)上就是MVC 的改進版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務(wù)邏輯分開。當然這些事 ViewModel 已經(jīng)幫我們做了,它可以取出 Model 的數(shù)據(jù)同時幫忙處理 View 中由于需要展示內(nèi)容而涉及的業(yè)務(wù)邏輯。微軟的WPF帶來了新的技術(shù)體驗,如Silverlight、音頻、視頻、3D、動畫……,這導(dǎo)致了軟件UI層更加細節(jié)化、可定制化。同時,在技術(shù)層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時發(fā)展演變過來的一種新型架構(gòu)框架。它立足于原有MVP框架并且把WPF的新特性糅合進去,以應(yīng)對客戶日益復(fù)雜的需求變化。

    1. MySQL數(shù)據(jù)庫

科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術(shù),數(shù)碼相機用到了光電檢測技術(shù),比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數(shù)據(jù)庫,而這次的學(xué)校運動會信息管理系統(tǒng)也需要這項技術(shù)的支持[7]。

用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數(shù)據(jù)進行分類,然后分別保存在表里,這樣的特別操作就會提高數(shù)據(jù)管理系統(tǒng)自身的速度,讓數(shù)據(jù)庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網(wǎng)站系統(tǒng)。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象[8]。

    1. B/S結(jié)構(gòu)

B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu)。它借助Web server完成數(shù)據(jù)的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題[9]。

    1. spring boot框架介紹:

Spring框架是Java平臺上的一種開源應(yīng)用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應(yīng)用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過依賴注入實現(xiàn)控制反轉(zhuǎn)來實現(xiàn)管理對象生命周期容器化,利用面向切面編程進行聲明式的事務(wù)管理,整合多種持久化技術(shù)管理數(shù)據(jù)訪問,提供大量優(yōu)秀的Web框架方便開發(fā)等等。Spring框架具有控制反轉(zhuǎn)(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發(fā)者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關(guān)注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務(wù)管理、遠程訪問等功能均可以通過使用SpringAOP技術(shù)實現(xiàn)。Spring的事務(wù)管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務(wù)以及嵌套事務(wù)能夠與保存點一起工作,并且?guī)缀蹩梢栽贘ava平臺的任何環(huán)境中工作。Spring集成多種事務(wù)模板,系統(tǒng)可以通過事務(wù)模板、XML或Java注解進行事務(wù)配置,并且事務(wù)框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪問框架解決了開發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪問框架中提供支持,同時還可以與Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪問提供了靈活的抽象。Spring框架最初是沒有打算構(gòu)建一個自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。

    1. Vue.js 主要功能:

Vue.js是一套構(gòu)建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發(fā)的設(shè)計。Vue 的核心庫只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅(qū)動采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。

Vue.js 的目標是通過盡可能簡單的 API 實現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。

Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學(xué)習(xí),非常容易與其它庫或已有項目整合。另一方面,在與相關(guān)工具和支持庫一起使用時,Vue.js 也能驅(qū)動復(fù)雜的單頁應(yīng)用。

  1. 系統(tǒng)分析
    1. 可行性分析

本次設(shè)計基于B/S 模式下,運用Java技術(shù)采用的是MySQL數(shù)據(jù)庫和Eclipse實現(xiàn),總體的可行性共分為以下三個方面。

      1. 技術(shù)可行性分析

所謂的技術(shù)可行性就是在限定時間,前期擬定的功能能否被滿足。在開發(fā)設(shè)計上是否會遇上解決不了的問題。做完的項目能否被很好地應(yīng)用,如果存在缺點在后期的維護上是否存在很大的難度。在對這個系統(tǒng)評估后,認定已存在的技術(shù)能達成目標。用JSP技術(shù)來實現(xiàn)動態(tài)的頁面,嵌入低依賴性的設(shè)計模式,靈活的數(shù)據(jù)庫,配合穩(wěn)定的服務(wù)器,整個系統(tǒng)的運行效率大大提升。由此可見,在技術(shù)層面達成目標不是非非之想。

      1. 經(jīng)濟可行性分析

在項目上使用的工具大部分都是是當下流行開源免費的,所以在開發(fā)前期,開發(fā)時用于項目的經(jīng)費將會大大降低,不會讓開發(fā)該軟件在項目啟動期受到經(jīng)費的影響,所以經(jīng)濟上還是可行的。盡量用最少的花費去滿足用戶的需求。省下經(jīng)費用于人工費,以及設(shè)備費用。將在無紙化,高效率的道路上越走越遠。

      1. 操作可行性分析

本系統(tǒng)實現(xiàn)功能的操作很簡單,普通電腦的常見配置就可以運行本軟件,并且只要粗通電腦使用的基本常識就可以流暢的使用本軟件。電腦具備連接互聯(lián)網(wǎng)的能力,并且可以正常訪問系統(tǒng),并不需要操作者有什么高超的能力,只需了解業(yè)務(wù)流程,并且按照專業(yè)知識進行正確操作即可,所以學(xué)校運動會信息管理系統(tǒng)具備操作可行性。

    1. 功能需求分析

在系統(tǒng)開發(fā)設(shè)計前,應(yīng)該對功能做初步設(shè)想,清楚這個管理系統(tǒng)有什么板塊,每個板塊有什么功能,整體的設(shè)計是否滿足使用者的需求,接著對所開發(fā)的系統(tǒng)功能進行的詳細分析總結(jié),從而設(shè)計出完整的系統(tǒng)并將其實現(xiàn)。用戶和開發(fā)人員的交流分析,使其達到最佳理解程度,使系統(tǒng)功能達到最佳。

運動員用例圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖3-1 運動員用例圖

管理員用例圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖3-2 管理員用例圖

裁判用例圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖3-3 裁判用例圖

    1. 非功能需求分析

系統(tǒng)非功能需求有非常多,比如性能需求、可承載最大用戶數(shù)、穩(wěn)定性、易用性需求等。本系統(tǒng)分析時考慮到易用性需求,因為系統(tǒng)是給人使用的,所以必須充分從用戶的角度出發(fā),考慮用戶體驗,使系統(tǒng)易理解易上手易操作。

    1. 數(shù)據(jù)流程分析

一層數(shù)據(jù)流程圖包括了登錄注冊、用戶功能和檢索維護等模塊,在登錄注冊模塊使用到的數(shù)據(jù)存儲有用戶賬戶文檔,用戶功能模塊需要的存儲是用戶各功能模塊數(shù)據(jù)文檔,檢索維護是使用以上這些數(shù)據(jù)文檔通過關(guān)鍵詞進行檢索。

系統(tǒng)的一層數(shù)據(jù)流圖如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖3-2系統(tǒng)數(shù)據(jù)流圖(一層)

二層數(shù)據(jù)流程是對一層數(shù)據(jù)流層圖中填寫登錄注冊信息、用戶功能的細化。即:填寫登錄注冊信息細化為填制信息、后臺審核,用戶功能細化為賽事查詢、成績查詢、獲獎名單查詢、運動歷史記錄查詢、延時比賽通知、賽中趣事、視頻播放、失物招領(lǐng)查詢、留言反饋、運動員編查詢、報備添加、成績查詢、成績申訴、積分查詢等操作。

系統(tǒng)的二層數(shù)據(jù)流圖如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖3-4系統(tǒng)數(shù)據(jù)流圖(二層)

  1. 系統(tǒng)設(shè)計
    1. 系統(tǒng)架構(gòu)設(shè)計

目前B/S體系的系統(tǒng)主要的數(shù)據(jù)訪問方式是:通過瀏覽器頁面用戶可以進入系統(tǒng),系統(tǒng)可以自動對用戶向服務(wù)器發(fā)送的請求進行處理,處理請求是在系統(tǒng)后臺中進行的,用戶在瀏覽器頁面上進行相應(yīng)操作,就能夠看到服務(wù)端傳遞的處理結(jié)果。學(xué)校運動會信息管理系統(tǒng)主要分為視圖-模型-控制三層架構(gòu)設(shè)計。在視圖層中,主要是操作在服務(wù)器端向客戶端反饋并顯示的數(shù)據(jù),在模型層中,主要處理相關(guān)的業(yè)務(wù)邏輯、數(shù)據(jù)整合等,最后的控制層它介于視圖和模型之間,主要是調(diào)整兩層之間的關(guān)系,最終落實數(shù)據(jù)的傳遞。

系統(tǒng)架構(gòu)圖如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖4-1系統(tǒng)架構(gòu)圖

    1. 系統(tǒng)功能結(jié)構(gòu)

系統(tǒng)設(shè)計的目的是分析系統(tǒng)包括的所有功能結(jié)構(gòu),為開發(fā)人員設(shè)計開發(fā)和實現(xiàn)系統(tǒng)做好準備工作。經(jīng)過前期的需求調(diào)查、分析和整理之后,確定的總體需求主要包括多個模塊,分別是:首頁、站點管理(輪播圖、公告欄)用戶管理(管理員、普通用戶、運動員、裁判員)更多管理(身份申請、運動商品、訂單中心、賽事分類、賽事信息、報名信息、選手信息、投票記錄、成績中心)。系統(tǒng)整體角色分為三個部分,一是運動員、二是裁判、最后是管理員。權(quán)限分布也是很明顯,運動員是在除去瀏覽信息之外還具有查詢和管理自己賬戶信息、運動員編查詢、報名信息、成績中心等權(quán)限;管理員是最高權(quán)限擁有者。

系統(tǒng)功能結(jié)構(gòu)圖如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼圖4-2系統(tǒng)功能結(jié)構(gòu)圖

?

    1. 功能模塊設(shè)計
    1. 數(shù)據(jù)庫設(shè)計
      1. 概念模型

對于一個要開發(fā)的系統(tǒng)來說,E-R圖可以讓別人能更快更輕松的了解此系統(tǒng)的事務(wù)及它們之間的關(guān)系。根據(jù)系統(tǒng)分析階段所得出的結(jié)論確定了在學(xué)校運動會信息管理系統(tǒng)中存在著多個實體分別是用運動員、裁判、管理員、身份申請、運動商品、訂單中心、賽事分類、賽事信息、報名信息、選手信息、投票記錄、成績中心。

系統(tǒng)總體ER圖如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖4-4系統(tǒng)總體ER圖

      1. 數(shù)據(jù)表

數(shù)據(jù)庫邏輯結(jié)構(gòu)就是將E-R圖在數(shù)據(jù)庫中用具體的字段進行描述。用字段和數(shù)據(jù)類型描述來使對象特征實體化,最后形成具有一定邏輯關(guān)系的數(shù)據(jù)庫表結(jié)構(gòu)。學(xué)校運動會信息管理系統(tǒng)所需要的部分數(shù)據(jù)結(jié)構(gòu)表如下表所示。

achievement_center

字段名稱

類型

長度

不是null

主鍵

字段說明

achievement_center_id

int

11

主鍵

成績中心ID

event_name

varchar

64

賽事名稱

venue

varchar

64

賽事地點

event_time

datetime

0

賽事時間

head_portrait

varchar

255

頭像

athlete_number

int

11

運動員編號

athlete_name

varchar

64

運動員姓名

event_results

int

11

賽事成績

referee_number

int

11

裁判員編號

name_of_referee

varchar

64

裁判員姓名

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

athletes

字段名稱

類型

長度

不是null

主鍵

字段說明

athletes_id

int

11

主鍵

運動員ID

athlete_number

varchar

64

運動員編號

athlete_name

varchar

64

運動員姓名

gender

varchar

64

性別

age

varchar

64

年齡

examine_state

varchar

16

審核狀態(tài)

recommend

int

11

智能推薦

user_id

int

11

用戶ID

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

event_classification

字段名稱

類型

長度

不是null

主鍵

字段說明

event_classification_id

int

11

主鍵

賽事分類ID

event_name

varchar

64

賽事名稱

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

event_information

字段名稱

類型

長度

不是null

主鍵

字段說明

event_information_id

int

11

主鍵

賽事信息ID

event_name

varchar

64

賽事名稱

venue

varchar

64

賽事地點

event_time

datetime

0

賽事時間

event_cover

varchar

255

賽事封面

referee_number

int

11

裁判員編號

name_of_referee

varchar

64

裁判員姓名

registration_conditions

text

0

報名條件

event_details

text

0

賽事詳情

hits

int

11

點擊數(shù)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

event_results

字段名稱

類型

長度

不是null

主鍵

字段說明

event_results_id

int

11

主鍵

賽事結(jié)果ID

event_name

varchar

64

賽事名稱

venue

varchar

64

賽事地點

event_time

datetime

0

賽事時間

selection

varchar

64

評選

head_portrait

varchar

255

頭像

athlete_number

int

11

運動員編號

athlete_name

varchar

64

運動員姓名

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

identity_application

字段名稱

類型

長度

不是null

主鍵

字段說明

identity_application_id

int

11

主鍵

身份申請ID

apply_for_identity

varchar

64

申請身份

applicant

int

11

申請人

approval_status

varchar

64

審批狀態(tài)

reason_for_application

text

0

申請原因

review_reply

text

0

審核回復(fù)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

order_center

字段名稱

類型

長度

不是null

主鍵

字段說明

order_center_id

int

11

主鍵

訂單中心ID

order_number

varchar

64

訂單號

commodity_number

varchar

64

商品編號

trade_name

varchar

64

商品名稱

commodity_price

varchar

64

商品價格

purchase_quantity

varchar

64

購買數(shù)量

total_price

varchar

64

總價格

user_number

int

11

用戶編號

user_name

varchar

64

用戶姓名

pay_state

varchar

16

支付狀態(tài)

pay_type

varchar

16

支付類型: 微信、支付寶、網(wǎng)銀

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

ordinary_users

字段名稱

類型

長度

不是null

主鍵

字段說明

ordinary_users_id

int

11

主鍵

普通用戶ID

user_number

varchar

64

用戶編號

user_name

varchar

64

用戶姓名

gender

varchar

64

性別

age

varchar

64

年齡

examine_state

varchar

16

審核狀態(tài)

recommend

int

11

智能推薦

user_id

int

11

用戶ID

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

player_information

字段名稱

類型

長度

不是null

主鍵

字段說明

player_information_id

int

11

主鍵

選手信息ID

event_name

varchar

64

賽事名稱

venue

varchar

64

賽事地點

event_time

datetime

0

賽事時間

number_of_votes

int

11

擁有票數(shù)

head_portrait

varchar

255

頭像

athlete_number

int

11

運動員編號

athlete_name

varchar

64

運動員姓名

recommend

int

11

智能推薦

limit_times

int

8

限制次數(shù)

limit_type

tinyint

2

限制次數(shù)類型1-每天次,2-總計次

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

referee

字段名稱

類型

長度

不是null

主鍵

字段說明

referee_id

int

11

主鍵

裁判員ID

referee_number

varchar

64

裁判員編號

name_of_referee

varchar

64

裁判員姓名

gender

varchar

64

性別

age

varchar

64

年齡

examine_state

varchar

16

審核狀態(tài)

recommend

int

11

智能推薦

user_id

int

11

用戶ID

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

registration_information

字段名稱

類型

長度

不是null

主鍵

字段說明

sports_goods_id

int

11

主鍵

運動商品ID

commodity_number

varchar

64

商品編號

trade_name

varchar

64

商品名稱

commodity_price

varchar

64

商品價格

merchandise_inventory

int

11

商品庫存

product_picture

varchar

255

商品圖片

product_details

longtext

0

商品詳情

hits

int

11

點擊數(shù)

recommend

int

11

智能推薦

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

voting_records

字段名稱

類型

長度

不是null

主鍵

字段說明

voting_records_id

int

11

主鍵

投票記錄ID

event_name

varchar

64

賽事名稱

venue

varchar

64

賽事地點

number_of_votes

varchar

64

投票數(shù)

athlete_number

int

11

運動員編號

athlete_name

varchar

64

運動員姓名

user_number

int

11

用戶編號

user_name

varchar

64

用戶姓名

recommend

int

11

智能推薦

user_id

int

11

用戶ID

create_time

datetime

0

創(chuàng)建時間

update_time

timestamp

0

更新時間

  1. 系統(tǒng)實現(xiàn)
    1. 登錄模塊的實現(xiàn)

系統(tǒng)的登錄窗口是用戶的入口,用戶只有在登錄成功后才可以進入訪問。通過在登錄提交表單,后臺處理判斷是否為合法用戶,進行頁面跳轉(zhuǎn),進入系統(tǒng)中去。

登錄合法性判斷過程:用戶輸入賬號和密碼后,系統(tǒng)首先確定輸入輸入數(shù)據(jù)合法性,然后在login.jsp頁面發(fā)送登錄請求,調(diào)用src下的mainctrl類的dopost方法來驗證。

用戶登錄模塊的IPO如下所示:

輸入:用戶名和密碼。

處理:

1)檢測用戶輸入的賬號、密碼是否正確及在數(shù)據(jù)庫已對應(yīng)存在。

2)從數(shù)據(jù)庫中提取記錄,并儲存在本地的session中(timeout默認=30min)。

3)根據(jù)用戶名,將其顯示在系統(tǒng)首頁上。

輸出:是否成功的信息。

登錄流程圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-1登錄流程圖

系統(tǒng)登錄界面如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-2系統(tǒng)登錄界面

用戶登錄的邏輯代碼如下。

/**

?????* 登錄

?????* @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;

????????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);

????????//查詢用戶審核狀態(tài)

????????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,"該用戶審核未通過");

????????????}

????????}

????????//查詢用戶狀態(tài)

????????if (byUsername.getState()!=1){

????????????return error(30000,"用戶非可用狀態(tài),不能登錄");

????????}

????????String md5password = service.encryption(password);

????????if (byUsername.getPassword().equals(md5password)) {

????????????// 存儲Token到數(shù)據(jù)庫

????????????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, "賬號或密碼不正確");

????????}

}

    1. 用戶子系統(tǒng)模塊的實現(xiàn)
      1. 用戶首頁模塊

系統(tǒng)呈現(xiàn)出一種簡潔大方的首頁:界面簡約、鱗次櫛比,用戶能輕車熟路的使用。出于對系統(tǒng)使用群體廣泛的顧慮,應(yīng)有良好性能的后臺。

如下圖所示為系統(tǒng)的首頁界面。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-3系統(tǒng)首頁界面

其中載入前臺頁面的主要代碼如下。

@SpringBootApplication

@EnableJpaRepositories

public class Application {

????public static void main(String[] args) {

????????SpringApplication.run(Application.class,args);

????}

}

      1. 注冊模塊

此頁面實現(xiàn)運動員的注冊,必須注冊登錄后才能使用系統(tǒng)大部分功能,用戶名不允許重復(fù)如果重復(fù)將會注冊失敗,并彈出相應(yīng)的提示,通過js實現(xiàn)對輸入的驗證。

用戶注冊流程圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-4用戶注冊流程圖

用戶注冊界面如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-5用戶注冊界面

用戶注冊關(guān)鍵代碼如下所示。

/**

?????* 注冊

?????* @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]用戶獲取其他與用戶相關(guān)的數(shù)據(jù)

?????*/

????@Id

????@GeneratedValue(strategy = GenerationType.IDENTITY)

????@Column(name = "user_id")

????private Integer userId;

????/**

?????* 賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷)

?????*/

????@Basic

????@Column(name = "state")

????private Integer state;

????/**

?????* 所在用戶組:[0,32767]決定用戶身份和權(quán)限

?????*/

????@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位數(shù)字或英文組成

?????*/

????@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;

????/**

?????* 創(chuàng)建時間:

?????*/

????@Basic

????@Column(name = "create_time")

????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

????private Timestamp createTime;

????@Basic

????@Transient

????private String code;

}

    1. 管理員子系統(tǒng)模塊的實現(xiàn)
      1. 裁判員管理模塊

裁判員在yhzhgl查看裁判員信息,先使用sql語句查詢出所有裁判員表的數(shù)據(jù),然后調(diào)用PageManager.getPages(url,4,sql, request ),返回一個ArrayList的對象,在for循環(huán)里,使用jsp得到每個ArrayList對象的數(shù)據(jù),在jsp頁面中解析ArrayList對象,得到其各個鍵值對的值。

裁判員管理界面如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-6裁判員管理界面

系統(tǒng)裁判員管理關(guān)鍵代碼如下所示。

??@RequestMapping("/get_obj")

????public Map<String, Object> obj(HttpServletRequest request) {

????????Query select = service.select(service.readQuery(request), service.readConfig(request));

????????List resultList = select.getResultList();

????????if (resultList.size() > 0) {

????????????JSONObject jsonObject = new JSONObject();

????????????jsonObject.put("obj",resultList.get(0));

????????????return success(jsonObject);

????????} else {

????????????return success(null);

????????}

}

?public Query 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 runEntitySql(sql.toString());

????}

      1. 個人資料管理模塊

用戶點擊登錄填寫賬號信息登錄后,會切換內(nèi)容為“某某用戶歡迎您”和歷史訂單,并給出注銷鏈接。當用戶登錄成功后會將個人信息保存在session作用域中,點擊自己的用戶名時,會跳轉(zhuǎn)到個人詳細信息頁面,由后臺通過Freemarker取出session作用域中的用戶信息進行動態(tài)渲染,例如,郵箱、電話號碼、用戶名等等。同時頁面上會顯示修改個人信息和修改密碼的按鈕,這時客戶可以修改自己的登錄密碼以保障賬號的安全性,防止被人竊取賬號,通過UserController.java的updatePassword()實現(xiàn),同時也可以根據(jù)自己的個人信息是否變動做出相應(yīng)的修改,通過updateUserInfo()實現(xiàn)。

密碼修改流程圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-7密碼修改流程圖

密碼修改關(guān)鍵代碼如下所示。

??/**

?????* 修改密碼

?????* @param data

?????* @param request

?????* @return

?????*/

????@PostMapping("change_password")

????public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){

????????// 根據(jù)Token獲取UserId

????????String token = request.getHeader("x-auth-token");

????????Integer userId = tokenGetUserId(token);

????????// 根據(jù)UserId和舊密碼獲取用戶

????????Map<String, String> query = new HashMap<>();

????????String o_password = data.get("o_password");

????????query.put("user_id" ,String.valueOf(userId));

????????query.put("password" ,service.encryption(o_password));

????????Query ret = service.count(query, service.readConfig(request));

????????List list = ret.getResultList();

????????Object s = list.get(0);

????????int count = Integer.parseInt(list.get(0).toString());

????????if(count > 0){

????????????// 修改密碼

????????????Map<String,Object> form = new HashMap<>();

????????????form.put("password",service.encryption(data.get("password")));

????????????service.update(query,service.readConfig(request),form);

????????????return success(1);

????????}

????????return error(10000,"密碼修改失?。?);

????}

      1. 賽事信息模塊

添加賽事信息時,輸入必填字段后,表現(xiàn)層的SaishiController接受傳過來的賽事信息參數(shù),再調(diào)用SaishiController類的addSaishi方法,經(jīng)過SaishiService業(yè)務(wù)層到SaishiMapper持久層的處理,完成對整個添加賽事信息的操作。addSaishi方法也和用戶管理中的addUser方法類似,同時做添加和修改工作。

修改賽事信息時,選擇需要修改的項目進行修改,調(diào)用SaishiController控制器的editSaishi方法,拿到該項目原本的信息并顯示到頁面,管理員再對需要修改的賽事信息字段進行修改,完成后調(diào)用addSaishi方法,調(diào)用業(yè)務(wù)層的updateByKey方法,更新數(shù)據(jù)庫的賽事信息表的數(shù)據(jù)。

賽事信息流程圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-8賽事信息流程圖

項目添加界面如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-9賽事信息添加界面

賽事信息查詢界面如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-10賽事信息查詢界面

賽事信息添加關(guān)鍵代碼如下所示。

@PostMapping("/upload")

????public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

????????log.info("進入方法");

????????if (file.isEmpty()) {

????????????return error(30000, "沒有選擇文件");

????????}

????????try {

????????????//判斷有沒路徑,沒有則創(chuàng)建

????????????String filePath = System.getProperty("user.dir") + "\\target\\classes\\static\\upload\\";

????????????File targetDir = new File(filePath);

????????????if (!targetDir.exists() && !targetDir.isDirectory()) {

????????????????if (targetDir.mkdirs()) {

????????????????????log.info("創(chuàng)建目錄成功");

????????????????} else {

????????????????????log.error("創(chuàng)建目錄失敗");

????????????????}

????????????}

????????????String fileName = file.getOriginalFilename();

????????????File dest = new File(filePath + fileName);

????????????log.info("文件路徑:{}", dest.getPath());

????????????log.info("文件名:{}", dest.getName());

????????????file.transferTo(dest);

????????????JSONObject jsonObject = new JSONObject();

????????????jsonObject.put("url", "/api/upload/" + fileName);

????????????return success(jsonObject);

????????} catch (IOException e) {

????????????log.info("上傳失敗:{}", e.getMessage());

????????}

????????return error(30000, "上傳失敗");

}

      1. 運動員成績管理模塊

刪除運動員成績時,選擇需要刪除的運動員成績進行刪除,把主鍵的uId傳到ChengjiController控制器,再調(diào)用控制器的deleteChengji方法,數(shù)據(jù)經(jīng)過ChengjiService業(yè)務(wù)層解析和處理,請求ChengjiMapper持久層調(diào)用deleteByPrimaryKey方法操作數(shù)據(jù)庫將運動員成績數(shù)據(jù)從數(shù)據(jù)庫中刪除。

查找運動員成績時,輸入需要查找的運動員成績名,調(diào)用getData方法獲取所有數(shù)據(jù)并且進行分頁,把獲取到的所有數(shù)據(jù)顯示到視圖上,這時候只需要用腳本方法便能快速查找,不涉及對數(shù)據(jù)庫操作。

運動員成績管理流程圖如下所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-11運動員成績管理流程圖

運動員成績查詢界面如下圖所示。

springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼

?

圖5-12運動員成績查詢界面

運動員成績信息添加關(guān)鍵代碼如下所示。

??@RequestMapping(value = "/del")

????@Transactional

????public Map<String, Object> del(HttpServletRequest request) {

????????service.delete(service.readQuery(request), service.readConfig(request));

????????return success(1);

}

????@Transactional

????public void delete(Map<String,String> query,Map<String,String> config){

????????StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

????????sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

????????log.info("[{}] - 刪除操作:{}",table,sql);

????????Query query1 = runCountSql(sql.toString());

????????query1.executeUpdate();

????}

  1. 系統(tǒng)測試
    1. 測試目的

測試存在于軟件開發(fā)進程中的最后一個階段,它可以保證一個軟件的開發(fā)質(zhì)量是否符合設(shè)計者的初衷,也為程序的正式上線做了最后一道質(zhì)量檢測的工序。軟件測試主要是控制各種條件、包括軟件輸出方式,使用模式和運行環(huán)境等,來評估一個系統(tǒng)或應(yīng)用是否符合設(shè)計標準。在軟件測試過程中,我們一般刻意的去制造錯誤和極端條件,不能僅依照正常模式允許,而是多去嘗試那些意外的情況。

    1. 軟件測試的重要性

只有在運行和維護階段之前經(jīng)歷大量的測試的軟件,才能說明它的質(zhì)量是經(jīng)得起檢驗的。最近計算機業(yè)界也都一致認為,測試應(yīng)該存在于軟件設(shè)計的每個階段,因為越早發(fā)現(xiàn)錯誤,修復(fù)起來就越容易。

實際上,對于一個軟件應(yīng)用,錯誤是必然存在的,無論使用何種技術(shù)或手段,都不可能絕對的排除軟件漏洞。測試是隨著軟件開發(fā)一同誕生的,兩者是共同發(fā)展進步的。實際上,測試可以大幅度的降低維護的成本,如果一個漏洞在開發(fā)的早期就被發(fā)現(xiàn),那么修復(fù)它的成本遠比上線后再修復(fù)的成本要低得多。

    1. 測試實例的研究與選擇

測試有白盒測試和黑盒測試兩種方式。

其中,白盒測試是將軟件看成一個透明的白盒子,按照程序的內(nèi)部控制結(jié)構(gòu)和處理技術(shù)邏輯來選定測試用例、軟件系統(tǒng)測試的邏輯路徑及過程需要進行管理測試,又稱玻璃盒測試。因此白盒測試需要選擇足夠多的測試用例,覆蓋盡可能多的代碼來發(fā)現(xiàn)程序中的錯誤。

黑盒測試,也稱為功能測試。它將需軟件看作一個黑盒,像一個普通用戶一樣來模擬軟件的使用流程。黑盒測試通過大量的輸入邊界值或錯誤數(shù)據(jù),來檢查是否可產(chǎn)生正確的輸出。

本系統(tǒng)測試 主要選擇黑盒測試,少量采用白盒測試。通過測試達到以下測試目的:

1.檢查各大功能模塊的運行,確保其能夠正確運行,并檢查各頁面的完整性,保證頁面完整。

2.檢查各個接口是否可以正確地輸入和輸出,保證數(shù)據(jù)流通穩(wěn)定可行。

3.檢查數(shù)據(jù)結(jié)構(gòu),保證其和外部接口沒有訪問錯誤,訪問順利。

4.檢查原計劃的性能需求有沒有完成,運行流暢。

本系統(tǒng)的測試用例(部分):

登錄部分測試用例

編號

對象

項目

操作

預(yù)期結(jié)果

結(jié)果

1

登錄

登錄提示

使用正確的賬號密碼登錄

成功登錄

預(yù)期結(jié)果

2

登錄提示

使用正確的賬號但錯誤的密碼登錄

提示密碼錯誤

預(yù)期結(jié)果

3

登錄提示

使用錯誤的賬號登錄

提示不存在賬戶

預(yù)期結(jié)果

4

登錄提示

不輸入賬號,點擊登錄

提示輸入賬號

預(yù)期結(jié)果

5

登錄提示

輸入賬號但不輸入密碼點擊登錄

提示輸入密碼

預(yù)期結(jié)果

6

登錄入口

已登錄賬號,查看登錄入口

不顯示登錄入口

預(yù)期結(jié)果

    1. 測試環(huán)境與測試條件

處理器:Inter Core I7-4710MQ四核處理器

內(nèi)存:4GB

硬盤:1T

操作系統(tǒng):Windows 10

數(shù)據(jù)庫:MySQL

6.4系統(tǒng)運行情況

全部測試用例都已通過(包括但不限于以上測試用例),且不存在漏洞,實現(xiàn)了論文開始時所作要求。本系統(tǒng)運行穩(wěn)定,使用流暢,可以滿足用戶需求。

6.5系統(tǒng)評價

6.5.1系統(tǒng)功能評價

試運行后進行系統(tǒng)評估,可以認為該系統(tǒng)達到預(yù)定的目標要求,可以滿足用戶的需求,也滿足了系統(tǒng)開發(fā)前所作目標。

6.5.2系統(tǒng)技術(shù)評價

系統(tǒng)在經(jīng)過大量重復(fù)測試后運行十分穩(wěn)定,安全實用,功能模塊已經(jīng)達到預(yù)定目標所需。

6.5.3系統(tǒng)經(jīng)濟評價

在規(guī)定的時間內(nèi)實現(xiàn)系統(tǒng)的大部分功能,且滿足要求,節(jié)省開發(fā)成本,有助于提高科學(xué)管理水平,符合本人經(jīng)濟情況。

  1. 總結(jié)與展望

通過學(xué)校運動會信息管理系統(tǒng)的開發(fā),本人鞏固了之前學(xué)過的知識,如今將平時所學(xué)到的知識融合在設(shè)計中,在設(shè)計過程中,做了很多的準備,首先,在數(shù)據(jù)庫系統(tǒng)的設(shè)計過程中,尤其是在數(shù)據(jù)庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務(wù)器的選擇,其次,利用所學(xué)的知識點分析所做的系統(tǒng),并在此基礎(chǔ)上設(shè)計。

目前本系統(tǒng)已經(jīng)上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現(xiàn)阻斷性問題,有一些不足和小問題也及時予以修正,系統(tǒng)上線后,為了保證數(shù)據(jù)的安全性,對系統(tǒng)進行了備份操作,系統(tǒng)備份是每兩個月備份一次,數(shù)據(jù)庫備份為每周備份一次,系統(tǒng)部署在租賃的云平臺服務(wù)器中。

本次系統(tǒng)上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。

系統(tǒng)在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應(yīng)速度,在系統(tǒng)今后的升級過程中將著重解決這些安全性問題。

參考文獻

[1]徐佩.新時期計算機軟件開發(fā)技術(shù)的應(yīng)用及發(fā)展趨勢[J].農(nóng)家參謀,2019(08):167.

[2]張帥,崔婀娜,魏立波.互聯(lián)網(wǎng)+健康在線服務(wù)平臺的設(shè)計與實現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2019(10):91-92.

[3]谷利國,陳存田,張甲瑞.基于B/S模式的人事教育信息管理系統(tǒng)的分析與設(shè)計[J].電腦知識與技術(shù),2019,15(10):58-59.

[4]胥新政,強毅.基于JSP的常用金屬材料標準檢索平臺開發(fā)設(shè)計[J].制造業(yè)自動化,2019,41(03):41-43+69.

[5]王祖維,南淮耀,張英.“互聯(lián)網(wǎng)+”視域下的高校學(xué)生公寓管理系統(tǒng)設(shè)計與實現(xiàn)——以沈陽師范大學(xué)為例[J].現(xiàn)代商貿(mào)工業(yè),2019,40(08):187-188.

[6]廖明華,齊攀.學(xué)生職業(yè)能力測評管理系統(tǒng)的設(shè)計與實現(xiàn)[J].廣東交通職業(yè)技術(shù)學(xué)院學(xué)報,2019,18(01):48-52.

[7]李冬冬,劉華明,畢學(xué)慧,王秀友.舊衣申領(lǐng)系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2019,15(08):47-50.

[8]李慶年.“互聯(lián)網(wǎng)+”視域下的人才招聘管理系統(tǒng)設(shè)計與實現(xiàn)[J].國際公關(guān),2019(03):164-165.

[9]劉婷,彭煥峰,邵淑婷.基于云平臺的高校監(jiān)考管理系統(tǒng)[J].電腦知識與技術(shù),2019,15(07):91-92.

[10]趙丙秀.基于百度AI平臺的Web人臉注冊和登錄系統(tǒng)的實現(xiàn)[J].電腦知識與技術(shù),2019,15(07):114-115.

[11]戴昭穎,尹濤.鋼鐵行業(yè)成本預(yù)算系統(tǒng)開發(fā)應(yīng)用實踐[J].電子技術(shù)與軟件工程,2019(04):29-30.

[12]曹燦,劉志剛.基于SSH和Layui的工程科學(xué)前沿與實踐系統(tǒng)[J].工業(yè)控制計算機,2019,32(02):91-92+96.

[13]謝路.基于Web的考務(wù)管理系統(tǒng)設(shè)計與實現(xiàn)[J].福建電腦,2019,35(01):136-137.

[14]張繼東.MySQL數(shù)據(jù)庫基于JSP的訪問技術(shù)[J/OL].電子技術(shù)與軟件工程,2017,(15):169(2017-08-03).

[15]韓思凡.Web開發(fā)中的JSP與HTML的基礎(chǔ)應(yīng)用[J].科學(xué)技術(shù)創(chuàng)新,2020(14):71-72.

[16]NastitiAndini,DaehaKim,JongAhnChun.Operationalsoilmoisturemodelingusingamulti-stageapproachbasedonthegeneralizedcomplementaryprinciple[J].AgriculturalWaterManagement,2020,231.

[17]A.D.Titisari,D.Phillips,I.W.Warmada,Hartono,A.Idrus.40Ar/39ArgeochronologyofthePongkorlowsulfidationepithermalgoldmineralisation,WestJava,Indonesia[J].OreGeologyReviews,2020,119.

[18]FranciscoOrtin,OscarRodriguez-Prieto,NicolasPascual,MiguelGarcia.HeterogeneoustreestructureclassificationtolabelJavaprogrammersaccordingtotheirexpertiselevel[J].FutureGenerationComputerSystems,2020,105.

[19]SatyaKrismatama,IndahRiyantini,IwangGumilar,LantunParadhitaDewanti.SelectivityofFishingGearforScomberomorusguttatus(Bloch&Schneider,1801)CommoditiesinPangandaranFishingGround,WestJava[J].AsianJournalofFisheriesandAquaticResearch,2020.

[20]ZhongXiangfu,PlaAlbert,RaynerSimon.Jasmine:aJavapipelineforisomiRcharacterizationinmiRNA-Seqdata[J].Bioinformatics,2020,36(6).

致謝

伴隨著設(shè)計的完成,大學(xué)生涯也隨之即將結(jié)束。大學(xué)期間是我最珍惜的時光,大學(xué)時光中學(xué)會了很多,也成長了很多,這段時光中每一段回憶都刻在腦海中。感謝一起學(xué)習(xí),一起成長同學(xué)們,和成長過程悉心教導(dǎo)的老師們,非常感激有你們的陪伴。

首先感謝我的指導(dǎo)老師,設(shè)計的完成離不開老師的一系列指導(dǎo)。在畢業(yè)設(shè)計的完成過程中,老師給出了很多中肯的建議,正是由于老師一絲不茍的工作態(tài)度,我的設(shè)計才能順利的完成。

最后,感謝在大學(xué)生涯中每一位教導(dǎo)我的老師,是你們教給了我豐富的知識,更教會了我遇到問題時,如何去應(yīng)對并解決。謝謝你們的幫助與支持。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?點贊+收藏+關(guān)注??? 私信領(lǐng)取本源代碼、數(shù)據(jù)庫?文章來源地址http://www.zghlxwxcb.cn/news/detail-456993.html

到了這里,關(guān)于springboot學(xué)校學(xué)校運動會信息管理系統(tǒng)畢業(yè)設(shè)計-附源碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包