基于 springboot 的在线考试系统

收藏关注不迷路!!

🌟文末获取源码+数据库🌟

感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

文章目录

摘要

随着社会的发展,系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但各种信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得在线考试信息,因此,设计一种安全高效的在线考试系统极为重要。

为设计一个安全便捷,并且使用户更好获取在线考试信息,本文主要有安全、简洁为理念,实现用户快捷寻找在线考试信息,从而解决在线考试信息管理复杂难辨的问题。该系统采用java语言、Spring Boot框架和mysql数据库进行开发设计,通过对在线考试管理业务流程的分析,分析了其功能性需求,设计了在线考试系统,该系统包括管理员和教师、学生三部分。同时还能为用户提供一个方便实用的在线考试系统,使得用户能够及时地找到合适自己的在线考试系统。管理员界面管理教师、学生的信息,也可以对系统上的所有信息进行修删查等操作,用户通过本系统可以及时了解在线考试信息。

关键词:在线考试系统;java语言;mysql数据库;

一、开发技术介绍

  • Java
  • SpringBoot
  • MySQL
  • MyBatis

二、功能介绍

本次系统采用springboot框架进行开发,springboot框架是一款企业界主流的软件开发技术,其简化了开发流程,大大缩减了软件开发所需的时间提高了软件的响应速度。系统总体结构图如图4-1所示。

在这里插入图片描述

三、代码展示

package com.cl.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.cl.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.cl.annotation.IgnoreAuth;

import com.cl.entity.JiaoshiEntity;
import com.cl.entity.view.JiaoshiView;

import com.cl.service.JiaoshiService;
import com.cl.service.TokenService;
import com.cl.utils.PageUtils;
import com.cl.utils.R;
import com.cl.utils.MPUtil;
import com.cl.utils.CommonUtil;
import java.io.IOException;

/**
 * 教师
 * 后端接口
 * @author 
 * @email 
 */
@RestController
@RequestMapping("/jiaoshi")
public class JiaoshiController {
    @Autowired
    private JiaoshiService jiaoshiService;



    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", username));
        if(u==null || !u.getJiaoshimima().equals(password)) {
            return R.error("账号或密码不正确");
        }
		String token = tokenService.generateToken(u.getId(), username,"jiaoshi",  "教师" );
		return R.ok().put("token", token);
	}


	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody JiaoshiEntity jiaoshi){
    	//ValidatorUtils.validateEntity(jiaoshi);
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()));
		if(u!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		jiaoshi.setId(uId);
        jiaoshiService.insert(jiaoshi);
        return R.ok();
    }

	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        JiaoshiEntity u = jiaoshiService.selectById(id);
        return R.ok().put("data", u);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", username));
    	if(u==null) {
    		return R.error("账号不存在");
    	}
        u.setJiaoshimima("123456");
        jiaoshiService.updateById(u);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,JiaoshiEntity jiaoshi,
		HttpServletRequest request){
        EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();

		PageUtils page = jiaoshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,JiaoshiEntity jiaoshi, 
		HttpServletRequest request){
        EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();

		PageUtils page = jiaoshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( JiaoshiEntity jiaoshi){
       	EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( jiaoshi, "jiaoshi")); 
        return R.ok().put("data", jiaoshiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JiaoshiEntity jiaoshi){
        EntityWrapper< JiaoshiEntity> ew = new EntityWrapper< JiaoshiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( jiaoshi, "jiaoshi")); 
		JiaoshiView jiaoshiView =  jiaoshiService.selectView(ew);
		return R.ok("查询教师成功").put("data", jiaoshiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JiaoshiEntity jiaoshi = jiaoshiService.selectById(id);
		jiaoshi = jiaoshiService.selectView(new EntityWrapper<JiaoshiEntity>().eq("id", id));
        return R.ok().put("data", jiaoshi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JiaoshiEntity jiaoshi = jiaoshiService.selectById(id);
		jiaoshi = jiaoshiService.selectView(new EntityWrapper<JiaoshiEntity>().eq("id", id));
        return R.ok().put("data", jiaoshi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){
    	jiaoshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiaoshi);
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()));
		if(u!=null) {
			return R.error("用户已存在");
		}
		jiaoshi.setId(new Date().getTime());
        jiaoshiService.insert(jiaoshi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){
    	jiaoshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(jiaoshi);
    	JiaoshiEntity u = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("jiaoshigonghao", jiaoshi.getJiaoshigonghao()));
		if(u!=null) {
			return R.error("用户已存在");
		}
		jiaoshi.setId(new Date().getTime());
        jiaoshiService.insert(jiaoshi);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jiaoshi);
        jiaoshiService.updateById(jiaoshi);//全部更新
        return R.ok();
    }



    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jiaoshiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
	








}

四、效果图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五 、源码获取

下方名片联系我即可!!


大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

### 回答1: 基于Spring Boot在线考试系统是一种基于Web技术的在线考试平台,它可以帮助学生和教师更方便地进行在线考试和评估。该系统使用Spring Boot框架来构建,具有良好的可扩展性和可维护性。它还包括许多功能,如用户管理、试题管理、考试管理、成绩管理等,可以满足不同用户的需求。此外,该系统还具有良好的安全性和稳定性,可以保证考试过程的公正性和可靠性。 ### 回答2: 基于Spring Boot在线考试系统是一种基于网络技术,为了方便学生和教师在互联网环境下开展练习、测试和评测工作的辅助性系统。该系统利用Spring Boot框架的特点,快速构建了一套完整的在线考试系统,其特点包括以下几个方面。 首先,该系统具有高度的灵活性和可扩展性。Spring Boot框架提供了丰富的组件和模块,使得该系统可以根据用户的需求进行定制和扩展。同时,Spring Boot的自动化配置和默认参数设置,大大降低了系统的开发成本和维护难度。 其次,该系统具有良好的稳定性和复杂性。Spring Boot基于微服务架构,可以将系统的各个模块分开部署,使得系统更加可靠和稳定。同时,Spring Boot提供了多种数据持久化方案,可以支持多种数据库,使得系统具有高度的扩展性和互操作性。 第三,该系统具有良好的安全性和易用性。Spring Boot提供了多种安全机制,支持用户认证、身份验证、授权和加密等功能。同时如果更细粒度的权限控制要求可以使用Spring Security集成。因此,该系统具有很强的安全性和可靠性。同时,该系统的操作界面友好简洁,容易上手,学生和教师可以很方便地进行使用和管理。 最后,该系统还具有很好的响应速度和网络性能。Spring Boot提供了高效的线程池管理机制和缓存技术,使得该系统可以快速响应用户请求,并支持并发操作。 总之,基于Spring Boot搭建的在线考试系统具有灵活性、稳定性、安全性和易用性,可以满足学生和教师在互联网环境下开展练习、测试和评测工作的需要。 ### 回答3: 基于Spring Boot在线考试系统是一个通过互联网实现在线考试的应用程序。它可以为每个考试设置相应的题目、试卷,提供在线的考试环境和评分系统,从而实现在线考试。 其主要特点包括: 1. 环境简单:Spring Boot基于Java语言开发,环境简单,易于部署、维护和扩展。 2. 界面友好:系统的后台管理界面和考试界面均采用了现代化的前端框架,使得界面友好、操作简单。 3. 数据安全:系统采用一定的安全机制,包括密码加密、登录限制、实时数据备份等,保证数据安全。 4. 稳定可靠:Spring Boot具有良好的容错机制,能够最大限度地减少系统宕机和故障的影响。 5. 灵活性:系统支持多种题型和答题方式,可根据不同考试的需求进行设置和调整。 基于Spring Boot在线考试系统可以应用于各种考试场景,包括学校、培训机构、招聘面试等。通过在线考试,不仅可以提高考试的效率,同时也可以减少人力、物力资源的浪费,实现考试的智能化、信息化和高效化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值