如何使用ssm实现学生成绩管理系统+vue

330 篇文章 0 订阅
137 篇文章 0 订阅

@TOC

ssm149学生成绩管理系统+vue

系统概述

1.1 概述

 随着社会的快速发展,计算机的影响是全面且深入的。人们的生活水平不断提高,日常生活中人们对平时成绩方面的要求也在不断提高,需要问题信息的人数更是不断增加,使得平时成绩管理系统的开发成为必需而且紧迫的事情。平时成绩管理系统主要是借助计算机,通过对平时成绩管理系统所需的信息管理,增加用户选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。平时成绩管理系统对用户带来了更多的便利, 该系统通过和数据库管理系统软件协作来满足用户的需求。

1.2试题意义

随着全球信息化的发展,人们的生活节奏越来越快,对信息的时效性越来越重视。以传统的宣传方式为载体的传统媒介早已不能满足用户对获取信息的方式、便捷性的需求。所以平时成绩管理系统渐渐成为用户关注的焦点。首先,平时成绩管理系统,网上获取信息的实时性、便捷性要远远高于传统媒介。系统一经上线,无论用户在世界的哪个角落,只要能够连接互联网,就能在第一时间获得想要的信息。

以往的教育教学相关信息管理,都是工作人员手工统计。这样即浪费时间,时效性低,而且需要查找和变更的时候很不方便。随着科学的进步,技术的成熟,计算机信息化也日新月异的发展,社会也已经深刻的认识,计算机功能非常的强大,计算机已经进入了人类社会发展的各个领域,并且发挥着十分重要的作用。

计算机技术在现代管理中的应用,使计算机成为用户应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题,提高效率。

1.3 主要内容

平时成绩管理系统从功能、数据流程、可行性、运行环境等方面进行需求分析。对平时成绩管理系统的数据库、功能进行了详细设计。分析了主要界面设计和相关组件设计,对平时成绩管理系统的具体实现进行了介绍,从而达到对平时成绩管理系统的管理。

详细内容介绍,将在以下六章中详细阐述:

第一章、绪论,介绍了研究试题选择的背景及意义、研究现状,简要介绍了本文的章节内容。

第二章、引入技术知识,通过引入关键技术进行开发,向系统中涉及直观表达的技术知识。

第三章、重点分析了系统的分析,从系统强大的供需市场出发,对系统开发的可行性,系统流程以及系统性能和功能进行了探讨。

第四章、介绍了系统的详细设计方案,包括系统结构设计和数据库设计。

第五章、系统设计的实现,通过对系统功能设计的详细说明,论证了系统的结构。

第六章、系统的整体测试,评判系统是否可以上线运行。

采用java技术,从数据库中获取数据、向数据库中写入数据,实现系统直接对数据库进行各种操作,在网页中加入动态内容,从而实现平时成绩管理系统所需要的各种基本功能。

2 系统开发环境

2.1 SSM结构模式

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象[4]。

SpringMVC在项目中拦截员工请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责。SpringMVC相当于SSH框架中struts。其次,MVC设计模式对系统进行设计,给出系统的子系统结构和类结构,以及数据库的表结构的设计[5]。而这款框架是非常强大的,能够分离出很多种便于编写阶段的架构,这样的分离能更方便的进行定制及操作控制。

mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的[6]。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。它通过使用简单的XML或注解来配置和映射,并将java的POJOS和接口映射成为数据库里的记录。

2.2 JAVA简介

Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,java(java server pages),和XML技术。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。

2.3访问数据库实现方法

(1)首先介绍一下web数据库搜索网络上的基本步骤:

第一步:检查消费者的数据,

第二步:你必须建立与数据库的连接;

第三步:搜索数据库;

第四步:数据的结构;

第五步:该用户 的结果被示出。

(2)系统,直到我MYSQL5.0 PHP集成开发环境,如使用WAMP服务器处于开机状态,并且更容易访问数据库的报告开发环境:

一个连接到MySQL数据库服务器Mysql_connect-;

语法:资源的mysql_connect(主机,用户 名,密码);

请选择数据库:mysql_select_db(数据库链接标识的名称);

关闭数据库:则mysql_close();

2.4系统对MySQL数据库的两种连接方式

活动的MySQL/ MySQL库,或使用ODBC接口,MySQL数据库是一个双向链接。永久及非永久连接。

(1)永久连接:一个更永久的连接请求的最大优点是可以非常有效的学生站在密切的联系,当连接到MySQL服务器,就更好了。在起草该页面每一个孩子在这个过程中,而不是仅仅在任何时候,只有在到MySQL服务器请求连接的生命周期,一旦连接。此子过程是建立到服务器的单独连接可以是永久性的。

(2)非永久连接:他是短路。提交顺路到Web服务器,服务器处理请求并请求的页面,你要发送的浏览器学生端,然后连接断开。对于大多数网站,它经常通过有效高效率有关,但在大多数情况下,所使用的连接,但它是一个完整的时间,以避免出现任何问题,并可以增加的容量服务器承载。

2.5 MySql数据库

Mysql的语言是非结构化的,用户 可以在数据上进行工作。因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,其速度、可靠性和适应性而备受关注并得到了普遍的应用。Mysql数据库在编程过程中的作用是很广泛的,为用户 进行数据查询带来了方便。Mysql数据库的应用特点:灵活性强,功能强大,语言相对要简洁很多。

数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据库管理主要是数据存储、修改和增加以及数据表的建立。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。

3 需求分析

3.1技术可行性:技术背景     

平时成绩管理系统是在Windows操作系统中进行开发运用的,而且目前PC机的各项性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。

系统的开发环境和配置都是可以自行安装的,系统使用Java开发工具,使用比较成熟的Mysql数据库进行对系统后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得网站运行更具有稳定性和安全性,从而完成实现网站的开发。

(1)硬件可行性分析

考试管理及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开网站必须顺畅,不能停顿太长时间;性价比高;安全性高。

(2)软件可行性分析

开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障了数据信息能够得到及时的备份,整个系统可以安全有效的运行。

因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。

3.2经济可行性

在平时成绩管理系统开发之前所做的市场调研及与其相关的其他管理系统,都是没有任何费用的。所有的调查研究都是通过开发者自己的努力,所有的工作也都是自己亲力亲为的。在碰到自己比较难以解决的问题时,大多数是通过指导老师和同学的帮助进行相关问题的解决。所以对于平时成绩管理系统的开发在经济上是完全可行的,没有任何费用支出的。

使用比较成熟的技术,系统是基于Java的开发,采用Mysql数据库。所以系统在开发人力、财力方面的要求不高,具有经济可行性。

3.3操作可行性: 

可操作性主要是对在平时成绩管理系统设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、学生、教师三个角色,都可以简单明了的进入到自己的系统界面,通过界面可以简单明了地操作功能模块,方便用户信息的操作需求和管理员数据信息。对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以平时成绩管理系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。

3.4系统设计规则

本平时成绩管理系统采用Java技术,Mysql数据库开发,充分保证了系统稳定性、完整性。

平时成绩管理系统的设计与实现的设计思想如下:

  1. 操作简单方便、系统界面安全良好:简单明了的页面布局,方便查询管理的相关信息。

2、即时可见:对平时成绩管理系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。

3、功能的完善性:管理员;个人中心、公告信息管理、班级管理、学生管理、教师管理、课程信息管理、学生选课管理、课程成绩管理、试题管理、试卷管理、考试管理,

学生;首个人中心、公告信息管理、课程信息管理、学生选课管理、课程成绩管理、考试管理,

教师;个人中心、公告信息管理、课程信息管理、学生选课管理、课程成绩管理、试题管理、试卷管理、考试管理模块的修改和维护操作。

3.5系统流程和逻辑

系统业务流程图,如图所示:

图3-1登录流程图

图3-2添加信息流程图

图3-3注册信息流程图

4系统概要设计

4.1 概述

平时成绩管理系统基于Web服务模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在不受时间、地点的限制来使用这个系统。平时成绩管理系统工作原理图,如图4-1所示:

图4-1 系统工作原理图

4.2 系统结构

本系统架构网站系统,本系统的具体功能如下:

平时成绩管理系统登陆界面

用户登录

密码正确

管理员界面

教师界面

学生界面

图4-2系统功能结构图

管理员:首页、个人中心、公告信息管理、班级管理、学生管理、教师管理、课程信息管理、学生选课管理、课程成绩管理、试题管理、试卷管理、考试管理,功能结构图,如图4-3所示:

图4-3 管理员功能结构图

教师后台;首页、个人中心、公告信息管理、课程信息管理、学生选课管理、课程成绩管理、试题管理、试卷管理、考试管理,结构图,如图4-4所示:

图4-4 教师功能结构图

学生后台;首页、个人中心、公告信息管理、课程信息管理、学生选课管理、课程成绩管理、考试管理,结构图,如图4-5所示:

图4-5学生功能结构图

4.3. 数据库设计

4.3.1 数据库实体

管理员实体主要存储管理信息包括用户名、密码、角色。管理员信息结构图,如图4-6所示:

图4-6 管理员信息实体结构图

学生信息:学号、学生姓名、性别、头像、班级、手机、邮箱,实体属性图,如图4-7所示:

图4-7学生信息实体属性图

教师信息:教师工号、密码、教师姓名、性别、照片、职称、联系电话,实体属性图如图4-8所示。

图4-8教师信息实体属性图

课程信息:课程名称、图片、学期、班级、发布日期、教师工号、教师姓名,实体属性图如图4-9所示。

图4-9课程信息实体属性图

4.3.2 数据库设计表

4.4 数据表

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

allusers表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2username150255
3pwd150255
4cx150255
5addtimeDateTime819

gonggaoxinxi表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
3gonggaobiaoti150255
4tupianDateTime8255
5neirong150255
6faburiqiDateTime8255

jiaoshi表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
3jiaoshigonghao150255
4mimaDateTime8255
5jiaoshixingming150255
6xingbieDateTime8255
7zhaopian150255
8zhichengDateTime8255
9lianxidianhua150255

kechengchengji表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
4kechengmingchengDateTime8255
5banji150255
6xueqiDateTime8255
7kaohechengji150255
8pingyuDateTime8255
9dengjishijian150255
10jiaoshigonghaoDateTime8255
11jiaoshixingming150255
12xuehaoDateTime8255
13xueshengxingming150255

kechengxinxi表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
4kechengmingchengDateTime8255
5tupian150255
6xueqiDateTime8255
7banji150255
8faburiqiDateTime8255
9jiaoshigonghao150255
10jiaoshixingmingDateTime8255

第5章 系统详细设计

5.1管理员功能模块

管理员登录,管理员通过输入用户名、密码、角色等信息进行系统登录,如图5-1所示。

图5-1管理员登录界面图

首页,管理员登录进入平时成绩管理系统后台可以查看首页、个人中心、公告信息管理、班级管理、学生管理、教师管理、课程信息管理、学生选课管理、课程成绩管理、试题管理、试卷管理、考试管理等内容,如图5-2所示。

图5-2管理员首页功能界面图

公告信息管理,管理员在公告信息管理页面可以查看公告标题、图片、发布日期 、发布内容等内容,并可根据需要对公告信息进行详情,修改或删除等操作,如图5-3所示。

图5-3公告信息管理界面图

学生管理,管理员在学生管理页面可以查看学号、学生姓名、性别、头像、班级、手机、邮箱等内容,并可根据需要对学生管理进行详情,修改或删除等操作,如图5-4所示。

图5-4学生管理界面图

教师管理,管理员在教师管理页面可以查看教师工号、教师姓名、性别、照片、职称、联系电话等内容,并可根据需要对教师管理进行详情,修改或删除等操作,如图5-5所示。

图5-5教师管理界面图

课程信息管理,管理员在课程信息管理页面可以查看信息编号、课程标题、课程类型、课程简介、相关图片、相关视频、工号、教师姓名、日期、等内容,并可根据需要对课程信息管理进行审核,可进行详情、修改或删除等操作,如图5-6所示。

图5-6课程信息管理界面图

考试管理,管理员在考试管理页面可以查看错题本、试卷列表、考试记录,如图5-7所示。

图5-7考试管理界面图

5.2学生功能模块

登录,学生登录,学生通过登陆页面填写学号、密码、角色进行登陆,如图5-8所示。

图5-8登陆界面图

首页,在学生首页页面通过查看首页、个人中心、公告信息管理、课程信息管理、学生选课管理、课程成绩管理、考试管理,如图5-9所示。

图5-9首页界面图

个人信息,在学生个人信息页面可以查看编辑学号 、学生姓名、性别、头像、班级、手机、邮箱等内容,进行修改操作,如图5-10所示。

图5-10个人信息界面图

学生选课管理,学生在选课页面可以查看管理员审核回复,并可根据需要对详情查看、修改、删除操作,如图5-11所示。

图5-11学生选课管理界面图

考试管理,学生在考试页面通过点击考试进入答题页面进行考试,如图5-12所示。

图5-12考试管理界面图

5.3教师功能模块

登录,教师登录,教师通过登陆页面填写教师工号、密码、角色进行登陆,如图5-13所示。

图5-13教师登陆界面图

首页,在教师首页页面通过查看首页、个人中心、公告信息管理、课程信息管理、学生选课管理、课程成绩管理、试题管理、试卷管理、考试管理,如图5-14所示。

图5-14教师首页界面图

个人信息,在教师个人信息页面可以查看编辑教师工号、教师姓名、性别、照片、职称、联系电话等内容,进行修改操作,如图5-15所示。

图5-15个人信息界面图

课程信息管理,教师在课程信息管理页面进行详情查看,如图5-16所示。

图5-16课程信息管理界面图

试卷管理,教师在试卷管理页面可进行编辑试卷名称、考试时长、试卷状态,进行修改操作,如图5-17所示。

图5-17试卷管理界面图

ExamrecordController.java
package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ExamrecordEntity;
import com.entity.view.ExamrecordView;

import com.service.ExamrecordService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 考试记录表
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-30 11:42:10
 */
@RestController
@RequestMapping("/examrecord")
public class ExamrecordController {
    @Autowired
    private ExamrecordService examrecordService;
    

   	    /**
     * 考试记录接口
     */
    @RequestMapping("/groupby")
    public R page2(@RequestParam Map<String, Object> params,ExamrecordEntity examrecord, HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		examrecord.setUserid((Long)request.getSession().getAttribute("userId"));
    	}

        EntityWrapper<ExamrecordEntity> ew = new EntityWrapper<ExamrecordEntity>();
		PageUtils page = examrecordService.queryPageGroupBy(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, examrecord), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ExamrecordEntity examrecord, 
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		examrecord.setUserid((Long)request.getSession().getAttribute("userId"));
    	}

        EntityWrapper<ExamrecordEntity> ew = new EntityWrapper<ExamrecordEntity>();
		PageUtils page = examrecordService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, examrecord), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ExamrecordEntity examrecord, HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		examrecord.setUserid((Long)request.getSession().getAttribute("userId"));
    	}

        EntityWrapper<ExamrecordEntity> ew = new EntityWrapper<ExamrecordEntity>();
		PageUtils page = examrecordService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, examrecord), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( ExamrecordEntity examrecord){
       	EntityWrapper<ExamrecordEntity> ew = new EntityWrapper<ExamrecordEntity>();
      	ew.allEq(MPUtil.allEQMapPre( examrecord, "examrecord")); 
        return R.ok().put("data", examrecordService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ExamrecordEntity examrecord){
        EntityWrapper< ExamrecordEntity> ew = new EntityWrapper< ExamrecordEntity>();
 		ew.allEq(MPUtil.allEQMapPre( examrecord, "examrecord")); 
		ExamrecordView examrecordView =  examrecordService.selectView(ew);
		return R.ok("查询考试记录表成功").put("data", examrecordView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ExamrecordEntity examrecord = examrecordService.selectById(id);
        return R.ok().put("data", examrecord);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ExamrecordEntity examrecord = examrecordService.selectById(id);
        return R.ok().put("data", examrecord);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ExamrecordEntity examrecord, HttpServletRequest request){
    	examrecord.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(examrecord);
    	examrecord.setUserid((Long)request.getSession().getAttribute("userId"));

        examrecordService.insert(examrecord);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ExamrecordEntity examrecord, HttpServletRequest request){
    	examrecord.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(examrecord);
    	examrecord.setUserid((Long)request.getSession().getAttribute("userId"));

        examrecordService.insert(examrecord);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ExamrecordEntity examrecord, HttpServletRequest request){
        //ValidatorUtils.validateEntity(examrecord);
        examrecordService.updateById(examrecord);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        examrecordService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ExamrecordEntity> wrapper = new EntityWrapper<ExamrecordEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}


		int count = examrecordService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	

    /**
     * 当重新考试时,删除考生的某个试卷的所有考试记录
     */
    @RequestMapping("/deleteRecords")
    public R deleteRecords(@RequestParam Long userid,@RequestParam Long paperid){
    	examrecordService.delete(new EntityWrapper<ExamrecordEntity>().eq("paperid", paperid).eq("userid", userid));
        return R.ok();
    }

}

CommonUtil.java
package com.utils;

import java.util.Random;

public class CommonUtil {
	/**
     * 获取随机字符串
     *
     * @param num
     * @return
     */
    public static String getRandomString(Integer num) {
        String base = "abcdefghijklmnopqrstuvwxyz0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < num; i++) {
            int number = random.nextInt(base.length());
            sb.append(base.charAt(number));
        }
        return sb.toString();
    }
}

ExamquestionServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.ExamquestionDao;
import com.entity.ExamquestionEntity;
import com.service.ExamquestionService;
import com.entity.vo.ExamquestionVO;
import com.entity.view.ExamquestionView;

@Service("examquestionService")
public class ExamquestionServiceImpl extends ServiceImpl<ExamquestionDao, ExamquestionEntity> implements ExamquestionService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<ExamquestionEntity> page = this.selectPage(
                new Query<ExamquestionEntity>(params).getPage(),
                new EntityWrapper<ExamquestionEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<ExamquestionEntity> wrapper) {
		  Page<ExamquestionView> page =new Query<ExamquestionView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<ExamquestionVO> selectListVO(Wrapper<ExamquestionEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public ExamquestionVO selectVO(Wrapper<ExamquestionEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<ExamquestionView> selectListView(Wrapper<ExamquestionEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public ExamquestionView selectView(Wrapper<ExamquestionEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值