基于SpringBoot在線課程管理系統的設計與實現
摘要 本文首先介紹了在線課程管理系統的現狀及開發背景,然后論述了系統的設計目標、系統需求、總體設計方案以及系統的詳細設計和實現,最后對在線課程管理系統進行了系統檢測并提出了還需要改進的問題。本系統能夠實現教師管理,科目管理,教學計劃管理,學生管理,課程管理,課程留言管理,課程收藏管理,通知公告管理等功能[1]。在設計方面,本系統采用B/S三層結構,采用MVC模式,這種模式通過VUE技術來表現頁面的動態設計,從系統的安全性和代碼的可重用性方面考慮,運用springboot對程序的關鍵代碼進行封裝,后臺數據庫選用MySQL數據庫。經過設計開發測試,基本滿足了用戶的相關需求,較好實現了在線課程管理系統相關的功能和模塊。
關鍵字 在線課程管理系統; springboot框架; MySQL數據庫
**
**
Design and implementation of Online course management system based on SpringBoot
Abstract: This paper firstly introduces the current situation and development background of the online course management system, and then discusses the design goals, system requirements, overall design scheme, and the detailed design and implementation of the system. Issues that need improvement. This system can realize the functions of teacher management, subject management, teaching plan management, student management, course management, course message management, course collection management, notification announcement management and other functions [1]. In terms of design, the system adopts the B/S three-tier structure and adopts the MVC mode. This mode uses the VUE technology to express the dynamic design of the page. From the perspective of system security and code reusability, using springboot The key code is encapsulated, and the background database is MySQL database. After design, development and testing, it basically meets the relevant needs of users, and better realizes the functions and modules related to the online course management system.
**Key Words:**Online Course Management System; Spring Boot framework; MySQL database
目 錄
第1章 緒論 1
1.1 選題背景 1
1.2 選題意義 1
1.3 研究內容 2
第2章 開發環境 3
2.1 Java語言 3
2.2 MySQL數據庫 3
2.3 Eclipse開發工具 4
2.4 Spring Boot框架 4
第3章 系統分析 5
3.1可行性分析 5
3.2系統流程分析 5
3.3系統性能分析 9
3.4系統功能分析 10
第4章 系統設計 12
4.1 系統設計目標 12
4.2功能結構設計 12
4.3數據庫設計 14
第5章 系統實現 22
5.1管理員功能實現 22
5.2 教師功能實現 25
5.3 學生功能實現 31
第6章 系統測試 34
6.1系統測試的特點 34
6.2 系統功能測試 34
6.3 系統測試結果 35
結 論 36
致 謝 38
參考文獻 39
緒論
1.1 選題背景
目前整個社會發展的速度,嚴重依賴于互聯網,如果沒有了互聯網的存在,市場可能會一蹶不振,嚴重影響經濟的發展水平,影響人們的生活質量。計算機的發展,不管是從硬件還是軟件,都有很多技術儲備,每年都有很多的技術和軟件產生,縱觀各個領域,無一不用互聯網軟件,辦公用的還是電腦居多,但是人手一臺智能設備已經變成了現在人們的生活日常,哪怕的普通的老百姓都成了上知天文下知地理的所在,這些都依賴于互聯網技術。互聯網技術在信息的傳播方面是巨大的,而信息的處理就變成了各種產業管理者和維護者的重任。人們已經習慣了互聯網的存在,所以經常操作一些互聯網產品變成了日常,所以開發一個在線課程管理系統,讓人們使用是沒有一點問題的,并且在這個過程中不僅能夠規范課程信息管理的使用流程還有信息處理流程,也能讓整個信息的傳播處理,都存在一種可控制的范圍,最重要的是,計算機在課程信息管理方面可以給管理者提供更好的幫助。
1.2 選題意義
當開發軟件變成了一個潮流之后,會發現不管任何行業都能開發適合自己的軟件,不管是內部員工管理,還是財務管理,甚至業務管理都可以數據化,并且可以對這些數據集中處理,進而根據數據處理結果就自然而然的提高了管理水平,最重要的是,開發一個軟件投入使用,開發過程其實就是梳理行業痛點的過程,就是讓軟件來彌補行業的管理漏洞,不斷的優化事物的處理流程。在線課程管理系統就是一款專門開發的軟件,通過Web技術,讓使用者可以在任何一臺智能設備上面通過瀏覽器進行操作使用,對數據的處理不再局限于地域距離,只要軟件開發到位,使用起來方便,達到預期目的,會發現有軟件和沒有軟件的區別是很大的,有了這款軟件之后,會發現數據的存儲安全方
面,比起之前的滿屋尋找記錄的優勢是多么的巨大。
1.3 研究內容
本文將從分析,設計,實現,測試等角度來闡述本系統。
緒論:介紹本系統開發的背景,意義;
開發環境:介紹本系統的配置環境以及開發技術;
系統分析:介紹本系統的功能,性能以及可行性;
系統設計:介紹本系統的數據庫的設計以及功能結構的設計[3];
系統實現:介紹本系統的實現界面以及實現的功能;
系統測試:介紹本系統的功能測試以及測試結果;
- 開發環境
2.1 Java語言
Java語言是目前最流行的語言之一,不僅可以做桌面窗口形式的程序,還可以做瀏覽器訪問的程序,目前最流行的就是用Java語言作為基礎,做各種程序的后臺處理。Java語言是操作變量的語言,而變量則是Java對于數據存在形式的定義,變量用來操作內存,而內存則牽扯到計算機安全問題,這樣Java語言反而有了免疫直接針對用Java語言開發出來的程序的病毒,有效地提高了Java語言開發出來程序的生存能力。Java是具有動態運行能力的一種語言,Java的類不僅僅可以用Java核心提供的基礎類,還可以進行重寫,這樣會讓Java的功能變得更加豐富,甚至可以編寫一些功能模塊進行封裝,然后其他項目如果需要用到這些可以復用的功能,完全可以直接引用,然后再用得地方調用方法即可。Java是一種開源的語言,可以對Java里面的各種類以及引用方法進行追溯,甚至可以對已經編譯過的語言進行反編譯,這樣不僅僅提高學習的效率,并且可以學習其他從業者提供的優雅的編程方式。Java語言發展到現在,已經在各個行業扎根,學習Java可以從事的行業很多,并且學習的方法很多,網上有很多免費的教程,甚至有些高深的知識也只需要付費就可以進行學習,而不是像Java語言之初,每一個編程人員都需要用記事本進行手動編碼,現在有很多集成開發環境幫助Java從業者。選擇Java語言進行編程,是一種很好的解決問題的方式[4]。
2.2 MySQL數據庫
一般學習程序開發的人員如果學習數據庫的話,肯定是要學習MySQL數據庫,MySQL數據庫通過這么多年的不斷發展,社區版本都是免費的,最重要的是小巧,占用電腦空間比較小,讓更多的開發人員可以不需要更換更高級的電腦就可以進行學習。學習只是一個方面,最重要的是MySQL市場占有率是世界第一,基本上十個公司就有七八個用得MySQL數據庫。MySQL的優點不只是這么粗淺,MySQL首先是開源的,只要不是商用就不用花錢,并且大型的數據也是支持的,只要是市面上存在的操作系統,MySQL都可以有對應的版本可供使用。因為MySQL是開源的,如果有對MySQL有特殊需求的甚至可以自己修改源碼,達到符合自己使用的目的[5]。MySQL數據庫好處多多,最重要的一點符合本設計的開發需求,可以說本設計只用到了MySQL的一些基礎功能,而這點基礎功能就完全夠用。MySQL學習的教程網上很多,許多關于入門的教程就完全可以達到普通程序員的開發水平,只需要把基本的知識學會了,到公司里面也只是根據不同的業務邏輯進行不同的語句編寫而已。
2.3 Eclipse開發工具
Eclipse是開源免費的,僅僅這樣理解也許會給人一種免費沒有好貨的感覺,其實不是這樣的。Eclipse是一個開發源代碼的開發工具,這樣會很安全,因為是開源的,如果對使用者的電腦有害,肯定能找到原因所在,所以這一點安全方面是不用擔心的。Eclipse是不用安裝的,這樣就不用對系統盤增加壓力,可以放到任何一個盤里,使用的時候打開,不用的時候關閉,不會偷偷的在后臺運行,不需要增加注冊表負擔,啟動還必須依靠Java的JDK才可以啟動,有效的避免了一些病毒入侵,如果病毒入侵改變了源代碼,就不能運行了,只能重新刪除文件夾重新解壓一份新的Eclipse即可,用起來很安全。Eclipse發展到現在,已經可以支持其他的開發語言了,家族越來越強大,功能越來越多,最重要的還是沒有收費,這一點就讓新手開發者省下很多的資金用來培養自己的學習,而不用花錢買了開發軟件才發現自己不適合進行開發,永遠免費的策略可以永遠讓人有想使用的機會。最重要的是Eclipse并不是免費功能就不夠用,恰恰相反,不僅功能強大,用起來完全符合本設計的開發需求,所以選用了Eclipse作為開發工具。
2.4 Spring Boot框架
Spring Boot適合初學者,也適合從以前的Spring框架開發者學習,學習起來是很方便的,不管是純英文教程還是中文教程,國內外都有很多學習的資料。Spring Boot可以運行所有的Spring項目,進行無縫切換。內置了Servlet 容器,不需要對代碼進行打包變成WAR就可以運行。自帶應用監控,運行的時候可以實時的對正在運行的項目進行監控,可以隨時發現問題所在并且能定位發生的問題,可以讓程序員及時的修改問題[6]。
系統分析
3.1可行性分析
在項目進行開發之前,必須要有可行性分析報告,分別從技術角度,經濟角度,操作角度上面進行分析,經過可行性分析是實現科學開發的必要步驟。
3.1.1技術可行性
從技術的角度出發,目前采用開發的技術完全能滿足系統開發需要。目前市場上有現成的軟件開發工具和開發技術,這些可以保證系統開發的順利進展。
3.1.2操作可行性
在線課程管理系統是根據用戶經常使用的頁面操作流程來進行設計的,并且頁面保證統一,從視覺角度和操作角度上都能達到使用要求。
3.1.3經濟可行性
在本次開發過程中,因為需要通過電腦來進行配置開發的環境,通過對技術的分析,發現目前正在使用的電腦是可以滿足開發需要的,并不需要太多的金錢對電腦進行更換。所以,從經濟角度上分析,可以滿足開發要求。
從以上三個角度來進行分析論證,證明了在線課程管理系統是可以正常開發并且使用的。
3.2系統流程分析
從系統的角色上分析,每個用戶角色都代表了不同的賬號身份,而不同的身份則代表著功能的異同,所以首先要區分用戶的角色身份問題。設置用戶登錄需要輸入賬號和密碼,輸入的信息必須與數據庫里已經存在的賬號密碼信息進行比對,只有正確的賬號和密碼才可以進行下一步的頁面顯示操作,如果不正確的賬號密碼,則拒絕用戶登錄,也代表著用戶沒有繼續訪問的權限,系統是無法繼續提供服務的[7]。如圖3.1
圖3.1 操作流程圖
任何一個系統都有一個操作流程,本設計里面,對于任何數據的存儲都有一定的合法要求,只有符合設定要求的數據才可以進行存儲。如圖3.2。
圖3.2 添加信息流程圖
數據的存儲并不是一成不變的,當需要對已經存在的數據進行改變的時候,同樣也遵循著操作流程,想更改數據首先要確定更改之前的數據是什么,然后輸入新的數據是否合法,都要符合流程,只有合法數據才可以被更新到數據庫里存儲。如圖3.3。
圖3.3 修改信息流程圖
刪除操作,在數據存儲方面是一件比較慎重的事件,很有可能會產生失誤操作,所以一般刪除操作的時候都要提示是否刪除,確定刪除才會更新數據庫內容,實現刪除目的。如圖3.4。
圖3.4 刪除信息流程圖
3.3系統性能分析
系統在使用過程中,用戶會享受到系統帶來的便利。那么如何保持在長時間的使用過程中,不出現亂七八糟的問題,讓使用系統變成一種操作上的享受,使用上的便捷,這就是需要考慮的問題。以下主要從系統的性能分析上面進行描述,從數據完整以及數據安全,包括系統的可擴展等方面進行介紹。
3.3.1系統安全性
注冊用戶與游客用戶的區別就在于是否有賬號,如果有賬號,那么就有相關的注冊用戶權限,有賬號就有密碼,密碼是保證賬號安全性的前提,游客只能瀏覽一些公共性信息,如果需要用戶登錄才能觀看的信息,那么也需要使用賬號登錄的。對于系統安全性上面,主要考慮角色的密碼加密問題,這樣可以防止有效的密碼數據攔截后的破解工作。一般密碼如果有安全性要求的話,是可以考慮加密存儲。密碼的加密存儲大致有兩種設計方法,一種是密碼在前臺提交后就用Java Script進行MD5加密,然后直接提交密文,這樣的好處是密文傳輸的安全性,另一種是提交密碼后在后臺處理的過程中對密碼進行加密或者解密,這樣會增加后臺的處理負擔。一般都居中考慮,如果登錄的話會把密碼在后臺進行加密與數據庫密碼進行對比。目前常用的加密方式是MD5加密方式。
3.3.2數據完整性
系統進行開發的最重要的目的就是數據的處理,計算機有其擅長數據的存儲以及處理工作,所以數據的完整性是必須保證的,不然系統的存在是沒有必要的。數據不管是設計還是存儲,都必須完整,從數據的輸入就從各個方面保證數據的合法性,違規數據不能直接提交的。數據處理邏輯也會保證數據的加工正常,進而進行數據存儲,也會保證數據設計的合理,這些都是有數據設定要求的。目前對數據的存儲采用的關系型數據庫,關系型數據庫有多年的歷史,功能強大,遷移備份以及無人值守都可以進行自動備份的。
3.3.3系統可擴展性
系統是有必要存在擴展性的。在設計之初就要考慮可能存在的業務,所以對系統的設計就要模塊化設計,這樣需要進行擴展的時候,只要在對應模塊進行增加,對應邏輯進行調試即可。系統可擴展性的提升會讓系統增加不必要的工作量,讓程序設計更加符合規范。
3.4系統功能分析
本系統在功能分析上,主要是根據目標用戶群的角度進行分析,為了便于展示分析結果,這里就使用用例圖進行功能展示。
管理員用例圖的繪制結果見圖3.5。管理員登錄進入本系統操作的功能包括對教學計劃,通知公告,教師,學生,課程信息進行增刪改查,以及管理課程收藏和課程留言,管理班級等信息。
圖3.5 管理員用例圖
教師用例圖的繪制結果見圖3.6。教師登錄進入本系統操作的功能包括新增教學計劃,新增課程信息,對學生的課程留言進行回復,查看通知公告。
圖3.6 教師用例圖
學生用例圖的繪制結果見圖3.7。學生登錄進入本系統操作的功能包括觀看課程視頻,查看課程知識,對課程留言,查看通知公告,更改個人信息。
圖3.7 學生用例圖
系統設計
4.1 系統設計目標
系統設計的時候,就要制定需要達成的目標。在功能上,要嚴格符合設計需求,不僅僅要減少操作步驟,也要符合預期。因此,在規范化的今天設計出符合項目要求的系統,必須要達到下面設定的目標。
第一個目標就是友好性:友好性主要體現在用戶使用過程中,不會對系統的操作產生一種不滿,減少操作者的憤怒,這是相當重要的一個體現。前幾年好多軟件在這個友好性方面失去了市場,就是因為在友好性這方面沒有做好。國內互聯網發展初期,軟件設計的目的就是能用就行,至于友好性的對比,那是不存在的,因為硬件效率比較低,計算機屬于新興行業,所以大哥不說二哥,都是不友好的。隨著計算機硬件的提升,很多開發者開始注意到要犧牲一定的計算器性能來提升友好性,因為計算機發展到現在,第一印象很重要,一個軟件設計的不好看,會讓大部分人對其產生質疑,所以要在友好性上面下很大功夫進行雕琢。
第二個目標就是安全性:安全性其實貫穿著整個軟件行業的發展史,計算機就是為解決人類重復性計算以及數據存儲的目的而誕生的,很多行業都需要計算機來進行計算,減少出錯幾率,并且把數據保留,可以實時查詢,所以數據的安全性也很重要。
只要保證數據安全性的前提,開發出符合功能需求的友好界面操作,那么就達到了系統設計的目的。
4.2功能結構設計
本系統主要是基于數據的增加,修改,刪除等操作,使用者能夠通過提前設定的登錄功能進入指定的操作區,這里對使用者設計的功能進行結構展示。
管理員功能結構圖的繪制結果見圖4.1。管理員登錄進入本系統操作的功能包括對教學計劃,通知公告,教師,學生,課程信息進行增刪改查,以及管理課程收藏和課程留言,管理班級等信息。
圖4.1 管理員功能結構圖
教師功能結構圖的繪制結果見圖4.2。教師登錄進入本系統操作的功能包括新增教學計劃,新增課程信息,對學生的課程留言進行回復,查看通知公告。
圖4.2 教師功能結構圖
學生功能結構圖的繪制結果見圖4.3。學生登錄進入本系統操作的功能包括觀看課程視頻,查看課程知識,對課程留言,查看通知公告,更改個人信息。
圖4.3 學生功能結構圖
4.3數據庫設計
如果說設計系統的功能很重要,那么設計該系統的數據庫將更重要,畢竟系統服務于用戶,數據庫服務于系統,用戶訪問系統,操作系統的所有數據都要依賴于數據庫,而系統的數據幾乎都是保存在數據庫中的,所以,一個高質量的程序,必然擁有一個安全,快速響應,穩定可靠的數據庫。本系統的MySQL數據庫可以通過SQL語言來實現對系統數據的管理,包括在指定表中插入數據,在規定的表中更改數據,以及刪除指定表中的部分數據等操作。一般來說,像MySQL這樣的關系型數據庫,對于結構化查詢語言SQL都能很好的進行支持[8]。
4.3.1 數據庫概念設計
本節內容主要是使用圖形的方式來描述數據庫中的實體,每個實體的相應屬性,還有實體之間的相互聯系,常用的Visio工具即可滿足繪制E-R圖的需求。E-R圖是由矩形,橢圓,菱形等圖形元素組成,矩形框中主要寫實體的名稱,橢圓框中主要是登記該實體的屬性,而菱形框中主要是登記實體之間的聯系名稱,最后使用實心線段把這些圖形元素進行連接,即可完成E-R圖的繪制[9]。當初步得到一個E-R圖時,需要進行檢查,使用分析的方式去修改,重構E-R圖,以達到消除數據冗余[10],或者是消除實體間聯系冗余的目的。從而保持數據庫的完整性,以及降低數據庫維護上面的難度[11]。
- 使用Visio這樣的常用的實體屬性圖繪制工具來繪制教師實體屬性圖,繪制結果見圖4.3。
圖4.3 教師實體屬性圖
- 使用Visio這樣的常用的實體屬性圖繪制工具來繪制課程實體屬性圖,繪制結果見圖4.4。
圖4.4 課程實體屬性圖
- 使用Visio這樣的常用的實體屬性圖繪制工具來繪制教學計劃實體屬性圖,繪制結果見圖4.5。
圖4.5 教學計劃實體屬性圖
- 使用Visio這樣的常用的實體屬性圖繪制工具來繪制學生實體屬性圖,繪制結果見圖4.6。
圖4.6 學生實體屬性圖
- 繪制的上述實體間存在的聯系見圖4.7。
圖4.7 實體間關系E-R圖
4.3.2 數據庫物理設計
本系統數據在數據庫中都是通過各種二維表進行記錄保存的,在數據庫中設計這樣的二維表也是比較重要的內容,因為它影響著數據的存儲效率。在設計二維表也就是關系模型之前,一些有關二維表方面的常用概念需要進行充分了解。
關系:一張具體的數據表即表示關系,關系的名稱與數據表的名稱保持一致;
元組:數據表中,每行顯示的數據即代表元組;
屬性:數據表中,每列表示的數據即代表屬性;
關鍵字:數據表中,為了與其他數據表進行區分,則需要在每張表中進行主鍵的設置;
通過上節內容可以知曉數據庫中的各個實體,并通過一定方式把這些實體表示的內容進行數據表的轉換,通常來說,每個實體都會對應一張具體的數據表,在本系統指定的數據庫中創建命名好的數據庫,才可以對數據表進行創建與設計。在線課程管理系統數據表設計結果展示如表4.1,表4.2,表4.3,表4.4,表4.5,表4.6,表4.7,表4.8:
表4.1 通知公告表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
gonggao_name | 通知公告名稱 | varchar(200) | 是 |
gonggao_photo | 通知公告圖片 | varchar(200) | 是 |
gonggao_types | 通知公告類型 | int(11) | 否 |
insert_time | 通知公告發布時間 | timestamp | 是 |
gonggao_content | 通知公告詳情 | text | 是 |
create_time | 創建時間 | timestamp | 是 |
表4.2 教師表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
username | 賬戶 | varchar(200) | 是 |
password | 密碼 | varchar(200) | 是 |
jiaoshi_name | 教師姓名 | varchar(200) | 是 |
jiaoshi_phone | 教師手機號 | varchar(200) | 是 |
jiaoshi_id_number | 教師身份證號 | varchar(200) | 是 |
jiaoshi_photo | 教師頭像 | varchar(200) | 是 |
sex_types | 性別 | int(11) | 是 |
jiaoshi_email | 電子郵箱 | varchar(200) | 是 |
create_time | 創建時間 | timestamp | 是 |
表4.3 教學計劃表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
jiaoshi_id | 教師 | int(11) | 是 |
續表4.3
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
kecheng_id | 課程 | int(11) | 是 |
jiaoxuejihua_uuid_number | 教學計劃編號 | varchar(200) | 是 |
jiaoxuejihua_name | 教學計劃名稱 | varchar(200) | 是 |
jiaoxuejihua_file | 教學計劃文件 | varchar(200) | 是 |
jiaoxuejihua_types | 教學計劃類型 | int(11) | 是 |
jiaoxuejihua_content | 教學計劃內容 | text | 是 |
insert_time | 記錄時間 | timestamp | 是 |
create_time | 創建時間 | timestamp | 是 |
表4.4 課程表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
jiaoshi_id | 教師 | int(11) | 是 |
kecheng_name | 課程名稱 | varchar(200) | 是 |
kecheng_uuid_number | 課程編號 | varchar(200) | 是 |
kecheng_photo | 課程照片 | varchar(200) | 是 |
kecheng_video | 課程視頻 | varchar(200) | 是 |
kecheng_file | 課件 | varchar(200) | 是 |
kecheng_types | 科目 | int(11) | 是 |
kecheng_clicknum | 課程熱度 | int(11) | 是 |
kecheng_content | 課程內容 | text | 是 |
zhishiyaodian_content | 知識要點 | text | 是 |
kaoshidagang_content | 考試大綱 | text | 是 |
shangxia_types | 是否上架 | int(11) | 是 |
kecheng_delete | 邏輯刪除 | int(11) | 是 |
create_time | 創建時間 | timestamp | 是 |
表4.5 課程收藏表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
kecheng_id | 課程 | int(11) | 是 |
xuesheng_id | 學生 | int(11) | 是 |
kecheng_collection_types | 類型 | int(11) | 是 |
insert_time | 收藏時間 | timestamp | 是 |
create_time | 創建時間 | timestamp | 是 |
表4.6 課程留言表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
kecheng_id | 課程 | int(11) | 是 |
xuesheng_id | 學生 | int(11) | 是 |
kecheng_liuyan_text | 留言內容 | text | 是 |
insert_time | 留言時間 | timestamp | 是 |
reply_text | 回復內容 | text | 是 |
update_time | 回復時間 | timestamp | 是 |
create_time | 創建時間 | timestamp | 是 |
表4.7 管理員表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | bigint(20) | 否 |
username | 用戶名 | varchar(100) | 否 |
password | 密碼 | varchar(100) | 否 |
role | 角色 | varchar(100) | 是 |
addtime | 新增時間 | timestamp | 否 |
表4.8 學生表
字段 | 注釋 | 類型 | 空 |
---|---|---|---|
id (主鍵) | 主鍵 | int(11) | 否 |
username | 賬戶 | varchar(200) | 是 |
password | 密碼 | varchar(200) | 是 |
xuesheng_name | 學生姓名 | varchar(200) | 是 |
xuesheng_phone | 學生手機號 | varchar(200) | 是 |
xuesheng_id_number | 學生身份證號 | varchar(200) | 是 |
xuesheng_photo | 學生頭像 | varchar(200) | 是 |
sex_types | 性別 | int(11) | 是 |
banji_types | 班級 | int(11) | 是 |
xuesheng_email | 電子郵箱 | varchar(200) | 是 |
create_time | 創建時間 | timestamp | 是 |
系統實現
5.1管理員功能實現
5.1.1 通知公告管理
管理員進入如圖5.1所示的通知公告管理界面之后,管理員點擊信息顯示欄中最右側的修改,刪除按鈕可依次完成通知公告信息的修改,刪除等操作。通知公告信息有通知公告名稱,通知公告內容等信息[12]。
圖5.1 通知公告管理界面
添加通知@RequestMapping(“/save”)
public R save(@RequestBody GonggaoEntity gonggao, HttpServletRequest request){
logger.debug(“save方法:,Controller:{},gonggao:{}”,this.getClass().getName(),gonggao.toString());
String role = String.valueOf(request.getSession().getAttribute(“role”));
if(false)
return R.error(511,“永遠不會進入”);
Wrapper queryWrapper = new EntityWrapper()
.eq(“gonggao_name”, gonggao.getGonggaoName())
.eq(“gonggao_types”, gonggao.getGonggaoTypes())
;
logger.info(“sql語句:”+queryWrapper.getSqlSegment());
GonggaoEntity gonggaoEntity = gonggaoService.selectOne(queryWrapper);
if(gonggaoEntity==null){
gonggao.setInsertTime(new Date());
gonggao.setCreateTime(new Date());
gonggaoService.insert(gonggao);
return R.ok();
}else {
return R.error(511,“表中有相同數據”);
}
}
5.1.2 教師管理
管理員進入如圖5.2所示的教師管理界面之后,管理員點擊信息顯示欄中最右側的修改,刪除按鈕可依次完成教師信息的修改,刪除等操作。
圖5.2 教師管理界面
教師刪除@RequestMapping(“/delete”)
public R delete(@RequestBody Integer[] ids){
logger.debug(“delete:,Controller:{},ids:{}”,this.getClass().getName(),ids.toString());
jiaoshiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
5.1.3 學生管理
管理員進入如圖5.3所示的學生管理界面之后,管理員點擊信息顯示欄中最右側的修改,刪除按鈕可依次完成學生信息的修改,刪除等操作。學生的賬號密碼,管理員也能重置。
圖5.3 學生管理界面
學生刪除@RequestMapping(“/delete”)
public R delete(@RequestBody Integer[] ids){
logger.debug(“delete:,Controller:{},ids:{}”,this.getClass().getName(),ids.toString());
xueshengService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
5.2 教師功能實現
5.2.1 教學計劃管理
教師進入如圖5.4所示的教學計劃管理界面之后,教師點擊信息顯示欄中最右側的修改,刪除按鈕可依次完成教學計劃信息的修改,刪除等操作。教學計劃信息包括教學計劃文件,教學計劃名稱,教學計劃編號等信息,教師可以添加教學計劃。
圖5.4 教學計劃管理界面
添加教學計劃@RequestMapping(“/save”)
public R save(@RequestBody JiaoxuejihuaEntity jiaoxuejihua, HttpServletRequest request){
logger.debug(“save方法:,Controller:{},jiaoxuejihua:{}”,this.getClass().getName(),jiaoxuejihua.toString());
String role = String.valueOf(request.getSession().getAttribute(“role”));
if(false)
return R.error(511,“永遠不會進入”);
else if(“教師”.equals(role))
jiaoxuejihua.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(“userId”))));
Wrapper queryWrapper = new EntityWrapper()
.eq(“jiaoshi_id”, jiaoxuejihua.getJiaoshiId())
.eq(“kecheng_id”, jiaoxuejihua.getKechengId())
.eq(“jiaoxuejihua_uuid_number”, jiaoxuejihua.getJiaoxuejihuaUuidNumber())
.eq(“jiaoxuejihua_name”, jiaoxuejihua.getJiaoxuejihuaName())
.eq(“jiaoxuejihua_types”, jiaoxuejihua.getJiaoxuejihuaTypes())
;
logger.info(“sql語句:”+queryWrapper.getSqlSegment());
JiaoxuejihuaEntity jiaoxuejihuaEntity = jiaoxuejihuaService.selectOne(queryWrapper);
if(jiaoxuejihuaEntity==null){
jiaoxuejihua.setInsertTime(new Date());
jiaoxuejihua.setCreateTime(new Date());
jiaoxuejihuaService.insert(jiaoxuejihua);
return R.ok();
}else {
return R.error(511,“表中有相同數據”);
}
}
5.2.2 課程管理
教師進入如圖5.5所示的課程管理界面之后,教師點擊信息顯示欄中最右側的修改,刪除,下架按鈕可依次完成課程信息的修改,刪除,下架等操作。課程信息包括課程熱度,課程視頻,課程編號,課程名稱等信息。教師也能添加課程[13]。
圖5.5 課程管理界面
添加課程@RequestMapping(“/save”)
public R save(@RequestBody KechengEntity kecheng, HttpServletRequest request){
logger.debug(“save方法:,Controller:{},kecheng:{}”,this.getClass().getName(),kecheng.toString());
String role = String.valueOf(request.getSession().getAttribute(“role”));
if(false)
return R.error(511,“永遠不會進入”);
else if(“教師”.equals(role))
kecheng.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(“userId”))));
Wrapper queryWrapper = new EntityWrapper()
.eq(“jiaoshi_id”, kecheng.getJiaoshiId())
.eq(“kecheng_name”, kecheng.getKechengName())
.eq(“kecheng_uuid_number”, kecheng.getKechengUuidNumber())
.eq(“kecheng_video”, kecheng.getKechengVideo())
.eq(“kecheng_types”, kecheng.getKechengTypes())
.eq(“kecheng_clicknum”, kecheng.getKechengClicknum())
.eq(“shangxia_types”, kecheng.getShangxiaTypes())
.eq(“kecheng_delete”, kecheng.getKechengDelete())
;
logger.info(“sql語句:”+queryWrapper.getSqlSegment());
KechengEntity kechengEntity = kechengService.selectOne(queryWrapper);
if(kechengEntity==null){
kecheng.setKechengClicknum(1);
kecheng.setShangxiaTypes(1);
kecheng.setKechengDelete(1);
kecheng.setCreateTime(new Date());
kechengService.insert(kecheng);
return R.ok();
}else {
return R.error(511,“表中有相同數據”);
}
}
5.2.3 課程留言管理
教師進入如圖5.6所示的課程留言管理界面之后,教師點擊信息顯示欄中最右側的詳情,回復按鈕可依次完成課程留言信息的詳情查看,留言回復等操作。
圖5.6 課程留言管理界面
回復留言 @RequestMapping(“/update”)
public R update(@RequestBody KechengLiuyanEntity kechengLiuyan, HttpServletRequest request){
logger.debug(“update方法:,Controller:{},kechengLiuyan:{}”,this.getClass().getName(),kechengLiuyan.toString());
String role = String.valueOf(request.getSession().getAttribute(“role”));
*// if(false)
// return R.error(511,“永遠不會進入”);
// else if(“學生”.equals(role))
// kechengLiuyan.setXueshengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(“userId”))));
//根據字段查詢是否有相同數據
- Wrapper queryWrapper = new EntityWrapper()
.eq(“id”,0)
;
logger.info(“sql語句:”+queryWrapper.getSqlSegment());
KechengLiuyanEntity kechengLiuyanEntity = kechengLiuyanService.selectOne(queryWrapper);
kechengLiuyan.setUpdateTime(new Date());
if(kechengLiuyanEntity==null){
kechengLiuyanService.updateById(kechengLiuyan);*//根據id更新
- return R.ok();
}else {
return R.error(511,“表中有相同數據”);
}
}
5.3 學生功能實現
5.3.1 課程信息
學生進入如圖5.7所示的課程信息界面之后,學生通過播放課程視頻的方式學習課程知識,學生也能查看課程的知識要點,考試大綱等信息,還可以發布課程的留言信息。
圖5-7 課程信息界面
5.3.2 通知公告
學生進入如圖5.8所示的通知公告界面之后,學生根據通知公告類型篩選通知公告信息,學生可以查看通知公告的具體內容。
圖5-8 通知公告界面
5.3.3 更改個人信息
學生進入如圖5.9所示的更改個人信息界面之后,學生重新上傳頭像來替換現有的頭像,以及對電子郵箱,手機號等產生變化的數據進行更改,更改了數據之后,需要學生點擊更新信息按鈕來保存更改的數據。
圖5.9 更改個人信息界面
更改個人信息 @RequestMapping(“/update”)
public R update(@RequestBody XueshengEntity xuesheng, HttpServletRequest request){ logger.debug(“update方法:,Controller:{},xuesheng:{}”,this.getClass().getName(),xuesheng.toString());
String role = String.valueOf(request.getSession().getAttribute(“role”));
*// if(false)
// return R.error(511,“永遠不會進入”);
//根據字段查詢是否有相同數據
- Wrapper queryWrapper = new EntityWrapper()
.notIn(“id”,xuesheng.getId())
.andNew()
.eq(“username”, xuesheng.getUsername())
.or()
.eq(“xuesheng_phone”, xuesheng.getXueshengPhone())
.or()
.eq(“xuesheng_id_number”, xuesheng.getXueshengIdNumber());
logger.info(“sql語句:”+queryWrapper.getSqlSegment());
XueshengEntity xueshengEntity = xueshengService.selectOne(queryWrapper);
if(“”.equals(xuesheng.getXueshengPhoto()) || “null”.equals(xuesheng.getXueshengPhoto())){
xuesheng.setXueshengPhoto(null); }
if(xueshengEntity==null){
xueshengService.updateById(xuesheng);*//根據id更新
- return R.ok(); }else {
return R.error(511,“賬戶或者學生手機號或者學生身份證號已經被使用”);}}
- 系統測試
6.1系統測試的特點
系統測試,是有一定的特點,并且根據這些特定也有相關的描述信息,下面就是對這些測試的特點來進行闡述:
第一點:完整的測試,就是在用戶的角度上,通過不同的權限,來測試不同的模塊,最終判斷程序的優劣性。
第二點:測試主要從程序的設計架構方面來進行測試,也需要從業務操作流程方面測試。
第三點:測試不是想一出是一出,要有嚴謹的測試步驟,測試目的,只有科學的測試方法才能產生科學的測試結果,能很好的對出錯幾率進行降低。
總的來說,系統測試不僅僅是讓功能符合,還要在突發情況下有相應的配套表現,只要考慮的多,做的多,系統運行過程中才能更加平穩。
6.2 系統功能測試
6.2.1 學生登錄測試
登錄測試是所有功能里面最基礎也是重要的部分,只有合法的登錄才可以進行對應權限的操作,不合法的登錄肯定是不讓學生進行下一步操作的。具體步驟參考表6.1。
表6.1 學生登錄測試表
測試功能 | 操作流程 | 測試的數據 | 結果 | 是否符合要求 |
---|---|---|---|---|
學生登錄 | 學生填寫賬號,填寫密碼,數據填寫完成之后點擊登錄按鈕 | 賬號和密碼保證一個錯一個正確 | 不能登錄 | 是 |
賬號和密碼都正確 | 登錄成功 | 是 |
6.2.2 課程查詢測試
查詢功能是一個常用的功能,通過條件查詢可以獲得自己所需的內容,條件輸入也需要輸入正確的已經存在的條件才可以有獲取結果,對不同的獲取條件返回不同的結果集。如圖表6.2
表6.2 課程查詢功能測試表
測試功能 | 操作流程 | 測試的數據 | 結果 | 是否符合要求 |
---|---|---|---|---|
課程查詢功能 | 在查詢界面的數據輸入框中登記關鍵詞然后搜索 | 課程名稱有誤或為空 | 不能查詢 | 是 |
課程名稱信息正確 | 查詢成功 | 是 |
6.3 系統測試結果
經過整體性測試,在線課程管理系統測試無誤,符合設計預期,同時也符合操作性設定以及易維護性設定,并且在數據的安全性保障上也有很好的體現。在線課程管理系統已經可以使用。
結 論
開發與實現在線課程管理系統已經花費了半年時間,在這期間,作為學生的我收獲了很多知識。因為獨自開發在線課程管理系統,僅僅依靠在校期間學到的軟件開發方面的知識顯然是不行的,還需要通過其他的學習渠道進行程序開發類知識的拓展,比如去圖書館借閱書籍,比如數據庫設計的書籍,Java編程語言方面的書籍,軟件工程方面的書籍等,還可以通過上網查看編程方面的博客,這些博客呈現的知識是各個軟件開發者在工作生涯中總結的編程知識,都是編程知識中的精華,可以幫助學習開發的人員在編程中避免很多開發誤區,還可以節省開發的時間[14]。另外,也可以通過數字圖書館下載相似系統方面的參考文獻進行程序開發類的知識學習。總而言之,當一個人完成在線課程管理系統的設計與開發后,不僅自身的專業知識水平得到了提升,還提高了自己將理論轉為實際操作的能力,以及面對問題通過知識學習進而解決問題的能力。
在線課程管理系統的設計實現,讓我有以下幾點體會:
(1)在確定要研究的系統之后,對于系統的研究內容也就是系統的功能的分析與設計是比較重要的部分,這方面主要是站在使用者的角度進行考慮,可以參考相似系統的功能進行設計,也能通過對目標用戶群進行問卷調查等方式進行功能需求的確定,只有確定了系統需要的功能之后,才可以開展系統的配套數據庫的設計,系統的編碼等后續工作。
(2)對于系統的代碼編寫是一項比較復雜的工作,這也是系統的后端部分,用戶操作系統看到的只是代碼運行之后呈現出來的操作界面前端部分,編寫的代碼與運行實現的界面是相對應的,所以編寫代碼時,需要一邊編寫,一邊查看代碼的運行效果,這里就需要編寫代碼的人員注意一些編寫細節,比如規范命名程序變量,注釋關鍵代碼等,這些編碼習慣會幫助開發者在該系統中進行功能拓展或功能維護中提高效率。
(3)系統的功能模塊在編碼實現之后,也需要單獨進行測試,發現問題之后能夠及時進行解決,當系統的所有的功能都實現之后,再次對該系統整體進行測試,方便開發者在檢驗系統功能的基礎上,進行系統問題的修復與完善[15]。
由于時間比較短暫,加上開發期間我都是一邊學習理論,一邊進行實操,對于開發的在線課程管理系統除了具備能夠正常運行,能夠提供信息管理功能,以及能夠保證系統運行期間產生的數據的安全性等特點外,本系統也具備一些缺點,首先表現的就是當使用者使用系統時,在對數據進行查詢或者更新時,系統響應時間比較長,增加了用戶的等待時間,讓用戶的使用體驗不夠理想,其次,在線課程管理系統的功能操作的流程設計上也存在一些不合理之處,最后,在線課程管理系統對于權限劃分,功能模塊細分上也存在一些漏洞。
總的說來,在今后的時間里面,自己除了要加強理論知識的學習外,還要繼續投入時間和精力去對在線課程管理系統進行修復,讓本軟件擁有更強的性能,比如安全性以及可靠性。
致 謝
自從來到了這個校園之后,我認識了很多同學,還有很多老師,也結交了很多朋友,這些人們為我的大學生活增添了許多色彩。雖然畢業已經進入倒計時,但是我們互相之間還是向往常一樣相處,也許是大家都很珍惜這最后的時光吧。
在大學校園經過了幾年的知識學習后,目前的我不僅具備一些專業理論知識,還擁有本專業方面的實操技能,這些成長都是學校老師帶給我的,所以,畢業了,看到自己的知識變得豐富起來,自己的能力也得到了成長,我是非常感謝本專業的所有老師的。
指導老師是學院分配的老師,主要是幫助我們更好的完成選擇的畢業課題,并在課題撰寫期間提供給學生系統制作以及文檔撰寫方面的指導。因此,我在制作本系統時,我的導師提供的指導包括了功能的確定,系統結構的設計,系統功能的編碼,以及測試系統等方面的指導,可以說從選題到本系統制作完成,導師在每個階段性任務期間都進行了指導,主要是針對我遇到的主要困難,提供相應的解決方案,這樣才讓我能夠如期完成本課題。所以,能夠上交設計成果,我是非常感謝導師的。
感謝本院同學還有我身邊的朋友,在校期間,我們總是時不時進行交流,包括平時作業以及本次的畢業課題方面的互相探討,還有就是每當我陷入困境時,在你們的幫助下我總能很快走出困境。所以,這些年,你們的陪伴,讓我很暖心!
離開校園之后,我們將不在這個場所進行學習與生活了,盡管很不舍,但還是祝愿我的校園前景廣闊!
參考文獻
- 劉賀濱, 侯超鈞. 基于Java EE在線作業管理系統的設計與實現[J]. 軟件, 2019, 40(9):4.
- 宋亮, 徐明, 尹智勇. 高等學校多媒體教學服務網絡平臺的設計與實現[C]// 全國高等學校教育技術協作委員會年會暨學術交流會. 全國高等學校教育技術協作委員會, 2009.
- 杜娟. 基于Web的考試系統的設計與實現[D]. 哈爾濱師范大學.
- K Gusarovs. An Analysis on Java Programming Language Decompiler Capabilities[J]. Applied Computer Systems, 2018, 23(2):109-117.
- 丘輝麒, 言曉娟. 教學網站建設的幾點思考[J]. 電化教育研究, 2005(11):2.
- Y Tan. A Hardware-oriented Object Model for Java in an Embedded Processor[J]. Microprocessors and Microsystems, 2018, 63(NOV.):85-97.
- 王棟, 劉錦康, 姜波. 基于C/S和B/S混合模式的高校學生管理系統設計[J]. 中國電力教育, 2009(2):2.
- 魏洪濤, 李群, 王維平. 基于Web的管理信息系統的安全模型設計[J]. 計算機應用, 2003, 23(5):4.
- 石磊, 周祎. 大數據在高校學生管理工作中的應用與策略研究[J]. 科技展望, 2017(27).
- 李晶. 數據庫設計理論的研究[J]. 科技創新導報, 2009(18):1.
- 王革, 張成玉. Access數據庫程序設計:任務課程實訓[M]. 中國電力出版社, 2010.
- 劉乃麗. 精通ASP.NET 2.0+SQL SERVER 2005項目開發(附光盤)[M]. 人民郵電出版社, 2007.
- 江軍強. 基于ASP.NET的題庫管理系統的開發[J]. 寧德師范學院學報:自然科學版, 2013, 25(2):5.
- 白慶華. 面向對象方法的未來發展[J]. 計算機系統應用, 1994(11):2.
- 付蘇嘉. 基于ASP的高校網上選課系統的研究與設計[J]. 貴州大學學報:自然科學版, 2010, 27(4):5.