基于Spring+SpringMVC+Mybatis+Mysql在线考试系统

一、系统介绍

系统主要功能:
学生:输入考试号、参加考试。
老师:考试信息、试卷库、试题库、学生信息、成绩分析、成绩排名、错题统计、成绩导出

运行环境 : idea、mysql、tomcat

二、功能展示

1.用户登陆

在这里插入图片描述

2.学生页面

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

3.考试信息(老师)

在这里插入图片描述

4.试卷库(老师)

在这里插入图片描述

5.试题库(老师)

在这里插入图片描述

6.考生信息(老师)

在这里插入图片描述

7.成绩分析(老师)

在这里插入图片描述

8.成绩排名(老师)

在这里插入图片描述

9.错题统计(老师)

在这里插入图片描述

10.成绩导出(老师)

在这里插入图片描述

四、其它

1.代码展示

package com.flower.controller;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class Test2 {
    public static void main(String[] args) {
        try {
            /**
             * 造一些测试数据,这里就不去数据库里查了,一般正常是数据库有个表记录签到记录
             */
            List<String> signInDateStrs = new ArrayList<>();
            signInDateStrs.add("2022-05-05");
            signInDateStrs.add("2022-05-08");
            signInDateStrs.add("2022-05-10");
            signInDateStrs.add("2022-05-11");
            signInDateStrs.add("2022-05-12");
            List<Date> signInDates = new ArrayList<>();
            for (String dateStr : signInDateStrs) {
                Calendar calendarTo = Calendar.getInstance();
                calendarTo.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(dateStr));
                Calendar c = Calendar.getInstance();
                c.setTimeInMillis(0);
                c.set(calendarTo.get(Calendar.YEAR), calendarTo.get(Calendar.MONTH),
                        calendarTo.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
                signInDates.add(c.getTime());
            }

            int count = persistentDay(signInDates);
            System.out.println("连续签到了" + count + "天");
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 自动签到的情况,只要一进入系统就会签到,所以连续签到肯定至少为1天
     * @param signInDates
     * @return
     */
    private static int persistentDay(List<Date> signInDates){
        //定义一个变量表示连续签到天数,从1开始
        int continuousDays = 1;

        //1. 注意先对时间进行从小到大排序(可以在数据库里查的时候就根据时间排序,也可以查询出来之后再排序)

        /**
         * 2. 从最大的时间开始往前比较,因为我们是要拿连续签到的时间,这样才有意义,减少无谓的比较
         */
        Calendar later = Calendar.getInstance();
        Calendar before = Calendar.getInstance();
        for (int i = signInDates.size() - 1; i > 0; i--){
            later.setTime(signInDates.get(i));
            before.setTime(signInDates.get(i - 1));
            //前一天 + 1天 = 后一天,则视为连续签到
            before.add(Calendar.DAY_OF_MONTH,1);
            if (later.get(Calendar.YEAR) == before.get(Calendar.YEAR)
                    && later.get(Calendar.MONTH) == before.get(Calendar.MONTH)
                    && later.get(Calendar.DAY_OF_YEAR) == before.get(Calendar.DAY_OF_YEAR)){
                continuousDays++;
            }else {
                //只要遇到不连续的就不用再往前比较了
                break;
            }
        }
        return continuousDays;
    }
}

2.获取源码

点击下载
基于Spring+SpringMVC+Mybatis+Mysql在线考试系统

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小码叔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值