项目github地址,欢迎star!💗html
做业收缴系统使用手册地址前端
项目介绍
系统旨在优化做业上交流程,解决收缴做业的繁琐过程,传统收缴做业基于qq文件,或者邮箱收发。须要大量的人工操做和精力取维护。而本系统将做业系统部署到服务器,大大方便了教师/收做业者对做业的管理。系统精美简单易用。可以知足大部分需求。项目已开源,能够本身使用或者二次开发等等。欢迎star😭!! 开发工具:IDEA+postman+nivicat 主要框架:Springboot+Mybatis+Shiro+Druid 其余框架/工具:devtools,Easyexcel(poi),Mybatis-generator, 运行环境:Tomcat8.5以上,Mysql5或8java
数据库设计
这个数据库是老师给我让我完成的,7张表只用了6张,老师给了一些关键性的外键,其实还有一些外键参考,但鉴于系统并非彻底完善而且对逻辑影响不是很大,因此我就没加上那些外键。若是有须要可自行添加。 mysql
对于数据库解读是最重要的一步。对于项目并无太多复杂的逻辑需求。因此直接从数据库开始。
teacher
- 此表包含教师信息的基本字段,包过工号,姓名,密码,level是权限用的,管理员教师能够操做其余教师,level为0权限为管理员,其余为普通教师。
student
teachclass
- 此表为课程表,一个老师不一样学期可能带几个班级,这个课程就要有学期,名称,学分,课程类型,对应教师等信息。
job
- 这个能够理解为具体实验表(做业),没门课程老师可能发布不一样的做业,就要有对应的介绍。
studentclass
- 这是学生和课程联系的中介。一个学生能够在不一样课程中上课,课程id(teachclass表的ID和学号为惟一索引)
score
- 这就是提供教师打分记录表,学生提交后教师可对学生打分存入数据库。
项目目录
前端
前端文件一览:
前端采用后台管理
layui,并无用别人写好的layui模板进行嵌套修改,而是从0开始从layui官方开始参考文档一点点用组件。
前端为主界面+iframe小界面,中间的内容框为ifame界面显示内容。git
浅谈layui:github
-
之前就接触过layui,之前和队友配合队友写前端本身队友用的就是前端。还有之前帮姐姐写的小东西也是用的layui,不过那次用的layui不是真的layui。。那只是用到layui漂亮的外表。清晰记得。套过来layui的壳子,而后能用thymleaf交互的地方就不用ajax。。遇到ajax的地方(好比表格)等等就疯狂Jquery拼凑html,虽然外观还行,可是可维护性不好,本身都不清楚本身写那去了。ajax
-
形成上述的缘由主要是由于本身太过墨守成规,觉得ui框架只是提供ui,而事实上一个优秀的框架每每比你想象的还要优秀的多。不只是美丽的外观,还有强大的功能和便捷的使用。这就要耐心的阅读文档,不要被文档吓到。sql
-
在本系统中用到layui多个组件。如表单,表格,时间日期,文件上传,表格等等,layui虽然不是双向绑定模式,可是layui对于控件fitter的绑定和监听作的特别好,虽然大部分方便了使用可是会使得部分传统方法出现失效的问题须要本身解决。layui大部分都是基于ajax的异步传输。在系统初用的是thymleaf,后来发如今layui的领域thymleaf并不能展示过大的便捷性,后面的就都用html了。其次就是layui的一些东西可能对后端新手(好比我)有一些新颖。layui表单等等封装了很便捷的异步提交方式。你大部分的传输方式要按照他的规则来,可是也有一些时候他可能知足不了你的需求你须要解决。对于layui更多功能,详细参考layui官当demo数据库
后端
后端就是mvc的设计架构:
- config: shiro的配置和自定义releam配置在文件中,还有就是druid监控的一些内容也放在里面。
- controller: controller层分了几个controller,好比文件处理一个,登陆受权一个,thymleaf控制一个,还有studentcontroller处理一些学生端的事务,由于教师端的内容比较多,根据处理不一样的信息分了处理学生,处理课程,处理实验等controller。
- service: 当时为了方便只写了两个service,学生和教师,因此service内容比较多,你能够从controller的内容找入service
- dao: 为mybatis逆向工程生成基本文件和本身添加一些接口
- pojo 数据库映射对象,其中student继承知足poi导入excel的类。
- log logback日志配置,放到服务器要修改日志文件地址(用绝对路径不然日志文件将不存在)
模板引擎和ajax
项目采用thymleaf+html的样式,由于我的开发对于一些参数用thymleaf仍是会方便不少。可是thymleaf对于数据绑定对动态数据不太好处理,因此不涉及静态数据绑定的界面通常都是html。apache
功能设计
学生端
-
文件上传 客户端文件上传
- layui的form表单默认是同步上传,而同步上传须要跳转界面并非我想要的结果,因此本系统用异步上传文件来完成。所用的是ajax的formdate进行文件上传。具体代码可参考templates/student/upload.html这个thymleaf文件。
服务端文件接受:
- 服务端之前的文件接收用的是servlet3.0,可是Springmvc的MultipartFile接受文件更加便捷,因此采用对于上传的路径。为tomcat项目相对路径fileget/"+lessonid+"/"+jobid+"/"+文件名;这里文件名设置为学号+姓名+实验名+实验几。具体可参考fileController.java代码内容。
- 还有就是原本是写了做业补交的功能的,可是出于需求考虑补交部分被注释掉。因此截至日期暂时没有明显做用。只是上传做业的时候会提示。
教师端
- 文件打包成zip: 要将服务器全部已经上传的文件打包成zip文件,要注意打包成zip文件的时候不能在服务器保存—不要占用额外的空间,全部就要用io临时生成zip文件传输到客户端,这就要很好的处理下io流的内容,还要考虑文件下载的内容。谨防异常和文件名乱码等。具体可参考fileController下代码。
- 接受excel并解析: java解析excel的工具并很少,当前较为流行的apache下的poi。我用的是阿里的easyexcel—基于poi封装改进的框架。可是基于poi若是解析excel生成实体类须要对pojo对象继承BaseRowModel类并在字段上给出对应注解:
- layui表格 layui表格按照固定格式ajax渲染而来的,项目中屡次用到layui表格。提供强大的在线编辑,排序,导出excel/cvs等功能。你只需耐心阅读layui表格相关部分文档就能够了解其中流程。
- 其余 项目中其余部分无非就是表单提交。后台增删改查。模糊查询。前端jq处理逻辑等等。
权限设计
权限设计基于Shiro进行,
登陆验证
- 其实这里我当时纠结的挺久就是shiro的releam通常是针对一个user表中的数据进行验证,可是项目中的用户来源自学生表和教师表。由于shiro的session和request的session实际上是一个session,因此你能够很灵活的完成一些内容。学生端,教师端并非一个统一的登陆入口,因此在两个登陆的端口分别用一个session防一个role身份。在releam中用shiro的session判断角色,if else判断角色写方法解决。
受权管理
- 登陆验证能够解决非系统用户访问系统的问题,可是不进行权限处理会形成用户抓到接口可能会进行越权操做。对系统稳定和安全形成威胁。必定须要受权。由于个人接口(教师端)都加了前缀teacher/xxx,更适合url统一管理,对于url统一管理,我采用的是针对身份的管理而不是资源的细化管理。由于主要仍是教师和学生两类用户。用role能够知足需求。
项目安装
项目环境为tomcat8.5以上,mysql5或8.
- 首先复制db目录receve的内容放到nivicat等数据库建库建表(数据已经进行阉割)
- 若有须要,修改application.properties文件的数据库帐号密码
- 修改logback.xml的日志路径(若是须要)
4.若是本地可直接运行,若是打包部署,须要先clean,而后修改maven配置 将两个被注释的还原
而后再target目录下找到war包,修改为你要的项目名,用ssh、scp等工具指令放到tomcat指定目录下。就能够访问了。 教师端登陆地址:http://localhost:8080/loginteacher.html (数据库teacher表) 学生端登陆地址:http://localhost:8080/login.html (数据库student表) 数据库监控地址:http://localhost:8080/druid/login.html (数据库帐号密码)