???? 博主介紹:碩士研究生,專注于信息化技術領域開發與管理,會使用java、標準c/c++等開發語言,以及畢業項目實戰?
? ? ? ?從事基于java BS架構、CS架構、c/c++ 編程工作近16年,擁有近12年的管理工作經驗,擁有較豐富的技術架構思想、較扎實的技術功底和資深的項目管理經驗。
? ? ? ?先后擔任過技術總監、部門經理、項目經理、開發組長、java高級工程師及c++工程師等職位,在工業互聯網、國家標識解析體系、物聯網、分布式集群架構、大數據通道處理、接口開發、遠程教育、辦公OA、財務軟件(工資、記賬、決策、分析、報表統計等方面)、企業內部管理軟件(ERP、CRM等)、arggis地圖等信息化建設領域有較豐富的實戰工作經驗;擁有BS分布式架構集群、數據庫負載集群架構、大數據存儲集群架構,以及高并發分布式集群架構的設計、開發和部署實戰經驗;擁有大并發訪問、大數據存儲、即時消息等瓶頸解決方案和實戰經驗。
? ? ? ?擁有產品研發和發明專利申請相關工作經驗,完成發明專利構思、設計、編寫、申請等工作,并獲得發明專利1枚。
-----------------------------------------------------------------------------------
? ? ? 大家在畢設選題、項目升級、論文寫作,就業畢業等相關問題都可以給我留言咨詢,非常樂意幫助更多的人或加w 908925859。
相關博客地址:
csdn專業技術博客:https://blog.csdn.net/mr_lili_1986?type=blog
Iteye博客: ? ? ? ?https://www.iteye.com/blog/user/mr-lili-1986-163-com
獲取論文及源代碼:請加微908925859
基于Java+SpringMvc+Vue技術的智慧校園系統設計與實現
目錄
第一章 緒論
1.1?研究背景
1.2?研究現狀
1.3 研究內容
第二章 相關技術介紹
2.1 ?Java語言
2.2 HTML網頁技術
2.3 MySQL數據庫
2.4 Springboot 框架介紹
2.5 VueJS介紹
2.6 ElementUI介紹
第三章 系統分析
3.1 可行性分析
3.2 系統性能分析
3.3 系統功能分析
3.4?系統流程分析
第四章 系統設計
4.1 系統概要設計
4.2 系統結構設計
4.3?系統順序圖設計
4.4?系統關系圖設計
4.5 數據庫設計
第五章? 系統詳細設計
5.1 系統登錄管理
5.2 系統集成平臺
5.3? 智慧校園系統首頁
5.4? 智能排課
5.6? 學生管理
5.6? 學生成績管理
5.7? 學籍管理
5.8? 教學資源管理
5.9? 學生安全管理
5.10? 智慧校園大數據
5.11 系統管理
第六章? 部分代碼實現
6.1? Spring boot? 配置代碼
6.2 用戶管理及登錄登出代碼
6.3 Md5 加密算法代碼
6.4? 單點登錄代碼
6.5? 部分數據庫代碼
第七章 系統測試
7.1 測試定義
7.2 測試目的
7.3 測試方案
7.4 測試結論
第八章 結 論
致謝
附一、論文參考:
附二、其他案例:?
第一章 緒論
1.1?研究背景
? ? ? ? 隨著互聯網、大數據、云計算、人工智能、物聯網等新一代信息技術的飛速發展,全球教育領域正在經歷一場深刻的變革。這些技術為智慧校園的建設提供了強大的技術支撐和可能性。教育信息化已成為全球教育改革的重要趨勢,信息技術與教育領域的深度融合成為提升教育質量和效率的關鍵。傳統教育模式已無法滿足新時代對于知識獲取、創新能力培養和綜合素質提升的要求。智慧校園通過集成化、智能化的技術手段,能夠優化教育資源配置,改革教學模式,提升教育管理水平,從而創造更有利于學生全面發展、教師專業成長和學校科學管理的新型教育環境。智慧校園作為教育信息化的高級階段,其建設是這一趨勢的必然結果。
? ? ? ? 我國政府高度重視教育現代化建設,積極推動教育信息化進程。例如,《中國教育現代化2035》等政策規劃明確提出要構建網絡化、數字化、智能化、個性化的教育體系,這為智慧校園的建設提供了政策支持和指導。進入21世紀以來,我國先后實施了精品課程建設、農村中小學現代遠程教育、校校通、班班通、人人通等一系列重大工程,這些工程大大推動了國家教育信息化進程,也為智慧校園的建設奠定了堅實基礎。
? ? ? ? 智慧校園系統能夠通過對學生數據的深度挖掘和精準分析,實現個性化教學和因材施教,有效促進教育公平與質量的雙重提升。這符合新時代人才培養的需求,有助于培養更多適應未來發展需求的高素質人才。。
1.2?研究現狀
? ? ? ?目前,隨著“互聯網+”熱潮的興起,國內的部分高校正處于智慧校園的建設階段或規劃立項中。每個學校對智慧校園的認知與需求不盡相同,隨之建設的內容、側重點也或多或少存在一定的差異。因此,智慧校園建設情況較為復雜,周期也比較漫長,但每所高校建設內容大體上涵蓋了綜合信息平臺、校園網絡環境、物聯網技術等這幾方面。
高校在智慧校園的建設過程中統籌規劃、穩步推進,并取得一些階段性成果:
-
第一,高校基礎設施較為完善,目前大部分高校擁有基礎網絡環境,網絡架構規范,系統運行安全,校園內部還構建了能夠支撐智慧校園的數據平臺和相關子系統的服務器集群。
-
第二,高校擁有支撐智慧校園運行的數字化平臺,能夠提供基礎性服務,實現數據共享。
-
第三,校園內部已形成統一的信息化管理系統,基本涵蓋數字化管理應用的所有體系。
-
第四,高校應用互聯網技術,產生豐富的數字化教學應用案例和大量的數字化教學資源,進一步完善、充實了智慧學習空間。
為此,從總體上而言,我國現階段智慧校園的建設更多地傾向于對校園環境的建設,盡管擁有先進的建設理念與創新思維, 但仍處于探索階段,還需完善、深入探索內容建設與具體應用實施。
一、市場規模與增長趨勢
? ? ? ? 智慧校園市場近年來呈現出快速增長的趨勢。根據市場研究報告,智慧校園市場的規模在過去幾年中持續擴大,年復合增長率較高。預計未來幾年內,智慧校園市場規模還將繼續保持較快的增長,成為一個具有巨大潛力的市場。這主要得益于教育信息化和智能化的不斷推進,以及政策環境、技術發展趨勢和市場需求等多方面因素的共同作用。
二、技術與應用
? ? ? ? 物聯網(IoT):物聯網設備在智慧校園中得到廣泛應用,如校園環境監控、智能安防、資產管理等領域,形成全方位的感知網絡,提升校園運行效率和安全性。
大數據與人工智能:智慧校園系統通過大數據技術采集、整合、分析與挖掘學生學習行為等數據,為教師提供精準教學建議,為管理者提供科學決策依據,同時為學生提供個性化學習推薦和課程安排。人工智能技術則在智能輔導、智能評測、智能排課等方面發揮重要作用,改進教學方法,實現個性化學習體驗。
? ? ? 5G/6G通信技術:隨著5G網絡的普及以及未來6G技術的預研,智慧校園將享受到更快的傳輸速度、更低的延遲,助力高清視頻直播教學、虛擬現實(VR)/增強現實(AR)教學場景的廣泛應用。
1.3 研究內容
? ? ? 本系統的開發和設計施根據用戶的實際情況出發,對系統的需求進行了詳細的分析,然后進行系統的整體設計,最后通過測試使得系統設計的更加完整,可以實現系統中所有的功能,在開始編寫論文之前每天到圖書館借閱相關書籍, 包括java入門到精通、javaee編程、mysql數據庫書籍等編程書籍,然后針對開發管理系統,去網上查找了其他別人做好的類似系統,參照他們的設計結果,來對自己的系統進行更加詳細的系統的設計,將系統中所有的功能結果一一列舉出來,然后進行需求分析,最后對所有的功能模塊進行編碼,最后完成系統的整體測試,實現系統的正常運行。
這次編寫的論文包含了8個部分的內容,具體內容如下:
第一部分 ?緒論:文章主要從課題背景以及研究現狀綜合闡述了開發此系統的必要性。
第二部分 ?相關技術介紹:系統開發用到的各種技術都大致做出了簡介。
第三部分 ?系統分析:對系統的可行性分析以及對所有功能需求進行分析,來查看該系統是否具有開發的可能。
第四部分 ?系統設計:對系統的架構、結構、功能、模板、模板關系、數據庫進行設計。
第五部分 ?系統詳細設計與實現:對系統的功能模塊設計和數據庫設計進行詳細設計,并設計出系統界面圖形展示,描述本系統功能。
第六部分? 部分系統代碼實現:對系統核心代碼進行簡要描述。
第七部分? 系統測試:測試系統的每一個功能是否能夠正常運行,是否可以滿足人們的需求。
第八部分? 結論:對本論文系統設計與實現進行總結。
? ? ? 本項目開發設計主要基于java語言springboot后端框架vueJS前端框架技術以及mysql數據庫進行設計,來開發出一款方便實用、易維護的前后端分享的在線求職招聘系系統,并且設計的程序具有界面整潔、功能強大等特性,從全局來說,智慧校園系統的設計解決了信息零散、信息不通、智能排課、系統分散等問題,該系統的實現,可以投入到真實環境中,這樣不僅能解決以上提及的問題,讓信息管理更準則。?
第二章 相關技術介紹
2.1 ?Java語言
Java是一種面向對象的編程語言,目前由美國Oracle公司開發。自1995年上線以來,已經廣泛應用于Web開發、桌面應用開發等多個領域。Java語言的特點包括:
1、面向對象:Java提供了類、接口和繼承等面向對象的特性,支持單繼承和多接口繼承,以及動態綁定。
2、分布式:Java支持Internet應用的開發,提供了網絡應用編程接口(java.net),支持RMI(遠程方法激活)機制,適合開發分布式應用。
3、健壯性:Java的強類型機制、異常處理、垃圾自動收集等特性保證了程序的健壯性。Java的安全檢查機制也增強了其健壯性。
4、安全性:Java提供了安全機制以防惡意代碼的攻擊,包括類加載器的安全防范機制和安全管理機制。
5、體系結構中立:Java程序編譯為體系結構中立的字節碼格式,可以在任何實現Java平臺的系統中運行,適合異構網絡環境和軟件分發。
6、可移植性:Java的體系結構中立性和嚴格規定的基本數據類型長度保證了其可移植性。Java編譯器和運行環境也是用Java實現的,進一步增強了其可移植性。
7、解釋型:Java代碼首先被編譯為字節碼,然后由Java虛擬機(JVM)解釋執行。JVM適用于大多數軟件和硬件平臺,實現了Java代碼的高可移植性。
Java的發展歷程中,它最初是為了解決硬件領域的單片式計算機系統的智能化問題而開發的。隨著技術的發展,Java已經成為了全球最大的開發者專業社群之一,廣泛應用于PC、數據中心、游戲控制臺、科學超級計算機、移動電話和互聯網等多個領域。
2.2 HTML網頁技術
HTML的全稱超文本標記語言,于1990年創立的一種標記語言。它包括一系列標簽,通過這些標簽可以將網絡上的文檔格式統一,使分散的Internet資源連接為一個邏輯整體。HTML文本是由HTML命令組成的描述性文本,自1990年以來,HTML就一直被用作萬維網的信息表示語言,使用HTML描述的文件需要通過web瀏覽器顯示出效果。HTML是一種建立網頁文件的語言,通過標記式的指令(Tag),將文字,圖形、動畫、聲音、表格、鏈接、影像等內容顯示出來。。
2.3 MySQL數據庫
Mysql 經過多次的更新,功能層面已經非常的豐富和完善了,從Mysql4版本到5版本進行了比較大的更新,在商業的實際使用中取得了很好的實際應用效果。最新版本的Mysql支持對信息的壓縮,同時還能進行加密能更好的滿足對信息安全性的需求。同時經過系統的多次更新,數據庫自身的鏡像功能也得到了很大的增強,運行的流暢度和易用性方面有了不小的進步,驅動的使用和創建也更加的高效快捷。最大的變動還是進行了空間信息的顯示優化,能更加方便的在應用地圖上進行坐標的標注和運算。強大的備份功能也保證了用戶使用的過程會更加安心,同時支持的Office特性還支持用戶的自行安裝和使用。在信息的顯示形式上也進行了不小的更新,增加了兩個非常使用的顯示區,一個是信息區,對表格和文字進行了分類處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區進行信息的顯示,同時還能進行多個信息的比對,為用戶的實際使用帶來了很大的便捷。
2.4 Springboot 框架介紹
Spring ?Boot是由Pivotal團隊2013年開發提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等。
SpringBoot基于Spring4.0設計,不僅繼承了Spring框架原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩定性等問題得到了很好的解決。 [1]
SpringBoot所具備的特征有:
(1)可以創建獨立的Spring應用程序,并且基于其Maven或Gradle插件,可以創建可執行的JARs和WARs;
(2)內嵌Tomcat或Jetty等Servlet容器;
(3)提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置;
(4)盡可能自動配置Spring容器;
(5)提供準備好的特性,如指標、健康檢查和外部化配置;
(6)絕對沒有代碼生成,不需要XML配置。
2.5 VueJS介紹
Vue 是一款用于構建用戶界面的 JavaScript 框架。它基于標準 HTML、CSS 和 JavaScript 構建,并提供了一套聲明式的、組件化的編程模型,可以高效地開發用戶界面。Vue.js是一套構建用戶界面的漸進式框架,采用自底向上增量開發的設計,核心庫只關注視圖層。另一方面,Vue完全有能力驅動采用單文件組件和Vue生態系統支持的庫開發的復雜單頁應用。
Vue.js 的主要特點
1、響應式數據綁定系統。這意味著當應用程序中的數據發生變化時,頁面上相關的部分會自動更新。這種機制使得開發者可以輕松地管理和維護復雜的應用程序狀態。
2、組件化開發。Vue.js 允許開發者將頁面拆分為獨立的組件,每個組件具有自己的數據和邏輯。這種模塊化的開發方式使得代碼復用和維護更加容易,并且能夠提高開發效率。
3、Vue.js 也提供了一套強大的指令系統,用于處理 DOM 操作和頁面交互。通過使用這些指令,開發者可以輕松地實現諸如條件渲染、循環渲染、事件處理等功能。
4、豐富的插件生態系統。開發者可以使用各種插件來擴展 Vue.js 的功能,例如路由、狀態管理、表單驗證等。這使得開發者可以根據自己的需求選擇合適的插件,從而更好地滿足項目的要求。
2.6 ElementUI介紹
Element-UI 是由餓了么前端團隊推出的一款基于 Vue.js 2.0 的桌面端 UI 組件庫。它為開發者提供了一套完整、易用、美觀的組件解決方案,極大地提升了前端開發的效率和質量。本文將詳細介紹 Element-UI 的特點、安裝使用、核心組件及其應用場景。
一、Element-UI的特點
1. 完整性
Element-UI 提供了從基礎控件到復雜組件的一整套 UI 解決方案,包括表單、表格、對話框、消息提示等。這些組件覆蓋了常見的 UI 場景,開發者可以直接使用,減少了重復造輪子的工作。
2. 易用性
Element-UI 的 API 設計簡單直觀,文檔詳細豐富,開發者可以很快上手。它與 Vue.js 無縫結合,利用 Vue 的特性(如數據綁定、組件化)使開發更加便捷。
3. 美觀性
Element-UI 的設計風格簡潔優雅,符合現代 UI 設計趨勢。它提供了多種主題配置,開發者可以根據項目需求進行定制。
4. 可擴展性
Element-UI 提供了豐富的鉤子函數和事件,可以方便地進行二次開發和擴展。開發者可以基于 Element-UI 的組件進行自定義開發,滿足特定業務需求。
針對本文中設計的在線求職招聘系統在實際的實現過程中,最終選擇Mysql數據庫的主要原因在于在企業的應用系統應用及開發的過程中會存在大量的數據庫比較頻繁的操作,而且數據的安全性要求也是非常的高,最重要的是Mysql5.8為開源免費的數據庫,在行業中應用比較廣泛。綜合這些因素,最終選擇安全性系數比較高的Mysql來對個人博客管理系統后臺數據進行存儲操作[。
第三章 系統分析
3.1 可行性分析
? ? 在系統開發之初要進行系統可行分析,這樣做的目的就是使用最小成本解決最大問題,一旦程序開發滿足用戶需要,帶來的好處也是很多的。下面我們將從技術上、操作上、經濟上等方面來考慮這個系統到底值不值得開發。
3.1.1 技術可行性
? ? ? 本系統基于JAVA編程語言,采用springboot后端框架、vueJS前端框架技術,以及對mysql數據庫進行開發設計,作為計算機專業學生,在學校期間就接觸到許多關于編程方面的知識,當然也包括各種編程軟件,對他們的了解度也比較系統,所以技術開發上面還是有一定熟悉和把握。
3.1.2 經濟可行性
? ? 我在設計該系統的時候主要是從節約成本出發,然后進行具體的系統的設計,在系統的設計過程中由于采用的所有工具以及技術支持全部都是免費的,因此不需要有任何的成本就可以進行該系統的設計。所用到的所有資源都是免費的,只要有網絡就可以進行下載使用,不需要支付相應的費用,因此該項目在經濟方面是完全可以實行的。
3.1.3 操作可行性
? ? ? 本人自己就是學生,程序開發經驗不足,在界面設計上面不會設計太復雜,要講究簡單好看,操作上要方便,不能讓用戶覺得不流暢。用戶一旦進入操作界面,界面上就會有相應提示,跟著操作提示就可以找到對應的功能操作模塊,對于用戶來說免培訓就能使用。
從上面幾個部分的可行性分析得出,這次開發的在線學習交流平臺在開發上面沒有什么大問題,值得開發。
3.2 系統性能分析
(1)系統響應效率:頁面響應時問應該在3秒以內,最長不能超過4秒,并支持至少10000人同時在線所有系統。
(2)界面簡潔清晰:系統界面要求簡單明了,容易操作,符合用戶操作習慣。
(3)儲存性高:因為本系統中有很多的信息需要存儲,因此對于系統的存儲量有很大的要求,需要有一個強大的數據庫的支持才能確保所有的信息都能安全穩定的進行存儲。
(4)易學性:該系統在操作上必須簡單好上手,沒有很多復雜的操作,只需要簡單的進行學習就能操作該系統。
(5)穩定性需求:開發的在線求職招聘系統要求運行穩定,運行過程中無界面不清楚、字體模糊、不能正常操作等現象。
3.3 系統功能分析
? ? ? ? 在線學習交流平臺主要包括以下幾大功能模塊,即用戶管理、菜單管理、權限管理、首頁、文章管理、文章分類管理、標簽管理、評論管理、評論審核、個人中心、后臺管理等功能模板。
其中,
(1)用戶管理模塊:包括系統管理員和一般用戶。系統中的核心用戶是系統管理員,管理員登錄后,通過管理員菜單來管理系統。其中,系統管理員可以對本系統所有功能進行動態管理。一般用戶登錄后可以對個人信息進行修改,管理自己的招聘信息、應聘信息、留言等。
(2)菜單管理:對本系統的所有菜單進行動態管理,實現系統的低偶合設計。
(3)權限管理:通過角色管理、角色權限動態分配等操作實現本系統用戶的權限動態控制,實現不同用戶、不同角色、不同權限。同時,個人只能管理自己的相應信息。從而保障本系統的安全、本系統的用戶數據安全,提供系統健壯性。
(4)文章管理模塊:對文章進行管理,每個人只能管理自己的文章,管理員可以對所有文章進行管理。
(5)文章分類管理:對文章的分類進行管理,由管理員統一對文章分類進行管理。
(6)標簽管理模塊:文章可以添加標簽,由管理員統一對文章標簽進行管理。
(7)評論管理模塊:增加用戶可以對文章進行評論、點贊、打賞等功能。
(8)評論審核管理模塊:對評論進行手動或自動過濾審核功能。當設置為自動審核時,平臺對敏感詞進行做加*處理。
3.4?系統流程分析
3.4.1 登錄流程
登錄模塊主要滿足管理員以及用戶的權限登錄,用戶登錄流程圖如圖3-5所示。
??
圖3-5 登錄流程圖
3.4.2 注冊流程
? ? 未有賬號的用戶可進入注冊界面進行注冊操作,用戶注冊流程圖如圖3-6所示。
??
圖3-6 注冊流程圖
3.4.3 添加信息流程
? ? 用戶在添加信息時,信息編號自動生成,系統會對添加的信息進行驗證,驗證通過則添加至數據庫,添加信息成功,反之添加失敗。添加信息流程如圖3-7所示。
??
圖3-7 添加信息流程圖
3.4.4 刪除信息流程
? ? 用戶可選擇要刪除的信息進行信息刪除操作,在刪除信息時系統提示是否確定刪除信息,是則刪除信息成功,系統數據庫將信息進行刪除。刪除信息流程圖如圖3-8所示。
??
圖3-8刪除信息流程圖
第四章 系統設計
4.1 系統概要設計
? ? ?系統采用B/S架構,通過Web瀏覽器進行訪問和操作。系統主要為后臺管理部分:
為管理員提供管理界面,實現用戶管理、智能排課管理、老師管理、學生管理、學籍管理、教學資源管理、學生安全管理、智慧校園大數據平臺等功能。。
4.2 系統結構設計
? ? 整個系統是由多個功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進行逐個的功能設計,使得每一個模塊都有相對應的功能設計,然后進行系統整體的設計。
本系統結構圖如圖4-2所示。?
4.3?系統順序圖設計
??? 登錄模塊主要滿足了管理員以及用戶的權限登錄,登錄模塊順序圖如圖4-3所示。
4.3.2?添加信息模塊順序圖
??? 管理員以及用戶登錄后均可進行添加信息操作,添加信息模塊順序圖如圖4-4所示。
4.4?系統關系圖設計
本系統各類之間關系圖如圖4-2所示。
4.5 數據庫設計
? ? ? ?一個好的數據庫可以關系到程序開發的優劣,數據庫設計離不開表結構的設計,還有表與表之間的聯系,以及系統開發需要設計的數據表內容等信息。在進行數據庫設計期間,要結合實際情況來對數據庫進行針對性的開發設計[12]。
4.4.1 數據庫E-R圖設計
本系統采用的是mysql數據庫,數據存儲快,因為個人博客管理系統,主要的就是對信息的管理,信息內容比較多,這就需要好好的設計一個好的數據庫,分類要清楚,不能添加信息的時候,造成信息太過混亂,設計好的數據庫首先就需要先把各個實體之間的關系表達明確,系統的E-R圖如下圖所示:?
4.4.2 邏輯結構設計
? ? ? ?邏輯結構設計是把概念結構設計階段畫好的數據庫ER圖轉換為關系模型。該系統的關系模型的邏輯結構是由主要一下關系模式組成,具體的關系模式如下:
(1)用戶信息(主鍵id、用戶id、用戶姓名、表名、角色id、角色名、密碼、新增時間、過期時間)
(2)角色信息(主鍵id、角色名稱、角色描述、新增時間、過期時間)
(3)角色權限信息(主鍵id、角色id、角色名稱、關聯的菜單id、關聯的菜單名、新增時間、過期時間)
(4)菜單信息(主鍵id、菜單名稱、菜單訪問路徑、菜單描述、上級菜單id、新增時間、過期時間)
(5)文章信息(主鍵id、創建日期、文章名稱、文章內容描述、文章類型、文章標簽、文章點贊數、文章訪問數、父節點id、上傳用戶id、上傳用戶姓名、狀態、文章審核狀態、審核人id、審核人)
(6)評論信息(主鍵id、創建日期、文章id、文章名、評論人id、評論人姓名、評論內容、是否審核、評論時間等)
第五章? 系統詳細設計
5.1 系統登錄管理
5.2 系統集成平臺
5.3? 智慧校園系統首頁
5.4? 智能排課
5.5? 老師管理
5.6? 學生管理
5.6? 學生成績管理
5.7? 學籍管理
5.8? 教學資源管理
5.9? 學生安全管理
5.10? 智慧校園大數據
5.11 系統管理
第六章? 部分代碼實現
6.1? Spring boot? 配置代碼
# Tomcat
server:tomcat:uri-encoding: UTF-8port: 8080servlet:context-path: /springboot0t8qlspring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/springboot0t8ql?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8username: rootpassword: 123456# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springboot0t8ql
# username: sa
# password: 123456servlet:multipart:max-file-size: 10MBmax-request-size: 10MBresources:static-locations: classpath:/testStatic/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/#mybatis
mybatis-plus:mapper-locations: classpath*:mapper/*.xml#實體掃描,多個package用逗號或者分號分隔typeAliasesPackage: com.entityglobal-config:#主鍵類型 0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";id-type: 1#字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"field-strategy: 2#駝峰下劃線轉換db-column-underline: true#刷新mapper 調試神器refresh-mapper: true#邏輯刪除配置logic-delete-value: -1logic-not-delete-value: 0#自定義SQL注入器sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjectorconfiguration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: true#springboot 項目mybatis plus 設置 jdbcTypeForNull (oracle數據庫需配置JdbcType.NULL, 默認是Other)
jdbc-type-for-null: 'null'
6.2 用戶管理及登錄登出代碼
/*** 用戶賬戶:用于保存用戶登錄信息(User)表控制層*/
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {/*** 服務對象*/@Autowiredpublic UserController(UserService service) {setService(service);}/*** Token服務*/@Autowiredprivate AccessTokenService tokenService;@Autowiredprivate UserGroupService userGroupService;/*** 注冊* @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);}/*** 找回密碼* @param form* @return*/@PostMapping("forget_password")public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {JSONObject ret = new JSONObject();String username = form.getUsername();String code = form.getCode();String password = form.getPassword();// 判斷條件if(code == null || code.length() == 0){return error(30000, "驗證碼不能為空");}if(username == null || username.length() == 0){return error(30000, "用戶名不能為空");}if(password == null || password.length() == 0){return error(30000, "密碼不能為空");}// 查詢用戶Map<String, String> query = new HashMap<>();query.put("username",username);Query select = service.select(query, service.readConfig(request));List list = select.getResultList();if (list.size() > 0) {User o = (User) list.get(0);JSONObject query2 = new JSONObject();JSONObject form2 = new JSONObject();// 修改用戶密碼query2.put("user_id",o.getUserId());form2.put("password",service.encryption(password));service.update(query, service.readConfig(request), form2);return success(1);}return error(70000,"用戶不存在");}/*** 登錄* @param data* @param httpServletRequest* @return*/@PostMapping("login")public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {log.info("[執行登錄接口]");String username = data.get("username");String email = data.get("email");String phone = data.get("phone");String password = data.get("password");List resultList = null;Map<String, String> map = new HashMap<>();if(username != null && "".equals(username) == false){map.put("username", username);resultList = service.select(map, new HashMap<>()).getResultList();}else if(email != null && "".equals(email) == false){map.put("email", email);resultList = service.select(map, new HashMap<>()).getResultList();}else if(phone != null && "".equals(phone) == false){map.put("phone", phone);resultList = service.select(map, new HashMap<>()).getResultList();}else{return error(30000, "賬號或密碼不能為空");}if (resultList == null || password == null) {return error(30000, "賬號或密碼不能為空");}//判斷是否有這個用戶if (resultList.size()<=0){return error(30000,"用戶不存在");}User byUsername = (User) resultList.get(0);Map<String, String> groupMap = new HashMap<>();groupMap.put("name",byUsername.getUserGroup());List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();if (groupList.size()<1){return error(30000,"用戶組不存在");}UserGroup userGroup = (UserGroup) groupList.get(0);//查詢用戶審核狀態if (!StringUtils.isEmpty(userGroup.getSourceTable())){String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();String res = String.valueOf(service.runCountSql(sql).getSingleResult());if (res==null){return error(30000,"用戶不存在");}if (!res.equals("已通過")){return error(30000,"該用戶審核未通過");}}//查詢用戶狀態if (byUsername.getState()!=1){return error(30000,"用戶非可用狀態,不能登錄");}String md5password = service.encryption(password);if (byUsername.getPassword().equals(md5password)) {// 存儲Token到數據庫AccessToken accessToken = new AccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);// 返回用戶信息JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token", accessToken.getToken());JSONObject ret = new JSONObject();ret.put("obj",user);return success(ret);} else {return error(30000, "賬號或密碼不正確");}}/*** 修改密碼* @param data* @param request* @return*/@PostMapping("change_password")public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){// 根據Token獲取UserIdString token = request.getHeader("x-auth-token");Integer userId = tokenGetUserId(token);// 根據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,"密碼修改失敗!");}/*** 登錄態* @param request* @return*/@GetMapping("state")public Map<String, Object> state(HttpServletRequest request) {JSONObject ret = new JSONObject();// 獲取狀態String token = request.getHeader("x-auth-token");// 根據登錄態獲取用戶IDInteger userId = tokenGetUserId(token);log.info("[返回userId] {}",userId);if(userId == null || userId == 0){return error(10000,"用戶未登錄!");}// 根據用戶ID獲取用戶Map<String,String> query = new HashMap<>();query.put("user_id" ,String.valueOf(userId));// 根據用戶ID獲取Query select = service.select(query,service.readConfig(request));List resultList = select.getResultList();if (resultList.size() > 0) {JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));user.put("token",token);ret.put("obj",user);return success(ret);} else {return error(10000,"用戶未登錄!");}}/*** 登錄態* @param request* @return*/@GetMapping("quit")public Map<String, Object> quit(HttpServletRequest request) {String token = request.getHeader("x-auth-token");JSONObject ret = new JSONObject();Map<String, String> query = new HashMap<>(16);query.put("token", token);try{tokenService.delete(query,service.readConfig(request));}catch (Exception e){e.printStackTrace();}return success("退出登錄成功!");}/*** 獲取登錄用戶ID* @param token* @return*/public Integer tokenGetUserId(String token) {log.info("[獲取的token] {}",token);// 根據登錄態獲取用戶IDif(token == null || "".equals(token)){return 0;}Map<String, String> query = new HashMap<>(16);query.put("token", token);AccessToken byToken = tokenService.findOne(query);if(byToken == null){return 0;}return byToken.getUser_id();}/*** 重寫add* @return*/@PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {Map<String,Object> map = service.readBody(request.getReader());map.put("password",service.encryption(String.valueOf(map.get("password"))));service.insert(map);return success(1);}}
6.3 Md5 加密算法代碼
public class MD5Utils {private static final Logger logger = LoggerFactory.getLogger(MD5Utils.class);// 全局數組private final static String[] strDigits = {"0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};/*** 16進制字符*/private final static char hexdigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'a', 'b', 'c', 'd', 'e', 'f'};/*** 對文件全文生成MD5摘要** @param file 要加密的文件* @return MD5摘要碼*/public static String getMD5ForFile(String filePath) {FileInputStream fis = null;MessageDigest md = null;try {md = MessageDigest.getInstance("MD5");File file = new File(filePath);if (!file.exists()) {return "";}fis = new FileInputStream(file);byte[] buffer = new byte[4096];int length = -1;while ((length = fis.read(buffer)) != -1) {md.update(buffer, 0, length);}byte[] b = md.digest();return byteToHexString(b);} catch (Exception ex) {logger.error("獲取MD5信息發生異常!" + ex.toString());return null;} finally {try {if (null != fis) {fis.close();}} catch (IOException e) {logger.error("獲取MD5信息發生異常!" + e.toString());}}}/*** 把byte[]數組轉換成十六進制字符串表示形式** @param tmp 要轉換的byte[]* @return 十六進制字符串表示形式*/private static String byteToHexString(byte[] tmp) {String s;char str[] = new char[16 * 2];int k = 0;for (int i = 0; i < 16; i++) {byte byte0 = tmp[i];str[k++] = hexdigits[byte0 >>> 4 & 0xf];str[k++] = hexdigits[byte0 & 0xf];}s = new String(str);return s;}// 返回形式為數字跟字符串private static String byteToArrayString(byte bByte) {int iRet = bByte;// System.out.println("iRet="+iRet);if (iRet < 0) {iRet += 256;}int iD1 = iRet / 16;int iD2 = iRet % 16;return strDigits[iD1] + strDigits[iD2];}// 返回形式只為數字private static String byteToNum(byte bByte) {int iRet = bByte;System.out.println("iRet1=" + iRet);if (iRet < 0) {iRet += 256;}return String.valueOf(iRet);}// 轉換字節數組為16進制字串private static String byteToString(byte[] bByte) {StringBuffer sBuffer = new StringBuffer();for (int i = 0; i < bByte.length; i++) {sBuffer.append(byteToArrayString(bByte[i]));}return sBuffer.toString();}public static String GetMD5Code(String strObj) {if (StringUtils.isEmpty(strObj)) {return "";}String resultString = null;try {resultString = new String(strObj);MessageDigest md = MessageDigest.getInstance("MD5");// md.digest() 該函數返回值為存放哈希值結果的byte數組resultString = byteToString(md.digest(strObj.getBytes()));} catch (NoSuchAlgorithmException ex) {ex.printStackTrace();}return resultString;}}
6.4? 單點登錄代碼
// 身份驗證服務(Auth Server)
@RestController
public class AuthController {// 模擬用戶登錄@PostMapping("/login")public String login(@RequestParam String username, @RequestParam String password) {// 實際應用中應進行用戶名密碼驗證if ("user".equals(username) && "password".equals(password)) {// 生成JWT TokenString token = "Bearer " + Jwts.builder().setSubject(username).setExpiration(new Date(System.currentTimeMillis() + 3600000)).signWith(SignatureAlgorithm.HS512, "SecretKey").compact();return token;}return "Login failed";}
}// 資源服務(Resource Server)
@RestController
public class ResourceController {@GetMapping("/resource")public String getResource(@RequestHeader("Authorization") String token) {// 驗證JWT TokenClaims claims = Jwts.parser().setSigningKey("SecretKey").parseClaimsJws(token.replace("Bearer ", "")).getBody();String user = claims.getSubject();// 驗證Token是否有效if (user != null) {return "Resource for " + user;}return "Invalid token";}
}// 使用JWT保護資源需要添加Security依賴,并配置Security配置類
// 以上代碼僅為示例,實際應用中需要更多安全措施,如HTTPS、密鑰管理等
6.5? 部分數據庫代碼
第七章 系統測試
一個系統設計好后,就會進入測試階段,測試的目標是檢驗設計好的網站是否可以正常無誤的運行,盡可能的發現網站的問題,已使后期網站投入使用后網站盡少出錯。
7.1 測試定義
系統測試主要是判斷系統是否可以正常運行,功能模塊是否可以實現操作。程序代碼中是否有錯誤出現。測試程序是開發過程中的一個主要問題。就算系統完成的再好,再進行程序測試時也會也會發現一個重來沒有被發現的錯誤信息。
測試不僅是系統開發的開始,而且應該貫穿整個系統的整個生命周期。評估系統質量的方法不局限于系統編碼和過程,應該與軟件設計工作和歷史需求分析密切相關。系統錯誤,不一定是代碼錯誤,可能是階段的設計摘要和設計細節存在問題,問題也可能出現在需求分析階段[13]。從實際情況來看,最初的問題很可能是一個小錯誤,根據按鈕的原理,按鈕后的按鈕位錯將是所有位錯。該系統的原因也同樣適用,隨著后續的開發工作,誤差將越來越嚴重。因此就應該對系統進行測試,在一開始就發現系統中存在的問題,就能保證以后系統能夠正常穩定的運行。在測試系統中,開發人員應該站在用戶的角度來處理測試工作,而現在主要的測試方法是黑盒測試。測試的目的可以概括為以下幾點:首先,用戶界面和用戶需求是一致的,設置界面和設計風格統一;第二,創新設計接口規范設計標準,具有獨特的審美特征;最后,人類傳統的接口以滿足審美需求,不能盲目地追求一種獨特的,合理的規劃布局,符合審美標準。
7.2 測試目的
測試的目的在于要對系統的穩定和可操作性能進行對照檢查。對于軟件的開發利用最終的目的在最后的測試和試用,這是一個不可缺少的重要環節。對于軟件開發者而言,在對每一個單獨的功能進行編排時候,都要有單獨的測試,并通過測試階段才可以研發多個功能性軟件,這樣既縮短了研發時間,也可以在的單個的早期測試中發現問題,以免融合后的軟件,在查找問題時就很難快速解決或者急速定位問題。
本系統開發設計完成后,需要對其進行系統測試,測試的主要目的就是發現并找出系統中存在的問題,并及時的進行解決,確保系統可以正常穩定的運行下去,在進行系統測試的時候,在一定要非常的認真、仔細,切記不能粗心,不能放過一個漏洞,測試時候一定不要著急,要按照之前指定好的測試步驟一步一步進行,并且將測試的結果進行詳細的記錄,我們在進行測試的時候做好選擇自動化的測試,這樣既可以節省時間而且也能確保測試的準確性,如果采用人工測試的方法就不會這么的方便,由于人工測試有很多不確定的因素,在測試過程中很可能會出現一些問題,用機器測試就不會出現任何的問題,而且機器不會疲憊會一直二等工作下去。在測試的時候一定要非常專注,時刻關注著測試的結果,一但發現異常及時進行修改,最后,測試完之后的文檔應該保存下來,方便以后測試時用到。系統測試的方法有很多,對于本個人博客管理系統的測試,我們使用了測試用得最多的黑盒測試方法來對該系統進行測試。
7.3 測試方案
對測試計劃的把握是測試方案的重中之重。所有的技術難點應該都被包含在這個測試計劃之中。而且我們要保證能與目標形成一致性,以至于能夠測試出一些主要存在的錯誤和一些錯誤的漏洞。可以完美解決這些問題就只有白盒測試或者黑盒測試[14]。
構造測試是白盒測試的另一個名字,了解與分析程序的結構以及性能功用的,從而我們可以得到最終想要的結果并且觀察出是不是每一條程序都能得到。
性能測試是黑盒測試別稱,程序本身的運作通過程序的進程來觀察,主要是看一下程序是不是能夠像我們預期的目標那樣發展,看一看我們的程序最終能不能完整的得到我們最后想要的功能和儲存想得到的數據,到最后看一下我們的這個程序完整性能不能達到要求。
(1)模塊測試
單元測試就是模塊測試,顧名思義就是測試每個模塊所承擔的功能是否能夠實現,這個測試就是為了找出代碼在實際的設計運轉中某一些小的程序所出現的偏差,很好地改正這些錯誤,就說明我們模塊測試進行很成功過。
(2)集成測試:
集成測試就是對系統的測試以及對他子系統的一些性能測試,他檢查的事系統的包裝程序信息。找出其中的問題。他的優勢主要有以下這幾點:
軟件耗費較少。
可以提前發現端口的錯誤。
更好的地位系統中錯誤的位置。
從底部往上面進行的方案針對于偏下層的結構,而中間的結構就采用折中的方法。
(3)驗收測試:
終于到了結尾性的工作了。就是為了給用戶看一下我們的系統功能是否達到了預期的效果。我采用了性能測試也就是黑盒測試對系統進行測試。
其結果是分別是:
有一定的差異在用戶的需求。
再者就是結果與之差不了多少。
到了最后了,我們發現的問題都是與用戶的需求存在一定的關聯。
1、登錄測試
測試點:登錄
測試的目標:輸入賬號密碼以及驗證碼后系統會自動進行驗證是否正確。
所用的環境:Windows10和IE瀏覽器。
輸入信息:用戶名、密碼。
步驟:
(1)首先我們打來瀏覽器,進入該系統的登錄界面。
(2)在進入頁面登錄部分以后可以進行對用戶名、密碼進行測試,具體測試輸入情況如下表6.1所示。
表6.1 登錄測試?
序號 | 用戶名輸入 | 密碼輸入 | 期望結果 |
1 | 15546219225 | 1244566 | 提示“用戶名或者密碼錯誤,或賬號未經審核” |
2 | aaaaa | 123456 | 提示“用戶名或密碼錯誤,或者賬號未經審核” |
3 | 15546219225 | hangguowei | 登陸成功 |
7.4 測試結論
智慧校園平臺按設計要求基本都可以達到,此系統具有完整的軟件功能,良好的用戶界面,能夠正確的處理錯誤信息,而且能夠準確的提出錯誤的種類。但是系統測試時也出現了一些系統的不足和缺陷,所以在今后的日子里我會對其視覺上的不足作出修改,其次系統的代碼和數據庫出現了非常多的冗余現象,都是因為對編程技術的應用不夠熟練,在日后我會加強自己的自身學習和能力,減少這樣的冗余現象。
經過對上述的測試結果分析,本系統無論是在技術方面,還是操作方面,還是經濟方面都是完全可以實行的,并且經過測試,該系統操作簡單,所有的功能都可以實現,因此該系統可以滿足人們的使用需求,值得被推廣。
總體說來,軟件通過測試。?
第八章 結 論
本文研究了在線學習交流平臺系統的設計與實現,在文章開端首先對個研究背景、研究現狀和研究內容作了簡單的介紹,然后通過系統分析,引申出本系統研究的主要內容。
通過對java語言、springboot框架和mysql數據庫的簡介,系統的說明了在線學習交流平臺的設計與實現的可行性,本文結論及研究成果如下:實現了java與mysql相結合構建的在線學習交流平臺,通過本次對在線學習交流平臺的設計與實現的研究與實現,我感觸到學習一門新技術,最重要的是實踐,只有多動手才能盡快掌握它,一個系統的開發,經驗是最重要的,經驗不足,就難免會有許多考慮不周之處。要想吸引更多的用戶,系統的界面必須要美觀、有特色、友好,功能要健全。
由于在此之前對于java知識并不了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規范、數據庫連接有問題已經無法實現參數的傳遞等等,不過通過我不斷的查閱相關的資料,以及向老師同學請教,最后出現的所有的問題都得到了解決,通過這次的系統開發,我學到了很多的知識,也明白了自己在哪些方面有不足的地方,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數據處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業設計活動中,我不斷的提高了自己,也得到了寶貴的經驗,我相信這些對我以后的發展都會有很大幫助。
通過這次對在線學習交流平臺的開發,讓我學到了更多的知識,同時通過這次系統的設計也讓我明白了自己在哪方面有不足,以后加以學習爭取可以開發住更多有用的適用的系統軟件,本次系統的設計提高了我的編程水平,為了我今后系統的開發打下了結實的基礎。?
參考文獻
[1] 高永強.基于深度學習的個性化推薦研究[J].工業控制計算機,2021,34(10):90-92.
[2] 張安淇,李元旭.互聯網知識共享平臺信息過載效應與弱化機制——基于知乎的案例研究[J].
情報科學,2020,38(01):24-29+41.DOI:10.13833/j.issn.1007-7634.2020.01.004.
[3] Xiaoqin Shelley Zhang,Xiaojie Zhang,Pavan Kaparthi. Combat Information Overload Problem in
Social Networks With Intelligent Information-Sharing and Response Mechanisms[J]. IEEE
Transactions on Computational Social Systems,2020.
[4] 劉馨蔚.“它經濟”升溫 寵物吸金強勁[J].中國對外貿易,2021(04):54-55.
[5] 狗民網.2020 年中國寵物行業白皮書.
[6] Lou Feng,Ning Xin. E-Commerce Recommendation Technology Based on Collaborative
Filtering Algorithm and Mobile Cloud Computing[J]. Wireless Communications and Mobile
Computing,2022,2022.
[7] Goldberg D, Nichols D.A, Oki B.M, et al. Using collaborative filtering to weave an information
tapestry[J]. Communications of The ACM, 1992, 35(12): 61-70.
[8] Konstan J.A, Miller B.N, Maltz D.A, et al. GroupLens: Applying collaborative filtering to
Usenet news[J]. Communications of The ACM, 1997, 40(3): 77-87.
[9] Venture Beat [EB/OB]. htp:/venturebeat.comn/ [2009-04].
[10] He X, Deng K, Wang X, et al. LightGCN: Simplifying and Powering Graph Convolution
Network for Recommendation[C]. In ACM 2020.
[11] Wang Hulong,Shen Zesheng,Jiang Shuzhen,Sun Guang,Zhang Ren Jie. User-based
Collaborative Filtering Algorithm Design and Implementation[J]. Journal of Physics: Conference
Series,2021,1757(1).0
[12] 鄧園園,吳美香,潘家輝.基于物品的改進協同過濾算法及應用[].計算機系統應用,
2019,28(01):184-189.
[13] Jena, Kalyan Kumar,Bhoi, Sourav Kumar,Mallick, Chittaranjan,Jena, Soumya Ranjan,Kumar,
Raghvendra,Long, Hoang Viet,Son, Nguyen Thi Kim. Neural model based collaborative filtering for
movie recommendation system[J]. International Journal of Information
Technology,2022(prepublish).
[14] Zhang Kaihan,Wang Zhiqiang,Liang Jiye,Zhao Xingwang. A Bayesian matrix factorization
model for dynamic user embedding in recommender system[J]. Frontiers of Computer
Science,2022,16(5).
[15] 吳青洋,程旭,鄧程鵬,丁浩軒,張宏,林勝海.基于聚類和獎懲用戶模型的協同過濾算法[J].計
算機系統應用,2020,29(08):135-143.DOI:10.15888/j.cnki.csa.007491.
[16] 陸文超,崔海朋.一種基于融合自編碼與神經網絡的協同過濾算法[J].中國水運(下半
月),2022,22(03):18-20.
[17] 王寧,沈正一,崔德龍,劉晴瑞.結合協同過濾與隱語義模型的視頻推薦策略[J].湖南工程學院
學報(自然科學版),2021,31(04):40-43.DOI:10.15987/j.cnki.hgbjbz.2021.04.007.
[18] Thomas N. Kipf and Max Welling. Semi-Supervised Classification with Graph Convolutional
Networks. In ICLR.2017
[19] 張術梅.MVC架構下網站的設計與實現思考[J].信息記錄材
料,2022,23(01):92-94.DOI:10.16009/j.cnki.cn13-1295/tq.2022.01.036.
[20] R.Karthik,T.S.Sridhar,R.Sriram. Digital Food ordering system based on Spring Framework[J].
International Journal of Recent Technology and Engineering (IJRTE),2020,8(6).
[21] 曹華山.SSM 框架在 Web 應用開發中的設計與實現[J].無線互聯科技,2021,18(11):108-109.
[22] 胡世洋,賴森林.淺論SSM框架在構建“微農”信息服務中的應用[J].電腦知識與技
術,2021,17(34):4-6.DOI:10.14004/j.cnki.ckt.2021.3589.
[23] Di Lu,Yuping Qiu,Chun Qian,Xi Wang,Wei Tan. Design of Campus Resource Sharing
Platform based on SSM Framework[J]. IOP Conference Series: Materials Science and
Engineering,2019,490(6).
[24] Xiaojie Guo,Tingmei Wang*. Design and Implementation of Graduate Information
Management System Based on SSM Framework[J]. Journal of Simulation,2020,8(2).
[25] Feng Leijie,Mu Zehui. Research on Mobile Point Exchange System Based on Collaborative
Filtering Recommendation Algorithm[J]. International Journal of Advanced Network, Monitoring
and Controls,2021,6(2).
[26] 賴佳星.基于Bootstrap和JavaScript技術設計與實現簡易Web計算器[J].科技資
訊,2022,20(01):13-16.DOI:10.16661/j.cnki.1672-3791.2110-5042-2874.
[27] Haokun Qi, Qingyang Feng , Junyan Zhang. Technology and analysis of JSP-based
merchandising system[J]. Scientific Journal of Intelligent Systems Research,2022,4(2).
[28] 周公平.基于jQuery框架的Web前端開發設計方法研究[J].信息與電腦(理論
版),2022,34(05):128-130.
[29] Liu Hongqing,Liu Yan. Research on Personalized Blog Customization System Based on
AJAX[C]//.Proceedings of 2018 5th International Conference on Electrical & Electronics
Engineering and Computer Science(ICEEECS 2018).,2018:136-139.
[30] 朱克武.Ajax技術在就業網站用戶信息管理中的應用[J].電腦知識與技
術,2021,17(33):9-11.DOI:10.14004/j.cnki.ckt.2021.3303.?
致謝
在畢業設計的過程中,通過對在線學習交流平臺的設計,我受益匪淺。在這段時間里,大學四年所學的知識得到了綜合的運用,掌握了軟件開發的基本方法,了解了當今軟件開發的一些新技術。
本設計是在A老師的悉心指導和熱情幫助下完成的。無論在理論上還是在實踐中,老師都給予我很大的幫助,每當遇到困難時,老師總是耐心的給我講解,老師認真負責的工作態度,讓我敬佩。值此論文完成之際,特別向指導老師表示衷心的感謝和崇高的敬意,謝謝他細心而又耐心地輔導,使得我得以順利的完成畢業設計開發工作,同時也要感謝其他幫助過我的老師和同學,他們在我完成設計過程中給予我很大的幫助,在此一并表示感謝。
在論文編寫過程中,雖然反復推敲核證,但由于本人水平有限,加上時間緊促,本文一定有不少缺點和不足,懇請各位老師給予幫助和指正。
------------------------------------------------------------------?
附一、論文參考:
附二、其他案例:?
?
??
?