基于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;
}
}