源码获取:博客首页 "资源" 里下载!

一、项目简述

功能包括: 管理员可以增删改查教材、教材商、入库教材、用户(用 户包括学生和教师)可以对教材商、教材进行。xcel的导入 导出操作。教师可以领取入库的教材,可以退还教材。学 生只能在对应的教师那里领取教材,并且可以退还教材、 查询自己已经领取的教材。并且对已领教材付款等等。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Struts+Spring+Hibernate + html+ css + JavaScript + JQuery + Ajax等等。

登录控制层:

@RestController
public class LoginController {@Resource(name = "loginService")private ILoginService loginService;/*** 用户登录调用 在登陆成功生成两个token 同时返回各自首页* * 学生 student/student* * 老师 teacher/teacher* * 管理员 admin/admin*/@RequestMapping(value = "/login/login", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})public Result<Token> login(HttpRequest request) {return loginService.login(request.getString("login_name"), request.getString("pwd"));}/*** 登录检查*/@RequestMapping(value = "/login/check", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})public Result<Token> check() {return new Result<>();}/*** token 续约*/@RequestMapping(value = "/login/refresh", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})public Result<Token> refresh(HttpRequest request) {String refreshToken = request.getString("refresh_token");String urlId = request.getString("url_id");Token token = TokenCache.getInstance().get(urlId);if(token == null){ExceptionHelper.error(ErrorCode.ERROR_CODE_0003);}try {Claims claims = TokenUtils.parseToken(refreshToken);if (StringUtils.isNotEmpty((String.valueOf(claims.getOrDefault("student_id", ""))))) {claims.put("student_id", SessionContext.get("student_id"));}if (StringUtils.isNotEmpty((String.valueOf(claims.getOrDefault("teacher_id", ""))))) {claims.put("teacher_id", SessionContext.get("teacher_id"));}if (StringUtils.isNotEmpty((String.valueOf(claims.getOrDefault("login_name", ""))))) {claims.put("login_name", SessionContext.get("login_name"));}claims.put("name", claims.get("name"));token.setToken(TokenUtils.createToken(claims, TokenUtils.expireTime));token.setRefreshToken(TokenUtils.createToken(claims, TokenUtils.long_expireTime));TokenCache.getInstance().add(token);} catch (Exception e) {ExceptionHelper.error(ErrorCode.ERROR_CODE_0003);}return new Result<>(token);}/*** 退出系统*/@RequestMapping(value = "/login/exit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})public Result<Token> exit(HttpRequest request) {String urlId = request.getString("url_id");if (StringUtils.isNotEmpty(urlId)) {TokenCache.getInstance().remove(urlId);}return new Result<>();}
}

考试管理控制器:

/*** 考试管理控制器*/
@RestController
public class ExamInfoController {@Resource(name = "examInfoService")private IExamInfoService examInfoService;/*** 教师 查询考试列表*/@RequestMapping(value = "/examinfo/qryPage", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public ListResult<ExamInfo> exam(HttpRequest request) {Map<String, Object> param = new HashMap<>();int pageNo = request.containsKey("page_no") ? request.getInteger("page_no") : 1;int pageSize = request.containsKey("page_size") ? request.getInteger("page_size") : 20;return examInfoService.qryPage(param, pageNo, pageSize);}/*** 教师 添加新的考试信息*/@RequestMapping(value = "/examinfo/add", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<ExamInfo> insert(HttpRequest request) {ExamInfo exam = new ExamInfo();exam.setTestPaperId(request.getInteger("test_paper_id"));exam.setClassId(request.getString("class_id"));exam.setState(1);exam.setTime(request.getInteger("time"));exam.setEffTime(DateUtils.toDate(request.getString("eff_time"), DateConst.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI));exam.setExpTime(DateUtils.toDate(request.getString("exp_time"), DateConst.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI));exam.setUpdateTime(new Date());return examInfoService.insert(exam);}/*** 教师 更新考试信息*/@RequestMapping(value = "/examinfo/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<ExamInfo> update(HttpRequest request) {ExamInfo exam = new ExamInfo();exam.setExamId(request.getInteger("exam_id"));exam.setTestPaperId(request.getInteger("test_paper_id"));exam.setClassId(request.getString("class_id"));exam.setState(1);exam.setTime(request.getInteger("time"));exam.setEffTime(DateUtils.toDate(request.getString("eff_time"), DateConst.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI));exam.setExpTime(DateUtils.toDate(request.getString("exp_time"), DateConst.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI));exam.setUpdateTime(new Date());exam.setUpdateTime(new Date());return examInfoService.update(exam);}/*** 教师 新建状态的考试信息可以删除*/@RequestMapping(value = "/examinfo/del", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<ExamInfo> del(HttpRequest request) {List<Integer> examIdList = new ArrayList<>();JSONArray array = request.getJSONArray("exam_id_list");for (int i = 0; i < array.size(); i++) {examIdList.add(array.getInteger(i));}return examInfoService.del(examIdList);}/*** 教师 发布考试信息*/@RequestMapping(value = "/examinfo/release", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<ExamInfo> updateState(HttpRequest request) {return examInfoService.release(request.getInteger("exam_id"));}/*** 学生 查询考试试题分组列表*/@RequestMapping(value = "/examinfo/qryExamQueGroupList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.student, RoleEnum.teacher})public Result<TestPaperQuestionGroup> qryExamQueGroupList(HttpRequest request) {return examInfoService.qryExamQueGroupList(request.getInteger("exam_id"));}/*** 学生 查询考试试题列表*/@RequestMapping(value = "/examinfo/qryExamQuestionList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.student})public Result<StudentExamQuestionRecord> qryExamQuestionList(HttpRequest request) {return examInfoService.qryExamQuestionList(request.getInteger("exam_id"), request.getString("student_id"), request.getInteger("question_group_id"));}/*** 教师 判卷查询试题列表*/@RequestMapping(value = "/examinfo/qryMarkQueList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<StudentExamQuestionRecord> qryMarkQueList(HttpRequest request) {return examInfoService.qryMarkQueList(request.getInteger("exam_id"), request.getString("student_id"), request.getInteger("question_group_id"));}/*** 教师 记录学生考试分数 complete*/@RequestMapping(value = "/examinfo/updateQueScore", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<ExamInfo> updateQueScore(HttpRequest request) {StudentExamQuestionRecord record = new StudentExamQuestionRecord();record.setExamId(request.getInteger("exam_id"));record.setStudentId(request.getString("student_id"));record.setQuestionGroupId(request.getInteger("question_group_id"));record.setQuestionId(request.getLong("question_id"));record.setScore(request.getFloat("score"));record.setCorrect(request.getBoolean("correct"));return examInfoService.updateQueScore(record);}/*** 教师 完成评分*/@RequestMapping(value = "/examinfo/complete", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.teacher})public Result<ExamInfo> complete(HttpRequest request) {return examInfoService.complete(request.getInteger("exam_id"),request.getString("student_id"));}}

院系管理控制器:

/*** 院系管理控制器*/
@RestController
public class DepartmentController {@Resource(name = "departmentService")private IDepartmentService departmentService;/*** 查询所有院系*/@RequestMapping(value = "/department/qryAllList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.admin})public ListResult<Department> qryAllList() {return departmentService.qryAllList();}/*** 管理员 查询院系列表*/@RequestMapping(value = "/department/qryPage", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.admin})public ListResult<Department> qryPage(HttpRequest request) {Map<String, Object> param = new HashMap<>();int pageNo = request.containsKey("page_no") ? request.getInteger("page_no") : 1;int pageSize = request.containsKey("page_size") ? request.getInteger("page_size") : 20;if (request.containsKey("department_id")) {param.put("department_id", request.getString("department_id"));}if (request.containsKey("department_name")) {param.put("department_name", request.getString("department_name"));}return departmentService.qryPage(param, pageNo, pageSize);}/*** 管理员 添加院系*/@RequestMapping(value = "/department/add", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.admin})public Result<Department> insert(HttpRequest request) {Department department = new Department();department.setDepartmentId(request.getString("department_id"));department.setDepartmentName(request.getString("department_name"));department.setUpdateTime(new Date());return departmentService.insert(department);}/*** 管理员 更新院系*/@RequestMapping(value = "/department/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.admin})public Result<Department> update(HttpRequest request) {Department department = new Department();department.setDepartmentId(request.getString("department_id"));department.setDepartmentName(request.getString("department_name"));department.setUpdateTime(new Date());return departmentService.update(department);}/*** 管理员 删除院系*/@RequestMapping(value = "/department/del", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})@RoleAnnotation(types = {RoleEnum.admin})public Result<Department> del(HttpRequest request) {List<String> departmentIdList = new ArrayList<>();JSONArray array = request.getJSONArray("department_id_list");for (int i = 0; i < array.size(); i++) {departmentIdList.add(array.getString(i));}return departmentService.del(departmentIdList);}
}

源码获取:博客首页 "资源" 里下载!

Java项目:课程资源管理+在线考试平台(java+SSH+mysql+maven+tomcat)相关推荐

  1. java计算机毕业设计web在线考试系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计web在线考试系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计web在线考试系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...

  2. 基于javaweb+ssh的水果销售系统(java+SSH+mysql+maven+tomcat)

    基于javaweb+ssh的水果销售系统(java+SSH+mysql+maven+tomcat) 一.项目简述 功能: 区分为管理员用户和普通用户,普通用户:用户注册登 录,首页水果展示,商品分类展 ...

  3. Java项目:jsp在线考试系统

    作者主页:源码空间站2022 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 本系统分为两个角色,一个是考生,一个是管理员, 考生功能如下: 登录.选择考试科目 ...

  4. Java项目:ssm在线考试系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 在线考试系统分为前后台,分为学生.老师.管理员三种角色:前台学生登录,后台老师.管理员 ...

  5. Java项目:前台+后台在线考试系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统主要实现的功能有: 学生以及老师的注册登录,在线考试,错题查询,学生管理,问题管理,错题管理,错题查询,分数查询,试卷管 ...

  6. Java项目:课程自动排课系统(java+SpringBoot+html+layui+thymeleaf+redis+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 课程自动排课系统,该系统分两种角色:管理员与普通用户: 主要功能包括: 首页:查看分课.查看课表.查看空教室: 班级设置:添加班级 ...

  7. Java项目:精美风在线音乐网站(java+JDBC+C3P0+servlet+mysql+JSP)

    源码获取:博客首页 "资源" 里下载! 1.运行环境 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclisp ...

  8. 基于WEB的课程培训报名在线网站平台PHP开发mysql数据库

    目录 1.功能描述 ​ 2.数据表共8个 3.视频演示效果 1.功能描述 各模块功能详述: 1)登录:用户进入网站后可以注册会员,注册成功后输入用户名和密码可以登录系统,查看网站相关信息,会员登录功能 ...

  9. 基于javaweb+mysql的水果销售系统(java+SSH+mysql+maven+tomcat)

    一.项目简述 功能: 区分为管理员用户和普通用户,普通用户:用户注册登 录,首页水果展示,商品分类展示,购物车添加,下单, 订单查询,个人信息修改,管理员用户:包括水果基本信 息维护增删改查,分类管理 ...

最新文章

  1. 微软获GPT-3独家授权,OpenAI创始人马斯克:与初衷相悖
  2. 使用libssh2连接到远程服务器
  3. Java——BigInteger类和BigDecimal类
  4. Make!Sense 动手好伴侣,带你轻松做实验
  5. python virtualenv 如何更改mkvirtualenv默认新建虚拟环境的路径?WORKON_HOME
  6. libwebsockets / vs2019 编译 libwebsockets 4.0 方法
  7. Linux——进程管理
  8. web_cache_server -- Varnish
  9. .NET Core 2.0迁移技巧之web.config配置文件
  10. 妈的我好像发现是哪出问题了
  11. 论文浅尝 | 知识图谱推理中表示学习和规则挖掘的迭代学习方法
  12. 用SublimeText当Unity Shader的编辑器
  13. Node.js相关——CommonJS规范
  14. NAT综合实验(华为)
  15. Android实现QQ音乐QMC格式转MP3格式
  16. jQuery如何使用most()方法?代码示例和解析
  17. Grails in Action:完成啦
  18. molten php 上传,molten:PHP 应用透明链路追踪工具
  19. jira是干什么_Jira 概述 | 产品、项目和托管 | Atlassian
  20. 外汇汇率接口 java_基于java的货币汇率接口调用代码实例

热门文章

  1. 计算TD-LTE DL 峰值速率的工具和相关参数
  2. Codeforces Round #563 (Div. 2)/CF1174
  3. Docker应用:Kubernetes(容器集群)
  4. 使用nc传输文件和目录【转】
  5. scala构建工具sbt使用介绍
  6. 浏览器加载、解析、渲染的过程
  7. Android 第三方图表类 MPChart 的使用
  8. WPF中Auto与*的差别
  9. indows上的android开发环境软件架构5
  10. CSS入门-五个简单,但有用的CSS属性