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

基于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.xdnf.cn/news/14622.html

相关文章:

  • 使用VIVADO合并FPGA bit文件和Microblaze elf
  • SQL学习笔记2
  • 【大厂机试题解法笔记】可以组成网络的服务器
  • 使用亮数据网页抓取API自动获取Tiktok数据
  • Windows下安装zookeeper
  • 使用OpenCV实现中文字体渲染与特效处理
  • 单片机常用通信外设特点及通信方式对比表
  • 入门级STM32F103C8T6无人机遥控(原理图)
  • window显示驱动开发—支持 DXGI DDI(二)
  • 具身智能新突破:Gemini Robotics On-Device,让机器人拥有“本地大脑”
  • 【智能协同云图库】智能协同云图库第二弹:用户管理系统后端设计与接口开发
  • 开源流媒体平台安装使用
  • C# WinForm跨平台串口通讯实现
  • 2023年全国青少年信息素养大赛Python 复赛真题——玩石头游戏
  • 战地2042(战地风云)因安全启动(Secure Boot)无法启动的解决方案以及其他常见的启动或闪退问题
  • 自然语言处理入门
  • LT8311EX一款适用于笔记本电脑,扩展坞的usb2.0高速运转芯片,成对使用,延伸长度达120米
  • 第五课:大白话教你用K邻近算法做分类和回归
  • 用vscode破解最新typora1.10.8
  • 鸿蒙应用开发中的状态管理:深入解析AppStorage与LocalStorage
  • PYTHON从入门到实践2-环境配置与字符串打印用法
  • 【网络安全】从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark 实战
  • vscode + Jlink 一键调试stm32 单片机程序(windows系统版)
  • ArkTS与仓颉开发语言:鸿蒙编程的双子星
  • 软件工程:从理论到实践,构建可靠软件的艺术与科学
  • 【4目方案】基于海思3403平台开发4目360°全景拼接相机方案
  • 五种 IO 模式的简单介绍 -- 阻塞 IO,非阻塞 IO,信号驱动 IO,IO 多路复用,异步 IO
  • RISC-V三级流水线项目:总体概述和取指模块
  • 基于java SSM的房屋租赁系统设计和实现
  • python基于微信小程序的广西文化传承系统