27基于java的学生在线考试系统

yizhihongxing

一、项目简介

随着互联网迅速发展,人们的生活已经越来越离不开互联网,人们足不出户就可以工作、学习等。对于在校学生,通过网络教育不仅可以随时进行网络学习,也可以根据学习的情况自我检测,有利于学生高效、快捷地掌握所学的知识。
本系统预设计的基于网络的学生自测系统将实现多种用户(包括学生、教师、管理员)同时访问,学生登录后可以针对课程的每一章节的每一道题目,提交答案;系统会自动按照学生的答案来判断对错,并自动给出成绩。另外,系统还具有添加用户、管理题库、添加试卷、添加习题、修改密码等功能。

简单的一句话,这是一个完整的学生在线考试系统,导入项目和数据库就可以使用;在本考试系统中,管理员、老师、学生三个角色是相当于是三个系统。

二、开发工具和环境

前端:html, css, js, vue等;
后端:java, spring,maven等
数据库:mysql
开发工具: eclipse或idea
更多内容可查看:项目帮

部分核心代码

import org.springframework.stereotype.Service;
import xyz.shiguangliang.mybatis.dao.UserMapper;

import xyz.shiguangliang.mybatis.domain.User;
import xyz.shiguangliang.service.UserService;
import xyz.shiguangliang.util.query.QueryInfo;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;

    //登录
    @Override
    public User login(String username, String password) {
        User user = userMapper.selectLogin(username,password);
        if (user != null) {
            //登录次数加一
            if (user.getIntimes() !=  null) {
                user.setIntimes(user.getIntimes() + 1);
            }else {
                user.setIntimes(1);
            }
            //更新登录时间
            user.setLastlogin(new Date());
            return user;
        }
        return null;
    }

    //注册
    @Override
    public boolean register(User user) {
        int i = 0;
        //检测用户是否存在
        User user1 = userMapper.selectUsername(user.getUsername());
        if (user1 == null) {
            i = userMapper.insert(user);
        }
        return i > 0;
    }

    //用户列表
    @Override
    public QueryInfo getUserList(String query, Integer pagenum,Integer pagesize) {
        QueryInfo queryInfo = new QueryInfo();
        int start;
        int end;
        if (pagenum == null||pagesize == null){
            pagenum =0;
            pagesize = 3;
        }
        start = (pagenum-1)*pagesize;
        end = pagesize;
        int userSize = userMapper.selectUserListLimitSize(query,start,end);
        List<User> users = userMapper.selectUserListLimit(query,start,end);
        queryInfo.setList(users);
        queryInfo.setTotal(userSize);
        return queryInfo;
    }

    //删除用户
    @Override
    public int deleteUser(Integer tid) {
        return userMapper.deleteByPrimaryKey(tid);
    }

    //通过id查找用户
    @Override
    public User findById(Integer tid) {
        return userMapper.selectByPrimaryKey(tid);
    }



    //更新用户
    @Override
    public int updateUser(User user) {
        if (user.getPassword()==null|| Objects.equals(user.getPassword(), "")){
            user.setPassword(userMapper.selectByPrimaryKey(user.getTid()).getPassword());
        }
        return userMapper.updateByPrimaryKey(user);
    }

    //通过用户名查找用户
    @Override
    public User findByUsername(String username) {
        return userMapper.selectUsername(username);
    }

    //获取用户权限
    @Override
    public int getPower(String username) {
        return userMapper.selectUsername(username).getPower();
    }
}

useMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.shiguangliang.mybatis.dao.UserMapper">
  <resultMap id="BaseResultMap" type="xyz.shiguangliang.mybatis.domain.User">
    <id column="tid" jdbcType="INTEGER" property="tid" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="teachername" jdbcType="VARCHAR" property="teachername" />
    <result column="dno" jdbcType="INTEGER" property="dno" />
    <result column="power" jdbcType="INTEGER" property="power" />
    <result column="intimes" jdbcType="INTEGER" property="intimes" />
    <result column="lastlogin" jdbcType="TIMESTAMP" property="lastlogin" />
  </resultMap>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from teacher
    where tid = #{tid,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="xyz.shiguangliang.mybatis.domain.User">
    insert into teacher (tid, username, password, 
      teachername, dno, power, 
      intimes, lastlogin)
    values (#{tid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{teachername,jdbcType=VARCHAR}, #{dno,jdbcType=INTEGER}, #{power,jdbcType=INTEGER}, 
      #{intimes,jdbcType=INTEGER}, #{lastlogin,jdbcType=TIMESTAMP})
  </insert>
  <update id="updateByPrimaryKey" parameterType="xyz.shiguangliang.mybatis.domain.User">
    update teacher
    set username = #{username,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      teachername = #{teachername,jdbcType=VARCHAR},
      dno = #{dno,jdbcType=INTEGER},
      power = #{power,jdbcType=INTEGER},
      intimes = #{intimes,jdbcType=INTEGER},
      lastlogin = #{lastlogin,jdbcType=TIMESTAMP}
    where tid = #{tid,jdbcType=INTEGER}
  </update>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
    where tid = #{tid,jdbcType=INTEGER}
  </select>
  <select id="selectAll" resultMap="BaseResultMap">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
  </select>
    <select id="selectLogin" resultType="xyz.shiguangliang.mybatis.domain.User">
        select tid, username, password, teachername, dno, power, intimes, lastlogin
        from teacher
        where username = #{username} and password = #{password}
    </select>
  <select id="selectUsername" resultType="xyz.shiguangliang.mybatis.domain.User">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
        from teacher
        where username = #{username}
  </select>
  <select id="selectUserListLimit" resultType="xyz.shiguangliang.mybatis.domain.User">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
    where
    /*条件判断*/
    <if test="#{query} != null and #{query} != ''">
      /*模糊查询*/
      <bind name="query2" value="'%' + query + '%'"/>
      username like #{query2}
    </if>
    LIMIT #{start},#{end}
  </select>
  <select id="selectUserListLimitSize" resultType="java.lang.Integer">
    select count(*)
    from teacher
    where
    /*条件判断*/
    <if test="#{query} != null and #{query} != ''">
      /*模糊查询*/
      <bind name="query2" value="'%' + query + '%'"/>
      username like #{query2}
    </if>
  </select>
</mapper>

三、系统展示

学生模块

  • 登录
    在这里插入图片描述
  • 首页:
    在这里插入图片描述
  • 答题
    学生可以选择自己的试卷进行答题,可以上一题和下一题,同时还有时间倒计时功能,还可以标记题目,提交试卷后系统自动计算分数出来:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 练习模式
    在这里插入图片描述

-学生查看分数
在这里插入图片描述

  • 留言功能
    在这里插入图片描述

教师管理

教师管理:考试管理;题库管理;成绩管理;学生管理等;
在这里插入图片描述

  • 考试管理
    在这里插入图片描述

在这里插入图片描述

  • 题库管理
    在这里插入图片描述
  • 增加题目信息
    在这里插入图片描述
  • 成绩管理
    在这里插入图片描述
    查看某个学生分数情况:
    在这里插入图片描述
  • 查看班级分数段情况:
    在这里插入图片描述
    在这里插入图片描述
  • 学生管理
    在这里插入图片描述

管理员模块

在这里插入图片描述

  • 拥有教师的所有权限,同时增加可以管理教师模块:
    在这里插入图片描述
    在这里插入图片描述

原文链接:https://www.cnblogs.com/projecthelp/p/17377453.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:27基于java的学生在线考试系统 - Python技术站

(0)
上一篇 2023年5月6日
下一篇 2023年5月6日

相关文章

  • jQuery ajax请求struts action实现异步刷新

    接下来我将详细讲解“jQuery ajax请求struts action实现异步刷新”的完整攻略,这个过程中我会提供两个示例说明。 1. 什么是 jQuery ajax 请求? jQuery是一个流行的JavaScript库,提供了很多简化和方便的方法来操作页面上的元素和处理请求。其中,ajax是jQuery的一个方法,用于向服务器发送异步请求,而不需要刷新…

    Java 2023年6月15日
    00
  • 通过spring用beanshell实现java接口示例

    通过Spring使用Beanshell实现Java接口的过程如下: 准备工作 首先,确保安装了Beanshell和Spring依赖项。在此过程中,我们将使用Gradle作为构建工具。在项目的build.gradle文件中添加以下代码,然后运行gradle build以加载所需的依赖项: dependencies { … compile ‘org.spri…

    Java 2023年6月15日
    00
  • layui的数据表格+springmvc实现搜索功能的例子

    下面是详细讲解“layui的数据表格+springmvc实现搜索功能的例子”的完整攻略: 一、前置条件 确定使用的IDE是IntelliJ IDEA; 确保已经创建了一个Spring MVC的web工程; 确保已经配置好了Layui相关的静态资源。 二、添加依赖 添加spring-data-jpa、MySQL JDBC驱动、Spring Web MVC等依赖…

    Java 2023年6月18日
    00
  • Java多线程实现模拟12306火车站售票系统

    了解Java多线程和模拟火车站售票系统的开发者可以通过以下步骤实现: 步骤一:创建火车站售票系统的框架 开发者需要创建一个完整的火车站售票系统框架,需要包含以下几个模块: 模块一:火车站模块 这个模块包括火车站的基本信息,例如火车站名称、火车站位置等。同时,这个模块还需要包括火车站售票相关的方法,例如查询余票数量、购票等。 模块二:列车模块 这个模块包括列车…

    Java 2023年5月19日
    00
  • Spring Data JPA 之 JpaRepository的使用

    下面将为您详细讲解Spring Data JPA之JpaRepository的使用攻略。 什么是JpaRepository? JpaRepository是Spring Data JPA提供的一个接口,它继承自PagingAndSortingRepository接口,同时它还继承了CrudRepository接口,提供了一些与业务相关的方法,如save、del…

    Java 2023年5月20日
    00
  • java web实现用户权限管理

    Java Web 实现用户权限管理,主要的实现思路就是通过对用户进行访问控制、绑定角色、授权等操作,来达到实现用户权限控制的目的。整个流程主要包含以下几个步骤: 1.设计用户权限表2.设计用户角色与权限表3.设计角色表4.设计角色权限表5.整合权限验证 接下来详细讲解每个步骤的具体实现方法。 设计用户权限表 一个用户可能拥有不同的权限,所以需要在数据库中设计…

    Java 2023年6月15日
    00
  • Log4j如何屏蔽某个类的日志打印

    Log4j是一个用于Java平台的优秀日志框架。它支持多种日志级别、灵活配置等特性,并可以通过代码的方式来灵活控制日志打印的内容。 如果你希望在Log4j中屏蔽某个类的日志打印,可以按照以下步骤进行操作: 配置Log4j 在Log4j的配置文件中,默认情况下没有设置任何针对特定类的日志过滤。要屏蔽某个类的日志打印,需要通过配置的方式来指定。 可以在Log4j…

    Java 2023年5月20日
    00
  • Spring Boot 如何自定义返回错误码错误信息

    一、背景知识 在开发过程中,定义一套统一的错误码以及错误信息对于后续的使用和协作有很大的帮助,这笔帮助在项目人员的交流、定位问题、维护代码等方面会发挥至关重要的作用。 Spring Boot 是一个优秀的开源框架,同样也提供了很多途径来自定义错误码以及错误信息,因此本文打算讲解一下如何在 Spring Boot 中自定义返回错误码和错误消息的过程。 二、应用…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部