Springboot自習室在線預約系統-計算機畢業設計源碼050000

摘?要

遠程預約是一種全新的網絡租用方式,它通過互聯網突破了時間和空間限制,實現了便捷快速的預約與管理功能。在對數據信息有效組織并整合了一定使用功能后,遠程預約系統可以方便地實現預約與取消,以及信息查詢等功能經過本人的綜合考慮,自習室在線預約系統的設計是采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用Springboot框架、JSP技術、Ajax技術進行業務系統的編碼及其開發,實現了系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對自習室座位管理的各項需求以及技術問題進行分析,證明了自習室在線預約系統的必要性和技術可行性,然后對設計需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現自習室在線預約系統的部署和運行。

關鍵詞:Springboot框架;Mysql數據庫;自習室在線預約

Springboot study room online reservation system

Abstract

Remote reservation is a new way of network rental. It breaks through the restrictions of time and space through the Internet and realizes convenient and fast reservation and management functions. After effectively organizing and integrating certain functions of data information, the remote reservation system can easily realize the functions of reservation, cancellation, information query and so on. After my comprehensive consideration, the design of the self-study room online reservation system adopts the object-oriented development mode for software development and hardware erection, which can well meet the needs of actual use, improve the corresponding software erection and program coding, take MySQL as the main storage unit of background data, and use springboot framework, JSP technology and Ajax technology for business system coding and development, All the functions of the system are realized. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. This paper analyzes the various requirements and technical problems of self-study room seat management, proves the necessity and technical feasibility of self-study room online reservation system, and then makes a basic introduction to the technical software and design idea needed in the design. Finally, it realizes the deployment and operation of self-study room online reservation system.

Key words:Springboot framework; Mysql database; Self study room online reservation

目 ?錄

第1章 緒論

1.1?研究背景

1.2?研究內容

1.3?主要工作及論文結構

第2章 相關技術介紹

2.1 開發技術

2.2 Springboot框架介紹

2.3 MySQL數據庫

2.4 B/S結構

2.5 B/S體系工作原理

2.6?Springboot框架各層關系

2.7JavaScript 運行模式

第3章 系統分析

3.1?可行性分析

3.1.1?技術可行性

3.1.2?經濟可行性

3.1.3?社會可行性

3.2?系統功能需求

3.3?系統性能需求

3.4?業務流程分析

3.5?數據流程分析

第4章 系統設計

4.1?系統架構設計

4.2?總體結構設計

4.3?功能模塊設計

4.3.1?用戶模塊

4.3.2?管理員模塊

4.4?數據庫設計

4.4.1?概念設計

4.4.2?邏輯設計

第5章 系統實現

5.1?數據庫連接模塊的實現

5.2?登錄模塊的實現

5.3?用戶模塊的實現

5.3.1?注冊模塊的實現

5.3.2?自習教室管理模塊的實現

5.3.3?自習室預約模塊的實現

5.4?管理員模塊的實現

5.4.1?用戶管理模塊的實現

5.4.2?自習室分類管理模塊的實現 33

5.4.3?自習室預約管理模塊的實現 34

第6章 系統測試 35

6.2?測試目標 35

6.3?功能測試 37

6.4?測試結果 39

第7章 總結與展望 40

參考文獻 42

致謝 43

  1. 緒論
    1. 研究背景

近年來,隨著辦學規模的逐漸擴大,大學生就業形勢日益嚴峻,就業壓力也逐年增大,為了應對激烈的社會競爭,越來越多的大學生加入考研和公務員考試的行列,各類職業資格考試也成為大學生進入相關行業工作的必備條件,從而造成自習室爆滿現象嚴重。目前,傳統的自習室預約管理方式為:學生通過電話或到自習室管理處進行自習室預約的申請,管理員用手工記錄自習室預約情況,管理員根據學生申請的具體條件和時間進行自習室分配,電話通知學生自習室預約成功或失敗。傳統的操作方式比較繁瑣,工作量大,操作也不規范。

為了提高實踐教學水平,規范自習室開放管理,迫切需要一套能夠替代傳統管理方式的自習室預約系統。因此,決定開發本系統,運用信息技術和計算機管理技術,建立自習室預約平臺,在網上公布自習室開放狀態,容納人數等信息,并采用網上預約的形式,方便學生學生通過網絡了解自習教室開放狀況。

    1. 研究內容

自習室在線預約系統的開發及實現,所需要的工作內容:

(1)首先是確定選題,確定好所要做的系統,并對系統的背景及現在面臨的一些問題等進行系統的初步確認。

(2)系統確認完成后,結合系統開發的需求進行確認系統開發所使用的技術,自習室在線預約系統的開發使用Springboot框架,數據庫進行平臺的搭建開發,確認好使用的技術進行技術分析,所使用的技術是否可以完成系統的實現。

(3)確定好系統使用的技術,進行在線確認系統所劃分的用戶角色,并且根據用戶角色劃分確定所要設計的功能模塊,對自習室在線預約系統的設計主要劃分別為管理員和用戶角色,并所使用的功能模塊也相應不同,但是系統的數據庫實現的內容是交互的,用戶可以隨時根據自己的需求進行信息查看,對于系統工作人員可以根據自己的分管內容進行在線信息的處理及操作,管理員獲取到所有用戶的詳細數據信息,并根據需求進行第一時間處理解決。

(4)系統的功能模塊確認完成后進行程序及界面的設計,設計完成后,并且通過測試來判斷程序是否完善,對于系統測試,需要不同的用戶進行不同的內容編輯及提交,及使用不同的測試方式找出程序中存在的漏洞,并對程序出現的漏洞問題進行在線解決處理,如果測試系統沒有任何問題時,可以將系統上傳進行正式操作使用。

    1. 主要工作及論文結構

本文的主要工作是研究如何將計算機和信息管理進行有機結合,從而利用Java語言以及Mysql數據庫技術在Dreamweaver中實現了系統的功能模塊,切實的開發出一套貼近¥新聞管理的實際,有效管理¥新聞的系統。

論文結構如下:

第一章緒論:主要對自習室在線預約系統的開發背景,研究現狀,目的,及意義進行了分析。

第二章開發技術及軟件:主要把系統開發工具進行介紹,另外講解開發系統所用到的一些特殊功能技術。

第三章系統分析:主要是對自習室在線預約系統進行需求分析,以及對其數據流程與功能進行分析。

第四章系統設計:主要根據系統需求對系統的設計進行介紹,以及對數據的開發與功能模塊設計的過程。

第五章系統實現:本章主要結合系統界面截圖,介紹了系統各個功能實現的結果。

第六章系統測試:本章系統進行功能模塊的測試,撰寫測試用例,確保系統各大功能準確無誤。

第七章總結與展望:對整個論文的研究內容進行總結,概括整個論文的特點,指出不足之處,為下步深究指明方向。

  1. 相關技術介紹
    1. 開發技術

本系統前端部分基于MVVM模式進行開發,采用B/S模式,后端部分基于Java的Springboot框架進行開發。

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

后端部分:采用Springboot作為開發框架,同時集成MyBatis、Redis等相關技術。

    1. Springboot框架介紹

Springboot(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。常作為數據源較簡單的web項目的框架。

1.1 Spring

Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數去調用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑。

Spring的核心思想是IoC(控制反轉),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。

1.2 SpringMVC

SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。SpringMVC相當于SSH框架中struts。

1.3 mybatis

mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯到各實體類的Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。

頁面發送請求給控制器,控制器調用業務層處理邏輯,邏輯層向持久層發送請求,持久層與數據庫交互,后將結果返回給業務層,業務層將處理邏輯發送給控制器,控制器再調用視圖展現數據。

?????????????

    1. MySQL數據庫

科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的超市商品管理系統也需要這項技術的支持。

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

    1. B/S結構

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

    1. B/S體系工作原理

B/S架構采取瀏覽器請求,服務器響應的工作模式。

用戶可以通過瀏覽器去訪問Internet上由Web服務器產生的文本、數據、圖片、動畫、視頻點播和聲音等信息;

而每一個Web服務器又可以通過各種方式與數據庫服務器連接,大量的數據實際存放在數據庫服務器中;

從Web服務器上下載程序到本地來執行,在下載過程中若遇到與數據庫有關的指令,由Web服務器交給數據庫服務器來解釋執行,并返回給Web服務器,Web服務器又返回給用戶。在這種結構中,將許許多多的網連接到一塊,形成一個巨大的網,即全球網。而各個企業可以在此結構的基礎上建立自己的Internet。

在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網絡上的服務器進行請求訪問的,瀏覽器的請求通過服務器進行處理,并將處理結果以及相應的信息返回給瀏覽器,其他的數據加工、請求全部都是由Web Server完成的。通過該框架結構以及植入于操作系統內部的瀏覽器,該結構已經成為了當今軟件應用的主流結構模式。

    1. Springboot框架各層關系

DAO層、Service層這兩個層次都可以單獨開發,互相的耦合度很低,完全可以獨立進行,這樣的一種模式在開發大項目的過程中尤其有優勢。

Controller,View層因為耦合度比較高,因而要結合在一起開發,但是也可以看作一個整體獨立于前兩個層進行開發。這樣,在層與層之前只需要知道接口的定義,調用接口即可完成所需要的邏輯單元應用,一切顯得非常清晰簡單。

    1. JavaScript 運行模式

JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。

1.1是一種解釋性腳本語言(代碼不進行預編譯)。

1.2主要用來向HTML(標準通用標記語言下的一個應用)頁面添加交互行為。

1.3可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結構和行為的分離。

1.4跨平臺特性,在絕大多數瀏覽器的支持下,可以在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等)。

1.5 JavaScript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。JavaScript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變量提供存放信息的地方,表達式則可以完成較復雜的信息處理。

  1. 系統分析
    1. 可行性分析

開發任何一個系統,都要對其可行性進行分析,對其時間和資源上的限制進行考慮,這樣可以減少系統開發的風險。同時,分析之后不僅能夠合理的運用人力,還能在各方面資源的消耗上得到節省。下面就對技術、經濟和社會三個方面來介紹。

      1. 技術可行性

技術可行性主要考慮當前項目所用的技術是否能夠符合,在設備上是否能夠滿足,及各種輔助工具是否提供幫助。本系統用的是Java開發語言,調試相對簡單,當前的計算機硬件配置也完全能滿足開發的需求,因此在技術上是絕對可行的。軟件方面:由于軟件的開發平臺成熟可行,它們速度快、容量大、可靠性能高、價格低,完全能滿足系統的需求。采用Java編程語言,已無技術上的問題。

      1. 經濟可行性

系統所采用的主流的Springboot框架進行系統主體框架的搭建和Mysql后端數據庫均為免費開發工具。故開發成本主要集中在后期的推廣及系統維護上。相對于成本較高的C/S模式,也是選用了成本較低的B/S模式,所以經濟上幾乎沒任何問題。

      1. 社會可行性

本系統是自行開發的系統,以方便自習室在線預約為出發點,是具有實際意義的系統,開發的環境軟件和用到的數據庫也都是開源代碼,不存在侵權等問題,所以在社會方面也是可行的。

    1. 系統功能需求

學生用例圖如下所示。

圖3-1 學生用例圖

管理員用例圖如下所示。

圖3-2 管理員用例圖

通過對用例圖的分析和調查,根據本系統的實際需要,從用戶角度提出需求功能如下:

1.管理員功能需求:

用戶管理模塊:管理員查看用戶基本信息,并實現對用戶信息的增加、刪除、修改等功能。

修改登錄密碼模塊:修改管理員用戶的登錄密碼。

注冊管理模塊:管理員查看用戶注冊信息,內容,審核。

自習教室管理模塊:管理員查看自習教室表,并且添加教室數據,也能夠刪除教室數據。

預約管理模塊:根據學生的實際預約,管理員對自習室信息的公布維護、預約處理等操作。

取消預約管理模塊:學生可以在線進行預約取消申請,管理員對學生的申請進行審核。

預約簽到管理模塊:對自習室預約簽到信息進行維護管理。

2.用戶功能需求:

用戶注冊模塊:將用戶信息錄入數據庫,用戶利用注冊的賬號以及密碼登錄系統,瀏覽查看各種信息,添加部分信息;

預約模塊:用戶提交自習室預約申請,等待審核。

取消預約模塊:用戶取消自習室預約,輸入具體取消信息,預約編號,自習室類型,自習室名稱等,提交取消申請,管理員對取消進行審核。

個人信息模塊:修改信息功能,用戶修改個人資料信息,但不能修改賬號;密碼修改功能,修改登錄密碼。

預約簽到模塊:從管理員發布的預約數據中選擇要預約的自習室,進行簽到記錄。

    1. 系統性能需求

評判一個系統好壞的一項重要指標就是性能,下面是對此系統的一些性能進行闡述。

1.系統的安全性和穩定性: 自習室在線預約系統在管理權限上有著嚴格的控制,即想登錄此平臺進行操作,則必須要有操作權限,沒有權限的用戶是不可能登錄平臺查看任何的信息和數據,從而確保了系統的安全性。

2.數據的完整性和準確性:第一個是各項記錄信息的完整性,信息記錄的內容可以為空;第二個是各項信息數據之間相互聯系的準確性;第三個是數據在不同記錄信息的一致性

3.用戶操作系統簡單方便

在系統開發中按照“簡單易用”的原則,能夠使用戶對系統的使用一目了然,既能保證用戶使用,同時又能保證維護人員方便維護。

    1. 業務流程分析

業務流程圖不僅能反映出內部業務之間的關系,而且能體現出作業順序及信息的流動。自習室在線預約系統必須支持整個組織在不同層次上的各種功能,各個功能模塊之間又有各種不同相關的信息進行聯系,構成了一個有機的整體,根據高校自習室座位管理的特點以及結合所面臨的實際情況,設計出了系統的業務流程圖。

系統的業務流程如下圖所示。

圖3-1系統業務流程圖

    1. 數據流程分析

在分析了系統的業務流程之后,就要分析系統的數據流,為后面設計系統的數據庫做好基礎。這里主要利用數據流程圖來說明數據流程。數據流程圖是一個圖示工具,容易理解,容易在開發和用戶方之間進行交流,以及在開發組織內部交流。因此數據流程圖作為一種模型工具已經廣泛使用在軟件工程的實踐中。

系統的頂層數據流圖如下圖所示。

圖3-2系統數據流圖(頂層)

根據系統的業務流程,用戶瀏覽所使用到的數據歸納為輸出信息。而用戶提交的數據則作為系統的輸入數據。相應的,根據系統管理員業務流程,管理員對系統內容的添加、更新和刪除等所操作的數據定義為輸入信息。

系統的底層數據流圖如下圖所示。

圖3-3系統數據流圖(底層)

  1. 系統設計
    1. 系統架構設計

自習室在線預約系統架構設計主要分為可以3層,主要有Web層,業務層,Model層。其中web層還包括View層和Controller層,Model層包括元數據擴展層和數據訪問層。

圖4-1系統架構圖

視圖層視圖是指被用戶所看到的并且能夠與之進行交互的界面。視圖可以向用戶展示相關的數據,并接收用戶輸入的數據,但對用戶數據不進行任何實際業務操作處理。

模型層通過控制層來處理視圖層傳遞的數據,同一個模型可以給不同的視圖提供數據,也可以被不同的視圖重復使用。由于 Model 的主要內容是數據、方法和行為,其也是 MVVM?中邏輯最為復雜,代碼量最多的部分,其中包含了許多應用中需要用到的業務邏輯,因此模型層的開發也變得尤為重要,后期一般不會對模型層進行大規模改動,也是 MVVM最穩定的部分。

控制層主要負責視圖層和模型層之間的數據傳輸和處理請求操作。當用戶通過視圖發送數據和請求時,控制層可以接收請求和數據并決定調用哪些模型、通過模型的哪些操作來處理數據和請求,處理完成后,控制層再將數據返回給相應的視圖。

    1. 總體結構設計

根據對系統的功能進行分析可以總結自習室在線預約系統的具體功能模塊包括下面的幾個主要的功能模塊:該系統主要從兩大模塊進行設計的,首先就是用戶參與操作需要的模塊,此外還需要有管理員用到的模塊,兩者之間不是互相獨立的,他們之間有著密切的聯系,同數據庫表中的數據連接起來進行操作。每個模塊訪問相同的數據庫,但訪問的表不同。系統的各個功能模塊是根據所收集的資料研究得到的。在以上分析功能的基礎上,系統模塊分為多個模塊。用戶含有的功能有注冊登錄,自習室預約、預約簽到、預約取消、自習室分類、考勤信息等,退出登錄等功能,管理員含有的功能有修改密碼,用戶管理、自習室分類管理、預約管理、預約取消管理、考勤信息管理等功能。

系統的功能結構圖如下圖所示。

圖4-2系統功能結構圖

    1. 功能模塊設計
      1. 用戶模塊

用戶模塊主要實現用戶的注冊、登錄、自習教室搜索、自習室預約、預約簽到、取消預約、考勤信息等功能。

用戶注冊:用戶通過賬號注冊得到用戶名和密碼。

用戶登錄:用戶在被管理員添加成功后,通過管理員提供的用戶名、密碼和輸入驗證碼進行登錄,操作非常簡單。

個人資料管理:用戶根據用戶ID修改當前ID的一些屬性的值。

修改個人登錄密碼:用戶登錄高校自習室在線預約系統后可以自己修改自己的密碼。

自習教室搜索:用戶可以在線搜索并查看系統發布的自習教室信息。

預約中心:用戶提交自習室在線預約申請,等待審核。

取消預約管理:用戶取消自習室預約,輸入具體取消信息,預約編號,自習室類型,自習室名稱等,提交取消申請,管理員對取消進行審核。

預約簽到:用戶進行自習室預約登記。

      1. 管理員模塊

管理員模塊是本系統重要開發部分,它的使用對象是系統管理員,在進入管理員模塊前,需要輸入正確的用戶姓名、密碼和驗證碼,才能進入管理員模塊。界面右上方有退出系統按鈕,點擊可退出管理員模塊界面。

系統用戶管理:管理員添加、管理、查詢管理員信息并有修改他們密碼的權限。

注冊用戶管理:管理員管理已注冊的用戶,審核剛注冊的用戶,修改用戶的基本信息。

自習室預約模塊:用戶提交自習室預約申請,等待審核。

個人信息模塊:修改信息功能,用戶修改個人資料信息,但不能修改賬號;密碼修改功能,修改登錄密碼。

預約簽到模塊:從管理員發布的預約數據中選擇要預約的自習教室,進行簽到記錄。

    1. 數據庫設計
      1. 概念設計

E-R圖一般是由實體、實體的屬性與聯系三個要素組成的。在規劃系統中所使用的數據庫實體對象及實體E-R圖,則需要通過對系統的需求分析、業務流程設計和系統功能結構來確定的。

總體ER圖如下圖所示。

圖4-3總體ER圖

      1. 邏輯設計

將實體屬性模型轉換為關系數據庫應該遵循以下幾個原則:

1.一個實體轉換后要對應一個關系。

2.所有的主鍵必須要定義為非空(not null)。

3.針對二元聯系也應該按照一對多、弱對實、一對一和多對多等聯系來定義外鍵。

得到數據庫的關系后,設計如下表結構。

名稱

類型

長度

不是null

主鍵

注釋

group_id

mediumint

8

用戶組ID

display

smallint

4

顯示順序

name

varchar

16

名稱

description

varchar

255

描述

source_table

varchar

255

來源表:

source_field

varchar

255

來源字段:

source_id

int

10

來源ID:

register

smallint

1

注冊位置:

create_time

timestamp

0

創建時間:

update_time

timestamp

0

更新時間:

名稱

類型

長度

不是null

主鍵

注釋

study_room_seats_id

int

11

自習教室ID

study_room_no

varchar

64

自習室編號

name_of_study_room

varchar

64

自習室名稱

self_study_room_pictures

varchar

255

自習室圖片

position

varchar

64

位置

use_rules

text

0

使用規則

study_room_type

varchar

64

自習室類型

hits

int

11

點擊數

praise_len

int

11

點贊數

examine_state

varchar

16

審核狀態

recommend

int

11

智能推薦

名稱

類型

長度

不是null

主鍵

注釋

study_room_reservation_id

int

11

預約ID

reservation_number

varchar

64

預約編號

study_room_no

varchar

64

自習室編號

name_of_study_room

varchar

64

自習室名稱

student_number

int

11

學號

full_name

varchar

64

姓名

名稱

類型

長度

不是null

主鍵

注釋

Retreat management_id

int

11

取消預約管理ID

reservation_number

varchar

64

預約編號

study_room_no

varchar

64

自習室編號

name_of_study_room

varchar

64

自習室名稱

student_number

int

11

學號

time_of_appointment

varchar

64

取消時間

cancellation_reason

text

0

取消原因

examine_state

varchar

16

審核狀態

recommend

int

11

智能推薦

create_time

datetime

0

創建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

check_in_id

int

11

預約簽到ID

reservation_number

varchar

64

預約編號

study_room_no

varchar

64

自習室編號

name_of_study_room

varchar

64

自習室名稱

student_number

int

11

學號

full_name

varchar

64

姓名

examine_state

varchar

16

審核狀態

recommend

int

11

智能推薦

create_time

datetime

0

創建時間

update_time

timestamp

0

更新時間

名稱

類型

長度

不是null

主鍵

注釋

appointment_check_in_id

int

11

簽到ID

reservation_number

varchar

64

編號

study_room_no

varchar

64

自習室編號

name_of_study_room

varchar

64

自習室名稱

  1. 系統實現
    1. 數據庫連接模塊的實現

從web系統查詢數據的根本的查詢步驟:

Step1: 進行檢查并且過濾來自用戶的系統數據;

Step2: 成立起一個合適的數據庫進行連接;

Step3: 進行查詢系統數據庫;

Step4: 獲得查詢的結構;

Step5: 把查詢的結果展示給用戶。

Step6: 數據庫連接斷開,釋放資源。

數據庫連接原理如下圖所示。

圖5-1數據庫連接原理

數據庫連接關鍵代碼如下所示。

server:

??port: 5000

??servlet:

????context-path: /api

spring:

??datasource:

????url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8

????username: root

????password: root

????driver-class-name: com.mysql.cj.jdbc.Driver

??jackson:

????property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES

????default-property-inclusion: ALWAYS

????time-zone: GMT+8

????date-format: yyyy-MM-dd HH:mm:ss

??servlet:

????multipart:

??????max-file-size: 100MB

??????max-request-size: 100MB

    1. 登錄模塊的實現

為確保系統安全性,系統操作員只有在登錄界面輸入正確的用戶名、密碼、權限以及驗證碼,單擊“登錄”按鈕后才能夠進入本系統的主界面。

用戶登錄流程圖如下所示。

圖5-2用戶登錄流程圖

登錄界面如下圖所示。

圖5-3登錄界面

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

?/**

?????* 登錄

?????* @param data

?????* @param httpServletRequest

?????* @return

?????*/

????@PostMapping("login")

????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

????????log.info("[執行登錄接口]");

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

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

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

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

????????List resultList = null;

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

????????}

}

    1. 用戶模塊的實現
      1. 注冊模塊的實現

用戶輸入用戶名、密碼、電話、姓名等必填信息后,點擊注冊按鈕完成用戶的注冊。

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

圖5-4用戶注冊流程圖

用戶注冊邏輯代碼如下:

?/**

?????* 注冊

?????* @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]用戶獲取其他與用戶相關的數據

?????*/

????@Id

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

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

????private Integer userId;

????/**

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

?????*/

????@Basic

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

????private Integer state;

????/**

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

?????*/

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

?????*/

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

????/**

?????* 創建時間:

?????*/

????@Basic

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

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

????private Timestamp createTime;

????@Basic

????@Transient

????private String code;

}

      1. 自習教室管理模塊的實現

用戶點擊某個自習教室進入自習教室信息詳細頁,點擊搜索按鈕進入教室列表頁,搜索具體信息。

自習教室管理流程圖如下所示。

圖5-5自習教室管理流程圖

自習教室管理界面如圖所示。

圖5-6自習教室管理界面

自習教室管理關鍵代碼如下所示。

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

????}

      1. 自習室預約模塊的實現

用戶點擊某個自習室進入預約詳細頁,點擊報名預約按鈕進入自習室信息頁,提交預約信息,管理員管理用戶的自習室預約信息,審核預約信息。

自習室預約流程圖如下所示。

圖5-7自習室預約流程圖

自習室座位預約如圖所示。

圖5-8自習室座位預約界面

自習室座位預約關鍵代碼如下所示。

??@RequestMapping("/get_list")

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

????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

????????return success(map);

}

    1. 管理員模塊的實現
      1. 用戶管理模塊的實現

系統用戶管理主要是對新用戶的添加和舊用戶的刪除。新用戶的添加主要是指添加用戶名稱并確定其密碼;舊用戶的刪除也是從下拉菜單中找到對應的用戶名稱將其刪除。不論是新用戶添加還是舊用戶的刪除,這個權限只有管理員具有。

用戶管理流程圖如下所示。

圖5-9用戶管理流程圖

系統用戶管理關鍵代碼如下所示。

?@RequestMapping(value = {"/avg_group", "/avg"})

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

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

????????return success(count.getResultList());

}

      1. 自習室分類管理模塊的實現

自習室分類管理功能主要指對其自習室類型、名稱等一些基本信息進行分類添加、刪除和修改。

自習室分類管理流程圖如下所示。

圖5-10自習室分類管理流程圖

自習室分類管理如下圖所示。

圖5-11自習室分類管理界面

自習室分類管理關鍵代碼如下所示。

?@RequestMapping("/get_list")

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

????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

????????return success(map);

}

      1. 自習室預約管理模塊的實現

用戶選擇自習室預約申請,管理員審核自習室預約信息,管理所有用戶的預約信息。

預約管理流程圖如下所示。

圖5-12預約管理流程圖

自習室預約管理界面如下所示。

圖5-13自習室預約管理界面

自習室預約管理關鍵代碼如下所示。

@RestController

@RequestMapping("auth")

public class AuthController extends BaseController<Auth, AuthService> {

????/**

?????* 服務對象

?????*/

????@Autowired

????public AuthController(AuthService service) {

????????setService(service);

????}

}

  1. 系統測試
    1. 測試目標

系統測試是用于檢查軟件的質量、性能、可靠性等是否符合用戶需求。一套嚴謹的、規范的、完善的測試過程將大大提高軟件的質量、可信度、可靠性,降低軟件的出錯率,降低用戶風險系數。通過在計算機上對系統進行測試試驗并從中發現此系統中存在的問題和錯誤然后加以修改,使之更加符合用戶需求。

1.測試的目的是通過測試來發現程序在執行過程中的錯誤的過程。

2.好的測試方案是可以檢驗出還未被發現的錯誤的方案。

3.好的測試是發現了到目前為止還未被發現的錯誤的測試。

4.該系統能夠完成自習教室信息維護、用戶維護、系統維護等功能,做到所開發的系統操作簡單,盡量使系統操作不受用戶對電腦知識水平的限制。

    1. 功能測試

下表是自習室在線預約系統的測試用例,檢測了自習教室管理中對自習教室信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。

前置條件;用戶登錄系統。

表6-1 自習教室信息管理的測試用例

功能描述

用于自習教室信息管理

測試目的

檢測自習教室信息管理時的各種操作的運行情況

測試數據以及操作

預期結果

實際結果

點擊添加自習教室信息,必填項合法輸入,點擊保存

提示添加成功

與預期結果一致

點擊添加自習教室信息,必填項輸入不合法,點擊保存

提示必填項不能為空

與預期結果一致

點擊修改自習教室信息,必填項修改為空,點擊保存

提示必填項不能為空

與預期結果一致

點擊修改自習教室信息,必填項輸入不合法,點擊保存

提示必填項不能為空

與預期結果一致

點擊刪除自習教室信息,選擇自習教室信息刪除

提示刪除成功

與預期結果一致

點擊搜索自習教室信息,輸入存在的自習教室信息名

查找出自習教室信息

與預期結果一致

點擊搜索自習教室信息,輸入不存在的自習教室信息名

不顯示自習教室信息

與預期結果一致

下表是自習室預約管理功能的測試用例,檢測了自習室預約管理中自習室預約單的操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。

前置條件;用戶登錄系統。

表6-2 自習室預約管理的測試用例

功能描述

用于自習室預約管理

測試目的

檢測自習室預約管理時各種操作的情況

測試數據以及操作

預期結果

實際結果

未選擇高校自習室,點擊提交

提示請選擇高校自習室

與預期結果一致

    1. 測試結果

根據以上測試情況,測試結果如下表所示。

表6-1測試結果表

測試項目

測試結果

登錄測試

成功

修改密碼測試

成功

自習教室測試

成功

預約測試

成功

預約簽到測試

成功

用戶管理測試

成功

取消預約管理測試

成功

考勤信息管理測試

成功

公告管理測試

成功

自習室分類測試

成功

  1. 總結與展望

本研究針對自習室在線預約系統地需求建模,數據建模及過程建模分析設計并實現自習室在線預約系統的過程。給出系統應用架構并分析優劣勢,通過功能分解圖,系統組件圖描述功能需求。設計建立了數據庫,給出系統關鍵數據結構的定義。通過類關系圖描述組件間的協作關系,給出各個類的定義方法。通過描述每一個類的字段,屬性及方法實現自習室在線預約系統的前后端代碼。最終給出系統集成整合方法,完成自習室在線預約系統地設計與實現。

在此項目的開發中,明白了前后臺在整個系統中起到了什么作用,因為前后臺的連接,用戶可以對系統進行操作,可以在輸入自己的相關信息后,通過后臺加工,完成對數據庫的查找、修改、添加,而理解了這些關系與實現的方法后。再去完善整個系統的功能就更加清晰與簡單了。此次的項目它涉及了前臺與后臺系統的搭建,在學校所學的知識基礎上,此次的項目,讓我對于一個系統的前端開發,以及后臺的作用都有了一個更深切的認知。

參考文獻

  1. 馬可,黃恒熠,栗云鵬.基于C/S架構的自習室教室預約管理系統[J].計算機系統應用,2021,30(09):77-84.
  2. [2]任智毅,張根,楊慧芳,耿文欣.共享自習室創立可行性研究與分析[J].上海商業,2021(08):170-171.

[3]Itsios G.,Panopoulos P.,Sfetsos K.,Zoakos D.. On the stability of AdS backgrounds with λ-deformed factors[J]. Journal of High Energy Physics,2021,2021(7):

[4]曹麗娟,鐘浩賢,周楊景.物聯網環境下的校園自習室優化推薦系統設計與實現[J].電子制作,2021(13):27-29.

[5]Yao Xinghu,Wen Chao,Wang Yuhui,Tan Xiaoyang. SMIX(λ): Enhancing Centralized Value Functions for Cooperative Multiagent Reinforcement Learning.[J]. IEEE transactions on neural networks and learning systems,2021,PP:

[6]王若璞,柳云山,許曹鑫,劉汗奇.基于Adaboost的自習室綜合管理系統[J].電子元器件與信息技術,2021,5(04):189-192.

[7]陳謙益,趙艷麗,梅佳華.新時代背景下高校后勤服務育人創新研究——以云南中醫藥大學為例[J].學園,2021,14(11):54-56.

[8]牟彥霖. “互聯網+”背景下高校學生生活區配套服務空間設計研究[D].華南理工大學,2020.

[9]李程瓊,陳紫蓉,劉云.高校自習室資源優化探究——以玉溪師范學院為例[J].學園,2020,13(14):78-80.

[10]孫震.淺析高校自習室及其他公共區域管理——從各主體角度出發[J].內蒙古科技與經濟,2019(22):161.

[11]陽暉.高校自習室座位管理存在的問題與對策[J].辦公室業務,2019(21):175-176.

[12]韓廣勛,楊森.基于共享經濟模式的高校自習座位管理方法初探[J].中國教育信息化,2019(11):75-77.

[13]孫艷妮. 輪廓識別在自習室空位查詢系統中的應用[D].重慶師范大學,2018.

[14]柯樹媛,張玉娟,胡茜,白云,任亞楠.基于手機終端的高校自習室選座系統探析[J].科技風,2018(04):11.

[15]王遠紅.高校自習系統設計——以中國人民大學為例[J].現代信息科技,2018,2(01):184-186.

致謝

在此論文完成之際,感謝我的指導老師。在指導老師的網頁設計課上,當時我學到了很多東西,這對于我實習過程中也打了一定的基礎,而且指導老師對于我的設計也提出許多建議,并予以悉心的指導,對于一些細小的問題都耐心的指導我去完善,授予我寫論文的好友,時常的鼓勵我,另外感謝教導我完善此項目的前端同學,對于這個項目,我是邊學習邊實現完成的,有許多東西開始并不是很明白,但前端開發的同學非常耐心的引導我去將這個項目完成,在系統的后端開發中,所用到的后臺開發技術也時常會給我講解,助于我更好的將論文完成,在此對幫助到我的同學和一直予以教導的指導老師致以衷心的感謝,祝事業有成。

免費領取項目源碼,請關注?點贊收藏并私信博主,謝謝-

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44857.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode gitee問題

如果提交報user.name和user.email錯誤時&#xff0c;在本地工作目錄中.git隱藏文件夾中&#xff0c;config文件添加&#xff0c;添加的名字和email地址--遠程git倉庫的登錄名字和email地址。 [user] name xxx email xxx 分支合并&#xff1a;是把別的分支合并到所在分支。

2024最適合小白的Midjourney教程,值得收藏!

一、Midjourney 的提示詞 1、提示可以包括一個或多個圖像 URL、多個文本短語以及一個或多個參數 1&#xff09;Image Prompts&#xff08;圖像提示&#xff09;&#xff1a;可以將圖像 URL 添加到提示中以影響最終結果的樣式和內容。圖像 URL 始終出現在提示的前面。文件應以.…

配置 Node.js 內存限制

配置 Node.js 內存限制 Node.js 應用程序通常需要配置堆內存的大小以優化性能和避免內存溢出問題。你可以通過命令行參數、環境變量或系統屬性來設置 Node.js 的內存限制。下面將分別介紹在 Windows、Linux 和 macOS 系統下的配置方法。 Windows 系統 1. 命令行參數方式 在…

爆款文案管理系統設計

設計一個爆款文案管理系統&#xff0c;目標是幫助營銷團隊高效地創建、管理并分析吸引人的文案&#xff0c;以提升產品或服務的市場吸引力和銷售轉化率。以下是一些關鍵功能和設計考量點&#xff1a; 1. 用戶友好界面 簡潔直觀的界面&#xff1a;確保系統界面清晰&#xff0c…

廣告監測中的c2s/s2s,點擊同步/異步監測

在 ADX 中&#xff0c;監測上報以上報源區分為兩種&#xff0c;c2s 和 s2s 。 C2S(Client to Server)&#xff1a;由用戶端&#xff08;APP&#xff09;上報給第三方監測平臺的服務器 S2S&#xff08;server to server&#xff09;&#xff1a;由用戶端&#xff08;APP&#xf…

vue3項目打包的時候,怎么區別測試環境,和本地環境

在Vue 3項目中區別測試環境和本地環境&#xff0c;并標記接口的方法可以通過環境變量來實現。 首先&#xff0c;你可以在你的項目根目錄下創建一個.env文件&#xff0c;并定義你的環境變量。比如&#xff0c;你可以創建.env.local作為本地環境的配置文件&#xff0c;.env.test…

【Win10 JDK環境配置】

1.JDK下載地址 jdk下載1:http://www.kkx.net/zt/jdk.html jdk下載2&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows 2.jdk安裝:雙擊.exe文件打開安裝器按步驟安裝 3.配置環境變量 新建系統變量JAVA_HOME&#xff1a;D:\java11\jdk-11 將J…

intel萬兆網卡固件下載方法

客戶新安裝的機器上含有X710和E810兩種萬兆網卡&#xff0c;根據vmware的兼容性列表&#xff0c;需要安裝對應的驅動和固件&#xff0c;驅動從vmware/broadcom官網下載&#xff0c;固件則需要從intel官網下載。 在intel support頁面里&#xff0c;找到網卡的型號&#xff1a; …

uni-app/vue項目如何封裝全局消息提示組件

效果圖&#xff1a; 第一步&#xff1a;封裝組件和方法&#xff0c;采用插件式注冊&#xff01; 在項目目錄下新建components文件夾&#xff0c;里面放兩個文件&#xff0c;分別是index.vue和index.js. index.vue&#xff1a; <template><div class"toast&quo…

【C++報錯已解決】Invalid Use of Incomplete Type

&#x1f3ac; 鴿芷咕&#xff1a;個人主頁 &#x1f525; 個人專欄: 《C干貨基地》《粉絲福利》 ??生活的理想&#xff0c;就是為了理想的生活! 文章目錄 引言&#xff1a;一、問題描述1.2 報錯分析1.3 解決思路 二、解決方法2.1 方法一&#xff1a;完整類型定義2.2 方法二…

idea:解決Maven報錯 Properties in parent definition are prohibited

在父pom文件中定義了 <dhversion>1.0-SNAPSHOT</dhversion> 在子模塊中引用 <parent><groupId>com.douhuang</groupId><artifactId>douhuang-springcloud</artifactId><version>${dhversion}</version> </parent&…

安卓文件上傳照片單張及多張照片上傳實現

一、首先導入對應庫 //網絡請求庫 implementation com.squareup.okhttp3:okhttp:3.9.0//Gson解析 implementation com.google.code.gson:gson:2.10.1 二、然后就是們實現上傳方法 UploaderTool.java import android.util.Log;import com.google.gson.Gson;import java.io.File…

算法day03 桶排序 數據結構分類 時間復雜度 異或運算

學數據結構之前 必看_嗶哩嗶哩_bilibili 1.認識復雜度和簡單排序算法_嗶哩嗶哩_bilibili 桶排序&#xff08;Bucket sort&#xff09;------時間復雜度為O(n)的排序方法&#xff08;一&#xff09;_多桶排序時間復雜度-CSDN博客 桶排序 測試場景&#xff1a;數組中有10000個隨…

threeJS 為模型增加精靈圖

前言 之前使用css3DRender創建圖片彈框&#xff0c;在旋轉模型到背面時&#xff0c;彈框也背對模型&#xff0c;這與UI要求的效果有出入。考慮將css3DRender換成css2Drender,但是可能是模型的問題&#xff0c;將彈框加入到模型的子集&#xff0c;旋轉模型時彈框發生比較明顯的…

deep learning 環境配置

1 NVIDIA驅動安裝 ref link: https://blog.csdn.net/weixin_37926734/article/details/123033286 2 cuda安裝 ref link: https://blog.csdn.net/qq_63379469/article/details/123319269 進去網站 https://developer.nvidia.com/cuda-toolkit-archive 選擇想要安裝的cuda版…

研華PCI-1711板卡在WIN10教育版系統無法安裝驅動

主要配置&#xff1a;CHIPSET AIMB-705G2、CPU I5-6500、WIN10 教育版、PCI-1711 問題描述&#xff1a;使用官網下載的驅動XNiva&#xff0c;驅動包安裝完成后板卡無法正常識別。解決方法&#xff1a;正常安裝無法情況下只能嘗試強制安裝數字簽名&#xff0c;步驟如下。 XNiv…

Gunicorn:Python Web應用的高效生產服務器

引言 在現代Web開發中&#xff0c;部署Python Web應用通常需要一個既高效又可靠的服務器。Gunicorn&#xff08;Green Unicorn&#xff09;是一個Python WSGI HTTP服務器&#xff0c;它簡單、快速且易于使用&#xff0c;非常適合生產環境。本文將介紹Gunicorn的基本概念、安裝…

Springboot redisson 自定義注解實現雙寫一致性

在 Spring Boot 項目中使用 Redisson 實現雙寫一致性&#xff08;即數據庫和緩存的一致性&#xff09;&#xff0c;可以通過自定義注解和 AOP&#xff08;面向切面編程&#xff09;來簡化代碼并提高可維護性。以下是一個具體的案例&#xff0c;展示了如何使用自定義注解和 AOP …

Java研學-Shiro安全框架(四)

六 SpringBoot集成Shiro認證 1 分析 Shiro提供認證授權功能&#xff0c;所以SpringBoot中不需再編寫自定義注解&#xff0c;權限攔截&#xff0c;登錄攔截&#xff0c;登錄登出。Shiro 環境中有三個封裝對象Subject &#xff0c;SecurityManager和Realms&#xff0c;SpringBoo…

Java核心技術【二十一】Java的I/O流處理:文件的讀寫操作

Java的I/O流處理&#xff1a;文件讀寫操作 【創作】 不易&#xff0c;【點贊】 是情義&#xff0c;【關注】 是動力&#xff0c;【收藏】 是回憶。 示例代碼地址&#xff1a;https://gitee.com/code-in-java/csdn-blog.git 在Java編程中&#xff0c;輸入/輸出&#xff08;I/O&a…