版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本科生畢業(yè)論文(設計)題目springboot教師工作量計算系統(tǒng)學院XXXXX專業(yè)班級XXXXX學生姓名XXXX指導教師XXXX撰寫日期:2022年9月10日目錄TOC\o"1-3"\h\u摘要 摘要隨著教育事業(yè)的發(fā)展,對教學質量的評價不僅表現(xiàn)在學生質量上,而且還反映在教職工隊伍素質上;為了提高教師的工作效率,分析了學校日常教學管理工作的統(tǒng)計特點,加強對教師績效的考核,而績效考核的主要指標是教師工作量的大小。因此需要做出套及時有效的系統(tǒng),幫助教學管理人員對教師工作量進行管理和查詢;解決由人工操作帶來的許多錯誤和諸多不便,減輕管理人員的勞動強度,達到更好地利用資源,提高工作效率;同時也便于教師本人對工作量的查詢及核實。在實際應用中,這套系統(tǒng)的必要性將得到充分的體現(xiàn)。論文針對在教師工作量計算系統(tǒng)信息數據規(guī)模大,管理員和教師用戶需要對教師工作量涉及到的信息進行管理的需求,設計了教師工作量計算系統(tǒng)的框架,給出了教師工作量計算系統(tǒng)的總體設計,并對教師工作量計算系統(tǒng)的架構及關鍵模塊的實現(xiàn)過程進行了詳細論述。采用Java語言和MySQL數據庫技術,基于springboot框架實現(xiàn)了一個完整系統(tǒng)的設計,為使用者提供了良好的教師工作量計算系統(tǒng)。關鍵詞:教師工作量計算系統(tǒng);Java;MySQL;springboot框架AbstractWiththedevelopmentofeducation,theevaluationofteachingqualityisnotonlyreflectedinthequalityofstudents,butalsoreflectedinthequalityofteachingstaff;Inordertoimprovetheworkefficiencyofteachers,thispaperanalyzesthestatisticalcharacteristicsofdailyteachingmanagementinschools,andstrengthenstheassessmentofteachers'performance.Themainindicatorofperformanceassessmentistheworkloadofteachers.Therefore,itisnecessarytomakeatimelyandeffectivesystemtohelpteachingmanagersmanageandquerytheworkloadofteachers;Solvemanyerrorsandinconveniencescausedbymanualoperation,reducethelaborintensityofmanagementpersonnel,achievebetteruseofresourcesandimproveworkefficiency;Itisalsoconvenientforteacherstoqueryandverifytheworkload.Inpracticalapplication,thenecessityofthissystemwillbefullyreflected.Inviewofthelargescaleofinformationdataintheteacherworkloadcalculationsystemandtheneedofadministratorsandteacheruserstomanagetheinformationinvolvedintheteacherworkload,thepaperdesignstheframeworkoftheteacherworkloadcalculationsystem,givestheoveralldesignoftheteacherworkloadcalculationsystem,anddiscussesindetailthearchitectureoftheteacherworkloadcalculationsystemandtheimplementationprocessofkeymodules.UsingJavalanguageandMySQLdatabasetechnology,acompletesystemdesignisimplementedbasedonthespringbootframework,providinguserswithagoodteacherworkloadcalculationsystem.Keywords:Teacherworkloadcalculationsystem;Java;MySQL;Springbootframework第1章緒論研究背景隨著計算機技術的飛速發(fā)展,計算機在各行各業(yè)中的應用迅速普及,計算機的應用在工作量管理中同樣也得到了飛速的發(fā)展。對于工作量管理最基層的管理之一工作量管理來說,利用計算機實現(xiàn)工作量管理等日常工作來提高辦事效率,是適應當今社會發(fā)展要求,推動工作量管理領域現(xiàn)代化快速發(fā)展的必要條件。雖然工作量只是工作量管理工作的一個環(huán)節(jié),但是工作量管理是一項瑣碎、復雜而又十分細致的工作。日常等工作量非常的大,如果用手工來操作,不僅工作量大而且容易出現(xiàn)錯誤。而利用計算機就不同了,一個完善的工作量管理系統(tǒng)可以幫你解決所有這方面的問題。同時計算機具有手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長等。這些優(yōu)點能夠極大地提高工作量管理管理的效率達到事半功倍的效果。1.2研究意義我們現(xiàn)在所做的課題就是在目前的情形下,從學校的現(xiàn)有的條件實際出發(fā),利用個人所擁有的計算機硬件設備和軟件條件,從思想上,工作思維和工作方式做起,實現(xiàn)一整套關于學校用戶工作量管理系統(tǒng)的軟件來實現(xiàn)一些基本信息的維護。為學校的工作量管理人員減少點負擔,從根本上解決用手工操作工作量大且容易出錯的問題,同時,這也是學校工作量管理管理領域以后發(fā)展的必然趨勢。1.3論文結構與章節(jié)安排論文將分層次經行編排,除去論文摘要致謝文獻參考部分,正文部分還會對網站需求做出分析,以及闡述大體的設計和實現(xiàn)的功能,最后羅列部分調測記錄,論文主要架構如下:第一章:引言。第一章主要介紹了課題研究的背景,系統(tǒng)開發(fā)的意義和本文的研究內容與主要工作。第二章:系統(tǒng)需求分析。第二章主要從系統(tǒng)的用戶、功能等方面進行需求分析。第三章:系統(tǒng)設計。第三章主要對系統(tǒng)框架、系統(tǒng)功能模塊、數據庫進行功能設計。第四章:系統(tǒng)實現(xiàn)。第四章主要介紹了系統(tǒng)框架搭建、系統(tǒng)界面的實現(xiàn)。第五章:系統(tǒng)測試。第五章主要對系統(tǒng)的部分界面進行測試并對主要功能進行測試第六章:總結第2章相關技術2.1開發(fā)技術本系統(tǒng)前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現(xiàn)動態(tài)路由和全局狀態(tài)管理,Ajax實現(xiàn)前后端通信,ElementUI組件庫使頁面快速成型。后端部分:采用SpringBoot作為開發(fā)框架,同時集成MyBatis、Redis等相關技術。2.2Java簡介Java主要采用CORBA技術和安全模型,可以在互聯(lián)網應用的數據保護。它還提供了對EJB(EnterpriseJavaBeans)的全面支持,JavaservletAPI,JSP(Javaserverpages),和XML技術。Java語言是一種面向對象的語言,它通過提供最基本的方法來完成指定的任務,開發(fā)者只需要知道一些概念就能夠編寫出一些應用程序。Java程序相對較小,其代碼能夠在小機器上運行。Java是一種計算機編程語言,具有封裝、繼承和多態(tài)性三個主要特性,廣泛應用于企業(yè)Web應用程序開發(fā)和移動應用程序開發(fā)。Java語言和一般編譯器以及直譯的區(qū)別在于,Java首先將源代碼轉換為字節(jié)碼,然后將其轉換為JVM的可執(zhí)行文件,JVM可以在各種不同的JVM上運行。因此,實現(xiàn)了它的跨平臺特性。雖然這使得Java在早期非常緩慢,但是隨著Java的開發(fā),它已經得到了改進。2.3MVVM模式MVVM是Model-View-ViewModel的簡寫。它本質上就是MVC的改進版。MVVM就是將其中的View的狀態(tài)和行為抽象化,讓我們將視圖UI和業(yè)務邏輯分開。當然這些事ViewModel已經幫我們做了,它可以取出Model的數據同時幫忙處理View中由于需要展示內容而涉及的業(yè)務邏輯。微軟的WPF帶來了新的技術體驗,如Silverlight、音頻、視頻、3D、動畫……,這導致了軟件UI層更加細節(jié)化、可定制化。同時,在技術層面,WPF也帶來了諸如Binding、DependencyProperty、RoutedEvents、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發(fā)展演變過來的一種新型架構框架。它立足于原有MVP框架并且把WPF的新特性糅合進去,以應對客戶日益復雜的需求變化。2.4B/S結構B/S(Browser/Server)比前身架構更為省事的架構。它借助Webserver完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果,不需要考慮不停裝軟件的問題。2.5MySQL數據庫Mysql的語言是非結構化的,用戶可以在數據上進行工作。MySQL因為其速度、可靠性和適應性而備受關注。大多數人都認為在不需要\t"/item/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93/_blank"事務化處理的情況下,MySQL是管理內容最好的選擇。并且因為Mysql的語言和結構比較簡單,但是功能和存儲信息量很強大,所以得到了普遍的應用。Mysql數據庫在編程過程中的作用是很廣泛的,為用戶進行數據查詢帶來了方便。Mysql數據庫的應用因其靈活性強,功能強大,所以在實現(xiàn)某功能時只需要一小段代碼,而不像其他程序需要編寫大段代碼??傮w來說,Mysql數據庫的語言相對要簡潔很多。數據流程分析主要就是數據存儲的儲藏室,它是在計算機上進行的,而不是現(xiàn)實中的儲藏室。數據的存放是按固定格式,而不是無序的,其定義就是:長期有固定格式,可以共享的存儲在計算機存儲器上。數據庫管理主要是數據存儲、修改和增加以及數據表的建立。為了保證系統(tǒng)數據的正常運行,一些有能力的處理者可以進行管理而不需要專業(yè)的人來處理。數據表的建立,可以對數據表中的數據進行調整,數據的重新組合及重新構造,保證數據的安全性。介于數據庫的功能強大等特點,本系統(tǒng)的開發(fā)主要應用了Mysql進行對數據的管理。2.6SpringBoot框架介紹Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現(xiàn)控制反轉來實現(xiàn)管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優(yōu)秀的Web框架方便開發(fā)等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發(fā)者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現(xiàn)。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且?guī)缀蹩梢栽贘ava平臺的任何環(huán)境中工作。Spring集成多種事務模板,系統(tǒng)可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發(fā)人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。第3章系統(tǒng)分析系統(tǒng)分析是開發(fā)一個項目的先決條件,通過系統(tǒng)分析可以很好的了解系統(tǒng)的主體用戶的基本需求情況,同時這也是項目的開發(fā)的原因。進而對系統(tǒng)開發(fā)進行可行性分析,通常包括技術可行性、經濟可行性等,可行性分析同時也是從項目整體角度進行的分析。然后就是對項目的具體需求進行分析,分析的手段一般都是通過用戶的用例圖來實現(xiàn)。下面是詳細的介紹。3.1可行性分析(1)經濟可行性:經濟可行性在此僅代表網站的運維成本,開發(fā)成本不在此考慮。目前該模式下的教師工作量計算系統(tǒng)的數量日益增多,網上進行教師工作量計算的相關信息的查詢管理變得平民化普及化,用戶人數呈上升趨勢,當用戶人數龐大了,運維成本可以由廣告費進行填補,包括開發(fā)成本。所以經濟可行性沒有問題。(2)操作可行性:此次項目設計參考了幾個該模式下網站的開發(fā)案例,對他們的操作界面分析,將眾多案例結合在一起,突出以人為本簡化操作,所以具有基本計算機知識的人都會操作本項目。因此操作可行性也沒有問題。(3)技術可行性:技術可行性指的是對于搭建框架的可行性,以及有更優(yōu)秀的技術出現(xiàn)時系統(tǒng)的技術更新?lián)Q代的納新性如何,開發(fā)時間成本費用比如何?,F(xiàn)有的Java語言能夠迎合所有電子商務系統(tǒng)的搭建,系統(tǒng)技術設備的可擴展性可以由springboot構架的資源優(yōu)勢予以促成。我采用了編譯器eclipse+java+mysql用以運行整體程序。綜上所述技術可行性也沒有問題。(4)法律可行性:從開發(fā)者角度來看,springboot框架是網上開源且免費的,在知識產權方面不會產生任何法律糾紛。從用戶使用角度來看,只要不再系統(tǒng)上販賣違禁品,對系統(tǒng)做出條約協(xié)議,杜絕非法支付即可。綜上所述法律可行性也沒有問題。3.2系統(tǒng)流程分析業(yè)務流程是用一些特定的符合和線條來進行演示用戶在使用系統(tǒng)時的過程,在進行系統(tǒng)分析的時候,業(yè)務流程可以幫助開發(fā)人員更好的理解業(yè)務,發(fā)現(xiàn)錯誤,完善系統(tǒng)。3.2.1數據增加流程用戶成功登入系統(tǒng)后就能夠實現(xiàn)增加數據的操作,增加數據的編號是特定的,系統(tǒng)生成,用戶不能隨意填寫,除了編號以外,其他增加信息用戶自己填寫,填寫后的信息經過系統(tǒng)驗證,驗證合法通過就顯示增加數據成功了,相反的話,就沒有增加成功,圖2-1顯示的就是在增加數據時的流程。圖2-1數據增加流程圖3.2.2數據修改流程數據修改時的流程和上面介紹的數據增加時的流程差不多,如圖2-2所示。圖2-2數據修改流程圖3.2.3數據刪除流程如果系統(tǒng)里面存在一些沒有用的數據的話,相關的管理人員還可以對這些數據進行刪除,圖2-3就是數據刪除時的流程圖。圖2-3數據刪除流程圖3.3系統(tǒng)功能分析3.3.1功能性分析按照教師工作量計算系統(tǒng)的角色,我劃分為了教師用戶和管理員模塊這兩大部分。教師用戶模塊:(1)注冊登錄:游客可以隨時進入到系統(tǒng)中,對系統(tǒng)中的信息瀏覽,但是想要實現(xiàn)教師工作量等信息查詢,就必須有這個系統(tǒng)的賬號,如果沒有賬號的話,可以注冊教師用戶進行相關的操作,同時用戶還可以通過“我的”這以按鈕對個人信息以及操作的信息進行管控。(2)公告信息:教師可以在線上進行公告信息瀏覽等。(3)教師工作量:教師登錄后可以點擊教師工作量查看工作等詳細信息。(4)教師工資:教師登錄后可以查看和編輯教師的職稱、評教等級、課程數量、教師學歷、教師姓名、工資詳情等進行提交相關信息。(5)課程信息:教師登錄后可以對課程信息進行查看、安排,并對授課后課程信息進行總結上傳。(6)課程資料:教師點擊“課程資料”這個菜單按鈕,可以對課程的資料進行查詢、重置、刪除、添加等相應操作。管理員管理模塊:(1)人員管理:管理員可以對教師用戶進行維護管理。(2)公告消息:可對公告消息進行查詢、重置、刪除、添加等相應操作。(3)教師工作量:可對教師的年度工作量進行查詢、重置、刪除、添加等相應操作。(4)教師工資:可對教師的工資信息進行查詢、重置、刪除、添加等相應操作。(5)課程信息:可對教師的課程信息進行查詢、重置、刪除、添加等相應操作。(6)課程資料:可對教師的課程資料信息進行查詢、重置、刪除、添加等相應操作。3.3.2非功能性分析教師工作量計算系統(tǒng)的非功能性需求比如教師工作量計算系統(tǒng)的安全性怎么樣,可靠性怎么樣,性能怎么樣,可拓展性怎么樣等。具體可以表示在如下3-1表格中:表2-1教師工作量計算系統(tǒng)非功能需求表安全性主要指教師工作量計算系統(tǒng)數據庫的安裝,數據庫的使用和密碼的設定必須合乎規(guī)范。可靠性可靠性是指教師工作量計算系統(tǒng)能夠安裝用戶的指示進行操作,經過測試,可靠性90%以上。性能性能是影響教師工作量計算系統(tǒng)占據市場的必要條件,所以性能最好要佳才好。可擴展性比如數據庫預留多個屬性,比如接口的使用等確保了系統(tǒng)的非功能性需求。易用性用戶只要跟著教師工作量計算系統(tǒng)的頁面展示內容進行操作,就可以了??删S護性教師工作量計算系統(tǒng)開發(fā)的可維護性是非常重要的,經過測試,可維護性沒有問題3.4系統(tǒng)用例分析通過3.3功能的分析,得出了本教師工作量計算系統(tǒng)的用例圖:圖3-4就是教師角色的用例展示。圖3-4教師工作量計算系統(tǒng)教師角色用例圖圖3-5就是管理員角色的用例展示。圖3-5教師工作量計算系統(tǒng)管理員角色用例圖3.5本章小結本章主要通過對教師工作量計算系統(tǒng)的可行性分析、流程分析、功能需求分析、系統(tǒng)用例分析,確定整個教師工作量計算系統(tǒng)要實現(xiàn)的功能。同時也為教師工作量計算系統(tǒng)的代碼實現(xiàn)和測試提供了標準。第4章系統(tǒng)設計本章主要討論的內容包括教師工作量計算系統(tǒng)的功能模塊設計、數據庫系統(tǒng)設計。4.1系統(tǒng)架構設計本教師工作量計算系統(tǒng)從架構上分為三層:表現(xiàn)層(UI)、業(yè)務邏輯層(BLL)以及數據層(DL)。圖4-1教師工作量計算系統(tǒng)系統(tǒng)架構設計圖表現(xiàn)層(UI):又稱UI層,主要完成本教師工作量計算系統(tǒng)的UI交互功能,一個良好的UI可以打打提高用戶的用戶體驗,增強用戶使用本教師工作量計算系統(tǒng)時的舒適度。UI的界面設計也要適應不同版本的教師工作量計算系統(tǒng)以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用戶進行交互操作時必須要得到與之相符的交互結果,這就要求表現(xiàn)層要與業(yè)務邏輯層進行良好的對接。業(yè)務邏輯層(BLL):主要完成本教師工作量計算系統(tǒng)的數據處理功能。用戶從表現(xiàn)層傳輸過來的數據經過業(yè)務邏輯層進行處理交付給數據層,系統(tǒng)從數據層讀取的數據經過業(yè)務邏輯層進行處理交付給表現(xiàn)層。數據層(DL):由于本教師工作量計算系統(tǒng)的數據是放在服務端的mysql數據庫中,因此本屬于服務層的部分可以直接整合在業(yè)務邏輯層中,所以數據層中只有數據庫,其主要完成本教師工作量計算系統(tǒng)的數據存儲和管理功能。4.2系統(tǒng)功能模塊設計4.2.1整體功能模塊設計在上一章節(jié)中主要對系統(tǒng)的功能性需求和非功能性需求進行分析,并且根據需求分析了本教師工作量計算系統(tǒng)中的用例。那么接下來就要開始對本教師工作量計算系統(tǒng)的架構、主要功能和數據庫開始進行設計。教師工作量計算系統(tǒng)根據前面章節(jié)的需求分析得出,其總體設計模塊圖如圖3-2所示。圖4-2教師工作量計算系統(tǒng)功能模塊圖4.2.2用戶模塊設計本系統(tǒng)的用戶包括管理員、教師。兩種用戶模塊的功能基本是相同的,教師比管理員多了一個注冊功能,所以以用戶模塊的結構圖為例進行分析,用戶模塊結構圖為例進行分析,如下圖:圖4-3用戶模塊結構圖4.2.3教師工資管理模塊設計教師工作量計算系統(tǒng)可以進行教師工資管理,教師用戶可以在線查看工資詳情,具體的結構圖如下:圖4-4在線留言模塊結構圖4.2.4課程信息管理模塊設計教師工作量計算系統(tǒng)中,教師可以查看課程信息詳情,管理員后臺進行課程信息進行查詢、重置、刪除、添加等相應操作,其模塊功能結構,具體的結構圖如下:圖4-5教師請假模塊結構圖4.3數據庫設計數據庫設計一般包括需求分析、概念模型設計、數據庫表建立三大過程,其中需求分析前面章節(jié)已經闡述,概念模型設計有概念模型和邏輯結構設計兩部分。4.3.1數據庫概念結構設計下面是整個教師工作量計算系統(tǒng)中主要的數據庫表總E-R實體關系圖。圖4-6教師工作量計算系統(tǒng)總E-R關系圖4.3.2數據庫邏輯結構設計通過上一小節(jié)中教師工作量計算系統(tǒng)中總E-R關系圖上得出一共需要創(chuàng)建很多個數據表。在此我主要羅列幾個主要的數據庫表結構設計。access_token字段名稱類型長度不是null主鍵字段說明token_idint11是是臨時訪問牌IDtokenvarchar64否否臨時訪問牌infotext0否否maxageint2是否最大壽命create_timetimestamp0是否創(chuàng)建時間update_timetimestamp0是否更新時間user_idint11是是用戶編號announcement_information字段名稱類型長度不是null主鍵字段說明announcement_information_idint11是否公告信息IDannouncement_novarchar64否否公告編號announcement_titlevarchar64否否公告標題publishervarchar64否否發(fā)布人release_datedate0否否發(fā)布日期announcement_contenttext0否否公告內容recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間auth字段名稱類型長度不是null主鍵字段說明auth_idint11是是授權IDuser_groupvarchar64否否用戶組mod_namevarchar64否否模塊名table_namevarchar64否否表名page_titlevarchar255否否頁面標題pathvarchar255否否路由路徑positionvarchar32否否位置modevarchar32是否跳轉方式addtinyint1是是是否可增加deltinyint1是是是否可刪除settinyint1是是是否可修改gettinyint1是是是否可查看field_addvarchar500否否添加字段field_setvarchar500否否修改字段field_getvarchar500否否查詢字段table_nav_namevarchar500否否跨表導航名稱table_navvarchar500否否跨表導航optiontext0否否配置create_timetimestamp0是否創(chuàng)建時間update_timetimestamp0是否更新時間course_information字段名稱類型長度不是null主鍵字段說明course_information_idint11是否課程信息IDcourse_novarchar64否否課程編號course_namevarchar64否否課程名稱lecturerint11否否授課教師teachers_namevarchar64否否教師姓名teaching_timedatetime0否否授課時間lecture_sectionvarchar64否否授課課節(jié)remarkstext0否否備注信息recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間course_materials字段名稱類型長度不是null主鍵字段說明course_materials_idint11是否課程資料IDcourse_novarchar64否否課程編號course_namevarchar64否否課程名稱lecturerint11否否授課教師teachers_namevarchar64否否教師姓名teaching_timedatetime0否否授課時間lecture_sectionvarchar64否否授課課節(jié)information_documentsvarchar255否否資料文件course_summarytext0否否課程總結recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間hits字段名稱類型長度不是null主鍵字段說明hits_idint10是是點贊IDuser_idint11是是點贊人create_timetimestamp0是否創(chuàng)建時間update_timetimestamp0是否更新時間source_tablevarchar255否否來源表source_fieldvarchar255否否來源字段source_idint10是是來源IDteacher_salary字段名稱類型長度不是null主鍵字段說明teacher_salary_idint11是否教師工資IDtitle_namevarchar64否否標題名稱teacher_informationint11否否教師信息teachers_namevarchar64否否教師姓名teacher_educationvarchar64否否教師學歷academic_salaryvarchar64否否學歷工資teacher_titlevarchar64否否教師職稱title_salaryvarchar64否否職稱工資number_of_coursesint11否否課程數量teaching_evaluation_gradevarchar64否否評教等級teaching_evaluation_bonusvarchar64否否評教獎金annual_salaryvarchar64否否年度工資salary_detailstext0否否工資詳情recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間teacher_user字段名稱類型長度不是null主鍵字段說明teacher_user_idint11是否教師用戶IDteachers_namevarchar64否否教師姓名gender_of_teachersvarchar64否否教師性別teacher_idvarchar64是否教師工號name_of_departmentvarchar64否否院系名稱class_namevarchar64否否班級名稱teacher_educationvarchar64否否教師學歷teacher_titlevarchar64否否教師職稱examine_statevarchar16是否審核狀態(tài)recommendint11是否智能推薦user_idint11是否用戶IDcreate_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間teacher_workload字段名稱類型長度不是null主鍵字段說明teacher_workload_idint11是否教師工作量IDtitle_namevarchar64否否標題名稱teacher_informationint11否否教師信息teachers_namevarchar64否否教師姓名number_of_studentsint11否否學生數量student_hoursvarchar64否否學生學時total_workloadvarchar64否否總工作量recommendint11是否智能推薦create_timedatetime0是否創(chuàng)建時間update_timetimestamp0是否更新時間upload字段名稱類型長度不是null主鍵字段說明upload_idint11是否上傳IDnamevarchar64否否文件名pathvarchar255否否訪問路徑filevarchar255否否文件路徑displayvarchar255否否顯示順序father_idint11否否父級IDdirvarchar255否否文件夾typevarchar32否否文件類型user字段名稱類型長度不是null主鍵字段說明user_idmediumint8是是用戶IDstatesmallint1是是賬戶狀態(tài)user_groupvarchar32否否所在用戶組login_timetimestamp0是否上次登錄時間phonevarchar11否否手機號碼phone_statesmallint1是是手機認證usernamevarchar16是否用戶名nicknamevarchar16否否昵稱passwordvarchar64是否密碼emailvarchar64否否郵箱email_statesmallint1是是郵箱認證avatarvarchar255否否頭像地址create_timetimestamp0是否創(chuàng)建時間user_group字段名稱類型長度不是null主鍵字段說明group_idmediumint8是是用戶組IDdisplaysmallint4是是顯示順序namevarchar16是否名稱descriptionvarchar255否否描述source_tablevarchar255否否來源表source_fieldvarchar255否否來源字段source_idint10是是來源IDregistersmallint1否是注冊位置create_timetimestamp0是否創(chuàng)建時間update_timetimestamp0是否更新時間4.4本章小結整個教師工作量計算系統(tǒng)的需求分析主要對系統(tǒng)總體架構以及功能模塊的設計,通過建立E-R模型和數據庫邏輯系統(tǒng)設計完成了數據庫系統(tǒng)設計。第5章系統(tǒng)詳細設計教師工作量計算系統(tǒng)的詳細設計與實現(xiàn)主要是根據前面的教師工作量計算系統(tǒng)的需求分析和教師工作量計算系統(tǒng)的總體設計來設計頁面并實現(xiàn)業(yè)務邏輯。主要從教師工作量計算系統(tǒng)界面實現(xiàn)、業(yè)務邏輯實現(xiàn)這兩部分進行介紹。5.1用戶功能模塊5.1.1教師首頁界面當進入教師工作量計算系統(tǒng)的時候,系統(tǒng)以上中下的布局進行展示,首先映入眼簾的是系統(tǒng)的導航欄,下面是公告信息,再往下是各種各樣的系統(tǒng)信息,其主界面展示如下圖5-1所示。圖5-1教師首頁界面圖5.1.2個人管理界面用戶登錄/注冊成功之后可以修改自己的基本信息。修改頁面的表單中每一個input的name值都要與實體類中的參數相匹配,在用戶點擊修改頁面的時候,如果改后用戶名與數據庫里面重復了,頁面會提示該用戶名已經存在了,否則通過Id來查詢用戶,并將用戶的信息修改為表單提交的數據。其個人信息界面展示如下圖5-2所示。圖5-2個人信息界面圖個人信息邏輯代碼如下:/***注冊*@paramuser*@return*/@PostMapping("register")publicMap<String,Object>signUp(@RequestBodyUseruser){//查詢用戶Map<String,String>query=newHashMap<>();query.put("username",user.getUsername());Listlist=service.select(query,newHashMap<>()).getResultList();if(list.size()>0){returnerror(30000,"用戶已存在");}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);returnsuccess(1);}/***用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據*/@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="user_id")privateIntegeruserId;/***賬戶狀態(tài):[0,10](1可用|2異常|3已凍結|4已注銷)*/@Basic@Column(name="state")privateIntegerstate;/***所在用戶組:[0,32767]決定用戶身份和權限*/@Basic@Column(name="user_group")privateStringuserGroup;/***上次登錄時間:*/@Basic@Column(name="login_time")privateTimestamploginTime;/***手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時*/@Basic@Column(name="phone")privateStringphone;/***手機認證:[0,1](0未認證|1審核中|2已認證)*/@Basic@Column(name="phone_state")privateIntegerphoneState;/***用戶名:[0,16]用戶登錄時所用的賬戶名稱*/@Basic@Column(name="username")privateStringusername;/***昵稱:[0,16]*/@Basic@Column(name="nickname")privateStringnickname;/***密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成*/@Basic@Column(name="password")privateStringpassword;/***郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時*/@Basic@Column(name="email")privateStringemail;/***郵箱認證:[0,1](0未認證|1審核中|2已認證)*/@Basic@Column(name="email_state")privateIntegeremailState;/***頭像地址:[0,255]*/@Basic@Column(name="avatar")privateStringavatar;/***創(chuàng)建時間:*/@Basic@Column(name="create_time")@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateTimestampcreateTime;@Basic@TransientprivateStringcode;}5.1.3教師登錄界面教師工作量計算系統(tǒng)中的前臺上注冊后的教師是可以通過自己的賬戶名和密碼進行登錄的,當教師輸入完整的自己的賬戶名和密碼信息并點擊“登錄”按鈕后,將會首先驗證輸入的有沒有空數據,再次驗證輸入的賬戶名+密碼和數據庫中當前保存的用戶信息是否一致,只有在一致后將會登錄成功并自動跳轉到教師工作量計算系統(tǒng)的首頁中;否則將會提示相應錯誤信息,教師登錄界面如下圖5-3所示。圖5-3教師登錄界面圖教師登錄的邏輯代碼如下所示。/***登錄*@paramdata*@paramhttpServletRequest*@return*/@PostMapping("login")publicMap<String,Object>login(@RequestBodyMap<String,String>data,HttpServletRequesthttpServletRequest){("[執(zhí)行登錄接口]");Stringusername=data.get("username");Stringemail=data.get("email");Stringphone=data.get("phone");Stringpassword=data.get("password");ListresultList=null;Map<String,String>map=newHashMap<>();if(username!=null&&"".equals(username)==false){map.put("username",username);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(email!=null&&"".equals(email)==false){map.put("email",email);resultList=service.select(map,newHashMap<>()).getResultList();}elseif(phone!=null&&"".equals(phone)==false){map.put("phone",phone);resultList=service.select(map,newHashMap<>()).getResultList();}else{returnerror(30000,"賬號或密碼不能為空");}if(resultList==null||password==null){returnerror(30000,"賬號或密碼不能為空");}//判斷是否有這個用戶if(resultList.size()<=0){returnerror(30000,"用戶不存在");}UserbyUsername=(User)resultList.get(0);Map<String,String>groupMap=newHashMap<>();groupMap.put("name",byUsername.getUserGroup());ListgroupList=userGroupService.select(groupMap,newHashMap<>()).getResultList();if(groupList.size()<1){returnerror(30000,"用戶組不存在");}UserGroupuserGroup=(UserGroup)groupList.get(0);//查詢用戶審核狀態(tài)if(!StringUtils.isEmpty(userGroup.getSourceTable())){Stringsql="selectexamine_statefrom"+userGroup.getSourceTable()+"WHEREuser_id="+byUsername.getUserId();Stringres=String.valueOf(service.runCountSql(sql).getSingleResult());if(res==null){returnerror(30000,"用戶不存在");}if(!res.equals("已通過")){returnerror(30000,"該用戶審核未通過");}}//查詢用戶狀態(tài)if(byUsername.getState()!=1){returnerror(30000,"用戶非可用狀態(tài),不能登錄");}Stringmd5password=service.encryption(password);if(byUsername.getPassword().equals(md5password)){//存儲Token到數據庫AccessTokenaccessToken=newAccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-",""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);//返回用戶信息JSONObjectuser=JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token",accessToken.getToken());JSONObjectret=newJSONObject();ret.put("obj",user);returnsuccess(ret);}else{returnerror(30000,"賬號或密碼不正確");}}5.1.4公告信息界面當點擊導航欄上的“公告信息”的時候,就會進入對應的界面查看公告信息,公告信息界面如下圖5-4所示。圖5-4公告信息界面圖5.1.5課程信息界面教師登錄系統(tǒng)后可以點擊“課程信息”菜單,對課程安排信息進行查看了解等,課程信息界面如下圖5-5所示。圖5-5課程信息界面圖課程信息的邏輯代碼如下:@PostMapping("/add")@TransactionalpublicMap<String,Object>add(HttpServletRequestrequest)throwsIOException{service.insert(service.readBody(request.getReader()));returnsuccess(1);}@TransactionalpublicMap<String,Object>addMap(Map<String,Object>map){service.insert(map);returnsuccess(1);}publicMap<String,Object>readBody(BufferedReaderreader){BufferedReaderbr=null;StringBuildersb=newStringBuilder("");try{br=reader;Stringstr;while((str=br.readLine())!=null){sb.append(str);}br.close();Stringjson=sb.toString();returnJSONObject.parseObject(json,Map.class);}catch(IOExceptione){e.printStackTrace();}finally{if(null!=br){try{br.close();}catch(IOExceptione){e.printStackTrace();}}}returnnull;}publicvoidinsert(Map<String,Object>body){StringBuffersql=newStringBuffer("INSERTINTO");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()){Objectvalue=entry.getValue();if(valueinstanceofString){sql.append("'").append(entry.getValue()).append("'").append(",");}else{sql.append(entry.getValue()).append(",");}}sql.deleteCharAt(sql.length()-1);sql.append(")");("[{}]-插入操作:{}",table,sql);Queryquery=runCountSql(sql.toString());query.executeUpdate();}5.1.6課程資料界面教師點擊“課程資料”菜單,可以對課程資料信息進行查看了解或下載等,課程資料界面如下圖5-6所示。圖5-6課程資料界面圖課程資料界面邏輯代碼如下:@RequestMapping(value={"/avg_group","/avg"}) publicMap<String,Object>avg(HttpServletRequestrequest){Querycount=service.avg(service.readQuery(request),service.readConfig(request));returnsuccess(count.getResultList());}5.1.7教師工作量界面當教師點擊“教師工作量”菜單后就進入教師工作量界面,可以查看教師總工作量詳細信息。教師工作量界面如下圖5-7所示。圖5-7教師工作量界面圖5.1.8教師工資界面教師進入系統(tǒng),可以在線查看教師工資、獎金等詳細信息,教師工資界面如下圖5-8所示。圖5-8教師工資界面圖5.2管理員功能模塊5.2.1教師工資管理界面教師工作量計算系統(tǒng)中的可對教師的總工作量進行查詢、重置、刪除、添加等相應操作。界面如下圖5-9所示。圖5-9教師工資管理界面圖教師工資管理界面邏輯代碼如下:@RequestMapping(value={"/count_group","/count"})publicMap<String,Object>count(HttpServletRequestrequest){Querycount=service.count(service.readQuery(request),service.readConfig(request));returnsuccess(count.getResultList());}5.2.2人員管理界面教師工作量計算系統(tǒng)中的管理人員在“教師用戶”這一菜單是中可以對注冊的教師用戶進行管控,這里以教師用戶管理為例。界面如下圖5-10所示。圖5-10教師管理界面圖教師用戶管理界面關鍵代碼如下:@RequestMapping("/get_list")publicMap<String,Object>getList(HttpServletRequestrequest){Map<String,Object>map=service.selectToPage(service.readQuery(request),service.readConfig(request));returnsuccess(map);5.2.3教師工資管理界面管理員可對教師的工資信息進行查詢、重置、刪除、添加等相應操作。,界面如下圖5-11所示。圖5-11教師工資管理界面圖教師工資管理界面邏輯代碼如下:@PostMapping("/upload")publicMap<String,Object>upload(@RequestParam("file")MultipartFilefile){("進入方法");if(file.isEmpty()){returnerror(30000,"沒有選擇文件");}try{//判斷有沒路徑,沒有則創(chuàng)建StringfilePath=System.getProperty("user.dir")+"\\target\\classes\\static\\upload\\";FiletargetDir=newFile(filePath);if(!targetDir.exists()&&!targetDir.isDirectory()){if(targetDir.mkdirs()){("創(chuàng)建目錄成功");}else{log.error("創(chuàng)建目錄失敗");}}StringfileName=file.getOriginalFilename();Filedest=newFile(filePath+fileName);("文件路徑:{}",dest.getPath());("文件名:{}",dest.getName());file.transferTo(dest);JSONObjectjsonObject=newJSONObject();jsonObject.put("url","/api/upload/"+fileName);returnsuccess(jsonObject);}catch(IOExceptione){("上傳失敗:{}",e.getMessage());}returnerror(30000,"上傳失敗");}5.2.4課程信息管理界面教師工作量計算系統(tǒng)中的管理人員在“課程信息”中可對教師的課程信息進行查詢、重置、刪除、添加等相應操作。其管理界面如下圖5-12所示。圖5-12課程信息管理界面圖課程信息管理界面邏輯代碼如下:@PostMapping("/set")@TransactionalpublicMap<String,Object>set(HttpServletRequestrequest)throwsIOException{service.update(service.readQuery(request),service.readConfig(request),service.readBody(request.getReader()));returnsuccess(1);}publicMap<String,String>readConfig(HttpServletRequestrequest){Map<String,String>map=newHashMap<>();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_));returnmap;}publicMap<String,String>readQuery(HttpServletRequestrequest){StringqueryString=request.getQueryString();if(queryString!=null&&!"".equals(queryString)){String[]querys=queryString.split("&");Map<String,String>map=newHashMap<>();for(Stringquery: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_);returnmap;}else{returnnewHashMap<>();}}@Transactionalpublicvoidupdate(Map<String,String>query,Map<String,String>config,Map<String,Object>body){StringBuffersql=newStringBuffer("UPDATE").append("`").append(table).append("`").append("SET");for(Map.Entry<String,Object>entry:body.entrySet()){Objectvalue=entry.getValue();if(valueinstanceofString){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))));("[{}]-更新操作:{}",table,sql);Queryquery1=runCountSql(sql.toString());query1.executeUpdate();}publicStringtoWhereSql(Map<String,String>query,Booleanlike){if(query.size()>0){try{StringBuildersql=newStringBuilder("WHERE");for(Map.Entry<String,String>entry:query.entrySet()){if(entry.getKey().contains(FindConfig.MIN_)){Stringmin=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_)){Stringmax=humpToLine(entry.getKey()).replace("_max","");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版高科技創(chuàng)業(yè)企業(yè)合伙人利益共享協(xié)議3篇
- 二零二五年度出租車行業(yè)數據共享與司機權益保護合同3篇
- 2025年分公司設立及業(yè)務培訓合作協(xié)議書4篇
- 二零二五年度臨時職工技能提升培訓合同
- 2025年度陶瓷設計工作室設計師勞動合同樣本
- 萬科星辰大廈2024年施工總承包合同版
- 二零二五年度城市地下空間開發(fā)土石方運輸與管網鋪設合同3篇
- 二零二五年度廠房租賃合同附安全風險評估協(xié)議3篇
- 二手房定金合同參考模板(2024版)
- 2025年門窗行業(yè)供應鏈戰(zhàn)略合作框架協(xié)議
- 南安市第三次全國文物普查不可移動文物-各鄉(xiāng)鎮(zhèn)、街道分布情況登記清單(表五)
- 選煤廠安全知識培訓課件
- 項目前期選址分析報告
- 急性肺栓塞搶救流程
- 《統(tǒng)計學-基于Python》 課件全套 第1-11章 數據與Python語言-時間序列分析和預測
- 《形象價值百萬》課件
- 紅色文化教育國內外研究現(xiàn)狀范文十
- 中醫(yī)基礎理論-肝
- 小學外來人員出入校門登記表
- 《土地利用規(guī)劃學》完整課件
- GB/T 25283-2023礦產資源綜合勘查評價規(guī)范
評論
0/150
提交評論