摘?要
本論文介紹了一個高校運動會信息管理系統(tǒng)的設(shè)計和實現(xiàn)過程。首先是高校運動會的需求分析和可行性分析,通過比較運動會的各個工作流程,確定了系統(tǒng)的數(shù)據(jù)流程和數(shù)據(jù)庫結(jié)構(gòu),然后介紹了高校運動會信息管理系統(tǒng)開發(fā)所使用的軟件開發(fā)工具,最后描述了系統(tǒng)的詳細設(shè)計與實現(xiàn)。本系統(tǒng)是基于B/S架構(gòu)的管理系統(tǒng),包含了賽事信息、賽事報名、賽程信息、賽事分類、裁判信息、秩序手冊、個人成績、賽道信息、學院信息、學院成績等多個模塊功能,較好的實現(xiàn)了運動會管理的功能。本系統(tǒng)是一個較精簡的管理系統(tǒng),也有許多待完善的功能模塊,但經(jīng)測試使用,本系統(tǒng)已經(jīng)能達到設(shè)計的要求,可以應用到實際的運動會中。
關(guān)鍵詞:Java開發(fā)語言;springboot框架技術(shù);高校運動會信息管理系統(tǒng);
Abstract
This paper introduces the design and implementation process of a university sports meeting information management system. Firstly, it is the demand analysis and feasibility analysis of the university sports meeting. By comparing various work processes of the sports meeting, the data flow and database structure of the system are determined. Then, it introduces the software development tools used in the development of the university sports meeting information management system, and finally describes the detailed design and implementation of the system. This system is a management system based on the B/S architecture, including multiple module functions such as event information, event registration, schedule information, event classification, referee information, order manual, personal scores, track information, college information, and college scores, which better implements the functions of sports management. This system is a relatively simplified management system, and there are many functional modules to be improved. However, after testing and using, this system has already met the design requirements and can be applied to actual sports meetings.
Key words:Java development language; Spring boot framework technology; University sports meeting information management system;
目 ?錄
第1章 緒論
1.1?選題背景
1.2?國內(nèi)外有關(guān)研究動態(tài)
1.3?系統(tǒng)開發(fā)技術(shù)的特色
第2章 相關(guān)技術(shù)介紹
2.1 B/S架構(gòu)
2.2 springboot框架介紹
2.3 MySQL數(shù)據(jù)庫
第3章 系統(tǒng)分析
3.1?可行性分析
3.1.1?技術(shù)可行性
3.1.2?操作可行性
3.2?系統(tǒng)功能需求
3.3?系統(tǒng)性能需求
第4章 系統(tǒng)設(shè)計
4.1?總體目標
4.2?總體結(jié)構(gòu)設(shè)計
4.3?功能模塊設(shè)計
4.4?數(shù)據(jù)庫設(shè)計
4.4.1?概念設(shè)計
4.4.2?邏輯設(shè)計
第5章 系統(tǒng)實現(xiàn)
5.1?登錄模塊的實現(xiàn)
5.2?用戶模塊的實現(xiàn)
5.2.1?首頁模塊的實現(xiàn)
5.2.2?注冊模塊的實現(xiàn)
5.2.3?賽道信息模塊的實現(xiàn)
5.2.4?賽程信息模塊的實現(xiàn)
5.2.5評論模塊的實現(xiàn)
5.3?后臺模塊的實現(xiàn)
5.3.1?用戶管理模塊的實現(xiàn)
5.3.2?公告管理模塊的實現(xiàn) 31
5.3.3?賽事報名管理模塊的實現(xiàn) 32
5.3.4?賽程分類管理模塊的實現(xiàn) 32
5.3.5?裁判信息管理模塊的實現(xiàn) 32
第6章 系統(tǒng)測試
6.1?測試目的
6.2?測試用例
6.2.1?公告測試
6.2.2?創(chuàng)建數(shù)據(jù)測試
6.2.3?修改數(shù)據(jù)測試
6.2.4?查詢數(shù)據(jù)測試
6.3?測試結(jié)果
第7章 結(jié)論
參考文獻
致謝
第1章?緒論
1.1 選題背景
?當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。
管理信息系統(tǒng)是進行信息的采集、存儲、加工、維護和使用的系統(tǒng)。它是隨著管理科學和技術(shù)科學的發(fā)展而形成的。
隨著科學技術(shù)的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。
作為計算機應用的一部分,?使用計算機對運動員成績信息進行管理,具有著手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高運動員檔案管理的效率,也是企業(yè)的科學化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)這樣一套管理軟件成為很有必要的事情,高校運動會管理系統(tǒng)系統(tǒng)提供了強大的高校運動會管理系統(tǒng)管理功能,方便管理員對運動員成績等信息的添加、修改、刪除、查詢、統(tǒng)計等操作。更適合大型數(shù)據(jù)庫的管理。
1.2 國內(nèi)外有關(guān)研究動態(tài)
在國內(nèi),計算機在運動會管理方面的應用越來越深入,廣東省第十一屆運動會電子信息服務系統(tǒng)通過整合硬件平臺、網(wǎng)絡通信平臺、數(shù)據(jù)庫平臺、工具平臺、應用軟件平臺將省運會各類資源有機、高效地集成到一起,形成一個完整的、開放的、結(jié)構(gòu)化的、先進的工作平臺。在這個統(tǒng)一的平臺?基礎(chǔ)上,實現(xiàn)了廣東省第十一屆運動會電子信息服務系統(tǒng)的完整的應用。根據(jù)省運會的規(guī)模以及實際需要,廣東省第十一屆運動會電子信息服務系統(tǒng)劃分為六大子系統(tǒng):計算機網(wǎng)絡系統(tǒng)、無線局域網(wǎng)系統(tǒng)、有線衛(wèi)星電視系統(tǒng)、指揮調(diào)度系統(tǒng)、集群網(wǎng)絡通信系統(tǒng)、賽事管理系統(tǒng)。
國外對高校運動會管理系統(tǒng)的開發(fā)與研究也很關(guān)注,由于外國與中國的教學模式有差別,學校性質(zhì)與中國也不相同,這就要求他們所采用的“高校運動會信息管理系統(tǒng)”更加具有可變和靈活的特點。在國外的高校中,運動員可以更多參與到運動會之中,如果自己有要求,還可以去他學校的參加運動會,同樣也可以拿其他學校的比賽名次,鑒于這種情況,對“高校運動會信息管理系統(tǒng)”的要求就更高,所涉及到的內(nèi)容就更廣,如:學生的個人信息查詢和修改就需要涉及兩個或更多的學校,因此,國外也在對此做進一步研究、開發(fā)。在大型的運動會系統(tǒng)的使用方面,在國外舉辦的較大規(guī)模的運動會和專項比賽上已廣泛使用,如近幾屆的奧運會,均使用了上千臺微機聯(lián)網(wǎng)進行賽事管理,在功能上基本上滿足了管理的需求,但其開發(fā)成本和運行成本巨大,難以普及使用
1.3 系統(tǒng)開發(fā)技術(shù)的特色
(1)高校運動會信息管理系統(tǒng)中的web后臺管理中的后端不再使用古老的jsp+javabean+servlet技術(shù),而是使用當前主流的springboot框架,它減少java配置代碼,簡化編程代碼,目前springboot框架也是很多企業(yè)選擇的框架之一。
(2)高校運動會信息管理系統(tǒng)中的web后臺管理中的前端使用的是JavaScript框架,它配合ajax和jquery可以美化頁面設(shè)計。
(3)高校運動會信息管理系統(tǒng)中數(shù)據(jù)庫用的mysql5.7,它執(zhí)行效率高。
第2章 相關(guān)技術(shù)介紹
2.1 B/S架構(gòu)
B/S架構(gòu)(瀏覽器/服務器)是當前應用最為廣泛的一種架構(gòu),能夠使系統(tǒng)的開發(fā)變得容易、易操作、易于維護。當你在你的電腦上安裝一個數(shù)據(jù)庫和幾個非常常見的瀏覽器時,你就可以使用這個結(jié)構(gòu)。B/S結(jié)構(gòu)可以直接用于 B/S系統(tǒng),并且 B/S架構(gòu)可以在實際應用中大大降低了系統(tǒng)的運行維護。在 B/S平臺上,各數(shù)據(jù)庫彼此獨立,具有很高的安全性。由于 B/S架構(gòu)可以清晰地觀察到系統(tǒng)所處理的業(yè)務,使管理者可以及時做出決定,從而避免了企業(yè)的虧損。B/S架構(gòu)的本質(zhì)特征是集中式管理,用戶通過系統(tǒng)產(chǎn)生的數(shù)據(jù),將其存入數(shù)據(jù)庫,便于以后的應用,從而達到了各種需要。
B/S模型由一個瀏覽器、一個網(wǎng)絡服務器、一個數(shù)據(jù)庫服務器三個層級構(gòu)成。數(shù)據(jù)管理采用了當前大部分現(xiàn)有B/S系統(tǒng)的表現(xiàn)層、應用層和數(shù)據(jù)層,Web瀏覽器是為了滿足用戶的要求而設(shè)計的,在數(shù)據(jù)處理和邏輯過程中使用的中間應用層,從而形成分布式的運行模式。B/S體系結(jié)構(gòu)的邏輯是:在前端完成的處理,將主要的業(yè)務邏輯交給后臺,而前端只負責少量的請求、渲染等。由于因特網(wǎng)技術(shù)的迅速發(fā)展,B/S體系結(jié)構(gòu)使得任何時間、任何地點都能訪問到該系統(tǒng)。
圖2-1 B/S模式三層結(jié)構(gòu)圖
2.2 springboot框架介紹
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過依賴注入實現(xiàn)控制反轉(zhuǎn)來實現(xiàn)管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術(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框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術(shù)實現(xiàn)。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且?guī)缀蹩梢栽贘ava平臺的任何環(huán)境中工作。Spring集成多種事務模板,系統(tǒng)可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪問框架解決了開發(fā)人員在應用程序中使用數(shù)據(jù)庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數(shù)據(jù)訪問提供了靈活的抽象。Spring框架最初是沒有打算構(gòu)建一個自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。
2.3 MySQL數(shù)據(jù)庫
數(shù)據(jù)庫作為數(shù)據(jù)的存儲地方是項目必須的,MySQL是一款非常優(yōu)秀的關(guān)系型數(shù)據(jù)庫,早期的MySQL并不是甲骨文公司的,后來才被他收購的。MySQL非常的小巧,安裝包才幾兆,sql語言的書寫也比較容易學習,最重要的是MySQL同時也是一款開源的軟件,所以不需要額外進行付費,本系統(tǒng)本身也是以學習總結(jié)所學知識為主,在系統(tǒng)的開發(fā)上最好盡量使用免費的軟件,所以選用MySQL進行數(shù)據(jù)庫管理。MySQL的容量也是非常大的,同時支持分庫分表的操作,支持分布式,所以越來越多的中小企業(yè)選擇該款數(shù)據(jù)庫管理工具。另外值得一提的是,開源也有一個不好的地方,就是容易遭到破解和黑客攻擊,所以MySQL在使用上還是更多的使用在中小項目中。
MySQL不會對平臺有需求,所以任何一個程序員都可以通過 MySQL數(shù)據(jù)庫來完成自己的系統(tǒng)開發(fā),并且還可以節(jié)約大量的資源。因為它具有強大功能,所以可以用來儲存這個系統(tǒng)的數(shù)據(jù)。
MySQL適合于各種應用,我們在運行數(shù)據(jù)庫的時候,也很容易上手,我們只要編寫一段代碼,就可以完成相應的功能,并且可以在任何的平臺上使用,而不需要再進行第二次的編譯。MySQL數(shù)據(jù)庫還具備在本地存儲數(shù)據(jù)和允許結(jié)構(gòu)化查詢以方便管理的優(yōu)勢;MySQL是一個完全網(wǎng)絡化的系統(tǒng),它的數(shù)據(jù)庫可以在互聯(lián)網(wǎng)的任何位置被訪問,它可以在任何地點與任何人分享;此外,MySQL也提供了存取控制的能力,可以阻止數(shù)據(jù)被非法使用,MySQL服務穩(wěn)定,開發(fā)成本低,所以在開發(fā)過程中,MySQL數(shù)據(jù)庫是最受歡迎的。
第3章 系統(tǒng)分析
3.1 可行性分析
可行性分析也是為了分析項目的開發(fā)系統(tǒng)是否對開發(fā)有價值,以及是否真的需要改進管理系統(tǒng)在信息聽寫方面的不足。以本項目高校運動會信息管理系統(tǒng)的設(shè)計目標和實施過程為例,如果開發(fā)該系統(tǒng),希望能很好地解決用戶的管理信息問題,并且如果這使高校運動會信息管理系統(tǒng)可以發(fā)展出最大價值學說,并且還可以變相的解決了用戶在一定程度上的問題,那么這個項目的研發(fā)系統(tǒng)也就是最有價值有意義的系統(tǒng)。但研發(fā)目標又是不是達到了所期望的結(jié)果,以及科研任務在實現(xiàn)后的最大效用和價值,它是否等于所有總成本。因此,研發(fā)階段本質(zhì)上就是研發(fā)體系能否真正設(shè)計的階段。
????????3.1.1 技術(shù)可行性
技術(shù)可行性是指所確定的科學技術(shù)或決策方法中的科學技術(shù)均未突破組織掌握或相關(guān)人員熟悉的科學技術(shù)資源的界限。在技術(shù)研究過程中,應注意全面調(diào)查系統(tǒng)研發(fā)過程中包含的各種關(guān)鍵技術(shù)問題,盡可能選擇成熟技術(shù),認真引用先進技術(shù),關(guān)注特定的研究平臺和開發(fā)人員,評估關(guān)鍵技術(shù)的有效性。
Java技術(shù)對于該高校運動會信息管理系統(tǒng)的設(shè)計和實施很是關(guān)鍵,基于、B/S架構(gòu)的和MySQL數(shù)據(jù)庫管理,對于前臺的應用和后臺的數(shù)據(jù)庫管理都是至關(guān)重要的,要想有效應用該程序,就需要保持功能全面、易懂易簡單使用的特性。構(gòu)建數(shù)據(jù)庫管理時,需要確保數(shù)據(jù)分析信息完全、數(shù)據(jù)分析信息穩(wěn)定性好、數(shù)據(jù)分析信息穩(wěn)定性較高的庫。在早期,人們對Java的基本重要知識點就有理解和熟悉,對MySQL數(shù)據(jù)庫發(fā)生過簡要的掌握、熟悉,在早期對軟件工程測試,以及UML語言等基礎(chǔ)課程發(fā)生過大致的掌握和練習,經(jīng)過對上述課程練習,就能夠?qū)ι鲜稣n程有相應的信息系統(tǒng)開發(fā)、檢驗和判斷。
Java可以和MySQL結(jié)合起來研發(fā)一個高校運動會信息管理系統(tǒng),一定是合理而且有效的。
????????3.1.2 操作可行性
高校運動會信息管理系統(tǒng)的注冊與登陸頁面設(shè)計簡潔容易應用,可以通過最常見的頁面窗口來登陸頁面,并利用過計算機實現(xiàn)登陸功能,因此使用者只要平時利用過計算機都可以實現(xiàn)登陸應用。此操作系統(tǒng)的研發(fā)工作環(huán)境運用了Java技術(shù),并運用了B/S結(jié)構(gòu),這些研發(fā)工作環(huán)境都使得此系統(tǒng)功能更為完整,使整個設(shè)計更為個性化,使用者功能也更為簡潔方便。本管理系統(tǒng)具備了易于運行、容易管理、交互性較好的優(yōu)點,在實際操作上也是非常簡單的。因此,本管理系統(tǒng)也可進行商業(yè)設(shè)計。
綜上所述,該設(shè)備的研發(fā)符合技術(shù)、工藝和技術(shù)要求,因此其研發(fā)具有可操作性。
3.2 系統(tǒng)功能需求
普通用戶用例圖如下所示。
圖3-1普通用戶用例圖
管理員用例圖如下所示。
圖3-2?管理員用例圖
表3-1 公告瀏覽用例描述
描述項 |
說明 |
用例名稱 |
公告查詢 |
用例描述 |
用戶可以查看公告的詳情 |
參與者 |
用戶 |
前置條件 |
使用者是普通用戶類型并成功進入該系統(tǒng) |
后置條件 |
瀏覽成功 |
主事件流 |
(1)用戶可以瀏覽公告的模塊、公告的內(nèi)容 (2)用戶點擊公告可以對公告進行詳情閱讀 |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1 個人信息管理用例描述
用例名稱 |
管理和修改個人信息 |
參與者 |
用戶 |
描述 |
用戶查看、修改個人信息 |
前置條件 |
用戶已登錄到系統(tǒng)中 |
后置條件 |
無 |
事件流 |
(1)用戶查看個人信息 (2)用戶修改個人信息 |
補充說明 |
(a)用戶可修改密碼 (b)用戶可修改個人資料,例如姓名,頭像等 |
表3-1 評論用例描述
用例名稱 |
評論 |
參與者 |
用戶 |
描述 |
用戶發(fā)表評論 |
前置條件 |
用戶已登錄 |
后置條件 |
評論內(nèi)容不違規(guī) |
事件流 |
(1)在評論頁輸入評論數(shù)據(jù),提交評論 (2)更新并顯示評論板 |
補充說明 |
(a)評論內(nèi)容不能為空 |
表3-1 收藏用例描述
用例名稱 |
收藏 |
參與者 |
用戶 |
描述 |
用戶將內(nèi)容加入收藏夾 |
前置條件 |
用戶已登錄 |
后置條件 |
無 |
事件流 |
(1)在收藏頁加入收藏 (2)更新并顯示收藏夾 |
補充說明 |
無 |
表3-1 用戶管理用例描述
描述項 |
說明 |
用例名稱 |
用戶操作 |
用例描述 |
管理員正確登錄后臺管理的條件下,對用戶進行管理 |
參與者 |
管理員 |
前置條件 |
管理員登錄成功并跳轉(zhuǎn)到后臺主界面 |
后置條件 |
操作成功 |
主事件流 |
管理員跳轉(zhuǎn)用戶管理頁面,查詢用戶詳情的信息 管理員可以刪除用戶信息 |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1 賽事信息管理用例描述
描述項 |
說明 |
用例名稱 |
賽事信息操作 |
用例描述 |
管理員正確登錄后臺管理的條件下,對賽事信息模塊進行管理 |
參與者 |
管理員 |
前置條件 |
管理員成功登錄 |
后置條件 |
操作成功 |
主事件流 |
(1)管理員進入賽事信息管理頁面,查詢賽事信息的信息 (2)管理員可以對賽事信息進行增刪除和編輯賽事信息操作 (3)管理員新增賽事信息,添加成功跳轉(zhuǎn)到查詢頁面 |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1 賽道信息管理用例描述
描述項 |
說明 |
用例名稱 |
賽道信息操作 |
用例描述 |
管理員正確登錄后臺管理的條件下,賽道信息模塊進行管理 |
參與者 |
管理員 |
前置條件 |
管理員成功登錄 |
后置條件 |
操作成功 |
主事件流 |
(1)管理員進入賽道信息管理頁面,查詢賽道信息內(nèi)容的信息 (2)管理員可以對賽道信息進行刪除操作 |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1 賽程信息管理用例描述
描述項 |
說明 |
用例名稱 |
賽程信息操作 |
用例描述 |
管理員正確登錄后臺管理的條件下,賽程信息模塊進行管理 |
參與者 |
管理員 |
前置條件 |
管理員成功登錄 |
后置條件 |
操作成功 |
主事件流 |
(1)管理員進入賽程信息管理頁面,查詢賽程信息內(nèi)容的信息 (2)管理員可以對賽程信息進行刪除操作 |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1秩序手冊管理用例描述
描述項 |
說明 |
用例名稱 |
秩序手冊操作 |
用例描述 |
管理員正確登錄后臺管理的條件下,秩序手冊模塊進行管理 |
參與者 |
管理員 |
前置條件 |
管理員成功登錄 |
后置條件 |
操作成功 |
主事件流 |
(1)管理員進入秩序手冊管理頁面,查詢秩序手冊內(nèi)容的信息 (2)管理員可以對秩序手冊進行刪除操作 |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1 公告管理用例描述
用例名稱 |
公告管理 |
參與者 |
管理者 |
描述 |
管理者提供新增、修改、刪除、查閱等功能 |
前置條件 |
|
后置條件 |
無 |
事件流 |
(1)管理者查看修改公告 (2)管理者添加公告 (3)管理者刪除公告 |
補充說明 |
(a)新添加的公告不符合要求時會添加失敗 (b)修改的公告不符合要求時會修改失敗 |
表3-1 評論管理用例描述
描述項 |
說明 |
用例名稱 |
評論操作 |
用例描述 |
管理員正確登錄后臺管理的條件下,評論模塊進行管理 |
參與者 |
管理員 |
前置條件 |
管理員成功登錄 |
后置條件 |
操作成功 |
主事件流 |
(1)管理員進入評論管理頁面,查詢評論內(nèi)容的信息 (2)管理員可以從用戶評論中刪除數(shù)據(jù) |
異常事件流 |
e1.報500錯誤 e2.數(shù)據(jù)庫連接異常 |
表3-1 文件上傳用例描述
用例名稱 |
文件上傳 |
參與者 |
用戶 |
描述 |
用戶上傳文件至服務器 |
前置條件 |
用戶已登錄 |
后置條件 |
無 |
事件流 |
在文件上傳頁點擊“上傳”按鈕 |
補充說明 |
無 |
3.3 系統(tǒng)性能需求
第一,友好界面。高校運動會信息管理系統(tǒng)開發(fā)設(shè)計,界面的友好性比較重要,滿足這一要求才能體現(xiàn)出人性化設(shè)計特征,和用戶應用系統(tǒng)便捷性相適應,動態(tài)的人機交互設(shè)計,用戶應用系統(tǒng)的時候能感受到操作的便利,提高用戶的體驗良好感受,才能有助于將系統(tǒng)開采設(shè)計的作用價值充分發(fā)揮出來。
第二,穩(wěn)定性要求。開發(fā)設(shè)計的高校運動會信息管理系統(tǒng),需要保持其穩(wěn)定,系統(tǒng)應用穩(wěn)定才能有助于各項管理工作高效率完成,提升系統(tǒng)使用體驗度。系統(tǒng)運行保障因外部異常造成系統(tǒng)崩潰,系統(tǒng)發(fā)生問題后數(shù)據(jù)能及時備份,第一時間恢復數(shù)據(jù)信息,保障系統(tǒng)良好運行。
第三,可擴展性。高校運動會信息管理系統(tǒng)的開發(fā)設(shè)計,需要滿足可擴展性的要求,系統(tǒng)的設(shè)計需要考慮未來系統(tǒng)業(yè)務擴展問題,在測試不斷應用下,功能需求會不斷擴展,通過良好擴展性作用發(fā)揮,滿足多樣化的需要。
第4章 系統(tǒng)設(shè)計
4.1?總體目標
高校運動會信息管理系統(tǒng)主要學校的高校運動會管理,利用網(wǎng)絡改變傳統(tǒng)高校運動會管理模式,簡化高校運動會信息管理系統(tǒng)流程,減輕傳統(tǒng)高校運動會管理帶來的工作負擔和降低大量資源的消耗。本系統(tǒng)達到的目標主要有以下幾點:
(1)通過簡單的頁面設(shè)計和便捷的功能操作,保證系統(tǒng)的簡單性和實用性,形成良好的用戶體驗。
(2)本系統(tǒng)主要針對高校運動會信息管理系統(tǒng)需求進行設(shè)計開發(fā),突出較強的針對性。
(3)能夠具有一定的安全機制,保證用戶信息的安全性。
4.2 總體結(jié)構(gòu)設(shè)計
層次框圖是一系列由多層矩形框架組成的樹,其頂部為矩形框架,表示整個數(shù)據(jù)結(jié)構(gòu),下方的長方形立方體表示獨立的數(shù)據(jù),下方的長方形表示該數(shù)據(jù)的實際數(shù)據(jù)(不能進行分割)。由于這個架構(gòu)的精煉,層級方塊圖描述的資料結(jié)構(gòu)也愈加詳盡,這個模型很好地滿足了需求分析的要求。首先對最上層的信息進行分類,然后在圖表中的每個路徑上重復地進行優(yōu)化,直至完整的數(shù)據(jù)結(jié)構(gòu)被確定。
這個系統(tǒng)由兩個模塊組成,一個是管理員,二個是普通用戶,這兩個部分看起來是獨立的,實際上卻是連接著數(shù)據(jù)庫,每個模塊都有自己的權(quán)限,唯一不同的,就是訪問的方式不同。在調(diào)研資料的基礎(chǔ)上,完成了各個模塊的功能。在對上述功能進行分析的基礎(chǔ)上,本系統(tǒng)提出了兩個主要的模塊,每個單元可劃分為若干小單元。
系統(tǒng)的功能結(jié)構(gòu)圖如下圖所示。
圖4-2 系統(tǒng)功能結(jié)構(gòu)圖
4.3 功能模塊設(shè)計
1.登錄模塊:
本高校運動會信息管理系統(tǒng)的用戶登錄涉及到三類信息的判斷:第一類是用戶名和密碼是否為空;第二類是驗證碼是否錄入和正確;第三類就是用戶登錄信息、驗證碼和權(quán)限是否匹配通過。在該用戶登錄流程對會對用戶名和密碼是否為空進行判斷,以及驗證碼是否正確進行判斷,只有以上的幾類信息中的一種存在問題的情況下都是無法登錄成功的。
2.公告管理模塊:
本高校運動會信息管理系統(tǒng)中的公告管理,管理方式都是對信息的三種基本操作:一種是完成公告信息的添加,在這里會對公告信息的錄入情況來判斷;一種是對公告信息的修改,另一種就是對公告信息的刪除。其后兩種操作都是要建立在第一種操作而生成的公告列表的基礎(chǔ)上完成的。
3.賽事信息管理模塊:
本高校運動會信息管理系統(tǒng)中的賽事信息管理,管理方式都是對信息的三種基本操作:一種是完成賽事信息的添加,在這里會對賽事信息的錄入情況來判斷;一種是對賽事信息的修改,另一種就是對賽事信息的刪除。其后兩種操作都是要建立在第一種操作而生成的賽事列表的基礎(chǔ)上完成的。
4.賽程信息管理模塊:
本高校運動會信息管理系統(tǒng)中的賽程信息管理,管理方式都是對信息的三種基本操作:一種是完成賽程信息的添加,在這里會對賽程信息的錄入情況來判斷;一種是對賽程信息的修改,另一種就是對賽程信息的刪除。其后兩種操作都是要建立在第一種操作而生成的賽程列表的基礎(chǔ)上完成的。
5.裁判信息管理模塊:
本高校運動會信息管理系統(tǒng)中的裁判信息管理,管理方式都是對信息的三種基本操作:一種是完成裁判信息的添加,在這里會對裁判信息的錄入情況來判斷;一種是對裁判信息的修改,另一種就是對裁判信息的刪除。其后兩種操作都是要建立在第一種操作而生成的裁判列表的基礎(chǔ)上完成的。
6.賽道信息管理模塊:
本高校運動會信息管理系統(tǒng)中的賽道信息管理,管理方式都是對信息的三種基本操作:一種是完成賽道信息的添加,在這里會對賽道信息的錄入情況來判斷;一種是對賽道信息的修改,另一種就是對賽道信息的刪除。其后兩種操作都是要建立在第一種操作而生成的賽道列表的基礎(chǔ)上完成的。
4.4 數(shù)據(jù)庫設(shè)計
????????4.4.1 概念設(shè)計
借助先進的系統(tǒng),ER圖使其他用戶可以快速輕松地了解系統(tǒng)的功能以及他們之間的關(guān)系。根據(jù)高校運動會信息管理系統(tǒng)分析結(jié)果,整個高校運動會信息管理系統(tǒng)包括以下各個單元:管理員,賽道信息,普通用戶,賽事信息、賽程信息等。
系統(tǒng)的主要實體間關(guān)系E-R圖如下圖所示。
總體ER圖如下圖所示。
圖4-3 總體ER圖
????????4.4.2 邏輯設(shè)計
所有系統(tǒng)的應用數(shù)據(jù)相互區(qū)分。一旦在相應的系統(tǒng)中實現(xiàn),它們將與自己相應的網(wǎng)絡和服務器通信。所以這個系統(tǒng)可以連接這些數(shù)據(jù)。當我們選擇橋梁截面時,以下將簡要介紹如何建立系統(tǒng)。在單擊上一個按鍵的時候,就會自動在對話框中彈出數(shù)據(jù)源的名字,之后再單擊下一個按鍵時,就在填寫相對應的身份驗證和登錄信息。按照系統(tǒng)功能設(shè)計的特點與職能模塊的分類,高校運動會信息管理系統(tǒng)的總體設(shè)計和實施過程一共涉及到了幾個資料表格。
以下就介紹了一些根據(jù)各類別主要數(shù)據(jù)庫表的設(shè)計結(jié)構(gòu)以及基本功能建立數(shù)據(jù)庫表:
表college_information (學院信息)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
college_information_id |
int |
10 |
0 |
N |
Y |
學院信息ID |
|
2 |
college_name |
varchar |
64 |
0 |
Y |
N |
學院名稱 |
|
3 |
college_address |
varchar |
64 |
0 |
Y |
N |
學院地址 |
|
4 |
college_telephone |
varchar |
16 |
0 |
Y |
N |
學院電話 |
|
5 |
college_introduction |
text |
65535 |
0 |
Y |
N |
學院介紹 |
|
6 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
7 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表college_morning (學院成績)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
college_morning_id |
int |
10 |
0 |
N |
Y |
學院成績ID |
|
2 |
college_name |
varchar |
64 |
0 |
N |
N |
學院名稱 |
|
3 |
college_cover |
varchar |
255 |
0 |
Y |
N |
學院封面 |
|
4 |
opening_date |
date |
10 |
0 |
Y |
N |
開賽日期 |
|
5 |
total_score |
int |
10 |
0 |
Y |
N |
0 |
共計分數(shù) |
6 |
number_of_participants |
int |
10 |
0 |
Y |
N |
0 |
參賽人數(shù) |
7 |
college_information |
longtext |
2147483647 |
0 |
Y |
N |
學院信息 |
|
8 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
9 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
10 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表comment (評論)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
comment_id |
int |
10 |
0 |
N |
Y |
評論ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
評論人ID: |
3 |
reply_to_id |
int |
10 |
0 |
N |
N |
0 |
回復評論ID:空為0 |
4 |
content |
longtext |
2147483647 |
0 |
Y |
N |
內(nèi)容: |
|
5 |
nickname |
varchar |
255 |
0 |
Y |
N |
昵稱: |
|
6 |
avatar |
varchar |
255 |
0 |
Y |
N |
頭像地址:[0,255] |
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間: |
9 |
source_table |
varchar |
255 |
0 |
Y |
N |
來源表: |
|
10 |
source_field |
varchar |
255 |
0 |
Y |
N |
來源字段: |
|
11 |
source_id |
int |
10 |
0 |
N |
N |
0 |
來源ID: |
表event_classification (賽事分類)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
event_classification_id |
int |
10 |
0 |
N |
Y |
賽事分類ID |
|
2 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
3 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
4 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
5 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表event_information (賽事信息)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
event_information_id |
int |
10 |
0 |
N |
Y |
賽事信息ID |
|
2 |
event_name |
varchar |
64 |
0 |
Y |
N |
賽事名稱 |
|
3 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
4 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
5 |
opening_date |
date |
10 |
0 |
Y |
N |
開賽日期 |
|
6 |
event_cover |
varchar |
255 |
0 |
Y |
N |
賽事封面 |
|
7 |
venue |
varchar |
64 |
0 |
Y |
N |
賽事場地 |
|
8 |
competition_award |
varchar |
64 |
0 |
Y |
N |
賽事獎勵 |
|
9 |
deadline |
date |
10 |
0 |
Y |
N |
截至日期 |
|
10 |
event_details |
longtext |
2147483647 |
0 |
Y |
N |
賽事詳情 |
|
11 |
hits |
int |
10 |
0 |
N |
N |
0 |
點擊數(shù) |
12 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
點贊數(shù) |
13 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
14 |
timer_title |
varchar |
64 |
0 |
Y |
N |
計時器標題 |
|
15 |
timing_start_time |
datetime |
19 |
0 |
Y |
N |
計時開始時間 |
|
16 |
timing_end_time |
datetime |
19 |
0 |
Y |
N |
計時結(jié)束時間 |
|
17 |
limit_times |
int |
10 |
0 |
N |
N |
0 |
限制次數(shù) |
18 |
limit_type |
tinyint |
4 |
0 |
N |
N |
2 |
限制次數(shù)類型1-每天次,2-總計次 |
19 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
20 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表event_registration (賽事報名)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
event_registration_id |
int |
10 |
0 |
N |
Y |
賽事報名ID |
|
2 |
event_name |
varchar |
64 |
0 |
Y |
N |
賽事名稱 |
|
3 |
event_cover |
varchar |
255 |
0 |
Y |
N |
賽事封面 |
|
4 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
5 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
6 |
enrollment_user |
int |
10 |
0 |
Y |
N |
0 |
報名用戶 |
7 |
user_name |
varchar |
64 |
0 |
Y |
N |
用戶姓名 |
|
8 |
user_gender |
varchar |
64 |
0 |
Y |
N |
用戶性別 |
|
9 |
opening_date |
varchar |
64 |
0 |
Y |
N |
開賽日期 |
|
10 |
college_name |
varchar |
64 |
0 |
Y |
N |
學院名稱 |
|
11 |
registration_date |
date |
10 |
0 |
Y |
N |
報名日期 |
|
12 |
number_of_applicants |
varchar |
64 |
0 |
Y |
N |
報名人數(shù) |
|
13 |
registration_remarks |
text |
65535 |
0 |
Y |
N |
報名備注 |
|
14 |
examine_state |
varchar |
16 |
0 |
N |
N |
未審核 |
審核狀態(tài) |
15 |
examine_reply |
varchar |
16 |
0 |
Y |
N |
審核回復 |
|
16 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
17 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用戶ID |
18 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
19 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表hits (用戶點擊)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
hits_id |
int |
10 |
0 |
N |
Y |
點贊ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
點贊人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
來源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
來源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
來源ID: |
表notice (公告)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
notice_id |
mediumint |
8 |
0 |
N |
Y |
公告id: |
|
2 |
title |
varchar |
125 |
0 |
N |
N |
標題: |
|
3 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文: |
|
4 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間: |
5 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間: |
表order_manual (秩序手冊)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
order_manual_id |
int |
10 |
0 |
N |
Y |
秩序手冊ID |
|
2 |
manual_name |
varchar |
64 |
0 |
Y |
N |
手冊名稱 |
|
3 |
event_name |
varchar |
64 |
0 |
Y |
N |
賽事名稱 |
|
4 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
5 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
6 |
opening_date |
date |
10 |
0 |
Y |
N |
開幕日期 |
|
7 |
venue |
varchar |
64 |
0 |
Y |
N |
賽事場地 |
|
8 |
manual_cover |
varchar |
255 |
0 |
Y |
N |
手冊封面 |
|
9 |
presenters |
varchar |
64 |
0 |
Y |
N |
頒獎嘉賓 |
|
10 |
closing_time |
date |
10 |
0 |
Y |
N |
閉幕時間 |
|
11 |
manual_content |
longtext |
2147483647 |
0 |
Y |
N |
手冊內(nèi)容 |
|
12 |
hits |
int |
10 |
0 |
N |
N |
0 |
點擊數(shù) |
13 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
點贊數(shù) |
14 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
15 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
16 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表ordinary_users (普通用戶)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
ordinary_users_id |
int |
10 |
0 |
N |
Y |
普通用戶ID |
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用戶姓名 |
|
3 |
user_gender |
varchar |
64 |
0 |
Y |
N |
用戶性別 |
|
4 |
user_age |
varchar |
64 |
0 |
Y |
N |
用戶年齡 |
|
5 |
college_name |
varchar |
64 |
0 |
Y |
N |
學院名稱 |
|
6 |
examine_state |
varchar |
16 |
0 |
N |
N |
已通過 |
審核狀態(tài) |
7 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
8 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用戶ID |
9 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
10 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表praise (點贊)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
praise_id |
int |
10 |
0 |
N |
Y |
點贊ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
點贊人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
來源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
來源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
來源ID: |
8 |
status |
bit |
1 |
0 |
N |
N |
1 |
點贊狀態(tài):1為點贊,0已取消 |
表referee_information (裁判信息)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
referee_information_id |
int |
10 |
0 |
N |
Y |
裁判信息ID |
|
2 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
3 |
referee_gender |
varchar |
64 |
0 |
Y |
N |
裁判性別 |
|
4 |
referee_age |
varchar |
64 |
0 |
Y |
N |
裁判年齡 |
|
5 |
referee_profession |
varchar |
64 |
0 |
Y |
N |
裁判專業(yè) |
|
6 |
length_of_employment |
varchar |
64 |
0 |
Y |
N |
從業(yè)時長 |
|
7 |
referee_remarks |
varchar |
64 |
0 |
Y |
N |
裁判備注 |
|
8 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
9 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
10 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表schedule_information (賽程信息)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
schedule_information_id |
int |
10 |
0 |
N |
Y |
賽程信息ID |
|
2 |
event_name |
varchar |
64 |
0 |
Y |
N |
賽事名稱 |
|
3 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
4 |
opening_date |
date |
10 |
0 |
Y |
N |
開賽日期 |
|
5 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
6 |
venue |
varchar |
64 |
0 |
Y |
N |
賽事場地 |
|
7 |
number_of_applicants |
int |
10 |
0 |
Y |
N |
0 |
報名人數(shù) |
8 |
event_cover |
varchar |
255 |
0 |
Y |
N |
賽事封面 |
|
9 |
schedule_details |
longtext |
2147483647 |
0 |
Y |
N |
賽程詳情 |
|
10 |
hits |
int |
10 |
0 |
N |
N |
0 |
點擊數(shù) |
11 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
點贊數(shù) |
12 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
13 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
14 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表score_information (個人成績)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
score_information_id |
int |
10 |
0 |
N |
Y |
個人成績ID |
|
2 |
event_name |
varchar |
64 |
0 |
Y |
N |
賽事名稱 |
|
3 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
4 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
5 |
score_user |
int |
10 |
0 |
Y |
N |
0 |
成績用戶 |
6 |
user_name |
varchar |
64 |
0 |
Y |
N |
用戶姓名 |
|
7 |
college_name |
varchar |
64 |
0 |
Y |
N |
學院名稱 |
|
8 |
opening_date |
date |
10 |
0 |
Y |
N |
開賽日期 |
|
9 |
final_ranking |
varchar |
64 |
0 |
Y |
N |
最終名次 |
|
10 |
final_result |
int |
10 |
0 |
Y |
N |
0 |
最終成績 |
11 |
score_remarks |
text |
65535 |
0 |
Y |
N |
成績備注 |
|
12 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
13 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
14 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
表slides (輪播圖)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
slides_id |
int |
10 |
0 |
N |
Y |
輪播圖ID: |
|
2 |
title |
varchar |
64 |
0 |
Y |
N |
標題: |
|
3 |
content |
varchar |
255 |
0 |
Y |
N |
內(nèi)容: |
|
4 |
url |
varchar |
255 |
0 |
Y |
N |
鏈接: |
|
5 |
img |
varchar |
255 |
0 |
Y |
N |
輪播圖: |
|
6 |
hits |
int |
10 |
0 |
N |
N |
0 |
點擊量: |
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間: |
表track_information (賽道信息)
編號 |
名稱 |
數(shù)據(jù)類型 |
長度 |
小數(shù)位 |
允許空值 |
主鍵 |
默認值 |
說明 |
1 |
track_information_id |
int |
10 |
0 |
N |
Y |
賽道信息ID |
|
2 |
event_name |
varchar |
64 |
0 |
Y |
N |
賽事名稱 |
|
3 |
event_type |
varchar |
64 |
0 |
Y |
N |
賽事類型 |
|
4 |
name_of_referee |
varchar |
64 |
0 |
Y |
N |
裁判姓名 |
|
5 |
opening_date |
date |
10 |
0 |
Y |
N |
開賽日期 |
|
6 |
venue |
varchar |
64 |
0 |
Y |
N |
賽事場地 |
|
7 |
number_of_tracks |
varchar |
64 |
0 |
Y |
N |
賽道數(shù)量 |
|
8 |
event_cover |
varchar |
255 |
0 |
Y |
N |
賽事封面 |
|
9 |
track_allocation |
longtext |
2147483647 |
0 |
Y |
N |
賽道分配 |
|
10 |
hits |
int |
10 |
0 |
N |
N |
0 |
點擊數(shù) |
11 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
點贊數(shù) |
12 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推薦 |
13 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
創(chuàng)建時間 |
14 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
第5章 系統(tǒng)實現(xiàn)
5.1 登錄模塊的實現(xiàn)
用戶登錄的驗證將不再局限于登錄信息和權(quán)限的匹配驗證,而是另外增加了一個驗證碼,只有界面上所有的編輯框數(shù)據(jù)都準確的情況下才能實現(xiàn)登錄成功。管理員的登錄和前臺用戶登錄是一樣的過程,其主要就是利用權(quán)限字段來完成對用戶或管理員的角色識別。
用戶登錄流程圖如下所示。
圖5-1 用戶登錄流程圖
登錄界面如下圖所示。
圖5-1 登錄界面
登錄關(guān)鍵代碼如下所示。
/**
?????* 登錄
?????* @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, "賬號或密碼不正確");
????????}
}
5.2 用戶模塊的實現(xiàn)
????????5.2.1 首頁模塊的實現(xiàn)
首頁主要分別展示各個模塊的最新動態(tài),瀏覽者可以很清楚地看到不同模塊的最新更新內(nèi)容。并且系統(tǒng)首頁每個部分可以跳轉(zhuǎn)到相對應的模塊,方便瀏覽者選擇感興趣的地方。
首頁載入流程圖如下所示。
圖5-3 首頁載入流程
首頁如下圖所示。
圖5-1 首頁界面
????????5.2.2 注冊模塊的實現(xiàn)
系統(tǒng)的用戶通過自行注冊生成,在系統(tǒng)首頁點擊用戶注冊菜單,系統(tǒng)跳轉(zhuǎn)到對應的注冊頁面。點擊重置按鈕,清空所填數(shù)據(jù),點擊注冊按鈕完成注冊。
用戶注冊流程圖如下所示。
圖5-1 用戶注冊流程圖
用戶注冊界面如下圖所示。
圖5-1 注冊界面
注冊邏輯代碼如下:
/**
?????* 注冊
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關(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;
}
????????5.2.3 賽道信息模塊的實現(xiàn)
用戶執(zhí)行賽道信息,并可以操作相關(guān)內(nèi)容,例如查看,編輯。賽道信息的添加操作是建立在資料信息的列表基礎(chǔ)上,單擊查看賽道信息信息下的賽道信息鏈接;然后單擊“賽道信息”進行添加,添加成功后的信息會載入到賽道信息查詢列表中。
賽道信息流程如下圖所示。
圖5-1 賽道信息流程
賽道信息界面如下圖所示。
圖5-1賽道信息界面
????????5.2.4 賽程信息模塊的實現(xiàn)
用戶執(zhí)行賽程信息,并可以操作相關(guān)內(nèi)容,例如查看,編輯。賽程信息的添加操作是建立在賽程信息的列表基礎(chǔ)上,單擊查賽程信息下的賽程信息鏈接;然后單擊“賽程信息”進行添加,添加成功后的信息會載入到賽程信息查詢列表中。
賽程信息流程圖如下所示。
圖5-1 賽程信息流程圖
賽程信息界面如圖所示。
圖5-1 賽程信息界面
????????5.2.5 評論模塊的實現(xiàn)
用戶點擊某個賽程進入賽程詳細頁,點擊評論按鈕進入評論頁,提交評論信息,成功發(fā)布評論,管理員管理用戶的評論信息。
發(fā)布評論流程圖如下所示。
圖5-1 發(fā)布評論流程圖
發(fā)布評論界面如圖所示。
圖5-1 發(fā)布評論界面
5.3 后臺模塊的實現(xiàn)
????????5.3.1 用戶管理模塊的實現(xiàn)
用戶通過注冊了方可獲得登錄使用權(quán)限,此時選擇注冊用戶選項,系統(tǒng)就會自動轉(zhuǎn)到用戶注冊工作面,在注冊該部分信息時系統(tǒng)會自動調(diào)用add函數(shù),然后在給定的文本框中填寫有關(guān)該用戶的基礎(chǔ)信息后選擇確認即可完成注冊。檢索用戶信息,在新增用戶信息以后,在檢索工具欄中填寫對應的用戶信息,系統(tǒng)就會將該用戶有關(guān)的所有信息展示出來。
用戶管理流程圖如下所示。
圖5-1 用戶管理流程圖
用戶管理界面如下圖所示。
圖5-1 用戶管理界面
用戶管理的邏輯代碼如下:
?@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
}
????public void insert(Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
????????5.3.2 公告管理模塊的實現(xiàn)
在主頁左側(cè)菜單欄中點擊“公告管理”按鈕,再從二級目錄中點擊“新增公告”按鈕,進入到新增公告界面。在此處公告可以添加公告的標題、正文方式。
在主頁左側(cè)菜單欄中點擊“公告管理”按鈕,再從二級目錄中點擊“查詢公告”按鈕,進入到查詢公告界面。在此處公告可以查詢當前所有公告記錄。
公告展示界面如下圖所示。
圖5-1 公告展示界面
公告管理界面如下圖所示。
圖5-1 公告管理界面
公告管理邏輯代碼如下所示。
??@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
????@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();
????}
????????5.3.3 賽事報名管理模塊的實現(xiàn)
管理員執(zhí)行賽事報名管理,并可以操作相關(guān)內(nèi)容,例如添加,查看,編輯和刪除。通過單擊“添加賽事報名”,可以通過賽事報名添加界面添加詳細信息。單擊查看字段級別鏈接以查看有關(guān)所選字段級別的信息。然后單擊“提交”跳轉(zhuǎn)重返到添加頁面。添加成功后的信息會載入到賽事報名查詢列表中,管理員可進行編輯以及修改。
賽事報名管理流程圖如下所示。
圖5-1 賽事報名管理流程圖
賽事報名管理界面如下所示。
圖5-1 賽事報名管理界面
賽事報名管理邏輯代碼如下所示。
@PostMapping("/set")
@Transactional
????public Map<String, Object> set(HttpServletRequest request) throws IOException {
????????service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
????????return success(1);
}
????public Map<String,String> readConfig(HttpServletRequest request){
????????Map<String,String> map = new HashMap<>();
????????map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));
????????map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));
????????map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));
????????map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));
????????map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));
????????map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));
????????map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));
????????map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));
????????return map;
}
????public Map<String,String> readQuery(HttpServletRequest request){
????????String queryString = request.getQueryString();
????????if (queryString != null && !"".equals(queryString)) {
????????????String[] querys = queryString.split("&");
????????????Map<String, String> map = new HashMap<>();
????????????for (String query : querys) {
????????????????String[] q = query.split("=");
????????????????map.put(q[0], q[1]);
????????????}
????????????map.remove(FindConfig.PAGE);
????????????map.remove(FindConfig.SIZE);
????????????map.remove(FindConfig.LIKE);
????????????map.remove(FindConfig.ORDER_BY);
????????????map.remove(FindConfig.FIELD);
????????????map.remove(FindConfig.GROUP_BY);
????????????map.remove(FindConfig.MAX_);
????????????map.remove(FindConfig.MIN_);
????????????return map;
????????}else {
????????????return new HashMap<>();
????????}
}
????@Transactional
????public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
????????????}else {
????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
????????log.info("[{}] - 更新操作:{}",table,sql);
????????Query query1 = runCountSql(sql.toString());
????????query1.executeUpdate();
}
????public String toWhereSql(Map<String,String> query, Boolean like) {
????????if (query.size() > 0) {
????????????try {
????????????????StringBuilder sql = new StringBuilder(" WHERE ");
????????????????for (Map.Entry<String, String> entry : query.entrySet()) {
????????????????????if (entry.getKey().contains(FindConfig.MIN_)) {
????????????????????????String min = humpToLine(entry.getKey()).replace("_min", "");
????????????????????????sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
????????????????????????continue;
????????????????????}
????????????????????if (entry.getKey().contains(FindConfig.MAX_)) {
????????????????????????String max = humpToLine(entry.getKey()).replace("_max", "");
????????????????????????sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
????????????????????????continue;
????????????????????}
????????????????????if (like == true) {
????????????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");
????????????????????} else {
????????????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
????????????????????}
????????????????}
????????????????sql.delete(sql.length() - 4, sql.length());
????????????????sql.append(" ");
????????????????return sql.toString();
????????????} catch (UnsupportedEncodingException e) {
????????????????log.info("拼接sql 失?。簕}", e.getMessage());
????????????}
????????}
????????return "";
????}
????????5.3.4 賽程分類管理模塊的實現(xiàn)
管理員執(zhí)行賽程分類管理,并可以操作相關(guān)內(nèi)容,例如添加,查看,編輯和刪除。通過單擊“添加賽程分類”,可以通過賽程分類添加界面添加詳細信息。單擊查看字段級別鏈接以查看有關(guān)所選字段級別的信息。然后單擊“提交”跳轉(zhuǎn)重返到添加頁面。添加成功后的信息會載入到賽程分類查詢列表中,管理員可進行編輯以及修改。
賽程分類管理流程圖如下所示。
圖5-1 賽程分類管理流程圖
賽程分類管理如下圖所示。
圖5-1 賽程分類管理界面圖
????????5.3.5 裁判信息管理模塊的實現(xiàn)
管理員執(zhí)行裁判信息管理,并可以操作相關(guān)內(nèi)容,例如添加,查看,編輯和刪除。通過單擊“添加裁判信息”,可以通過裁判信息添加界面添加詳細信息。單擊查看字段級別鏈接以查看有關(guān)所選字段級別的信息。然后單擊“提交”跳轉(zhuǎn)重返到添加頁面。添加成功后的信息會載入到裁判信息查詢列表中,管理員可進行編輯以及修改。
裁判信息管理流程圖如下所示。
圖5-1 裁判信息管理流程圖
裁判信息管理如下圖所示。
圖5-1 裁判信息管理界面圖
第6章 系統(tǒng)測試
6.1?測試目的
在這個產(chǎn)品被投入使用前,首先需要進行試用,這是重要的環(huán)節(jié)??紤]到某個部分的開發(fā)沒有缺陷情況下,把各種模塊拼接,也有一定概率就存在矛盾。這就好比每個人都很獨特,但聚在一起就顯得雜亂無章,需要保證有默契的配合。對于測試,要看它的各項內(nèi)容是否契合的原則。若與最初定下的標準有一定程度上的出入,那么就需要做出一些調(diào)整,讓最終的大方向朝著目標前進。
測試是為了發(fā)現(xiàn)在開發(fā)的程序中所存在的問題,測試這一工作是非常艱巨的,而又是非常困難的,這一部分在程序的設(shè)計中占有很大比例,可以說一個程序的開發(fā)工作量要是占據(jù)了百分至六十,那么剩下的百分之四十必然是測試這一部分,甚至更高。
6.2?測試用例
????????6.2.1?公告測試
公告測試用例如下表所示。
表6-3 公告測試用例
測試用例編號 |
YL_03 |
|
測試用例名稱 |
系統(tǒng)使用者進行在線交流 |
|
測試用例描述 |
使用者輸入公告標題、內(nèi)容等信息 |
|
系統(tǒng)入口 |
瀏覽器 |
|
步驟 |
預期結(jié)果 |
實際結(jié)果 |
輸入完整的交流標題和內(nèi)容 |
提示“評論成功”,并進入系統(tǒng) |
預期結(jié)果 |
不輸入的交流標題和內(nèi)容 |
提示“請輸入完整” |
預期結(jié)果 |
????????6.2.2?創(chuàng)建數(shù)據(jù)測試?
在系統(tǒng)中,創(chuàng)建功能也是基礎(chǔ)功能之一,因此創(chuàng)建功能的測試很有代表性。在此章節(jié)主要列舉在創(chuàng)建時各種情況下系統(tǒng)結(jié)果的測試。由于系統(tǒng)涉及創(chuàng)建功能操作過多,因此將多處統(tǒng)稱創(chuàng)建功能。
創(chuàng)建數(shù)據(jù)用例如下表所示。
表6-5 創(chuàng)建數(shù)據(jù)測試用例
測試用例編號 |
YL_05 |
|
測試用例名稱 |
系統(tǒng)使用者進行創(chuàng)建數(shù)據(jù) |
|
測試用例描述 |
使用者輸入要創(chuàng)建的數(shù)據(jù) |
|
系統(tǒng)入口 |
瀏覽器 |
|
步驟 |
預期結(jié)果 |
實際結(jié)果 |
輸入完整并且格式正確的數(shù)據(jù) |
提示“創(chuàng)建成功”,并顯示所有數(shù)據(jù) |
預期結(jié)果 |
核心位置數(shù)據(jù)但非必要位置不輸入數(shù)據(jù) |
提示“創(chuàng)建成功”,并顯示所有數(shù)據(jù) |
預期結(jié)果 |
核心數(shù)據(jù)位置不輸入數(shù)據(jù) |
提示“創(chuàng)建失敗” |
預期結(jié)果 |
????????6.2.3?修改數(shù)據(jù)測試?
在系統(tǒng)中,修改功能是系統(tǒng)主要實現(xiàn)功能,因此修改功能的測試很有代表性。在此章節(jié)主要列舉在修改時各種情況下系統(tǒng)結(jié)果的測試。由于系統(tǒng)涉及修改功能操作過多,因此將多處數(shù)據(jù)表記錄修改和狀態(tài)修改統(tǒng)稱修改功能。
修改數(shù)據(jù)用例如下表所示。
表6-6 修改數(shù)據(jù)測試用例
測試用例編號 |
YL_06 |
|
測試用例名稱 |
系統(tǒng)使用者進行修改數(shù)據(jù) |
|
測試用例描述 |
使用者對可修改的數(shù)據(jù)項進行修改 |
|
系統(tǒng)入口 |
瀏覽器 |
|
步驟 |
預期結(jié)果 |
實際結(jié)果 |
將現(xiàn)有數(shù)據(jù)修改成正確的數(shù)據(jù) |
提示“修改成功”,并顯示所有數(shù)據(jù) |
預期結(jié)果 |
將現(xiàn)有數(shù)據(jù)修改成錯誤的數(shù)據(jù) |
提示“修改失敗” |
預期結(jié)果 |
????????6.2.4?查詢數(shù)據(jù)測試?
在系統(tǒng)中,查詢功能是使用系統(tǒng)使用最多也是最基礎(chǔ)的功能,因此查詢功能的測試很有代表性。在此章節(jié)主要列舉在查詢時各種情況下系統(tǒng)結(jié)果的測試。
查詢數(shù)據(jù)用例如下表所示。
表6-7 查詢數(shù)據(jù)測試用例
測試用例編號 |
YL_05 |
|
測試用例名稱 |
系統(tǒng)使用者進行查詢數(shù)據(jù) |
|
測試用例描述 |
全部查詢以及輸入關(guān)鍵詞查詢 |
|
系統(tǒng)入口 |
瀏覽器 |
|
步驟 |
預期結(jié)果 |
實際結(jié)果 |
界面自動查詢?nèi)?/p> |
顯示對應所有記錄 |
預期結(jié)果 |
輸入已存在且能匹配成功的關(guān)鍵字 |
顯示所查詢到的數(shù)據(jù) |
預期結(jié)果 |
輸入不存在的關(guān)鍵字 |
顯示數(shù)據(jù)界面為空 |
預期結(jié)果 |
6.3?測試結(jié)果
在本次測試的過程主要針對所有功能下的添加操作,修改操作和刪除操作,并以真實數(shù)據(jù)一一進行相關(guān)功能項目的輸入,最終能夠保證每個項目涉及的功能都是能夠正常運行,因此能夠保證本次設(shè)計的,已實現(xiàn)的功能能夠正常運行并且相關(guān)數(shù)據(jù)庫的信息也同樣保證正確。
結(jié) ?論
在系統(tǒng)的開發(fā)中,使用的是Java文件來展示前臺數(shù)據(jù),隨著前后端慢慢的徹底分離,Java這種夾帶著大量后臺代碼的方式以及慢慢在企業(yè)應用中消失,但是用于訓練還是很有用處的,熟悉以后,也可以把項目改成Vue前端項目,進行徹底的前后端項目分離。Vue如今非常的流行,這樣更方便前臺系統(tǒng)的維護和擴展。在后臺的技術(shù)使用上,為了能夠快速搭建系統(tǒng)后臺,采用了Springboot框架進行系統(tǒng)后臺的搭建。
在系統(tǒng)的開發(fā)過程中,發(fā)現(xiàn)對數(shù)據(jù)的結(jié)構(gòu)和算法的學習是十分重要的,比如樹型結(jié)構(gòu)數(shù)據(jù),遞歸方法的使用,還有Map容器等都是常用的,雖然現(xiàn)在很多的第三方的插件和方法已經(jīng)幫我們總結(jié)了很多有用的方法,方法的具體如何實現(xiàn)的有的時候還是需要進行了解的。第三方插件在使用上,雖然可以大量節(jié)約我們的開發(fā)時間,但是同樣也有一定的風險,版本的更新乃至廢棄都有發(fā)生,在項目的使用上,盡量還是進行方法的封裝,這樣以后進行項目的開發(fā)就能更好的進行維護了。
總的來說,通過這樣一個小項目,能夠從全局的方式了解一個項目的開發(fā)流程,應該能為以后的工作提供有力的支撐。
參考文獻
[1]朱焱,鄧述為.基于Java的高校運動會管理系統(tǒng)[J].電腦編程技巧與維護,2022(12):84-86.DOI:10.16184/j.cnki.comprg.2022.12.043.
[2]Yu Hao. Retraction Note: Platform Design of Sports Meeting Management System for Regular Colleges and Universities Based on B/S Structure[J]. Wireless Personal Communications,2022,128(2).
[3]陳立.校園運動會管理系統(tǒng)的設(shè)計與實現(xiàn)[J].電子制作,2022,30(13):45-48.DOI:10.16589/j.cnki.cn11-3571/tn.2022.13.009.
[4]王曼維,楊荻,李巖,及松潔.基于SpringBoot框架的智慧醫(yī)療問診系統(tǒng)設(shè)計與實現(xiàn)[J].中國醫(yī)學裝備,2022,19(03):133-136.
[5]高志平. 基于SpringBoot框架與ITIL方法的運維管理系統(tǒng)的設(shè)計與實現(xiàn)[D].華東師范大學,2021.DOI:10.27149/d.cnki.ghdsu.2021.001482.
[6]喻佳,吳丹新.基于SpringBoot的Web快速開發(fā)框架[J].電腦編程技巧與維護,2021(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.
[7]劉欣,李亮亮,牛聰. 基于Vue和SpringBoot框架的流域監(jiān)管平臺的研究和應用[C]//《中國防汛抗旱》雜志社,中國水利學會減災專業(yè)委員會,水利部防洪抗旱減災工程技術(shù)研究中心(中國水利水電科學研究院防洪抗旱減災研究中心).第十一屆防汛抗旱信息化論壇論文集.第十一屆防汛抗旱信息化論壇論文集,2021:118-122.DOI:10.26914/c.cnkihy.2021.024864.
[8]季宇杰,石云,蔣衛(wèi)詳.基于SSM框架的運動會管理系統(tǒng)的設(shè)計與實現(xiàn)[J].電子測試,2020(16):74-75.DOI:10.16520/j.cnki.1000-8519.2020.16.031.
[9]. GREE Inc.; Researchers Submit Patent Application, "Game Management Method, Game Management System, And Game Management Program For Synchronizing Game Progress At A Plurality Of Devices In Different Communication States", for Approval (USPTO 20200139242)[J]. Information Technology Newsweekly,2020.
[10]王瑩瑩,張慧.索美運動會管理系統(tǒng)在高校田徑運動會中的應用研究——以沈陽工程學院第十五屆田徑運動會為例[J].當代體育科技,2020,10(12):103-104.DOI:10.16655/j.cnki.2095-2813.2020.12.103.
[11]郝昭.大型運動會場地信息管理系統(tǒng)的設(shè)計與實現(xiàn)[J].信息與電腦(理論版),2020,32(08):48-50.
[12]. Angel Playing Cards Co. Ltd.; Patent Issued for Table Game Management System And Disposal Carton (USPTO 10,614,656)[J]. Journal of Engineering,2020.
[13]郭蘊華.高校田徑運動會信息管理系統(tǒng)的設(shè)計與實現(xiàn)[J].信息記錄材料,2019,20(03):116-117.DOI:10.16009/j.cnki.cn13-1295/tq.2019.03.076.
[14]楊豐旭.基于計算機技術(shù)的田徑運動會管理系統(tǒng)設(shè)計[J].自動化與儀器儀表,2018(02):120-122.DOI:10.14016/j.cnki.1001-9227.2018.02.120.
[15]陳少波,鐘鳴.高校運動會管理系統(tǒng)的分析與設(shè)計[J].價值工程,2018,37(01):210-213.DOI:10.14018/j.cnki.cn13-1085/n.2018.01.089.
[16]向勇. 基于B/S架構(gòu)的四川田徑學校運動會管理系統(tǒng)設(shè)計與實現(xiàn)[D].大連理工大學,2016.
[17]石巖鮑.高職院校運動會信息管理系統(tǒng)的設(shè)計與實現(xiàn)[J].科技資訊,2015,13(27):5+7.DOI:10.16661/j.cnki.1672-3791.2015.27.005.
[18]何堅東. 基于B/S架構(gòu)的高校運動會管理系統(tǒng)的設(shè)計與實現(xiàn)[D].電子科技大學,2015.文章來源:http://www.zghlxwxcb.cn/news/detail-827115.html
致 ?謝
在此論文完成之際,感謝我的指導老師。在指導老師的網(wǎng)頁設(shè)計課上,當時我學到了很多東西,這對于我實習過程中也打了一定的基礎(chǔ),而且指導老師對于我的設(shè)計也提出許多建議,并予以悉心的指導,對于一些細小的問題都耐心的指導我去完善,授予我寫論文的心得,時常的鼓勵我,另外感謝教導我完善此項目的前端同學,對于這個項目,我是邊學習邊實現(xiàn)完成的,有許多東西開始并不是很明白,但前端開發(fā)的同學非常耐心的引導我去將這個項目完成,在系統(tǒng)的后端開發(fā)中,所用到的后臺開發(fā)技術(shù)也時常會給我講解,助于我更好的將論文完成,在此對幫助到我的同學和一直予以教導的指導老師致以衷心的感謝,祝事業(yè)有成。文章來源地址http://www.zghlxwxcb.cn/news/detail-827115.html
免費領(lǐng)取項目源碼,請關(guān)注?點贊收藏并私信博主,謝謝-
免費領(lǐng)取項目源碼,請關(guān)注?點贊收藏并私信博主,謝謝-
免費領(lǐng)取項目源碼,請關(guān)注?點贊收藏并私信博主,謝謝-
到了這里,關(guān)于基于SpringBoot的高校運動會信息管理系統(tǒng)+92968(免費領(lǐng)源碼、附論文)可做計算機畢業(yè)設(shè)計JAVA、PHP、爬蟲、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!