当前位置: 首页 > news >正文

基于SSM框架+mysql实现的监考安排管理系统[含源码+数据库+项目开发技术手册]

功能实现要求

学院教室监考安排管理系统
22461700014 xxx1. 考试栏目表(考试ID(主键),考试名称,学期,发起单位【某学院,教务处】,主考教师ID,副主考教师ID,创建时间,创建人ID(外键))
2. 教师监考安排信息表(监考安排编号(主键),考试栏目ID(外键)课程学院,课程科目,考试班级,监考日期,监考时间,监考教室,教师1ID(外键),教师2ID(外键),考务办公室)
3. 用户信息表(工号(主键),密码,姓名,手机号码,用户类型【管理员,教师】,所在学院,所在系室)
4. 监考安排视图(以监考安排表为主表,连接考试栏目表,用户表的多表查询)
(1) 考试栏目信息实体类
(2) 监考安排信息实体类
(3) 用户信息实体类
(4) 监考安排视图实体类
(1) 考试栏目信息DAO类(增,删,查,改)
(2) 监考安排信息DAO类(增,删,查,改)
(3) 用户信息DAO类(增,删,查,改)
(1) 考试栏目业务类:(添加考试栏目信息,修改考试栏目信息,删除考试栏目信息,根据栏目ID查询考试栏目,根据考试名称模糊查询考试栏目)
(2) 监考安排业务类:(添加监考安排记录,修改监考安排记录,删除监考安排记录,根据教师工号和考试栏目名称查询某次考试栏目的教师的监考安排记录,根据教师名称和考试栏目名称查询某次考试栏目的教师的监考安排记录,查看某学期,某教师的所有监考安排记录,查看某学期,某教师的所有监考安排的总次数)
(3) 用户信息业务类(用户注册,用户登录,修改用户信息,删除用户信息,查询用户信息)
(1) 主页:展示学校所有考试栏目信息,可按照考试栏目名称,学期,考务发起单位进行模糊查询,有菜单。
(2) 考试栏目详细信息页面:从 (1) 中点击考试栏目进入,展示考试栏目发起单位的详细信息。
(3) 考试栏目编辑页面:从 (1) 中菜单进入,实现添加修改考试栏目。
(4) 监考安排展示页面:从 (1) 点击考试栏目后的监考安排链接进入,展示该考试所有场次监考安排信息,可按照教师ID,教师姓名查询教师的监考信息。
(5) 监考安排编辑页面:从 (4) 中进入,实现添加修改监考安排信息。
(6) 教师学期监考安排查询页面:可查看教师某个学期所有监考安排西信息,并统计该教师的总次数。
(7) 用户注册页面:一个页面实现管理员的注册
(8) 用户登录页面
1. 考试栏目管理请求控制类
2. 监考安排管理请求控制类
3. 用户信息管理请求控制类

页面效果

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

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

部分代码实现

考试栏目Controller

package com.ruoyi.jiankao.controller;import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.jiankao.domain.JkExamSubject;
import com.ruoyi.jiankao.service.IJkExamSubjectService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;/*** 考试栏目Controller* * @author ruoyi* @date 2025-06-21*/
@Controller
@RequestMapping("/exam/subject")
public class JkExamSubjectController extends BaseController
{private String prefix = "exam/subject";@Autowiredprivate IJkExamSubjectService jkExamSubjectService;@RequiresPermissions("exam:subject:view")@GetMapping()public String subject(){return prefix + "/subject";}/*** 查询考试栏目列表*/@RequiresPermissions("exam:subject:list")@PostMapping("/list")@ResponseBodypublic TableDataInfo list(JkExamSubject jkExamSubject){startPage();List<JkExamSubject> list = jkExamSubjectService.selectJkExamSubjectList(jkExamSubject);return getDataTable(list);}/*** 导出考试栏目列表*/@RequiresPermissions("exam:subject:export")@Log(title = "考试栏目", businessType = BusinessType.EXPORT)@PostMapping("/export")@ResponseBodypublic AjaxResult export(JkExamSubject jkExamSubject){List<JkExamSubject> list = jkExamSubjectService.selectJkExamSubjectList(jkExamSubject);ExcelUtil<JkExamSubject> util = new ExcelUtil<JkExamSubject>(JkExamSubject.class);return util.exportExcel(list, "考试栏目数据");}/*** 新增考试栏目*/@RequiresPermissions("exam:subject:add")@GetMapping("/add")public String add(){return prefix + "/add";}/*** 新增保存考试栏目*/@RequiresPermissions("exam:subject:add")@Log(title = "考试栏目", businessType = BusinessType.INSERT)@PostMapping("/add")@ResponseBodypublic AjaxResult addSave(JkExamSubject jkExamSubject){return toAjax(jkExamSubjectService.insertJkExamSubject(jkExamSubject));}/*** 修改考试栏目*/@RequiresPermissions("exam:subject:edit")@GetMapping("/edit/{subjectId}")public String edit(@PathVariable("subjectId") Long subjectId, ModelMap mmap){JkExamSubject jkExamSubject = jkExamSubjectService.selectJkExamSubjectBySubjectId(subjectId);mmap.put("jkExamSubject", jkExamSubject);return prefix + "/edit";}/*** 修改保存考试栏目*/@RequiresPermissions("exam:subject:edit")@Log(title = "考试栏目", businessType = BusinessType.UPDATE)@PostMapping("/edit")@ResponseBodypublic AjaxResult editSave(JkExamSubject jkExamSubject){return toAjax(jkExamSubjectService.updateJkExamSubject(jkExamSubject));}/*** 删除考试栏目*/@RequiresPermissions("exam:subject:remove")@Log(title = "考试栏目", businessType = BusinessType.DELETE)@PostMapping( "/remove")@ResponseBodypublic AjaxResult remove(String ids){return toAjax(jkExamSubjectService.deleteJkExamSubjectBySubjectIds(ids));}
}

监考安排信息Controller

package com.ruoyi.jiankao.controller;import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.jiankao.domain.JkInvigilateArrangement;
import com.ruoyi.jiankao.service.IJkInvigilateArrangementService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;/*** 教师监考安排信息Controller* * @author ruoyi* @date 2025-06-21*/
@Controller
@RequestMapping("/invigilate/arrangement")
public class JkInvigilateArrangementController extends BaseController
{private String prefix = "invigilate/arrangement";@Autowiredprivate IJkInvigilateArrangementService jkInvigilateArrangementService;@RequiresPermissions("invigilate:arrangement:view")@GetMapping()public String arrangement(){return prefix + "/arrangement";}/*** 查询教师监考安排信息列表*/@RequiresPermissions("invigilate:arrangement:list")@PostMapping("/list")@ResponseBodypublic TableDataInfo list(JkInvigilateArrangement jkInvigilateArrangement){startPage();List<JkInvigilateArrangement> list = jkInvigilateArrangementService.selectJkInvigilateArrangementList(jkInvigilateArrangement);return getDataTable(list);}@PostMapping("/queryList")@ResponseBodypublic Object queryList(@RequestBody JkInvigilateArrangement jkInvigilateArrangement){return jkInvigilateArrangementService.selectJkInvigilateArrangementList(jkInvigilateArrangement);}/*** 导出教师监考安排信息列表*/@RequiresPermissions("invigilate:arrangement:export")@Log(title = "教师监考安排信息", businessType = BusinessType.EXPORT)@PostMapping("/export")@ResponseBodypublic AjaxResult export(JkInvigilateArrangement jkInvigilateArrangement){List<JkInvigilateArrangement> list = jkInvigilateArrangementService.selectJkInvigilateArrangementList(jkInvigilateArrangement);ExcelUtil<JkInvigilateArrangement> util = new ExcelUtil<JkInvigilateArrangement>(JkInvigilateArrangement.class);return util.exportExcel(list, "教师监考安排信息数据");}/*** 新增教师监考安排信息*/@RequiresPermissions("invigilate:arrangement:add")@GetMapping("/add")public String add(){return prefix + "/add";}/*** 新增保存教师监考安排信息*/@RequiresPermissions("invigilate:arrangement:add")@Log(title = "教师监考安排信息", businessType = BusinessType.INSERT)@PostMapping("/add")@ResponseBodypublic AjaxResult addSave(JkInvigilateArrangement jkInvigilateArrangement){return toAjax(jkInvigilateArrangementService.insertJkInvigilateArrangement(jkInvigilateArrangement));}/*** 修改教师监考安排信息*/@RequiresPermissions("invigilate:arrangement:edit")@GetMapping("/edit/{arrangementId}")public String edit(@PathVariable("arrangementId") Long arrangementId, ModelMap mmap){JkInvigilateArrangement jkInvigilateArrangement = jkInvigilateArrangementService.selectJkInvigilateArrangementByArrangementId(arrangementId);mmap.put("jkInvigilateArrangement", jkInvigilateArrangement);return prefix + "/edit";}/*** 修改保存教师监考安排信息*/@RequiresPermissions("invigilate:arrangement:edit")@Log(title = "教师监考安排信息", businessType = BusinessType.UPDATE)@PostMapping("/edit")@ResponseBodypublic AjaxResult editSave(JkInvigilateArrangement jkInvigilateArrangement){return toAjax(jkInvigilateArrangementService.updateJkInvigilateArrangement(jkInvigilateArrangement));}/*** 删除教师监考安排信息*/@RequiresPermissions("invigilate:arrangement:remove")@Log(title = "教师监考安排信息", businessType = BusinessType.DELETE)@PostMapping( "/remove")@ResponseBodypublic AjaxResult remove(String ids){return toAjax(jkInvigilateArrangementService.deleteJkInvigilateArrangementByArrangementIds(ids));}
}

开发技术手册

在这里插入图片描述

源码获取

欢迎大家点赞、收藏、关注、评论啦 ,可以直接下载https://download.csdn.net/download/weixin_43860634/91149992
,也可以查看👇🏻获取联系方式👇🏻

http://www.lryc.cn/news/575157.html

相关文章:

  • PHP爬虫实战:轻松获取京东商品SKU信息
  • 计算机网络-----详解HTTP协议
  • 【编程基本功】Win11中Git安装配置全攻略,包含Git以及图形化工具TortoiseGit
  • 芯谷科技--升压/升降压DC-DC转换器D5209
  • 无人船:科技驱动,快速发展,前景广阔
  • 云计算产业链
  • pscc系统如何部署,怎么更安全更便捷?
  • 【EDA软件】【应用功能子模块网表提供和加载编译方法】
  • 【番外篇】TLS指纹
  • sentinel与seata组件在微服务中的基本作用
  • 文档处理控件Aspose.Words教程:在.NET中将多页文档转换为单个图像
  • AES加密:为你的PDF文档加上一道钢铁防线
  • 用Rust写平衡三进制乘法器
  • C++ GDB 调试
  • 局域网环境下浏览器安全限制的实用方法
  • MAC、IP地址、TCP、UDP、SSL、OSI模型
  • SpringCloud系列(36)--SpringCloud Gateway简介
  • 在树莓派上用 .NET8.0 挂载TCP服务端
  • 使用 Spread.net将 Excel 中的文本拆分为多段
  • 数据文件写入技术详解:从CSV到Excel的ETL流程优化
  • BGP边界网关协议
  • 【基础篇-消息队列】——如何通过网络传输结构化的数据( 序列化与反序列化)
  • Class00.3矩阵计算
  • Linux进程控制与进程间通信(IPC)全面指南
  • Prompt:面向目标的提示词
  • Java如何导出word(根据模板生成),通过word转成pdf,放压缩包
  • aspose.word在IIS后端DLL中高并发运行,线程安全隔离
  • Java8 Stream流:Stream流的思想和获取Stream流
  • CTF Writeup: [强网杯 2019]随便注挑战解析
  • selenium UI自动化元素定位中classname和CSS区别