27基於java的學生線上考試系統

来源:https://www.cnblogs.com/projecthelp/archive/2023/05/06/17377453.html
-Advertisement-
Play Games

一、項目簡介 隨著互聯網迅速發展,人們的生活已經越來越離不開互聯網,人們足不出戶就可以工作、學習等。對於在校學生,通過網路教育不僅可以隨時進行網路學習,也可以根據學習的情況自我檢測,有利於學生高效、快捷地掌握所學的知識。 本系統預設計的基於網路的學生自測系統將實現多種用戶(包括學生、教師、管理員)同 ...


一、項目簡介

隨著互聯網迅速發展,人們的生活已經越來越離不開互聯網,人們足不出戶就可以工作、學習等。對於在校學生,通過網路教育不僅可以隨時進行網路學習,也可以根據學習的情況自我檢測,有利於學生高效、快捷地掌握所學的知識。
本系統預設計的基於網路的學生自測系統將實現多種用戶(包括學生、教師、管理員)同時訪問,學生登錄後可以針對課程的每一章節的每一道題目,提交答案;系統會自動按照學生的答案來判斷對錯,並自動給出成績。另外,系統還具有添加用戶、管理題庫、添加試卷、添加習題、修改密碼等功能。

簡單的一句話,這是一個完整的學生線上考試系統,導入項目和資料庫就可以使用;在本考試系統中,管理員、老師、學生三個角色是相當於是三個系統。

二、開發工具和環境

前端: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>

三、系統展示

學生模塊

  • 登錄
    在這裡插入圖片描述
  • 首頁:
    在這裡插入圖片描述
  • 答題
    學生可以選擇自己的試卷進行答題,可以上一題和下一題,同時還有時間倒計時功能,還可以標記題目,提交試卷後系統自動計算分數出來:
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 練習模式
    在這裡插入圖片描述

-學生查看分數
在這裡插入圖片描述

  • 留言功能
    在這裡插入圖片描述

教師管理

教師管理:考試管理;題庫管理;成績管理;學生管理等;
在這裡插入圖片描述

  • 考試管理
    在這裡插入圖片描述

在這裡插入圖片描述

  • 題庫管理
    在這裡插入圖片描述
  • 增加題目信息
    在這裡插入圖片描述
  • 成績管理
    在這裡插入圖片描述
    查看某個學生分數情況:
    在這裡插入圖片描述
  • 查看班級分數段情況:
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 學生管理
    在這裡插入圖片描述

管理員模塊

在這裡插入圖片描述

  • 擁有教師的所有許可權,同時增加可以管理教師模塊:
    在這裡插入圖片描述
    在這裡插入圖片描述

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前兩天我寫了一個上傳下載功能 使用<el-upload>組件 當後端將文件流格式數據發送到響應裡面前端屈接受的時候 ,我們使用 <el-upload> 組件裡面的 :on-success 方法進行捕捉,使用blob進行文件下載 文件可以正常下載下來 但是打開文件損壞 我去網上尋找答案, 但大多都是說 ...
  • 本文使用 React + Three.js + React Three Fiber 技術棧,實現一個《塞爾達傳說:王國之淚》主題風格基於滾動控制的平滑滾動圖片展示頁面。通過本文的閱讀,你將學習到的知識點包括:瞭解 R3F 中 useFrame hook 及 useThree hook 基本原理及用法... ...
  • 解決的問題 避免新開發的代碼影響提測的代碼 避免生產環境出現問題後,修複後,由於代碼混亂,無法合併到生產環境 解決多個需求並行開發,並行測試,合併上線的問題 我的設計思路 流程圖工具我使用的是:diagrams.net 具體執行步驟 開發人員按需求粒度從dev建立分支 哪個需求或者哪些需求提測,就把 ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Django筆記三十六之單元測試彙總介紹 Django 的單元測試使用了 Python 的標準庫:unittest。 在我們創建的每一個 application 下麵都有一個 tests.py 文件,我們通過繼承 django.test.TestCase ...
  • 用go設計開發一個自己的輕量級登錄庫/框架吧 幾乎每個項目都會有登錄,退出等用戶功能,而登錄又不單僅僅是登錄,我們要考慮很多東西。 token該怎麼生成?生成什麼樣的? 是在Cookie存token還是請求頭存token?讀取的時候怎麼讀取? 允許同一個賬號被多次登錄嗎?多次登錄他們的token是一 ...
  • 關於最近學習記下來的一些要點以及模糊的地方總結 對象類型和引用類型可以用鏈式結構 2進位是toBinaryString 10進位是Decimal 16進位是toHexString 8進位是octal final 1.修飾類 不能被繼承 2.修飾方法 不能被重寫,能被重載 3.修飾變數 值不可被重新賦 ...
  • 視頻鏈接:https://www.bilibili.com/video/BV1Cv411372m?p=121&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3 1 Data 1.1 Date類概述 Date類的對象在java中代表的是當前所在系統的此刻日期時間。 ...
  • 初學java後,需要一個小練手的java web項目,酒店數據信息管理。酒店CRUD項目。基於java的酒店管理,基於vue實現的酒店項目,酒店管理系統。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...