当前位置: 首页 > 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
,也可以查看👇🏻获取联系方式👇🏻

相关文章:

  • 怎么做网站链接支付苏州seo关键词优化推广
  • 高权重网站 内页做跳转给新网站网站建设制作专业
  • 虾米音乐歌曲链接做qq音乐网站seo是什么品牌
  • 没有服务器 怎么做网站市场seo是什么
  • 河北邢台信都区疫情最新数据消息网站seo的方法
  • 计算机网络技术就业公司seo查询软件
  • 【ArcGIS】水资源单项评价
  • 企业级应用中的编程风格深度剖析与实践指南
  • 3 大语言模型预训练数据-3.2 数据处理-3.2.2 冗余去除——3.后缀数组(Suffix Array)在大模型数据去重中的原理与实战
  • ivx创建一个测试小案例
  • claude-code: 通过自然语言指令帮助开发
  • 深度学习中的数据预处理:模型性能的「燃料精炼术」与选择指南
  • 并发下正确的FirstOrCreate数据库操作
  • 用户体验驱动的3D设计:从功能实现到情感共鸣的设计升级
  • MySQL之存储过程详解
  • Solon Flow:轻量级流程编排引擎,让业务逻辑更优雅
  • Java操作H2数据库实战
  • DASCTF 2025上半年赛-web1 phpms Writeup
  • SpringBoot项目快速开发框架JeecgBoot——数据访问!
  • 局域网环境下浏览器安全限制的实用方法
  • 【2021 ICCV-Backbone 结构解析】Swin Transformer
  • 【python】http请求的默认超时时间设置
  • 智能体平台的商业前景与竞争格局分析:金融与企业市场的机遇与挑战
  • 深度解析Lucene IndexWriter 性能优化
  • GROUP BY、UNION和COALESCE协作
  • 【机器学习深度学习】张量基本操作