SpringBoot+Vue实现前后端分离的小而学在线考试系统

文末获取源码

开发语言:Java

使用框架:spring boot

前端技术:JavaScript、Vue.js 、css3

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:Java jdk8

Maven:apache-maven 3.8.1-bin

目录

一、前言介绍 

二、功能需求分析

2.1考生需求

2.2管理员和教师需求

三、系统前台模块

3.1系统前台登录页面

3.2图书信息列表

3.3在线测试页面

3.4查看分数页面

3.5个人资料页面 

四、管理员功能模块

4.1站点管理模块

4.2用户管理模块 

4.3系统内容管理模块 

4.4系统管理模块 

4.5图书信息管理模块

五、教师功能模块

5.1在线测试管理模块

5.2课程管理管理模块 

六、学生功能模块

6.1课程成绩管理模块

七、部分核心代码

7.1课程信息关键代码

7.2在线测试关键代码

7.3用户管理关键代码

7.4成绩管理关键代码

7.5试题信息关键代码


一、前言介绍 

在线考试系统主要功能模块包括登录、管理员:首页、公共管理(轮播图、公告栏)用户管理(管理员、教师、学生)系统内容(课程资讯、资讯分类、在线测试)系统模块(图书分类、图书信息、课程管理、课程成绩)账号维护,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对在线考试系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现在线考试系统和部署运行使用它。

二、功能需求分析

本系统使用的角色分为考生、教师和管理员。

2.1考生需求

考生登陆系统主要进行两类操作:在线考试,成绩查询与个人信息管理.

(1)在线考试

系统能自动给考生选题,考题必须是随机分配的,以保证考试的公平性。考生在考试过程中页面将提供考试时间倒计时功能,使考生随时了解考试剩余时间。在考试时间到时,系统将自动地将考生考试试卷提交,将提醒考生离开考场。当考试试卷提交时,系统自动为选择题、判断题、多选等客观题评分。

(2)成绩查询与个人信息维护

考生可以登陆系统查询各科成绩,其中成绩信息包括每种题型的得分,如单选题,判断题等。别外考生还可以查询自己的做错的题目,了解自己的考试情况。

除此之外,考生登陆系统可以查看和修改个人的基本信息,如修改密码等。

2.2管理员和教师需求

系统管理员登陆系统后主要进行四类操作:

(1)考题维护,考试信息维护,用户维护和个人信息维护管理员可以往题中添加考题,修改错误试题和删除无用试题,考题维护包括单选题管理(单选题添加、删除、修改)、判断题管理(判断题添加、删除、修改)、多选题管理(多选题添加、删除、修改)。

(2)考试信息的维护

考试信息的维护主要是对于考试设置信息进行维护,这些信息主要是考试总时间,试题数量,各试题分值的分布等。

(3)用户维护

系统管理员可以对用户信息(包括考生信息)进行增,删,改查操作。

(4)个人信息维护

管理员也可以对自己的基本信息的维护。

(5)课程信息维护

管理员管理、课程信息,方便后面为每门科目开设考试。

(6)试卷维护

随机生成试卷,并能按需求修改试卷中的题目数量和题目。

(7)考试成绩维护

考试结束后,考生提交试卷后,客观题由系统自动打分,然后总成绩由客观题加主观题得分。

三、系统前台模块

3.1系统前台登录页面

3.2图书信息列表

3.3在线测试页面

3.4查看分数页面

3.5个人资料页面 

四、管理员功能模块

4.1站点管理模块

4.2用户管理模块 

4.3系统内容管理模块 

4.4系统管理模块 

4.5图书信息管理模块

五、教师功能模块

5.1在线测试管理模块

5.2课程管理管理模块 

六、学生功能模块

6.1课程成绩管理模块

七、部分核心代码

7.1课程信息关键代码

@RestController

@RequestMapping("auth")

public class AuthController extends BaseController<Auth, AuthService> {

    /**

     * 服务对象

     */

    @Autowired

    public AuthController(AuthService service) {

        setService(service);

    }

}

7.2在线测试关键代码

public class FindConfig {

    public static String PAGE = "page";

    public static String SIZE = "size";

    public static String LIKE = "like";

    public static String ORDER_BY = "orderby";

    public static String FIELD = "field";

    public static String GROUP_BY = "groupby";

    public static String MIN_ = "_min";

    public static String MAX_ = "_max";

}

7.3用户管理关键代码

@RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        Query select = service.select(service.readQuery(request), service.readConfig(request));

        List resultList = select.getResultList();

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

 public Query select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return runEntitySql(sql.toString());

    }

7.4成绩管理关键代码

@RequestMapping(value = {"/count_group", "/count"})

    public Map<String, Object> count(HttpServletRequest request) {

        Query count = service.count(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

7.5试题信息关键代码

@RequestMapping(value = {"/sum_group", "/sum"})

    public Map<String, Object> sum(HttpServletRequest request) {

        Query count = service.sum(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一季春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值