作业收缴系统设计手册(自写开源小系统)
目錄
- 項(xiàng)目介紹
- 數(shù)據(jù)庫設(shè)計(jì)
- teacher
- student
- teachclass
- job
- studentclass
- score
- 項(xiàng)目目錄
- 前端
- 后端
- 模板引擎和ajax
- 功能設(shè)計(jì)
- 學(xué)生端
- 教師端
- 權(quán)限設(shè)計(jì)
- 登錄驗(yàn)證
- 授權(quán)管理
- 項(xiàng)目安裝
項(xiàng)目介紹
系統(tǒng)旨在優(yōu)化作業(yè)上交流程,解決收繳作業(yè)的繁瑣過程,傳統(tǒng)收繳作業(yè)基于qq文件,或者郵箱收發(fā)。需要大量的人工操作和精力取維護(hù)。而本系統(tǒng)將作業(yè)系統(tǒng)部署到服務(wù)器,大大方便了教師/收作業(yè)者對作業(yè)的管理。系統(tǒng)精美簡單易用。能夠滿足大部分需求。項(xiàng)目已開源,可以自己使用或者二次開發(fā)等等。歡迎star?!!
項(xiàng)目github地址,歡迎star!?
作業(yè)收繳系統(tǒng)使用手冊csdn地址
開發(fā)工具:IDEA postman nivicat
主要框架:Springboot Mybatis Shiro Druid
其他框架/工具:devtools,Easyexcel(poi),Mybatis-generator,
運(yùn)行環(huán)境:Tomcat8.5以上,Mysql5或8
數(shù)據(jù)庫設(shè)計(jì)
這個(gè)數(shù)據(jù)庫是老師給我讓我完成的,7張表只用了6張,老師給了一些關(guān)鍵性的外鍵,其實(shí)還有一些外鍵參考,但鑒于系統(tǒng)并不是完全完善并且對邏輯影響不是很大,所以我就沒加上那些外鍵。如果有需要可自行添加。
對于數(shù)據(jù)庫解讀是最重要的一步。對于項(xiàng)目并沒有太多復(fù)雜的邏輯需求。所以直接從數(shù)據(jù)庫開始。
teacher
- 此表包含教師信息的基本字段,包過工號,姓名,密碼,level是權(quán)限用的,管理員教師可以操作其他教師,level為0權(quán)限為管理員,其他為普通教師。
student
- 此表包含學(xué)生的基本信息
teachclass
- 此表為課程表,一個(gè)老師不同學(xué)期可能帶幾個(gè)班級,這個(gè)課程就要有學(xué)期,名稱,學(xué)分,課程類型,對應(yīng)教師等信息。
job
- 這個(gè)可以理解為具體實(shí)驗(yàn)表(作業(yè)),沒門課程老師可能發(fā)布不同的作業(yè),就要有對應(yīng)的介紹。
studentclass
- 這是學(xué)生和課程聯(lián)系的中介。一個(gè)學(xué)生可以在不同課程中上課,課程id(teachclass表的ID和學(xué)號為唯一索引)
score
- 這就是提供教師打分記錄表,學(xué)生提交后教師可對學(xué)生打分存入數(shù)據(jù)庫。
項(xiàng)目目錄
前端
前端文件一覽:
前端采用后臺(tái)管理layui,并沒有用別人寫好的layui模板進(jìn)行嵌套修改,而是從0開始從layui官方開始參考文檔一點(diǎn)點(diǎn)用組件。
前端為主界面 iframe小界面,中間的內(nèi)容框?yàn)閕fame界面顯示內(nèi)容。
淺談layui:
-
以前就接觸過layui,以前和隊(duì)友配合隊(duì)友寫前端自己隊(duì)友用的就是前端。還有以前幫姐姐寫的小東西也是用的layui,不過那次用的layui不是真的layui。。那只是用到layui漂亮的外表。清晰記得。套過來layui的殼子,然后能用thymleaf交互的地方就不用ajax。。遇到ajax的地方(比如表格)等等就瘋狂Jquery拼湊html,雖然外觀還行,但是可維護(hù)性很差,自己都不清楚自己寫那去了。
-
造成上述的原因主要是因?yàn)樽约禾^墨守成規(guī),以為ui框架只是提供ui,而事實(shí)上一個(gè)優(yōu)秀的框架往往比你想象的還要優(yōu)秀的多。不僅是美麗的外觀,還有強(qiáng)大的功能和便捷的使用。這就要耐心的閱讀文檔,不要被文檔嚇到。
-
在本系統(tǒng)中用到layui多個(gè)組件。如表單,表格,時(shí)間日期,文件上傳,表格等等,layui雖然不是雙向綁定模式,但是layui對于控件fitter的綁定和監(jiān)聽做的特別好,雖然大部分方便了使用但是會(huì)使得部分傳統(tǒng)方法出現(xiàn)失效的問題需要自己解決。layui大部分都是基于ajax的異步傳輸。在系統(tǒng)初用的是thymleaf,后來發(fā)現(xiàn)在layui的領(lǐng)域thymleaf并不能展現(xiàn)過大的便捷性,后面的就都用html了。其次就是layui的一些東西可能對后端新手(比如我)有一些新穎。layui表單等等封裝了很便捷的異步提交方式。你大部分的傳輸方式要按照他的規(guī)則來,但是也有一些時(shí)候他可能滿足不了你的需求你需要解決。對于layui更多功能,詳細(xì)參考layui官當(dāng)demo
后端
后端就是mvc的設(shè)計(jì)架構(gòu):
- config:
shiro的配置和自定義releam配置在文件中,還有就是druid監(jiān)控的一些內(nèi)容也放在里面。 - controller:
controller層分了幾個(gè)controller,比如文件處理一個(gè),登錄授權(quán)一個(gè),thymleaf控制一個(gè),還有studentcontroller處理一些學(xué)生端的事務(wù),因?yàn)榻處煻说膬?nèi)容比較多,根據(jù)處理不同的信息分了處理學(xué)生,處理課程,處理實(shí)驗(yàn)等controller。 - service:
當(dāng)時(shí)為了方便只寫了兩個(gè)service,學(xué)生和教師,所以service內(nèi)容比較多,你可以從controller的內(nèi)容找入service - dao:
為mybatis逆向工程生成基本文件和自己添加一些接口 - pojo
數(shù)據(jù)庫映射對象,其中student繼承滿足poi導(dǎo)入excel的類。 - log
logback日志配置,放到服務(wù)器要修改日志文件地址(用絕對路徑否則日志文件將不存在)
模板引擎和ajax
項(xiàng)目采用thymleaf html的樣式,因?yàn)閭€(gè)人開發(fā)對于一些參數(shù)用thymleaf還是會(huì)方便很多。但是thymleaf對于數(shù)據(jù)綁定對動(dòng)態(tài)數(shù)據(jù)不太好處理,所以不涉及靜態(tài)數(shù)據(jù)綁定的界面一般都是html。
功能設(shè)計(jì)
學(xué)生端
- 文件上傳
客戶端文件上傳 - layui的form表單默認(rèn)是同步上傳,而同步上傳需要跳轉(zhuǎn)界面并不是我想要的結(jié)果,所以本系統(tǒng)用異步上傳文件來完成。所用的是ajax的formdate進(jìn)行文件上傳。具體代碼可參考templates/student/upload.html這個(gè)thymleaf文件。
服務(wù)端文件接受:
- 服務(wù)端以前的文件接收用的是servlet3.0,但是Springmvc的MultipartFile接受文件更加便捷,所以采用對于上傳的路徑。為tomcat項(xiàng)目相對路徑fileget/" lessonid “/” jobid “/” 文件名;這里文件名設(shè)置為學(xué)號 姓名 實(shí)驗(yàn)名 實(shí)驗(yàn)幾。具體可參考fileController.java代碼內(nèi)容。
- 還有就是本來是寫了作業(yè)補(bǔ)交的功能的,但是出于需求考慮補(bǔ)交部分被注釋掉。所以截至日期暫時(shí)沒有明顯作用。只是上傳作業(yè)的時(shí)候會(huì)提示。
教師端
- 文件打包成zip:
要將服務(wù)器所有已經(jīng)上傳的文件打包成zip文件,要注意打包成zip文件的時(shí)候不能在服務(wù)器保存—不要占用額外的空間,所有就要用io臨時(shí)生成zip文件傳輸?shù)娇蛻舳?#xff0c;這就要很好的處理下io流的內(nèi)容,還要考慮文件下載的內(nèi)容。謹(jǐn)防異常和文件名亂碼等。具體可參考fileController下代碼。 - 接受excel并解析:
java解析excel的工具并不多,當(dāng)前較為流行的apache下的poi。我用的是阿里的easyexcel—基于poi封裝改進(jìn)的框架。但是基于poi如果解析excel生成實(shí)體類需要對pojo對象繼承BaseRowModel類并在字段上給出對應(yīng)注解: - layui表格
layui表格按照固定格式ajax渲染而來的,項(xiàng)目中多次用到layui表格。提供強(qiáng)大的在線編輯,排序,導(dǎo)出excel/cvs等功能。你只需耐心閱讀layui表格相關(guān)部分文檔就可以了解其中流程。
- 其他
項(xiàng)目中其他部分無非就是表單提交。后臺(tái)增刪改查。模糊查詢。前端jq處理邏輯等等。
權(quán)限設(shè)計(jì)
權(quán)限設(shè)計(jì)基于Shiro進(jìn)行,
登錄驗(yàn)證
- 其實(shí)這里我當(dāng)時(shí)糾結(jié)的挺久就是shiro的releam一般是針對一個(gè)user表中的數(shù)據(jù)進(jìn)行驗(yàn)證,但是項(xiàng)目中的用戶來源自學(xué)生表和教師表。因?yàn)閟hiro的session和request的session其實(shí)是一個(gè)session,所以你可以很靈活的完成一些內(nèi)容。學(xué)生端,教師端并不是一個(gè)統(tǒng)一的登錄入口,所以在兩個(gè)登錄的端口分別用一個(gè)session防一個(gè)role身份。在releam中用shiro的session判斷角色,if else判斷角色寫方法解決。
授權(quán)管理
- 登錄驗(yàn)證可以解決非系統(tǒng)用戶訪問系統(tǒng)的問題,但是不進(jìn)行權(quán)限處理會(huì)造成用戶抓到接口可能會(huì)進(jìn)行越權(quán)操作。對系統(tǒng)穩(wěn)定和安全造成威脅。一定需要授權(quán)。因?yàn)槲业慕涌?#xff08;教師端)都加了前綴teacher/xxx,更適合url統(tǒng)一管理,對于url統(tǒng)一管理,我采用的是針對身份的管理而不是資源的細(xì)化管理。因?yàn)橹饕€是教師和學(xué)生兩類用戶。用role可以滿足需求。
項(xiàng)目安裝
項(xiàng)目環(huán)境為tomcat8.5以上,mysql5或8.
4.如果本地可直接運(yùn)行,如果打包部署,需要先clean,然后修改maven配置
將兩個(gè)被注釋的還原
然后再target目錄下找到war包,修改成你要的項(xiàng)目名,用ssh、scp等工具指令放到tomcat指定目錄下。就可以訪問了。
教師端登錄地址:http://localhost:8080/loginteacher.html (數(shù)據(jù)庫teacher表)
學(xué)生端登錄地址:http://localhost:8080/login.html (數(shù)據(jù)庫student表)
數(shù)據(jù)庫監(jiān)控地址:http://localhost:8080/druid/login.html (數(shù)據(jù)庫賬號密碼)
- 如果對后端、爬蟲、數(shù)據(jù)結(jié)構(gòu)算法等感性趣歡迎關(guān)注我的個(gè)人公眾號交流:bigsai
總結(jié)
以上是生活随笔為你收集整理的作业收缴系统设计手册(自写开源小系统)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作业收缴系统使用手册(自写开源小系统)
- 下一篇: 食堂就餐刷卡系统源码_敲重点,刷卡机要拆