基于Java实现考试管理系统

目录
  • 项目简述
  • 项目运行
  • 项目技术
  • 效果图展示
  • 主要代码

项目简述

本系统功能包括:

支持单选题、多选题、判断题支持学生(student)、教师(teacher)、管理员(admin)三种角色学生:参加考试和查看我的考试教师:学生的所有权限+创建/编辑题目+创建/编辑考试管理员:教师的所有权限+管理用户。

项目运行

环境配置:

Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。

项目技术

Springboot + Maven + Jpa+ Vue 等等组成,B/S模式 + Maven管理等等。

效果图展示

主要代码

登录控制层:

@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 UserController {

    @Resource(name = "userService")
    private IUserService userService;

    /**
     * 查询用户信息
     * 先判断用户类型 在查询用户信息
     */
    @RequestMapping(value = "/user/qryUserInfo", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    public Result<User> qryUserInfo() {
        return userService.qryUserInfo();
    }

    /**
     * 更新用户信息
     */
    @RequestMapping(value = "/user/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    public Result<User> update(HttpRequest request) {
        User user = new User();
        user.setUserId(request.getString("user_id"));
        user.setName(request.getString("name"));
        user.setSex(request.getInteger("sex"));
        user.setType(User.UserType.get(request.getInteger("type")));
        return userService.update(user, ImageUtil.stringToBytes(request.getString("user_image")));
    }

    /**
     * 更新用户密码
     */
    @RequestMapping(value = "/user/updatePwd", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    public Result<User> updatePwd(HttpRequest request) {
        return userService.updatePwd(request.getString("old_pwd"), request.getString("pwd"));
    }
}

学生管理控制器:

/**
 * 学生控制器
 */
@RestController
public class StudentController {

    @Resource(name = "studentService")
    private IStudentService studentService;

    /**
     * 管理员 查询学生列表
     */
    @RequestMapping(value = "/student/qryPage", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    @RoleAnnotation(types = {RoleEnum.admin})
    public ListResult<Student> 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("student_id")) {
            param.put("student_id", request.getString("student_id"));
        }
        if (request.containsKey("name")) {
            param.put("name", request.getString("name"));
        }
        return studentService.qryPage(param, pageNo, pageSize);
    }

    @RequestMapping(value = "/student/add", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    @RoleAnnotation(types = {RoleEnum.admin})
    public Result<Student> insert(HttpRequest request) {
        Student student = new Student();
        student.setStudentId(request.getString("student_id"));
        student.setName(request.getString("student_name"));
        student.setPwd(request.getString("student_id"));
        student.setSex(request.getInteger("sex"));
        student.setClassId(request.getString("class_id"));
        student.setUpdateTime(new Date());
        return studentService.insert(student, ImageUtil.stringToBytes(request.getString("student_image")));
    }

    @RequestMapping(value = "/student/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    @RoleAnnotation(types = {RoleEnum.admin})
    public Result<Student> update(HttpRequest request) {
        Student student = new Student();
        student.setStudentId(request.getString("student_id"));
        student.setName(request.getString("student_name"));
        student.setPwd(request.getString("student_id"));
        student.setSex(request.getInteger("sex"));
        student.setClassId(request.getString("class_id"));
        student.setUpdateTime(new Date());
        return studentService.update(student, ImageUtil.stringToBytes(request.getString("student_image")));
    }

    @RequestMapping(value = "/student/del", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
    @RoleAnnotation(types = {RoleEnum.admin})
    public Result<Student> del(HttpRequest request) {
        List<String> studentIdList = new ArrayList<>();
        JSONArray array = request.getJSONArray("student_id_list");
        for (int i = 0; i < array.size(); i++) {
            studentIdList.add(array.getString(i));
        }
        return studentService.del(studentIdList);
    }

}

到此这篇关于基于Java实现考试管理系统的文章就介绍到这了,更多相关Java考试管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java项目实战之在线考试系统的实现(系统介绍)

    1.本系统和现在有的考试系统有以下几种优势: a.和现在有的系统比较起来,本系统有科目.章节.老师.学生.班级等信息的管理,还有批阅试卷查看已批阅试卷等.传统的考试系统划分并不细,业务功能简单. b.和学校的考试系统还有外面的考试系统比较起来,本系统是B/S结构,学校的考试系统一般为C/S结构,性能方面不如B/S结构,并且C/S接口需要安装客户端,客户端压力很大,我的系统只需要电脑具有浏览器,在同一局域网就可以进行考试. c.从架构方面来讲,我们的系统为分布式架构,传统的考试系统没有我们的架构合

  • Java swing读取txt文件实现学生考试系统

    本文实例为大家分享了Java swing读取txt文件实现学生考试系统的具体代码,供大家参考,具体内容如下 主要实现了一个简单的倒计时答题系统 源码Testquestion 类 public class Testquestion { private String questionText ="";//定义题目 private String standardkey = "";// 定义正确答案 private String selectKey =""

  • Java实现在线考试系统与设计(学生功能)

    学生模块功能比较少,就是进行考试和查看自己成绩两个大的功能. 学生进行考试的功能比较复杂(首先做了校验,不在考试时间范围内,不能进行考试) 考试试题是数据库根据发布考试时的条件随机产生的一套试题.因为每次考试题型题量都是不同的,因此我们继续采用JSON的格式去保存数据,当状态为1:表示正在考试:状态为2:表示已经考试结束:状态为3:表示老师已经阅完试卷 (1)当考试考试的时候,会给考上随机产生一套试题,并存储到数据库中,如果考试中电脑突然坏了可以保证重新打开还是之前的试题 (2)考试时间结束会自

  • Java Online Exam在线考试系统的实现

    一.项目简述 本系统主要实现的功能有: 学生以及老师的注册登录,在线考试,错题查询,学生管理,问题管理,错题管理,错题查询,分数查询,试卷管 理,人工组卷.自动组卷,教师,班级,统计等等管理功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: VUE+Springboot+ SpringMVC + MyBatis + ThymeLeaf + Jav

  • 基于Java实现考试管理系统

    目录 项目简述 项目运行 项目技术 效果图展示 主要代码 项目简述 本系统功能包括: 支持单选题.多选题.判断题支持学生(student).教师(teacher).管理员(admin)三种角色学生:参加考试和查看我的考试教师:学生的所有权限+创建/编辑题目+创建/编辑考试管理员:教师的所有权限+管理用户. 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyE

  • 基于java实现停车场管理系统

    本文实例为大家分享了java停车场管理系统的具体代码,供大家参考,具体内容如下 WorkFram.java package com.parking; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; /* * WotkFram.java * * Created on 2008年9月2日, 下午7:57 */ /** * * @author cheng */

  • Java实现联系人管理系统

    基于Java的联系人管理系统,供大家参考,具体内容如下 基于eclipse做的一个简单的联系人管理系统 对于联系人姓名首字母进行了一个排序,对于存入信息时手机号码与电子邮箱做了一个判断,只有在输入正确格式的手机号和电子邮箱才能成功存入数据 联系人基本属性类 此类包含联系人编号.姓名.手机号.QQ.电子邮箱等信息 /** 编号*/ private int sno; /** 姓名*/ private String name; /** 手机号*/ private String phone; /** Q

  • 基于Java SpringBoot的前后端分离信息管理系统的设计和实现

    目录 前言 视频演示 主要功能说明 功能截图 主要代码实现 主要数据表设计 前言 当今社会,随着科学技术的发展,以及市场经济的多元化,使人才的流动速度大大增加,因此也对党建工作的管理层面工作带来了空前且复杂的挑战, 从而使得如何高效的开展管理党建工作成为了亟待解决的问题.为此将高速发展的信息科学技术引入到党建工作管理的应用中,力求合理有效的提升全面各项工作的进展,实现以人为本的科学发展思想和意识,是一种高效可实现的方法. Java作为一种面向对象的.可以撰写跨平台应用软件的程序设计语言,其技术具

  • Java基于MySQL实现学生管理系统

    本文为大家分享了Java基于MySQL实现学生管理系统,供大家参考,具体内容如下 因为实验室要交作业然后就做了一个学生管理系统,贴个代码纪念一下,做的太急界面什么的也比较差. 还有一些小细节没有完善不过还是能实现主要的功能的. Window是主界面 package First; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Window { pub

  • 基于java实现租车管理系统

    概述 基于java + swing + JFrame 的图书馆管理系统,租车,还车,管理员管理用户,付款等. 部分代码 public class Login extends JFrame { private static final long serialVersionUID = 1L; /** * 登录窗体 */ public Login() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 设置顶部提示文字和主窗

  • 基于java实现简单的银行管理系统

    页面代码之一: package org.vector.view; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.

  • 基于java SSM springboot实现景区行李寄存管理系统

    主要技术实现设计:spring. springmvc. springboot. springboot security权限控制.mybatis .session. jquery . md5 .bootstarp.js tomcat.拦截器等. 主要功能实现设计:登录.用户管理.角色权限管理.菜单管理.部门管理.行李柜管理.用户寄存管理.记录查询管理.通知公告管理.入柜.出柜以及修改密码等操作. 项目介绍 随着中国人对于旅游休闲的积极认识和市场的需求不断增加,各个景区为了满足游客需求也在不断的开发

  • 基于java springboot + mybatis实现电影售票管理系统

    目录 主要功能实现 前端主要功能实现 后台主要功能实现 主要截图展示 前台影院首页 电影信息 电影详情 电影评价 选座功能 选座主要前端代码设计 提交订单 影片订单详情/取票 影院信息 影院详情 资讯信息 我的个人中心 后台主要功能设计 后台系统主页 菜单管理 用户管理 电影管理 添加电影信息 添加电影前端代码 评价管理 影厅管理 排片管理 订单管理 数据库主要表设计 用户表 电影表 主要技术框架:spring. springmvc. springboot.mybatis . jquery .t

  • 基于java SSM springboot实现抗疫物质信息管理系统

    主要功能设计: 用户.区域.物质类型.物质详情.物质申请和审核以及我的申请和通知公告以及灵活控制菜单权限 主要技术实现:spring. springmvc. springboot.springboot security权限框架 mybatis . jquery . md5 .bootstarp.js tomcat.器.拦截器等 具体功能模块:用户模块.角色模块.菜单模块.部门模块以及灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求 业务模块功能:区域管理.对不同区域的进行管理以及物质发

随机推荐